Como funciona

Do seu disco ao jogo nativo

O Ascension não emula o PS3: ele traduz o próprio código do jogo para C++ e o compila para o seu PC. Aqui está o caminho inteiro, e o que roda por dentro.
Seu (disco, chaves, PC)O código do jogo, traduzidoDo projeto (e do RPCS3)

1. A instalação

O launcher faz tudo isso uma vez, na sua máquina. Por isso nada do jogo precisa ser distribuído: sem o seu disco não há jogo.

O seu disco

A imagem .iso europeia (BCES-01741), tirada do seu disco. Ela não sai do seu PC.

Decriptar

O executável do jogo (EBOOT.BIN) é aberto com as suas chaves e vira um ELF.

Traduzir

O código do PPU e os programas das SPUs viram C++: cerca de 1,8 milhão de linhas, instrução por instrução.

Compilar

O C++ é compilado no seu PC, para o seu processador (20 a 40 minutos).

O jogo nativo

Um executável de PC, ligado ao runtime do ps3kit e ao renderizador do RPCS3.

2. Jogando

No PS3, um processador principal, seis SPUs e uma GPU trabalham juntos a cada quadro. No PC cada um vira threads, e o quadro anda em cadeia: o PPU prepara, as SPUs montam a geometria, o RSX desenha. O desempenho depende de quanto cada passo demora e de quanto um espera o outro.

PPU: o processador principal

A lógica do jogo, já traduzida, roda como C++ num thread do PC.

SPUs: os seis ajudantes

Cada SPU é um thread. Elas montam a geometria de cada quadro (o EDGE, ~55% do quadro hoje), a animação e o pós-processamento.

RSX: o vídeo

Os comandos de vídeo do PS3 vão para o código do RSX do RPCS3, que desenha com Vulkan ou OpenGL na sua placa.

O sistema do PS3

Arquivos, áudio, vídeo das cinemáticas, controles, saves e rede: as bibliotecas do firmware, reescritas no runtime (ps3kit).

Os números de cada passo estão em O projeto.

3. O online

Os servidores originais ainda funcionam para quem joga no PS3, mas o jogo recompilado não entra na PSN. Então o projeto escreve o próprio servidor, que responde só o que o jogo espera e nunca se passa pela Sony. A partida usa o netcode do próprio jogo, e os pacotes passam por um relay do servidor, porque dois jogadores em casa quase nunca se alcançam direto.

O seu PC

Launcher

Entra na conta por um código, baixa a configuração e o seu perfil e passa tudo para o jogo.

O jogo

O runtime manda os endereços que o jogo procura para o servidor do projeto.

O servidor do projeto

Configuração do online

Modos, mapas e regras que o jogo lê ao entrar.

Perfil do multijogador

O que o jogo grava (deuses, XP, itens), guardado na sua conta.

Localização

A primeira pergunta da partida rápida.

Matchmaking

Junta os jogadores numa partida e escolhe o host.

Relay

Leva os pacotes da partida de um jogador ao outro, por UDP.

Contas e site

Login, perfis, troféus e ranking, num banco que não fica exposto à internet.

A partida

O seu jogo ⇄ o relay do servidor ⇄ o jogo dos outros jogadores, por UDP, com o netcode do próprio jogo.

Até onde o jogo já chega: Online.