[Warpunk] Primeiro vídeo gameplay (mês 4)

Há 1 mês atrás nós apresentamos um trailer que explica a pausa no IMPUNES e início de um novo jogo que estamos criando: Warpunk, um RTS (Real Time Strategy) multiplayer online que se passa num universo de ficções punk, sendo elas, steampunk, solarpunk e cyberpunk.
  

Eu (Junior_Djjr) deixei de trabalhar durante 20 dias para focar um pouco no GTA Brasil e outros projetos de GTA, e nos últimos dias voltei fazendo umas limpezas no Warpunk.
Agora, gravei um gameplay para vocês terem uma noção de como o jogo está, e será.


Como já foi mostrado no trailer, o jogo tem mais do que isto, mas vamos evitar encher linguiça.

Se deseja rever o trailer, está aqui um reupload do vídeo anterior, cortado com somente a parte do Warpunk, para melhor compartilhamento:
O vídeo acima é de 1 mês atrás.

O ciclo de tempo do gameplay foi acelerado por demonstração, obviamente o dia não passará tão rápido assim.

Como se pode ver no gameplay, com sons de pássaros que os brasileiros reconhecem, esta ambientação específica se passa no Brasil (quantos jogos RTS são ambientados no Brasil?), mas haverá também outras, como deserto e neve.

Agora estas construções já estão praticamente prontas, mas ainda queremos colocar detalhes adicionais para ficar mais “steampunk”. Também foram criadas por mim, mas a base do modelo do centro de pesquisa é do Vítor Kuhn. Também foi mostrado mais uma variação de corpo de tanque steampunk, do Meck, um corpo mais robusto, mais caro e com mais espaços para armas.

Obviamente, e como avisado no vídeo, as construções, como fábricas, serão construídas de outra forma, inclusive com animações de construção. O jogo ainda está no início.

warpunk-jogo-brasileiro-rts-2nibble-dev-6091390

Na parte da programação, já são quase 15 mil linhas de código, contando somente as finais, programadas por mim.

Imersão é algo muito importante, portanto nos últimos dias eu foquei principalmente nos sons ambiente, com sons de pássaros que funcionam semelhante ao GTA V, onde os sons são direcionais às árvores, mas que realmente exista um pássaro que saia voando dela, sendo vários diferentes pássaros, e de noite, grilos e corujas.

Não só pássaros, mas realmente todo o som ambiente do jogo já está programado, dia e noite, e alguns sons próprios. Por eu também ser produtor de música, me facilita trabalhar em sons próprios. Eu baixei em torno de 50 sons e misturei eles para criar o som de fabricação de unidades que combinam com o estilo steampunk (é sério, tem sons de cafeteira e coca cola ali).
 
Os efeitos especiais, como fumaças, estão sendo recriados para rodar na GPU em vez de CPU, que é muito mais otimizado, e por ser um RTS, facilmente haverá centenas de efeitos na tela durante as batalhas, então é uma otimização crucial. Inclusive rodam num sistema de pooling.

O sistema de vento é praticamente todo programado no jogo, quase nada da engine, principalmente para ser algo simples e otimizado, visto que é um detalhe cosmético pouco importante, mas caprichado, com variações de vento e influenciado pelo clima (o vento aumenta antes da chuva etc). Os shaders também são próprios.

Se passaram somente 4 meses e já temos um resultado muito interessante. Esperamos que em menos de 1 ano de desenvolvimento teremos uma versão alpha (ou “pré-alpha”) jogável, ou seja, no final de 2020 ou início de 2021. Antes, haverá um crowdfunding para financiar os custos de produção e licenciamento das músicas, com recompensas para os apoiadores.

Siga a 2nibble no Facebook para acompanhar o desenvolvimento deste e outros projetos:


E agora também estamos no Twitter! Ambas têm as mesmas publicações, para você que prefere o Twitter:


Em breve também abriremos um servidor no Discord.

Mais um problema grave e comum nos mods

Não quero ler

Simplesmente baixe a nova versão do VehFuncs que ele corrige um problema grave, e comum, dos mods de veículos para GTA SA. Basta tê-lo instalado que o problema é corrigido.
 

Introdução

O modding do GTA San Andreas é extremamente evoluído, considerando a falta de suporte oficial, e até hoje ainda passamos por dores de cabeça devido à falta de informação do que fazer quando algum erro (crash) acontece.

