With the expected arrival of the first version of xCloud in Spain, the streaming service offering gaming is expanding. After its conference late last year, Stadia was the only reliable application to the game's new paradigm, with the start of the Microsoft program, increasing opportunities, and competition.
Remember that XCloud, unlike Stadia, is still a service to growth. What we've been testing these days is the original version, or beta, so there's a chance to improve and that could change several things before the final release. However, the Microsoft streaming game service comes with a more interesting proposal, especially for veteran users of the Xbox gaming ecosystem.
Impressions from xCloud 2020: Cloud is reaching Spain
Now, everyone will be thinking which is better, Stadia or xCloud. And the answer is not so simple, because depending on the individual user and their needs. Next, we will break down some buttons for both systems so that each person selects one that suits their needs.
Compatible Devices
The first thing to keep in mind when choosing between Stadia or xCloud is the platform you want to play on, that is, the app. When it comes to sports streaming services, Hardware is no more a hindrance to gaming, and you may want to enjoy it on different devices.
In this way, Stadia is the most comprehensive system, since it is available on both devices Android mobiles, like TVs thanks to Chromecast Ultra too, PC with Chrome Web browser. XCloud, on the other hand, is only available on Android phones in its former version, for now. You just have to reach yours Official website and sign up for a test.
As we say, we have to remember that Stadia is a service with its final version from last year, xCloud is still developing. Microsoft didn't share much data with it, though It would be absurd to assume that, at least, xCloud will also come to PC in the future.
Business model
The main difference between Stadia and xCloud is, without a doubt, a completely different business model for the two services. Partly because of two different desires. Remember that Stadia was introduced as a new platform, while xCloud is yet another extension of the Xbox gaming system.
Currently, only Stadia has a paid version. € 9.99 monthly subscription which, in addition to being able to access the service, provides access to free games on a monthly basis. XCloud, on the other hand, is a free program that can be accessed by any Xbox player and enjoy games in its catalog for free.
That same year, Stadia's opening for all users is organized in a free way, where anyone will be able to play the games they purchase on the platform. However, it is a far cry from the present Free and full xCloud discovery suggestion.
Games
With the risk of getting in your favor, the game catalog of both services is also a factor to consider, in quantity and quality. This category is closely linked to the first, because, overall, The business model and games found in the service are closely related.
Stadia, as a new platform, promises to offer games from Google's new studio, but today it has a special game from the service, Gylt, from Spanish Tequila Works. XCloud, on the other hand, has all the games from Xbox Game Studios, since Gears 5 in order Forza Horizon 4, or Hell.
Aside from individual company games, the xCloud catalog is not only wide in scope and varied in its content, and has the most recent games, as claimed Epidemic: Chastity, The Devil Can Cry V either Yakuza 0. Microsoft's goal is that, by the end of the year, XCloud is compatible with all Xbox Game Pass games. Without a doubt, the gaming catalog is one of the waiting subjects for Stadia that Google promises to solve soon.
Power and graphics
In this respect we will pass a bit on tiptoe, because we have no means of performing a complete analysis of such features adjustment, frame rate or control input (the time passed when you performed an action until it was shown in the game). However, it should be clear that for now, there is a huge difference in this regard.
Stadia is committed to providing streaming for 4K HDR with 60fps games, plus 5.1 channel audio, on any service thanks to the 10.2 TFLOPS GPU installed on Google servers. Microsoft, on the other hand, did not share information regarding the resolution or operation of xCloud, as it is a first-party service, though not of tangible quality. closer than seen on the Xbox One S than the Xbox One X.
To see the specific differences in clicking and running, you will need to directly compare game by game. The important thing here is that, two services that are extremely efficient and provide good image quality, while we are still working on developing the input
Conclusions
When asked which service is best, it is unlikely that there will be a classification answer, because it depends on the user and his priorities, rather than the choice of each program. As we have repeated over and over again, Stadia aspires to be a platform herself, with all that involved. XCloud, meanwhile, is a service still in active development like an Xbox game for nature games
For an Xbox-type historical user, the answer will be clear, xCloud provides an added value. Although it should be made clear that both Stadia and xCloud may be the two best bet on today's streaming game. It's two services that show that Technology exists, is working, and has a great future in the future.
// call the same height columns when the window is rebuilt jQuery (window) .resize (function () { equHeightColumns (jQuery (". widget-widget"); equHeightColumns (jQuery (". loop.grid .article-panel"); resizeContentsMenu (); resizeStickyMenu (); });
// call equal height columns when widgets have been re-expanded jQuery ("# widgets)) increase size (function (e) { equHeightColumns (jQuery (". widget-widget"); });
// call the same height columns when the main menu items are drawn there in the sub menus // is hidden and has no extensions until it appears jQuery (& # 39; body & # 39;) in (& # 39; mouseover & # 39 ;, & # 39; # category-menu-full a.parent-item & # 39 ;, function (e) { equHeightColumns (jQuery ("# category-menu-full ul.term-list, # category-menu-full li.post-list"), true); }); // columns of equal height function equal HeightColumns (group, olimit) { long = 0; width = jQuery (window). width (); group.each (function () { jQuery (this) .removeAttr (& # 39; style & # 39;); thisHeight = jQuery (this). light (); if (thisHeight>) long = loHeight; } }); if (width> 991 "https://www.somosxbox.com/" nolimit) { group.height (too long); } }
var topOffset = 70; var barOffset = 208;
jQuery (window) .scroll (function () { if (jQuery (this) .scrollTop ()> 110) { jQuery (& # 39; # sticky-bar & # 39;). AddClass (& # 39; fixed & # 39;); jQuery (& # 39; # sticky-bar.logo-slide .logo a & # 39;). Stop (). animate ({opacity: 1.0, left: & # 39; 0px & # 39;}, 100); } else { if (! jQuery (& # 39; # sticky-menu & # 39;). ((visible)) &&! jQuery (& # 39; # category-menu-mobile & # 39;). ((: visible))) { jQuery (& # 39; # sticky-bar & # 39;). removeClass (& # 39; modified & # 39;); jQuery (& # 39; # sticky-bar.logo-slide .logo a & # 39;). Stop (). animate ({opacity: 0, left: & # 39; -100px & # 39;}, 500); } } if (jQuery (this) .scrollTop ()> 44) { jQuery (& # 39; # sticky-bar & # 39;). AddClass (& # 39; sticky-mobile & # 39;); } else { jQuery (& # 39; # sticky-bar & # 39;). UninstallClass (& # 39; sticky-mobile & # 39;); }
// move it back to the up arrow if (jQuery (this) .scrollTop () < 150) { jQuery("#back-to-top").fadeOut(); } else { jQuery("#back-to-top").fadeIn(); } resizeContentsMenu(); resizeStickyMenu(); }); function resizeStickyMenu() { //see if compact versions of menus should be shown if(jQuery('#section-menu-full').length > 0) { var megaWidth = jQuery (& # 39;. mega-menu & # 39;). width (); if (jQuery (& # 39;. mega-menu & # 39;). == 0) { var megaWidth = jQuery (& # 39; .- non-mega-menu & # 39;) width (); } var standardWidth = jQuery (& # 39; second-full menu & # 39;). width (); var compactWidth = jQuery (& # 39;. secondary-menu-compact & # 39;). wide (); var menusWidth = megaWidth + standardWidth; var compactMenusWidth = megaWidth + compactWidth; var logoWidth = jQuery (& # 39; # stick-bar. log & # 39;) width (); // var logoLeft = jQuery (& # 39; # sticky. .gogo & # 39;). offset (); // logoWidth = logoWidth + logoLeft.left; var newWidth = jQuery (& # 39; # new-articles & # 39;) width (); var stickyWidth = jQuery (& # 39; # sticky-menu-selected & # 39;) width (); var randomWidth = jQuery (& # 39; # random article & # 39;) width (); var controlWidth = jQuery (& # 39; # attachments-control & # 39;) width (); var barWidth = jQuery (& # 39; # sticky-bar> .row> .col-md-12> .container & # 39;). width (); if (barWidth === null) barWidth = jQuery (& # 39; # stick-bar> .row> .col-xs-12> .container & # 39;) width (); var extraWidth = logoWidth + newWidth + stickyWidth + randomWidth + controlsWidth; var limitedWidth = barWidth - extraWidth; // alert (& # 39; megaWidth = & # 39; + megaWidth + & # 39; nstandardWidth = & # 39; + standardWidth + & # 39; nmenusWidth = & # 39; + menusWidth + & # 39; nlogoWidth = & # 39; + logoWidth + & # 39; haswWthth = & # 39; + newWidth + & # 39; nstickyWidth = & # 39; + sticky + & # 39; nrandomWidth = & # 39; + randomWidth + & # 39; ncontrolsWidth = & # 39; + mind control + The mega menu only exceeds the limit if (megaWidth> limitWidth) { jQuery (& # 39; # category-menu-full & # 39;). arrive (); jQuery (& # 39; # category-menu-compact & # 39;). show (); } // standard menu alone exceeds limit if (standardWidth> limitWidth) { jQuery (& # 39;. second-full menu & # 39;). arrive (); jQuery (& # 39;. secondary-menu-compact & # 39;). show (); } // both menus bypass the limit if (menusWidth> limitWidth) { // first minimizes the standard menu jQuery (& # 39;. second-full menu & # 39;). arrive (); jQuery (& # 39;. secondary-menu-compact & # 39;). show (); // The limit of the standard compiler menu composite menu if (compactMenusWidth> limitWidth) { jQuery (& # 39; # category-menu-full & # 39;). arrive (); jQuery (& # 39; # category-menu-compact & # 39;). show (); } } } }
function sizeContentsMenu () { // bookmark position if (jQuery (& # 39;. content-menu-default & # 39;) length> 0) { var menuOffset = jQuery (& # 39 ;.-menu-boat row & # 39;). offset (). top - topOffset; var newWidth = jQuery (& # 39;. content-menu-boat & # 39;) width () - 2; var btnWidth = jQuery (& # 39;. content-menu-wrap ul.sort-buttons & # 39;). width (); var lblWidth = jQuery (& # 39;. content-menu-wrap .bar-label-wrapper & # 39;). width (); var wrapperWidth = jQuery (& # 39; # great content & # 39;). width () - 2; var barWidth = btnWidth + lblWidth; if (barWidth> wrapperWidth) { jQuery (& # 39;. content-menu-default & # 39;). AddClass (& # 39; vertical & # 39;); } if (! jQuery (& # 39; .- context-threat menu & # 39;). hasClass (& # 39; vertical & # 39;) && jQuery (this) .scrollTop ()> menuOffset) { jQuery (& # 39;. menu contents & # 39;). AddClass (& # 39; fixed & # 39;) width (newWidth); } else { jQuery (& # 39;. menu contents & # 39;). DeleteClass (& # 39; modified & # 39;). deleteAttr (& # 39; style & # 39;); } // show menu after scroll and hide later (only vertically) if (jQuery (& # 39;. content-menu-full & # 39;). hasClass (& # 39; vertical & # 39;)) { if (! jQuery (& # 39; .- content-menu-storage & # 39;). ((visible))) { jQuery (& # 39;. content-menu-green & # 39;). stop (). fadeIn (100); } } } if (jQuery (& # 39;. content-menu-full & # 39;). hasClass (& # 39; vertical & # 39;)) { var newOffset = 68; jQuery (& # 39; body & # 39;) data.) (& # 39; bs.scrollpy & # 39;). options.offset = newOffset; // Set up new setup jQuery (& # 39; body & # 39;) Data () (& # 39; bs.scrcrpy & # 39;). process (); // Press scrolls to re-measure the property in your test jQuery (& # 39; body & # 39;) .crcrpy (& # 39; refresh & # 39;); // Restart the scroll. } }
// when disqus is working we have been working to fix the link connection from the comment to the disqus thread function disqusContentsMenu () { if (jQuery ("# disqus_thread") length> 0) { jQuery ("# views-anchor-wrapper a"). interesting ("href", "#disqus_thread"); } }
// hide context menu 2 seconds after scrolling has stopped (function () { var timer; jQuery (window) .bind (& # 39; scroll & # 39 ;, function () { clearTimeout (timer); timer = setTimeout (refresh, 1800); }); rip = function () { // only want to do this in vertical style and only if the mouse does not currently fit the menu if (jQuery (& # 39;. content-menu-square & # 39;). hasClass (& # 39; vertical & # 39;) && jQuery (& # 39 ;. content-menu-screen: hover & # 39;) . = = 0) { jQuery (& # 39;. content-menu-woven & # 39;). fadeOut (1200); } }; }) ();
// hide the context menu after the married user (function () { var timer; jQuery (& # 39; body & # 39;) in (& # 39; mouseenter & # 39 ;, & # 39; .contents-menu-wrapper.vertical & # 39 ;, function (e) { jQuery (& # 39;. content-menu-store & # 39;). set (true, true) .fadeIn (100); clearTimeout (timer); }); jQuery (& # 39; body & # 39;) in (& # 39; mouseleave & # 39 ;, & # 39; .contents-menu-wrapper.vertical & # 39 ;, function (e) { clearTimeout (timer); timer = setTimeout (refresh, 1800); }); rip = function () { // only want to do this in vertical style and only if the mouse does not currently fit the menu if (jQuery (& # 39;. content-menu-square & # 39;). hasClass (& # 39; vertical & # 39;) && jQuery (& # 39 ;. content-menu-screen: hover & # 39;) . = = 0) { jQuery (& # 39;. content-menu-woven & # 39;). fadeOut (1200); } }; }) ();
/ ** * See href to find anchor. If available, and in the document, scroll to it. * If the href argument is stopped, it is assumed in context (this) by HTML Element, * which will be if requested by jQuery after the event * / function scroll_if_anchor (href) { href = Typeof (href) == "string"? href: jQuery (this) .attr ("href");
// don't interrupt bootstrap carousels if (jQuery (href) .length> 0 &&! jQuery (this) .hasClass (& # 39; no scroll & # 39;)) { var fromTop = 118;
// remove the context menu height (and tags) if (jQuery (& # 39;. content-menu-full & # 39;). hasClass (& # 39; vertical & # 39;)) { fromTop = fromTop - 51; }
// If our Href points to a valid, empty anchor, and on the same page (e.g. #Foo) // Legacy jQuery and IE7 may have issues: http://stackoverflow.com/q/1593174 if (href.indexOf ("#") == 0) { var $ target = jQuery (href);
// An old browser other than pushState may be overrun here, as it is temporary // jump to the wrong place (IE < 10) if($target.length) { jQuery('html, body').animate({ scrollTop: $target.offset().top - fromTop }); if(history && "pushState" in history) { history.pushState({}, document.title, window.location.pathname + href); return false; } } } } } // When our page loads, check to see if it contains an anchor scroll_if_anchor(window.location.hash); // Intercept all anchor clicks jQuery("body").on("click", "a", scroll_if_anchor); //menu hovers function menuHovers() { jQuery(".menu .post-list a").hover( function() { jQuery(this).children('img').stop().animate({ opacity: .3 }, 150); }, function() { jQuery(this).children('img').stop().animate({ opacity: 1.0 }, 500); } ); } //new articles effects jQuery("#new-articles .selector").hover( function() { jQuery(this).addClass('over'); }, function() { jQuery(this).removeClass('over'); } ); jQuery("#new-articles .selector").click(function() { jQuery('#new-articles .post-container').animate({ height: 'toggle' }, 100, 'linear' ); jQuery(this).toggleClass('active'); }); //show search box jQuery("#menu-search-button").hover( function() { jQuery(this).toggleClass('hover'); } ); jQuery("#menu-search-button").click( function() { jQuery('#menu-search').fadeToggle("fast"); jQuery(this).toggleClass('active'); } ); //hide superfish more drop down on mobile if clicked again jQuery("#secondary-menu-selector").click( function() { if(jQuery('.secondary-menu-compact ul.menu').is(':visible')) { jQuery('.secondary-menu-compact ul.menu').hide(); } } ); //search form submission jQuery("#searchformtop input").keypress(function(event) { if (event.which == 13) { event.preventDefault(); var len = jQuery("#s").val().length; if(len >= 3) { jQuery ("# searchformtop"). submit (); } else { alert ("Search name must be at least 3 characters long"); } } }); // send email to send jQuery ("# feedburner_subscribe button"). click (function () { jQuery ("# feedburner_subscribe"). submit (); }); // show the entry form jQuery ("# sticky-login"). click (function () { jQuery (& # 39; # sticky-login-form & # 39;). animated ({ height: & # 39; Change & # 39; }, 100, & # 39; line & # 39;); jQuery (& # 39; # sticky-register-form & # 39;). arrive (); jQuery (& # 39; # sticky-register & # 39;). removeClass (& # 39; active & # 39;); jQuery (this) .toggleClass (& # 39; active & # 39;); }); // show the registration form jQuery ("# sticky-register"). click (function () { jQuery (& # 39; # sticky-register-form & # 39;). animated ({ height: & # 39; Change & # 39; }, 100, & # 39; line & # 39;); jQuery (& # 39; # sticky-login-form & # 39;). arrive (); jQuery (& # 39; # sticky-login)). DeleteClass (& # 39; active & # 39;); jQuery (this) .toggleClass (& # 39; active & # 39;); }); // to move the hover button results jQuery (". sticky import"). hover (function () { jQuery (this) .toggleClass ("active"); }); // submission of entry form jQuery (". sticky-login #user_pass"). typypress (function (event) { if (event.which == 13) { jQuery ("# sticky-login. upload"). show (); jQuery ("form.sticky-login-form"). animate ({opacity: "0.15"}, 0); event.preventDefault (); jQuery (". sticky-entry-form"). submit (); } }); jQuery ("# sticky-login"). click (function () { jQuery ("# sticky-login. upload"). show (); jQuery ("form.sticky-login-form"). animate ({opacity: "0.15"}, 0); jQuery (". sticky-entry-form"). submit (); }); // register the form submission jQuery (".-register-form #user_email"). typypress (function (event) { if (event.which == 13) { jQuery ("# sticky-register-form. upload"). show (); jQuery ("form.sticky-register-form"). animate ({opacity: "0.15"}, 0); event.preventDefault (); jQuery (".-register-register-form"). submit (); } }); jQuery ("# sticky-registration-submission"). click (function () { jQuery ("# sticky-register-form. upload"). show (); jQuery ("form.sticky-register-form"). animate ({opacity: "0.15"}, 0); jQuery (".-register-register-form"). submit (); }); // hide and check password message jQuery (".expect password"). click (function () { jQuery (this) .animate ({ height: & # 39; Change & # 39; }, 100, & # 39; line & # 39;); }); // scroll all #top items up jQuery ("a (href = & # 39; # top & # 39;)"). click (function () { jQuery ("html, body") animate ({scrollTop: 0}, "slow"); return false; }); // image is black jQuery (& # 39; body & # 39;) in (& # 39; mouseenter & # 39 ;, & # 39; .darken & # 39 ;, function (e) { jQuery (this) .find (& # 39; img & # 39;). Stop (). animate ({opacity: .4}, 150); }) in (& # 39; mouseleave & # 39 ;, & # 39; .darken & # 39 ;, function (e) { jQuery (this) .find (& # 39; img & # 39;). Stop (). animate ({opacity: 1.0}, 500); }); // reaction of mice jQuery (& # 39; body & # 39;) in (& # 39; mouseenter & # 39 ;, & # 39; .reaction.clickable & # 39 ;, function (e) { jQuery (this) .addClass (& # 39; active & # 39;); }) in (& # 39; mouseleave & # 39 ;, & # 39; .reaction & # 39 ;, function (e) { jQuery (this) .removeClass (& # 39; active & # 39;); }); // user rating indicator jQuery (& # 39; body & # 39;) on (& # 39; mouseover & # 39 ;, & # 39;. ratinger .rating-wrapper.rateable & # 39 ;, function (e) { jQuery (this) .addClass (& # 39; more & # 39;); jQuery (this) .find (& # 39;. form-Selector-wrapper & # 39;). fadeIn (100); }); jQuery (& # 39; body & # 39;) in (& # 39; mouseleave & # 39 ;, & # 39;. ratinger .rating-wrapper & # 39 ;, function (e) { jQuery (this) .stop (). delay (100) .queue (function (n) { jQuery (this) .removeClass (& # 39; more & # 39;); n (); }); jQuery (this) .find (& # 39;. form-Selector-wrapper & # 39;). Stop (). fadeOut (500); }); // user comment comment indicator jQuery (& # 39; body & # 39;) at (& # 39; mouseover & # 39 ;, & # 39; #contact .rating-wrapper.rateable & # 39 ;, function (e) { jQuery (this) .addClass (& # 39; more & # 39;); jQuery (this) .find (& # 39;. form-Selector-wrapper & # 39;). fadeIn (100); }); jQuery (& # 39; body & # 39;) in (& # 39; mouseleave & # 39 ;, & # 39; #contact .rating-wrapper & # 39 ;, function (e) { jQuery (this) .stop (). delay (100) .queue (function (n) { jQuery (this) .removeClass (& # 39; more & # 39;); n (); }); jQuery (this) .find (& # 39;. form-Selector-wrapper & # 39;). Stop (). fadeOut (500); }); // user comment rate jQuery ("#XT .form-Selector") .on ("slidestop", function (event, ui) { var divID = jQuery (this) .parent (). parent (). parent (). fascin ("id"); var rating = jQuery (this) .parent (). siblings (& # 39;. rating-value & # 39;). html (); jQuery (& # 39; # & # 39; + divID + & # 39; .theme-icon-check & # 39;). delay (100) .fadeIn (100); jQuery (& # 39; # & # 39; + divID + & # 39;. -fix-rate-value & # 39;). val (to measure); });
// pinterest if (jQuery (& # 39; # pinterest-social-tab & # 39;) height> 0) { (function (d) { var f = d.getElementsByTagName (& # 39; SCRIPT & # 39;) (0), p = d.createElement (& # 39; SCRIPT & # 39;); p.type = & # 39; text / javascript & # 39 ;; p.async = true; p.src = "https://assets.pinterest.com/js/pinit.js"; f.parentNode.insertBefore (p, f); } (document)); }
// Facebook if (jQuery (& # 39; # facebook-social-tab & # 39; length> 0) { (function (d, s, id) { var js, fjs = d.getElementsByTagName (s) (0); if (d.getElementById (id)) return; js = d.createElement (s); js.id = id; js.src = "https://connect.facebook.net/en_US/all.js#xfbml=1&status=0"; fjs.parentNode.insertBefore (js, fjs); } (document, & # 39; script & # 39 ;, & # 39; facebook-jssdk & # 39;); }
//WINDOW.LOAD jQuery (window) .load (function () {
// flickr if (jQuery (& # 39; # flickr-social-tab & # 39; length> 0) { jQuery (& # 39;. flickr & # 39;) .jflickrfeed ({ limit: 9, Symptoms: { id: "https://www.somosxbox.com/" }, itemTemplate: & # 39;
& # 39; }, function (data) { }); }
// tabs - these should be entered via windows.load so that pinterest will work within the tab jQuery (& # 39;. wrapper-widgets .it-social-tabs & # 39;). tabs ({fx: {opacity: & # 39; toggle & # 39 ;, dude: 150}}); jQuery (& # 39; # footer .it-social-tabs & # 39;). tabs ({active: 2, fx: {opacity: & # 39; toggle & # 39 ;, height: 150}}); jQuery (& # 39;. share-wrapper & # 39;). show (); equHeightColumns (jQuery (". loop.grid .article-panel"); disqusContentsMenu ();
// show ads after the menu is set because it wraps the page with a div // causing google adsense to reload jQuery (& # 39;. it-ad & # 39;). animate ({opacity: & # 39; 1 & # 39;}, 0);
});
jQuery.noConflict ();
Table of Contents