segunda-feira, julho 13, 2026
Portal Brasil > Tecnologia > Engine open source roda Counter-Strike a 60 FPS no PSP

Engine open source roda Counter-Strike a 60 FPS no PSP

A PocketJS disponibilizou no GitHubOpenStrike, um FPS open-source que reproduz a jogabilidade de Counter-Strike no hardware do PSP, lançado em 2004.

O projeto, licenciado sob MIT, entrega combate por rounds com bots, recuo de armas, tracers e suporte a mapas do formato GoldSrc, tudo em um único arquivo compatível com o Memory Stick do portátil.

O executável ocupa aproximadamente 6 MB, e o pico de uso de memória durante as partidas atinge entre 10 MB e 12 MB.

A versão 0.1 do OpenStrike permanece como projeto single-player com bots e rodadas de eliminação, mas ainda não inclui networking, fase de compra, múltiplas armas e outros recursos básicos.

Onde encontrar o projeto e como executá-lo

O código está no repositório pocket-stack/open-strike e oferece build para desktop via cargo run, além do arquivo EBOOT.PBP pronto para PSP com firmware personalizado (ou seja, desbloqueado) ou emuladores como o PPSSPP.

O projeto não distribui mapas nem texturas protegidos por direitos autorais da Valve, exigindo que o jogador forneça seus próprios arquivos BSP e WAD.

O time de desenvolvimento testou o funcionamento com 8 mapas clássicos da era GoldSrc, e qualquer mapa nesse formato funcionou corretamente.

O motor híbrido que combina Rust, TypeScript e SolidJS no portátil

O OpenStrike funciona por meio de três camadas diferentes. O motor pesado roda em Rust e cuida da física, colisões, inteligência artificial dos bots e renderização por meio do Pocket3D.

As regras de round, pontuação, tabelas de armas e o comportamento tático dos bots são executados em TypeScript. E, por último, mas não menos importante, o HUD inteiro é um componente construído com SolidJS e Tailwind, inspecionável via DevTools durante a execução.

O interpretador QuickJS, selecionado por ser mais leve, processa esse código web moderno diretamente no PSP.

Rust e JavaScript se comunicam uma vez por frame: o motor envia o estado atual e os eventos, e o lado interpretado responde com comandos.

O tempo de processamento do JavaScript ficou em torno de 2 ms por quadro depois que os sinais do Solid foram ajustados para atualizar apenas os elementos modificados na interface.

Especificação Dado técnico
Plataforma alvo PSP-1000 (hardware original)
CPU e clock MIPS a 333 MHz (sem JIT)
Memória total 32 MB
Memória disponível para o programa 24 MB
Pico de uso de memória em jogo 10 MB a 12 MB
Tamanho do executável Aproximadamente 6 MB
Resolução nativa 480 x 272 pixels
GPU Função fixa, sem shaders programáveis
Taxa de quadros 60 FPS travados
Custo do JavaScript por frame Cerca de 2 ms
Formato de mapa suportado BSP da era GoldSrc
Formato de textura após conversão CLUT8 (paleta de 8 bits)
Licença MIT

Como o projeto cabe nos 32 MB de RAM do PSP

O processo de conversão de mapas aplica otimizações agressivas em tempo de build. Um cooker transforma as texturas originais no formato CLUT8 com paleta de 8 bits, projeta a iluminação diretamente nas cores dos vértices e quantiza posições para 16 bits.

A estrutura de visibilidade pré-calculada dos mapas BSP, tecnologia de 1999 conhecida como PVS, continua sendo usada para evitar o processamento de geometria fora do campo de visão. O renderizador tira proveito do hardware gráfico de função fixa do portátil.

Leia mais

  • Jogo de PSP foi central no sucesso do Manchester United, afirma Wayne Rooney
  • Novo portátil para emulação da GameMT parece um PSP e vem com “dial” de performance
  • Portátil retrô GameMT E3 emula até PSP e suporta cartuchos originais do Game Boy Advance!

Sistema de mods acessível para quem já escreveu React ou Solid

As regras do jogo estão no arquivo rules.ts e o HUD no arquivo hud.tsx. Alterar qualquer um desses arquivos pode ser considerado como um mod, já que o motor não concede privilégios ao código base que não estejam disponíveis para modificações externas.

Qualquer pessoa familiarizada com React ou Solid consegue modificar comportamentos do jogo sem recompilar o componente em Rust.

Para finalizar, ressaltamos que o blog do PocketJS documenta o processo completo de desenvolvimento, abordando desde as decisões sobre o loop de 16,7 ms até as técnicas que permitiram a um código JavaScript interpretado ser compatível com um aparelho de 2004, e isso sem degradar o desempenho.

E aí? O que achou da novidade? Compartilhe o seu ponto de vista nesta publicação e continue acompanhando o Adrenaline!

Fontes: GitHub | X (Antigo Twitter) |

Conteúdo Relacionado
Anbernic RG Vita Pro

Desconfie do nome

Anbernic revela RG Vita e RG Vita Pro, portáteis estilo PSP para emular até o PS2



Fonte