Durante os primeiros anos desde que criei o site, em 2011, a resposta mais comum para os problemas era “reinstale o jogo” ou “retorne os arquivos de backup, se você fez”. Com a chegada do ModLoader em 2014 a resposta mudou para “vai desinstalando os mods e testando até encontrar”, o que agilizou demais, principalmente seguindo a dica de remover metade-metade. Eu comecei a ganhar um certo conhecimento em engenharia reversa, e em 2015 eu comecei a montar a Lista de Crash, atualmente com basicamente 300 crashes documentados, alguns já muito bem informados.

Com a Lista de Crash, eu percebi que os crashes mais comuns eram causados por problemas relacionados à mods relacionados à modelos, e eu suponho que a maioria seja sobre mods de veículos.

Eu voltei a trabalhar no projeto GTA Brasil, com foco na estabilidade, e na linha de frente você percebe o quão difícil é lidar com crashes que você não consegue ter nenhuma informação.

Pensando nisto, eu atualizei o VehFuncs hoje que inclui a detecção de alguns crashes comuns em mods de veículos, e mostra para você o ID do modelo (vehicles.ide), assim você consegue identificar qual carro etc causou o erro.

Com isto, enquanto identificando e corrigindo os crashes no GTA Brasil, eu encontrei um problema comum que é uma bomba.


Centenas, senão milhares de mods de veículos têm um certo problema…

Eu sempre bato na tecla de que não existe “se funcionou é porque está certo”, é muito comum coisas funcionarem, mas no fundo, estão causando um problema fora da sua vista, que acaba sendo difícil de identificar.

Antes de explicar, há alguns anos atrás, com a montagem da Lista de Crash, eu encontrei um problema comum nos mods de veículos, que é o uso de modelo de sombra muito HD, bate os limites do jogo e parte da memória é sobrescrita (pelo overflow). Isto pode causar crashes estranhos, e um deles é o jogo dar crash ao tentar abrir o menu de configurações gráficas avançadas, e/ou trocar a resolução, após o carro ser carregado. A solução é que, quem cria carros, tenha um modelo de sombra mais lowpoly possível (seguindo o padrão dos carros originais do jogo). Eu ainda não busquei os números exatos do limite, mas seguir os padrões originais, não tem mistério.

Hoje, com a atualização do VehFuncs que informa crashes, eu encontrei um outro problema semelhante, mas ainda mais grave e comum.

Eu já havia notado que o jogo tem um limite de 23 caracteres no nome do node (basicamente, o nome da peça do carro dentro do .dff dele), mas hoje eu percebi que não respeitar esta regra é um problema mais grave do que parecia.

Tentando explicar sem o uso de termos técnicos, o 24º caractere do nome é sobrescrito por um null terminator (na programação, isto é o que indica que final de um texto), então não causa problemas, só perderá o último caractere do nome. No entanto, 25 caracteres, ou mais, causa um overflow (o valor é escrito em partes erradas da memória), onde o valor do ponteiro que referencia aquela peça é escrito num offset da memória referente ao valor ASCII do restante do texto multiplicado por 4 a partir do array dos nodes… O que isto quer dizer é que… Muita merda.

Por exemplo, se o nome da peça tem 25 caracteres e termina com “A”, segundo a tabela ASCII, o valor decimal para “A” é 65, assim ao processar as peças do carro, na criação dele, o valor desta peça será guardado num offset baseado neste 65, sendo que o limite de espaço para guardar é 25 (para não confundir, este 25 não tem relação com o outro 25, foi coincidência).

Isto sobrescreve outras informações do carro por um valor que irá confundir o jogo, e causar bugs e crashes completamente estranhos que é praticamente impossível compreender ao ler as informações no crash log / crash dump. Ou seja, é o pior tipo de crash possível, aquele que é praticamente impossível compreender de onde o problema veio.

Um exemplo que poderia acontecer: o jogo vai tentar ler o valor do nitro do carro, mas terá um valor da peça do carro lá, o jogo irá se confundir e causar crash. Ou não, depende de muitos fatores, principalmente de qual era o final do nome da peça. E isto vale mesmo para bugs e crashes não relacionados com veículos.


Carros adaptados ao pisca-alerta do IVF têm este problema

Calma, não entre em pânico como eu entrei quando eu descobri isto.

