X

Olá queridos heróis do Nexus! Sei que muitos sentiram uma leve falta de meus artigos e ficaram preocupados. Aos queridos que me abordaram de diversas formas nos meios digitais,  deixo um agradecimento grande pelo carinho.

Diante de tamanha correria da vida real, andei estudando, lendo, relendo, me aprofundando e observando com todo o cuidado o que a comunidade vê depois de um mês de mudanças. Porém, o que seria apenas uma análise do novo sistema, se tornou algo maior: uma análise de Heroes of the Storm. Sim, do jogo por inteiro.

Então gostaria de convidar você a sentar-se comigo, pegasse a sua bebida favorita e “conversasse” comigo por todas as nuances que irei passar neste texto.

tavern_by_vertibirdo-d9t5rxi

Como uma apaixonada pelo jogo, fico realmente triste quando “destaques da comunidade” dizem que o jogo não terá muita duração por ser um MOBA bem casual. Esses tipos de comentários vindos de pessoas que desenham a base de visualizações de HotS não ajudam ele de modo algum e acabam pré-moldando a opinião de muitas pessoas que poderiam estar curiosos em conhecer o jogo, mas acabam desistindo por conta dessas opiniões. Não é muito diferente sobre adaptações de cinemas e críticos, se formos comparar, a relação nisto tudo.

wow-sad-yuuko_kitsune

Pessoalmente, faço parte do grupo que não lança julgamento sobre o jogo estando em sua fase inicial.  Sim, 1 ano de Heroes of the Storm e ainda vejo ele como um bebê que está se desenvolvendo e que precisa da ajuda de todos para  crescer, como qualquer outro jogo, como LoL por exemplo. A concorrente demorou um certo tempo para  se estabilizar. Particularmente, tirando a visão do cenário brasileiro de Heroes e vendo de forma mundial, Heroes of the Storm tem ganhado popularidade e se expandido desde o seu lançamento. E sinceramente? Eu não vejo ele indo “ladeira abaixo” como muitos decretam, como se fosse uma morte súbita.  Uma frase de uma pessoa bem especial resume a situação real de Heroes of the Storm “Ela não soube aproveitar o timing/ trabalhar bem o planejamento”.

giphy (2)

créditos do gif: kotaku.

Calma! Se você é um fã xiita, saiba que estou fazendo uma crítica madura e construtiva refletindo o nosso amado jogo que realizou o sonho de muitos de ver diversas franquias em uma só! Pode voltar a sentar-se em sua cadeira e beba um pouco mais do seu chá, café ou cerveja e vamos continuar.

Estamos vivendo em uma comunidade extremamente tóxica de todos os lados que ao invés de criticar CONSTRUTIVAMENTE, só sabem denegrir e “amaldiçoar joguinhos”. Sim queridos, a comunidade gamer toda, não só o nicho da Blizzard, que bem ou mal, ainda tende a ter equilíbrio e uniãotumblr_nrmsuk8mbP1qkpz2go1_500

A opinião geral que pude coletar conversando e convidando jogadores de Heroes a comentarem nos grupos é de que se tiver um jogador ruim em uma das equipes, o resultado é decidido. É preciso de uma equipe para ganhar e um mau jogador para perder. Ela poderia modificar de certo modo permitindo que uma pessoa tenha capacidade de compensar os erros do jogador ruim? Poderia, mas não sei ao certo dizer sobre isso. São apenas pensamentos a princípio que deixo aberto para vocês.

Heroes of the Storm tem problemas maiores e mais emergentes. Lags estranhos e picos de desempenho,  memória que tem uma fome maior do que a minha em rodízios de pizza…  Já parou para analisar porque HotS tem esses problemas estranhos comparados a outros.  Porquê sera? Porque não corrigir apenas?

ls4t5secspajpf4ymsmc

Analisando, pesquisando e trocando ideias com diversos usuários e jogadores, está abaixo minha pesquisa onde busco trazer para vocês o conhecimento que não pesquisava tanto a fundo, sobre como funciona jogos multiplayer e como é a engine de Heroes.

