Wednesday, August 20, 2014

:: Beta Patch para USF4 ::

Vou postar aqui pra ver se a informação alcança um público maior.

No dia de hoje a Capcom lançou um Beta Patch pro USF4 do Steam. A ideia é que nós, os jogadores, testemos esse patch em "ambiente real", ou seja, em nossas jogatinas online, pra daí ela saber se esse patch já resolve nossos problemas de conectividade, ou se ainda precisam melhorar alguma coisa. E claro, precisam saber se o patch por acaso não acaba estragando outras coisas no game.

Quanto mais gente participar do teste, melhor! Até porque daí quem está testando vai ter mais gente com quem jogar online (seja Ranked Matches ou Endless Battles), melhorando o nível do feedback. Mas claro, não adianta testar e ficar quieto. Se achar algum problema, o ideal é reportar pra Capcom no forum do Steam. Abaixo vou postar as infos.

Como habilitar o patch beta:

  1. Abra o Steam e vá em Library (Biblioteca)
  2. Clique com o botão direito em cima do USF4 e selecione PROPERTIES (PROPRIEDADES)
  3. Vá na aba BETA
  4. Digite o seguinte código (atenção, tem que ser bem como está aí, com maiúsculas e minúsculas): USFIVBetaBranch
  5. Daí no menuzinho (dropdown) que tem logo antes, selecione o beta foi liberado, e dê OK
  6. Espere o steam baixar o update gigantesco de meros 2.9MB 
  7. Abra o jogo e teste
Agora é só jogar online e ver no que dá.

Como reportar:

Acesse esta thread no forum do Steam: http://steamcommunity.com/app/45760/discussions/0/34095684441521237/

Basta ler os requisitos que o wbacon postou (especificações de hardware, internet, etc) e então reportar como tem sido sua experiência após instalar o beta patch.

Mas claro, pra reportar lá, tem que ser em inglês. Se alguém precisar de uma mão pra traduzir a mensagem de pt_BR pra inglês, me manda uma mensagem que, tendo um tempinho, eu traduzo.

Ah sim, muito importante. Quem estiver com o beta patch instalado só vai conseguir jogar contra quem também o tem. PRESTEM ATENÇÃO NISSO ANTES DE SAIR MIMIMIZANDO POR AÍ HEIN!

Bom, fiz minha parte ;)

Tuesday, August 12, 2014

:: USF4 no Steam - Por que está tão ruim? ::

Bom, como está havendo muita confusão na FGC brasileira quanto aos porquês do Ultra Street Fighter 4 estar com tantos problemas online no PC, resolvi tentar facilitar a vida da galera. Não, não sou um mestre/especialista/gênio no assunto, mas juntando informações que catei por aí, somadas ao meu conhecimento de redes (trabalho na área), creio que dá pra ajudar o pessoal.

Primeiro, um pequeno histórico. Até a metade deste ano, a galera do PC jogava SSF4 via GFWL (Games For Windows Live). Algumas pessoas tinham problemas pra jogar, muitas vezes causados por internet meia boca, roteamento complicado entre jogadores, etc. Mas NO GERAL, a experiência era boa. Alguns inclusive chegavam a dizer que jogar online no PC era melhor que na XBL (XBox Live).

Dois meses antes de sair o USF4 para PC, a Capcom migrou o SSF4 da GFWL para o Steam. Aí começaram as tempestades. Muita, mas MUITA GENTE sofrendo com lag nas partidas. Porém, alguns jogadores diziam não sofrer tanto o problema.