Caso você esteja adaptando um carro ou moto para a função de pisca-alertas do IVF, e queira escolher a cor dele (acredite, é muito comum as pessoas escolherem a cor mas ainda usar laranja), o nome do dummy terá 25 caracteres, por exemplo “indicator_lr_prm9a0e00046”, que é um exemplo comum de uso de pisca alerta laranja. O “4” deixará de existir, enquanto o “6” causará o bug que falei logo acima.
Para não se confundir, o valor do caractere “6” na tabela ASCII é 54, não 6. Isto quer dizer que neste exemplo, que é o mais comum, irá sobrescrever o valor da velocidade de rotação da carroceria do carro balançando (aquela função do jogo que faz a carroceria do carro balançar mesmo parado). Não, isto não tem a ver com a carroceria balançando rápido em FPS alto.

Por que eu disse que não precisa se preocupar com este caso?
Antes de sair alertando do mundo sobre este problema, que está em literalmente centenas, senão milhares de mods de carros e motos para GTA SA (lembrando, isto é um problema do modelo, não importa se você está com IVF instalado ou não), eu fui atrás de compreender os possíveis problemas que isto pode causar, e tenho uma boa notícia: neste caso em específico, do IVF, não causa erro no jogo. Mas o problema que falei anteriormente ainda existe, só não no caso desta adaptação do IVF.

Eu verifiquei o problema considerando todas as possibilidades de valores ali. Aquilo é a cor em RGB hexadecimal, isto é, no lugar daquele 6 pode estar 0 até 9, ou “a” até “f”, ou “A” até “F”, e por sorte, em nenhum destes casos causa problema.

Por sorte, o overflow que este problema causa, tanto em carros quanto em motos, é sobrescrito logo em seguida pelo jogo. Mas pelo o que entendi, isto não vale para recarregar o modelo do carro no ModLoader enquanto o jogo está rodando com um carro daquele modelo. Muito menos caso existir algum mod que troca o modelo do carro por outro mas continuando o mesmo (não deve existir, e eu nem vejo motivos práticos pra isto). Nestes casos sim pode causar crash, mas num gameplay normal, não.

Se você estiver interessado, aqui as anotações técnicas enquanto eu testava o problema:
Clique para abrir
indicator_lr_prm9a0e00046

CAutomobile (m_aCarNodes 0x648 array of 25)
'6' = 54
54 * 4 = 216
0x648 + 216 = 0x720
0x720 = 0x70C (m_swingingChassis CDoor) + 0x14
CDoor + 0x14 = m_fAngVel
Reinitialized after? No
Used? Maybe
Bug? Maybe visual
When? First frames when swinging chassis starts to process
Tested? YES, no problem

Possible intervals for '6':
'0'~'9' (48~57):
216: 192~228
0x720: 0x708~0x72C

Start: 0x708 (m_panels[2].m_vecPos.z) (last 4 bytes of "m_panels CBouncingPanel")
Reinitialized after? YES, no problem

Full m_swingingChassis CDoor
Reinitialized after? Partially, not m_fAngle; m_fPrevAngle; m_fAngVel
Used? Maybe only reinitialized parts
Bug? Maybe not, or only visual
When? During swinging chassis
Tested? YES, no problem

End: 0x72C (m_wheelColPoint[0].point.x; m_wheelColPoint[0].point.y) (fist 8 bytes of "m_wheelColPoint CColPoint")
Reinitialized after? YES, no problem

'A'~'F': 65~70:
216: 260~280
0x720: 0x74C~0x760

In general: m_wheelColPoint CColPoint
Reinitialized after? YES, no problem

'a'~'f': 65~102:
216: 388~408
0x720: 0x7CC~0x7E0

In general: m_wheelColPoint CColPoint and wheelsDistancesToGround1
Reinitialized after? YES, no problem


CBike (m_apModelNodes 0x5A0 array of 10)
Possible intervals for '6':
'0'~'f' (48~102):
216: 192~228
0x720: 0x660~0x738

Start: m_anWheelColPoint CColPoint
Reinitialized after? Maybe
Used? Maybe not
Bug? Maybe not
When? Driving

In general, to end: field_710, field_720, field_730 (array 4 each); field_740
Reinitialized after? YES, no problem

There is no turnlights for CBoat and CPlane (dur), so no problems


Quando se preocupar?

Primeiramente, já que agora eu compreendo o problema, neste momento eu atualizei o VehFuncs (v2.0.6) que adiciona uma correção para este problema. Portanto com a versão v2.0.6 ou mais nova instalada no seu jogo, você não precisa se preocupar, todos os carros que têm este erro serão corrigidos automaticamente pelo VehFuncs.