A maioria dos jogos multiplayer utilizam um tipo de comunicação chamado p2p ou peer-to-peer, que consiste em um formato de rede de computadores que tem como característica descentralizar as funções convencionais de rede, ou seja, onde o computador de cada usuário acaba fazendo função de servidor e de cliente ao mesmo tempo. Ares, eMule, LimeWire são velhos (e até extintos) conhecidos por utilizar este tipo de comunicação. Afinal de contas quem nunca baixou uma música ou um filme (e no final veio um porn trevoso e você ficava muito chateado pois sua internet era  de 56kpbs)?

Logo, cada computador do jogador meio que funciona fazendo uma “simulação” completa do jogo. Parece bem simples, mas tem os seus problemas pois os players não podem sair ou se juntar com facilidade nas partidas e ainda tem o risco da “simulação” ser limitada pelo jogador mais lento. (BRASIL AEHOOO)

Isso acabou se tornando inaceitável para jogos mais frenéticos como FPS, e então começaram a usar modelos “cliente-servidor” com aplicação  de técnicas ~diferenciadas~ para melhor performance e “simulação” do jogo.

Leia imitando a voz da Widowmaker de Overwatch.

StarCraft II utiliza o modelo de sincronia p2p por razões pragmáticas: É inviável e talvez impossível, usar um modelo cliente-servidor para jogos RTS. “A quantidade de dados que os jogos de RTS necessitam é extremamente grande” é o que muitos dizem, mas na verdade é um aparente engano, pois se você enviar informações atualizadas sobre tudo de um jeito bem simples ele pode expandir proporcionalmente ao número de unidades no jogo. Confuso? Beba mais um gole da sua cerveja, café ou chá e venha pensar comigo ainda mais.

tumblr_o8clgcLE3x1qjyxtro1_500

*nervouser*

Vamos observar: Largura de banda é limitada, isso para não dizer que pode variar de jogador para jogador. Dados como posição, direção ou qualquer outro estado do jogador tem que ser trocado, multiplicando com o número de unidades do jogo.

Há quem defenda que a solução é ter uma simulação chamada de determinística e trocando únicas coisas que julgam ser o que realmente importam: entradas do usuário. Custei um pouco a encaixar as peças mas isso significa que cada jogador, a partir do mesmo estado em que se encontra, simula e usa entradas na mesma ordem para chegar no momento exato e no mesmo estado futuro, o que resolveria o problema de largura de banda e consequentemente o de comunicação, mas introduz algumas coisinhas diferentes. Para entendermos o quão importante seria esse sistema, podemos citar um exemplo de  um elevador, que move-se gradualmente para o andar correto por causa do comportamento determinístico da malha de controle. Sem o determinismo, o elevador chega ao andar correto, porém sem estabilidade. Com esse exemplo fica tudo mais simples, correto?

Figura 2: Simulação Determinística (a) X Estocástica (b) Fonte: Duarte (2003).

Figura 2: Simulação Determinística (a) X Estocástica (b) Fonte: Duarte (2003).

Pesquisando um pouco da engine de StarCraft, pude saber que map-hacking historicamente tem sido um problema consideravelmente grande. Isso se dá porque cada jogador tem o estado completo do jogo em sua memória, o que inclui unidades escondidas por tais “névoas de guerra”. Em League of Legends não há esse problema, pois seu cliente não tem informação alguma sobre as entidades ocultas até que eles realmente apareçam e se tornem visíveis para a equipe.

Pelo que pesquisei, Dota 2 utiliza Source 2, um motor de FPS (me corrijam se estiver errada). É um cliente-servidor que envia “estados” instantâneos” do jogo uma vez a cada 50 ms aproximadamente. O cliente fica “interpolando” entre esses estados para criar uma experiência  suave.

dota-2-source-2-shadowfiend-particle-effect

Podemos ver que uma desvantagem que a simulação de sincronia determinista impõe é ter tudo devidamente sincronizado. Isso pode significar uma espera para usuários que retardam por uma razão ou outra (desempenho/redes, etc).  Particularmente nunca assisti torneios de StarCraft II ( fãs da franquia, me perdoem pois meu gosto é outro </3), porém pesquisando nos fóruns e sites de SC que espectadores estão acostumados com prováveis lags nos jogos dos torneios (e o de Heroes também, só para dizer que não estou falando dele :p). Isso pode se dar porque não há uma autoridade que dite essa simulação. Todos, até os espectadores das partidas tem que coordenar, estando exatamente no mesmo estado do jogo a fim de avançar de uma forma que incremente a simulação adiante. Isso significa esperar para uma comemoração mais lenta do que está acontecendo ali e transmitido.

