We bring you ours the first xCloud impressions in Spain, since the app arrived a few days ago. First of all, it should be clear that this is an undercover service and that it is in the first phase, where certain media and users have been able to access the functionality of the service that has been gradually deployed around the world.
One of the things I want to point out is that this is not going to be a technical analysis that tells you the difference of latency, gaming adjustment, FPS value and all those other technical things you can definitely find in other well-defined media, and its tools.
Here you will find the first impressions of xCloud in Spain from the point of view of the average and ordinary player, the person who decides he wants to play games like Hellblade: The Assignment of Senua, Forza Horizon 4 or Devil May Cry V, among many, on his mobile. The images you will find in this document were taken from these tests using a smartphone screenshot.
Interaction: This is xCloud in Spain
To play with xCloud we just have to follow some simple steps, which will download the mobile app for Xbox Game Broadcast. Once logged in, we connect our Xbox One controller via Bluetooth (other controls like Stadia or PlayStation 4 also work, even if we are careful with the input lag) and from there we can choose the game and enjoy the app.
For this first contact with xCloud in Spain I have used the latest Smartphone, Realme X2 Pro, which is connected via WiFi to a 5Ghz network at 600MB real optics. My initial contact ranged from a little to a lot, because at first I had some connection problems. Aside from being near the router, there were some cuts and delays in accessing my device, so I had to disconnect other devices connected to the router.
There, I was, with my cellphone, xCloud and router over a meter. Things were good, of course the first game I decided to try was Devil May Cry 5. I won't lie, I was pleasantly surprised to play with more fluid fluid a game with great graphics from my screenplay.
Different sports, different feelings
After fixing issues that seemed more related to the load on my router than the actual use, the experience was smooth and I had a great time on Devil May Cry 5. There were some jerseys, when the screen refreshed like a screen went down suddenly, cleaning up the old image in a new setting.
Then I moved on to Forza Horizon 4, one of the best graphics titles on the Xbox One X. The feeling with the PlayGound title was quite low, why not deny it. The game did look good, but it didn't reach the One X either and since it's a game that requires moving multiple items on the screen at the same time and at high speed, it's usually for us experience many cuts And when I'm already in doubt my communication is a problem.
XCloud offers (at least in this test section) a wide variety of games and one of the ones I decided to play recently on the Xbox One was there. Maybe I had my best experience with xCloud and Hellblade: The Sacrifice of Senua. Image quality is amazing and performance is at the console level. I easily spent two hours playing unintentionally and without thinking at any time that I was pulling the stream from server to my cell phone instead of playing it locally.
So much to try, so much to improve
I can't give an exact idea about xCloud. First, because it's not the app itself, but the testing phase. And I can't say with absolute certainty about a service that relies heavily on your internet connection, the distance from your location to servers, to the local network load …
This is undoubtedly an important step for xCloud and cloud gaming in Spain, which recently had PlayStation Now and Google Stadia. Both services take advantage of the direct connection to the console, which we can take advantage of with the ethernet cable and avoid certain problems that may be caused by WiFi.
If you ask me about my feelings about xCloud, I can reply to you in a typical Galician and familiar situation: to. Depending on the game we will note that it looks and performs better or worse; Depending on the controller we are using (and the Bluetooth version of our mobile phone) we will have very little input or input by our controller; depending on the load of the local network we will have experience with more or less reductions that only affect us … And so it can continue.
Obviously at SomosXbox we are excited about the future of Xbox, first because we are on the edge of the Xbox Series X, a virtual machine, then we have the Xbox Game Studios catalog and finally the information provided by XCloud.
Adapted from xCloud 2020
Obviously the last xCloud experience will feature streaming games from the console, it's more focused on Stadia / Chromecast than the mobile game that might be closer to what Nintendo did with Nintendo Switch (in the traditional way). If we decide to play xCloud on the train or on the road (something really difficult in current conditions) we will rely heavily on the 5G network that has not yet been directly, since 4G falls shorter. In addition, we have to have an infinite amount of data, I assure you.
Playing awesome titles like Halo 5, Gears 5, Holblade or Yakuza 0 from mobile is special, but I'm pretty sure lThe winning combination will be Xbox Game Pass and xCloud on Xbox, either One or any other Series version, for streaming from the console. The fact of getting into the game directly without downloading it using the catalog provided by the Xbox Game Pass would be brilliant and if it was to give you the image quality next to the Xbox One X, I wouldn't tell you.
To close these the first xCloud impressions in Spain I can only say that this will be the first of many essays, because we want to fully test the service and try other features like streaming from console to mobile, something that this test also comes with. We also want to give you more time and try more games. So If you have any doubt, question or game you want us to try on xCloud, please leave a comment.
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;.-menu-content-victim & # 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 let's work on fixing the anchor 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-storage & # 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-storage & # 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-storage & # 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); }); // commenter user comments jQuery (& # 39; body & # 39;) in (& # 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 mmenu setup because it wraps the page with div // causing google adsense to reload jQuery (& # 39;. it-ad & # 39;). animate ({opacity: & # 39; 1 & # 39;}, 0);
});
jQuery.noConflict ();
Table of Contents