Eu poderia adicionar a correção em outro mod, como MixSets, mas VehFuncs já é consagrado para quem instala e cria mods de carros, então esta correção combina estar nele.

Mas por curiosidade, inclusive porque muitíssimo provavelmente você já teve um bug ou crash causado por este problema (e que a Lista de Crash não te ajudou, pois identificar a origem de um problema como este é muito difícil, pra piorar, pode ser raro o crash aparecer), tenha em mente de que qualquer mod de veículo (seja carro, moto, avião, qualquer), mesmo não tendo nada a ver com IVF, é propenso à este erro, e como eu expliquei, depende de muitos fatores para um bug ou crash aparecer, mas o problema sempre estará lá, não importa o tipo de mod, seja carro HD, lowpoly, qualquer um pode ter este erro, e o VehFuncs adiciona funções pelo nome da peça, alguém pode exagerar e colocar um nome longo, tanto que tutorial de introdução de como adaptar carros para o VehFuncs, eu sempre deixei claro sobre este problema, e repeti ele em outras partes do tutorial (só que na época eu não tinha certeza se isto era grave).

Na Lista de Crash, durante testes de corrigir crashes no 90s AVP, o crash “0x004C53A6”, que é um crash mais comum deste problema, foi documentado como um crash que pode ser comum ou raro, acontecendo logo na primeira vez que o carro é criado, ou mesmo após todos os veículos do jogo sendo carregados e descarregados 60 vezes num stress test, documentado pelo Luiz Felipe. Isto sem contar o possível corrompimento que citei acima, que gera bugs e crashes indecifráveis. Portanto é algo muito inesperado.

E por ser fácil alguém cometer o erro durante a criação, e ao cometer, o veículo continua parecer funcionar normalmente, este problema é realmente comum. Não dizendo que a maioria dos mods de veículos para GTA SA têm isto, mas com certeza são muitas centenas, senão milhares!
Felizmente no caso da adaptação do IVF isto não causa problema, senão o número de carros e motos causando este erro seria, com certeza, milhares.

Como eu disse no início, eu inicialmente fiz isto principalmente para o GTA Brasil 0.2.5, e dos 170+ carros do GTA Brasil, 2 deles tinham este problema, isto mesmo que a nossa comunidade tenha experiência e cuidado no assunto.

Por exemplo, a van Rumpo tinha um node com 2 ou 3 letras acima do limite, e isto causou um offset 12600*4, isto é um número tão alto que o corrompimento não acontece no mesmo carro, mas sim em outros, e em alguns casos o valor cairá em outras regiões da memória do jogo, mesmo não relacionado com carros, causando bugs e crashes completamente estranhos e difíceis de serem entendidos.

Algo semelhante à isto era a causa daquele bug dos artefatos piscando na tela ao instalar mods pesados, já corrigido pelo SilentPatch, e que estava presente nativamente na versão mobile antes da v2.0 (sim, este bug existe desde o PS2, mas não visível devido ao baixo uso de memória, ficou notável no PC e mobile), e como vocês viram, demorou mais de 1 década para aquele bug ser identificado e corrigido, mesmo na versão mobile foi necessário a comunidade modder passar a solução pra eles (a War Drum Studios corrigiu após eu pedir para o Silent, que pediu pra eles, senão até hoje o bug estaria lá, no meu celular por exemplo era impossível jogar por causa daquele bug, mesmo sem instalar mod algum).

Inclusive, é comum modders colocarem o nome completo do carro em algum lugar dentro do .dff dele, às vezes o nome do carro junto com o nome de quem o criou, como créditos, às vezes o ano do carro, e até mesmo o site da pessoa, no lugar do nome da peça “raiz” (que por padrão o GTA SA usa para o nome do carro, mas não é utilizado pelo jogo), e isto é um dos exemplos de ser muito comum ultrapassar os limites, veja: “Bugatti Veyron by Fulano3D” e “Lamborghini Murcielago ’05” têm 26 caracteres. Se alguém decidiu colocar o nome “limpador para-brisa frontal” no limpador de para-brisa, já são 27 caracteres (ou algo assim, se você estiver lendo isto traduzido em outro idioma), e 27 caracteres já é capaz de fazer um estrago muito inesperado no seu jogo.