starcraft2_b11_137

Reconectar é um dos maiores problemas porque o jogo tem uma simulação de re-executar desde o início até o ponto atual no tempo. Isso você já deve conhecer: a espera infinita como se estivesse “passando o jogo todo de novo” até o tempo atual e provavelmente seu personagem tenha morrido até então (se olharmos dentro de Heroes).

Comunicação p2p para jogos simuladores são extremamente sensíveis a problemas de rede.  E essa situação é extremamente agravada por ter maior número de jogadores, justamente porque a simulação é limitada pela máquina mais lenta.

7WLyS69

O motor de StarCraft II é considerado mal otimizado, exigindo muito CPS, não usando múltiplos núcleos, entre outros pontos que … parecem famíliar? Fazer algoritmos multi-threaded determinista é considerado impossível, pois processos multi-threaded não são determinísticos pela sua natureza. Operações podem ser executadas de forma diferente por causa de uma série de condições que sempre surgirem. Para garantir a ordem correta dos cálculos tudo tem que ser coordenado por um fio. Assim, a velocidade da simulação é limitado pela sua thread principal.

Além disso, um dos problemas é a latência inerente. Em jogos de cliente-servidor, a sua latência é o tempo que leva para os dados viajarem até o servidor. A latência é menos evidente quando a emissão de ordens de unidades ocorre em um ambiente RTS, mas usando habilidades de precisão torna-se complicado. Como aterrar um fúngica em SC2 ou snipe da Nova em Heroes (por isso que ela parece não se encaixar no jogo). 

Então, por que raios a Blizzard usa motor de sintonia RTS para um MOBA?

Heroes-of-the-Storm-Gets-Fresh-Hotfix-to-Drastically-Improve-Reconnect-System-473765-6

Um dos palpites e que acabei concordando seria a economia. “Heroes of the Storm” começou como um mapa personalizado simples de StarCraft II com nome de Blizzard DotA (que por motivos óbvios, não poderia ter este nome). Não compreendo ao certo a finalidade mas seria uma propaganda de um editor de mapas de SC2 que seria lançado gratuitamente para a comunidade. Mudanças vêm e vão, projeto de nome novo,  um tapa ali, uma levantadinha acolá e se tornou o jogo que conhecemos agora.

Provavelmente no momento que eles resolveram fazer a transição do que seria um mapa de SC2 simples para um jogo completo, já tinham inve$tido muito no projeto para que retornasse do zero e fizessem mudanças grandes na infra estrutura. Logo, Heroes é assim por conta de tudo que trouxe pesquisando para vocês, que como eu, não entendia porque certas coisas aconteciam diante da evolução brutal dos jogos.

tumblr_nhla1bRknd1so3sado1_r1_500

Não deixe que a “magia vil”  domine HotS, Blizzard.

Em resumo, sei que existem pessoas incríveis que fazem trabalhos incríveis nessa área na Blizzard. Tenho uma confiança grande de que eles sabem o que estão fazendo. O jogo está sempre com desenvolvimento ativo e por isso há uma esperança bem alta. Porém, quando olhamos o desempenho piorando em um remendinho aqui e outro acolá e pesquisando para entender como funciona, talvez não fique muito bom. Um pouco de otimização é bom, mas se não tiver uma verdadeira reforma em sua estrutura maciçamente considero preocupante. Hoje, vejo Heroes of the Storm se amadurecendo, deixando de ser bebê/criança e se preparando para entrar em uma possível puberdade. Acredito e confio neles, mas também peço que confiem e nos ouçam: pessoas que são verdadeiramente apaixonadas pela fusão de universos tão magníficos e bem cuidados, que querem sentar no pc, efetuar seu login e saber que o jogo está crescendo constantemente com uma melhora constante!

Agora pergunto para você: Como você vê HotS daqui a alguns anos?  Que melhorias além dessas que pesquisei e apontei poderiam aumentar a popularidade e o funcionamento do jogo? O que você sente?

Conte, desabafe, debata, fale. É o nosso Nexus, a nossa casa.

Um grande /hug e nos vemos lá.

Compartilhe este post!
Share on Facebook31Share on Google+0Tweet about this on TwitterShare on Tumblr0Email this to someonePin on Pinterest0