[ad_1]
Foi há duas semanas que tivemos a oportunidade de jogar Concrete Genie, a nova aventura do pequeno estúdio da Sony, Pixelopus, que nos trouxe anteriormente Entwined. Durante a nossa visita a Berlim, onde decorreu a apresentação, os produtores mostraram-nos uma versão expandida da beta revelada durante a E3 2018, ilustrando o início da aventura de Ash, o nosso protagonista. Em adição a esta introdução às mecânicas, pudemos ainda ver o modo VR em ação e ficar a conhecer a data de lançamento do jogo – que chegará às lojas no dia 9 de outubro.
No início do jogo, vemo-nos em Denska, uma velha cidade à beira-mar. Um grupo de jovens vagueia pelas ruas, a bater em candeeiros e em janelas para lutar contra o aborrecimento. Ash deambula pelas mesmas rus, mas prefere passar o tempo a desenhar no seu caderno – onde desenha pequenos monstros e memórias do passado. Ele tem uma ligação à cidade, mas tudo mudou drasticamente há uns anos atrás. O jovem artista (vamos chamá-lo assim por causa do pincel no seu cabelo) sabe muito bem que não se pode afastar – e não apenas pelos rufias que andam à sua procura. Perdido nos seus desenhos, não sente a passagem do tempo e é surpreendido pelo gangue de miúdos, que rasgam o seu caderno e o fecham num teleférico enferrujado, que o transporta para um farol supostamente abandonado.
Na ilha, ficamos familiarizados com as mecânicas mais básicas – controlamos a câmara, saltamos entre plataformas e até temos tempo para dar festas a alguns dos animais que encontramos (que, apesar de não ter grande utilidade para o jogo, nunca deixa de ser amoroso). Pouco depois, encontramos o pincel mágico que nos introduz ao cerne de toda a jogabilidade, e com esta ferramenta, podemos pintar e transformar os cenários aborrecidos em cenas coloridas saídas de um livro. Esta é, em parte, a nossa missão em Concrete Genie – transformar a cidade acabada num enorme mar de cor.
A partir desta introdução, podemos usar o pincel como quisermos. Só podemos pintar nas paredes, e podemos fazê-lo ao escolher uma das inúmeras opções artísticas à nossa disposição. Desta forma, podemos encher o céu de estrelas, auroras e até de fogueiras, desenhando-as com o comando. Como podem esperar, isto não é imediatamente intuitivo e precisa de algum tempo de habituação, mas o sistema pareceu ser sólido – considerando o facto de que existem controlos por movimento, claro.
Pintar a cidade inteira não é uma missão fácil, mas Ash não estará sozinho nesta missão, conseguindo dar vida a monstros amigáveis com a ajuda do pincel mágico. Podemos personalizar estes supostos “génios” individualmente, utilizando partes do corpo que lhe dão a habilidade de andar sem ajuda do jovem artista. Nós ficámos entusiasmados com a possibilidade de criarmos designs para os nossos companheiros de aventura, sendo possível apagar qualquer erro que cometamos durante o seu desenho.
Depois da área de tutorial, vemo-nos de regresso ao distrito de Denska. O nosso próximo objetivo foi o que acompanhar um dos génios e verificar onde podia usar as suas habilidades. O nosso primeiro companheiro era capaz de cuspir fogo, por exemplo, o que pode ser usado para abrir cortinas ou fechar janelas. O nosso progresso parece ser definido pela nossa criatividade, pois à medida que decoramos as paredes da cidade, ativamos luzes que encaminham o nosso génio pela área.
//connect.facebook.net/pt_PT/sdk.js // Load the SDK Asynchronously (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 = "http://connect.facebook.net/pt_PT/sdk.js#xfbml=1&version=v2.7&appId=286762725162567"; fjs.parentNode.insertBefore(js, fjs); (document, 'script', 'facebook-jssdk'));
window.fbAsyncInit = function() FB.init( appId : '286762725162567', channelURL : '//www.gamereactor.pt/fbchannel.php', status : true, cookie : true, xfbml : true, oauth : true, version : 'v2.7' );
if (typeof(postReview) == "function") postReview();
FB.Event.subscribe('edge.create', function(targetUrl) _gaq.push(['_trackSocial', 'Facebook', 'Like', targetUrl]); ); FB.Event.subscribe('edge.remove', function(targetUrl) _gaq.push(['_trackSocial', 'Facebook', 'Unlike', targetUrl]); ); FB.Event.subscribe('message.send', function(targetUrl) _gaq.push(['_trackSocial', 'Facebook', 'Send', targetUrl]); ); ;
document.addEventListener("DOMContentLoaded", function() DrawFacebookLikeNotification(); );
function FastRegister(tournament=false){ ajaxAgreementsPopUp(); if (typeof isSmartphoneLayout != 'undefined' && isSmartphoneLayout) window.location='/join'; else $.ajax( type: "POST", url: "/ajaxstuff/fastRegister.php", data: session: "screated":1564578343,"updated":1564578343,tournament:tournament
) .done(function (code) $('#re_loginbox').replaceWith(code); // console.log(code); $('.loginWrapper').show(); ) .fail(function(jqXHR, msg) console.log("request fail"); $(selectorForLoginMessage).text(msg).show(); );
return false; }
function FastRegisterResponse() $.ajax( type: "POST", url: "/ajaxstuff/fastRegister.php",
) .done(function (code) $('#re_loginbox').replaceWith(code); // console.log(code); $('.loginWrapper').show(); ) .fail(function(jqXHR, msg) console.log("request fail"); $(selectorForLoginMessage).text(msg).show(); ); return false;
function LoginWithFacebook(selectorForLoginMessage, fbUpdateUser) {
FB.login(function(response) { if (response.authResponse) { FB.api('/me', fields: 'email,last_name,name,first_name', function(user) { var main = false; if (user && !user.error) { // console.log(user); if(selectorForLoginMessage == '#fbLoginMessageMain') main = true; $.ajax( type: "POST", url: "/ajaxstuff/fblogin.php", data: userobj: user, fbUpdateUser: fbUpdateUser, main: main ) .done(function(code) { if(main){ console.log("Is logged"+code); if(code==0) if(!$('.signin').hasClass('active-signin')) $('.signin').addClass('active-signin'); if($('.login').hasClass('active-login')) $('.login').removeClass('active-login'); var request = new GRAsync(); var path = '/ajaxstuff/join.php?ajaxRequest'; request.setUrl(path) .setSelectors($('#joinContainer') ) .setData(register:true,facebookUser:user) .setDataType('html') .setType('POST') .sendRequest();
else window.location="/";
} else $('#re_loginbox').replaceWith(code); $('.loginWrapper').show(); //location.reload(true);
}) .fail(function(jqXHR, msg) console.log("request fail"); $(selectorForLoginMessage).text(msg).show(); );
} }); } else // console.log('User cancelled login or did not fully authorize.');
}, scope: 'email,publish_actions'); // TODO: don't ask for publish_actions by default. It might scare away some users. Ask later, when they actually want it. return false; }
function AddSearchParamsAndReload(newParamStr)
var newParamArr = newParamStr.split("&");
if (window.location.search.length > 1) // don't count the initial '?'
var oldParams = window.location.search.substr(1).split("&");
var paramsToAdd = [];
for (var j = 0; j < newParamArr.length; j++)
var found = false;
for (var i = 0; i < oldParams.length; i++)
if (newParamArr[j] == oldParams[i])
found = true;
if (!found)
paramsToAdd.push(newParamArr[j]);
if (!paramsToAdd.length)
window.location.reload();
else
window.location.search += '&'+paramsToAdd.join("&");
else
window.location.search = '?'+newParamStr;
[ad_2]