Semana passada um cara (poke133) da Romênia postou o resultado de uns testes que ele fez (http://www.reddit.com/r/SF4/comments/2d0idk/usf4_pc_netcode_is_100_bugged_heres_why_network/).

Traduzindo (pra galera que não manja a língua do Tio Sam) e resumindo:


  • Ele jogou online usando o SSF4 na GFWL (ainda achou gente no Ranked pra testar) e depois o USF4 no Steam.
  • No SSF4 (GFWL), quando o jogo acha lobbies de Ranked, ele manda alguns "pacotes de ping" pra testar a conexão entre o jogador e os hosts dos lobbies e PÁRA DE MANDAR PACOTES. Aí tu entra num lobby e ele pára de mandar esses pacotes.
  • No USF4 (Steam), o início é igual, porém mesmo depois de tu entrares num lobby, ele segue mandando pacotes para aqueles hosts que apareceram na lista de Ranked. E pior, ele segue mandando pacotes mesmo depois da luta já ter começado.
Bem, esse foi o "achado" do poke133. Isso vem de encontro a uma teoria que eu vinha formando mesmo antes de ter lido essas informações:

  1. Quem tem internet com upload acima de 1mbps, quase não sofre esse problema. E claro, quanto maior o upload do seu link (2mbps pra cima), aí o cara nem nota.
  2. Quem tem internet fedorenta com upload de 512kbps (são MUITOS NO BRASIL), não consegue jogar UMA PARTIDA SEQUER sem lag, quando se trata de Ranked match.
Claro que se um cara do caso #1 jogar contra um cara do caso #2, vai haver lag para ambos. Neguinho do caso #1 só não vai notar lag se jogar com gente na mesma situação.

Isso porque além dos pacotes que o jogo naturalmente envia de uma máquina pra outra durante a luta, ficam trafegando esses "pacotes de ping". Então quem tem upload pequeno, acaba tendo o link "entupido" mais facilmente. Numa analogia meio doida, é a diferença de tentar fazer 100 carros passarem por uma rua de mão única onde só passa um carro por vez, ou numa auto estrada de cinco pistas.

Então pessoal, não é culpa dos "servidores do Steam". O problema é o netcode ruim que a Capcom colocou no SSF4AE2014 e que é o mesmo no USF4. Essa situação só vai melhorar com a Capcom corrigindo esse netcode fuleiro, ou se todo mundo conseguir links de internet com upload acima de 1mbps (impossível no Brasil).

"ah mas então só nós Brasileiros xexelentos estamos sofrendo com isso..."

Não! Tem muito "gringo" reclamando disso no fórum do Steam e outros lugares (como o reddit).

Se alguém quiser contribuir com essa "tese", agradeço. Seja corrigindo alguma coisa que possa estar errada na minha visão do problema, seja adicionando infos... ou seja refutando completamente o que eu escrevi ;)

Espero ter ajudado um pouco.


P.S. - Antes que alguém se magoe, meu link de internet é um desses "fedorentos". Apesar de ter um link de 10mbps (download), a Oi/Velox só me dá 512kbps de upload. Logo... eu sofro como a maioria dos Brasileiros mortais.


Keep calm and Tatsumaki Gorasen!

Friday, August 08, 2014

:: Trying a new Linux distribution ::

Postzinho relâmpago pra informar a Matrix que troquei a distribuição Linux que uso no meu desktop e notebook do trabalho. O desktop foi ontem, o notebook foi hoje. Até então eu estava usando Elementary OS Luna. Acho que usei por mais ou menos 1 ano.

A distribuição é legal, leve e tal, mas começou a me incomodar um pouco. Por exemplo, eu conectava o meu celular na porta USB do PC/Notebook e o SO não me dava a opção de transferir arquivos entre os dispositivos. Daí pra fazer backup das tralhas que tenho no cel, tinha que esperar chegar em casa pra fazer isso com meu bom e velho Slackware de guerra.

Então agora pulei pro Linux Mint 17 Qiana - KDE. Olha, por enquanto estou curtindo. De cara a primeira coisa que testei foi conectar o smartphone ao PC e... FUNCIONOU! ;)

Bye, bye Elementary OS! Foi bom enquanto durou.

Tuesday, August 05, 2014

:: PC - Coruscant in new incarnation ::

Fazendo uma busca aqui no meu blog pra ver se eu lembrava o modelo do meu monitor, acabei encontrando um post antigo com um "histórico" das atualizações que minha máquina sofreu desde sua criação. Na época eu ainda metia muitos posts em inglês por aqui.

Bom, vamos dar continuidade ao "changelog":

2002 - Coruscant is created: ASUS A7N-Deluxe (motherboard), Athlon XP 1500+, 512MB DDR 333MHz, NVidia MX440 64MB (AGP), HD of 40GB, 17" CRT monitor LG 777Fn+ and a "generic" power suply;

2004 - about this time came the first upgrade: Athlon XP 2400+, 1.5GB DDR 333MHz, NVidia FX 5900XT 128MB (AGP), 2 HDs of 40GB each, same monitor and a SevenTeam 520W power suply (stronger and more decent than the predecessor);