Sniper Elite Mod (câmera lenta seguindo o tiro)

Inspirado no jogo Sniper Elite, este mod adiciona um “bullet time“, isto é, ao atirar, a câmera segue o trajeto da bala em câmera lenta.
Nota: não funciona com o Bullet Mod by Ryosuke839.
  
Este mod não adiciona a função de estabilizar mira segurando respiração. Para isto, use o mod Sniper Realism, o que é um bom conjunto.
‎Autor: jhgr16
download-baixar-4532137
  
Veja também:

Peugeot 206 GTI (tunável)

O atual melhor Peugeot 206 para GTA San Andreas!
gta-sa-mod-peugeot-206-gti-brasileiro-9968827
Modelo convertido hibridamente dos jogos NFSU2, Juiced e Forza, portanto, malha e texturas de qualidade profissional, muito bem convertido pelo armin360.
gta-sa-mod-peugeot-206-gti-brasileiro-4587316
Peso mediano, 5 MB de .dff, aceitável para PCs fracos-medianos.
gta-sa-mod-peugeot-206-gti-brasileiro-9957024
  • Modelos próprios de sombra, colisão, LOD e danos.
  • Sujeira funcional, incluindo rodas e vidros.
  • Interior e exterior HD.
  • Luzes de painel funcionais.
  • Cores próprias do fabricante — mas eu troquei o prata por um mais escuro.
  • Suporte à paintjobs com imagem template incluída.
  • Tunável no Wheel Arch Angels.
  • Tunável no Tuning Mod.
  • Adaptado ao VehFuncs (rodas extras, volante).
  • Adaptado ao IVF (todas as luzes funcionais, pinças de freio, volante).
  • Adaptado ao AD (limpadores de para-brisa, velocímetro, tacômetro, óleo, temperatura e combustível).
gta-sa-mod-peugeot-206-gti-brasileiro-tuning-tunavel-4469078
Totalmente tunável! Substitui o Flash. Há também uma variação alternativa de para-choques.
As portas acima são do Tuning Mod. Inclusive, por limitações, você terá que ajustar manualmente a posição da fumaça do escapamento no Tuning Mod quando trocar os escapamentos dele, senão ficam na posição errada.
gta-sa-mod-peugeot-206-gti-brasileiro-tuning-tunavel-9788632
E interior totalmente funcional e preenchido com texturas, proporcionando uma experiência realista.
gta-sa-mod-peugeot-206-gti-brasileiro-7592634
As únicas coisas que eu (Junior_Djjr) fiz ao postar aqui foi corrigir a animação do CJ com as pernas enfiadas no volante e não segurando ele (notavelmente o autor queria ter usado aquela animação, pois eu só troquei a animação e a mão ficou perfeita), e trocar o prata por um mais escuro e 

Recomendado SkyGfx para melhores reflexos.

Modelo: NFSU2, Forza Motor Sport 3, Juiced 2 Hot import Nights
‎Conversão: armin360
download-baixar-4532137
  
Veja também:

GTA V To SA Radio Pack + Beta Tracks (rádios do GTA V)

11 estações de rádio convertidas do GTA V para GTA SA, inclusive músicas removidas da versão final. Ou seja, este mod há mais músicas do que a versão PS3/X360 do GTA V!
gta-sa-mod-audio-radios-gta-v-5684431
As rádios incluem locutores, nomes e ícones alterados, e um mod de roda de rádios como no GTA V.
O mod é de 2014, ou seja, não inclui as músicas da versão PC/PS4/Xone.
Como instalar:
Este é um dos poucos mods que eu posto sem testar, e muito menos fazer re-upload (pois são 1,1 GB), mas o Crowdigger há um tempo atrás nos fez o re-upload com a instalação organizada no modloader, então não há mistérios.
No entanto, provavelmente virá um arquivo american.gxt para trocar o nome das rádios (pois é comum as pessoas não saberem da existência de arquivos .fxt), e isto substitui a tradução, então tenha isto em mente ao instalar. Avise nos comentários se veio assim. Lembrando que o principal do mod é a pasta “audio”.
  
‎Rádio: Rockstar North (GTA V)
Conversão: CyberCorpse
Roda de estações de rádio: Gon_Iss
  
Instalação reorganizada (ModLoader), Sharemods
download-baixar-4532137
1,1 GB
  
Instalação manual original, Yadi.sk
download-baixar-4532137
1,1 GB