2006 - next upgrade, arriving at the 64bits era: ASUS A8N-E (motherboard), Athlon 64 3500+, 3GB DDR 400MHz, NVidia 6800GT 256MB (PCI-Express), 2 HDs SATA-2 (250GB and 320GB), 19" LCD (LG) and same power suply;

2007 - only the monitor is upgraded: I sold the 19" LCD and bought a 20.1" widescreen LCD (also LG);

2008 - last upgrade (so far), arriving in the multi-core era: ASUS P5K-SE (motherboard), Intel Core 2 Quad (Q6600), 4GB DDR2 800MHz, same video card, same HDs, same monitor, same powersuply, new case.

2009 - Troquei a placa de vídeo, colocando uma NVidia 9600GT.

2010 - Coloquei mais memória, ficando com 8GB DDR2 800MHz e comprei mais um HD de 1TB SATA-2

2011 - Troquei a placa de vídeo, colocando uma AMD Radeon HD 5850 e já troquei a fonte para uma Corsair 750W. Também troquei o monitor para um Samsung P2470HN.

2013 - Upgrade mais fortinho, trocando mobo (ASUS H87M-PLUS), CPU (Intel Core i7-4770) e memória (Corsair 8GB DDR3 1600MHz)

Bom, vejamos se lembro de postar novas informações no próximo upgrade hehehehehe Ah, e notem que os HDs são os mesmos há um bom tempo hehehehee.

Saturday, July 05, 2014

:: Gravar sessão de game no PC com baixo impacto na performance ::

EDITADO em 08/07/2014 para inserção de novas infos

E não é que um sábado chuvoso pode ser proveitoso, intelectualmente falando?

Boa parte dos gamers curte gravar suas sessões de jogatina. Seja pra analisar como foi seu desempenho e tentar melhorar (usualmente quem joga competitivamente faz isso), pra mostrar alguma jogada legal para os amigos, ou mesmo pra se exibir (tem muito nego que faz isso no youtube).

Muito antigamente, a gente ligava o videogame num video cassete e gravava ahahahahahah Sim, fiz um bom tanto disso. Hoje em dia, com as novas tecnologias, temos as seguintes possibilidades (talvez eu não liste todas, mas...):
  1. Liga o videogame/PC num dispositivo de gravação (ex: Avermedia Live Gamer Portable ou Elgato Game Capture)
  2. Faz a gravação usando uma placa de captura de video
  3. Usa um software de captura de video no próprio PC onde se está jogando (nesse caso os videogames dançam)
  4. Faz streaming da jogatina para um servidor e a gravação fica por conta desse servidor.
  5. Usa uma câmera para filmar a tela da TV/Monitor.
As opções #1 e #2 são boas em termos de performance, mas são caras, ainda mais em se tratando de Brasil. A #5 é uma boa opção por não afetar a performance do jogo, porém a qualidade do audio e video pode ficar comprometida, bem como, dependendo do dispositivo usado (camera digital ou celular), pode ficar complicado no que diz respeito a espaço para armazenamento. A opção #3 é barata, porém afeta a performance do jogo, pois acaba havendo queda de FPS (frames por segundo). A opção #4 fica, em termos de impacto de performance, abaixo das #1 e #2, mas acima da #3.

Porém, não é qualquer um que consegue ter um link de internet decente para fazer streaming das suas sessões de game com uma qualidade decente e, AINDA POR CIMA, conseguir jogar sem que esse streaming gere lag na sua conexão.

Pois bem, há um bom tempo eu uso o OBS (Open Broadcast Software) para gravar minhas sessões de game (usualmente SF4). Como explicado acima, ficava na #3. Mas eu queria poder gravar minha sessões sem afetar tanto assim o jogo. A #4, pra mim, é totalmente inviável, visto que a Oi/Velox, na minha cidade, me fornece apenas 512kbps de upload. Um lixo!

O OBS pode fazer streaming para serviços como TwitchTV (entre outros), mas né... meu link... Então eu pensei "Será que consigo fazer o OBS mandar o stream do jogo para um servidor LOCAL, e esse servidor gravaria a jogatina?" Dei uma pesquisa HOJE e descobri que existe um módulo para o NGINX que faz essa magia. Então a coisa fica assim:

  1. OBS pega o audio e video do jogo, gera um stream e manda para o NGINX
  2. NGINX pega o stream e grava em um arquivo de video (FLV)
Notar que o impacto, na parte de I/O (Entrada/Saída), ou seja, a gravação do video em arquivo, fica no servidor.

Então para isso precisamos de dois equipamentos: o PC onde se vai jogar e um outro que vai fazer a gravação (PC, notebook, servidor, etc)

No meu teste utilizei o Media Server que tenho em casa, um SheevaPlug (processador ARM 1.2Ghz e apenas 512MB de memória, bem fraquinho) rodando Debian. Então rodei um replay da ultima partida de SSF4AE2012 que eu tinha e mandei o OBS fazer o streaming. Depois da partida terminada, parei o OBS e fui olhar no servidor. Tinha um arquivo FLV gravado. Rodei esse arquivo com o VLC e, para minha grande surpresa, lá estava a partida perfeitinha, em 1280x720@60fps, do jeito que eu tinha configurado no OBS.

Edit: fiz uns testes mais sérios pra ver o impacto de performance. Rodei o SSF4AE2014 (PC) sem estar gravando ou streaming.

  1. Entrei no Benchmark do jogo e o resultado ficou mais ou menos em 221fps. Fiz esse teste várias vezes seguidas
  2. Fiz o Benchmark de novo, só que agora mandando o stream pro meu servidorzinho. A perda foi de cerca de 10fps. Fiz esse teste várias vezes
  3. Fiz o Benchmark mais umas vezes, agora deixando o OBS gravar o video direto no meu PC. A perda foi de quase 20fps. Fiz esse teste várias vezes.
Ou seja, acho que é viável o uso dessa solução (OBS+Nginx).

Edit 2: Meu amigo Rain falou das tecnologias das placas de video atuais em que dá pra fazer a própria VGA fazer o encoding de video, liberando assim a CPU da máquina, o que deve diminuir ainda mais a perda de FPS do jogo. Porém como minha VGA é meio velha (AMD Radeon HD 5850), ela não suporta essa funcionalidade. Então, na minha atual conjuntura, o jeito é usar OBS+Nginx mesmo.

Edit 3: Como minha VGA é velha e não tem suporte ao que citei logo acima, insisti nas pesquisas. Tentei achar um jeito de conseguir diminuir ainda mais o impacto na performance dos games enquanto estiver fazendo streaming pro meu servidor. E o "pior" é que encontrei. Descobri a funcionalidade QUICK SYNC, presente em processadores Intel mais novos (não, não precisa ser da última geração). Meu processador é um Intel Core i7-4770. Dei uma lida rápida nos specs dele e sim, possui suporte a Quick Sync. O que isso faz? Utiliza a GPU (sim, processador gráfico) que esses processadores da Intel tem internamente para fazer processamento de video, encoding, etc. Além de ter um processador com suporte a Quick Sync, a Motherboard (Placa-mãe) precisa ter uma saída de vídeo. Então os passos para o habilitar são relativamente simples:


  1. Na BIOS do computador, habilitar a iGPU ou placa de video onboard
  2. Baixar e instalar o driver atualizado para a placa de video onboard (isso deve requerer um reboot do PC)
  3. Habilitar o uso dessa placa nas configurações de video do Windows. Não é preciso ter um monitor conectado à saída de video onboard do PC. Basta habilitar esse display.
  4. Agora abra o OBS, vá nos Settings (configurações) e na área de Encoding deve liberar a opção para marcar Quick Sync.
Feito, com isso o encoding será feito pela GPU do seu processador, liberando "mais gás" pra CPU. Ah sim, enquanto não habilitamos isso, essa iGPU fica inativa por toda a eternidade ;)

Complementando, ontem fiz novos testes, diferente. Instalei o FRAPS no meu PC apenas para que ele fizesse o benchmark dos FPS enquanto eu rodava um replay no SSF4AE (lembrando que o jogo roda a 60fps).

  1. Rodei o replay, mandei o Fraps fazer o benchmark por 60s, sem o OBS fazer streaming. Resultado: 60fps no jogo
  2. Rodei o mesmo replay, Fraps fazendo benchmark por 60s, com o OBS fazendo streaming para meu server e encoding via Quick Sync. Resultado: 60fps no jogo
Então agora, criançada... vou gravar MUITA SESSÃO DE GAMES hehehehehehe

Ah sim, a dica de como fazer a magia acontecer eu peguei aqui: https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server-using-nginx.50/

"Esses negros maravilhosos!" (ROBERTO, Luis. 2014)