SurrealEngine: reimplementação open source do Unreal Engine capaz de rodar UT99
(github.com/dpjudas)Surreal Engine
O objetivo deste projeto é reimplementar o código original do UnrealEngine para permitir jogar mapas de Unreal Tournament (UT99).
Estado atual
- O engine consegue carregar e renderizar mapas
- A VM de Unrealscript está quase concluída, mas arrays e execução condicional em rede ainda não foram implementados
- Tenta carregar todos os atores de nível e inicializar o mapa
- Os menus e o HUD aparecem, mas muitas funções nativas ainda não foram implementadas
- Alguns eventos podem não funcionar corretamente, e exceções podem ocorrer durante interações
Atualmente, o SurrealEngine consegue detectar os seguintes jogos UE1:
- Unreal Tournament (v436, v451b, v469(a, b, c, d))
- Unreal (v200, v209, v220, v224v, v225f, v226f)
- Unreal Gold (v226b, v227(i, j, k_11))
- Deus Ex (v1002f, v1112fm)
- Klingon Honor Guard (219)
- NERF Arena Blast (v300)
- TNN Outdoors Pro Hunter (v200)
- Rune Classic (v1.10)
- Clive Barker's Undying (v420)
- Tactical-Ops: Assault on Terror (v3.4.0 and v3.5.0 - executado em engines UT436 e UT469)
- Wheel of Time (v333)
Da lista acima, apenas Unreal Tournament v436 e Unreal Gold v226 estão em um estado relativamente jogável. Executar outros jogos pode causar travamentos.
Unreal Tournament v436
- O jogo inicia, as opções de menu funcionam e é possível jogar partidas contra bots
- A IA dos bots é praticamente inexistente, e faltam recursos em alguns mapas (por exemplo, a tela "X está liderando a partida" em DM-Morpheus não funciona)
Unreal Gold v226
- O jogo inicia e a maioria das opções de menu funciona
- É possível jogar mapas single-player e partidas contra bots
- A IA se comporta de forma semelhante à do UT
- Os modelos de objetos de Return to Na Pali aparecem corrompidos
Deus Ex v1112fm
- Apenas o flyby de introdução funciona
- Entradas de teclado e mouse não são detectadas (Deus Ex trata entrada de forma diferente de Unreal/UT)
Parâmetros de linha de comando
SurrealEngine [--url=<mapname>] [--engineversion=X] [caminho da pasta do jogo]
- É possível copiar o executável do SurrealEngine para a pasta System de um jogo UE1 e executá-lo
- Se a pasta do jogo não for especificada, o engine procura no registro (somente Windows) pelas chaves de registro definidas pela Epic
- Se a URL não for especificada, a URL padrão do arquivo ini será usada (o padrão é o mapa de introdução)
- O argumento
--engineversionsobrescreve a versão interna detectada pelo engine e deve ser usado apenas para fins de depuração
Instruções de build no Windows
- Compile o projeto usando CMake
- É necessário ter a versão mais recente do Visual Studio e um compilador MSVC com suporte a C++17
- SDL2 é uma dependência opcional e deve ser fornecida localmente (baixe a versão Visual C++ do SDL2 e indique essa pasta na configuração do CMake)
- Não há outras dependências externas de terceiros
Instruções de build no Linux
- Compile o projeto usando CMake
- Digite os comandos a seguir em ordem para compilar:
git clone https://github.com/dpjudas/SurrealEngine.git
cd SurrealEngine
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 16
-
Quando a compilação for concluída com sucesso, os executáveis
SurrealEngine,SurrealEditoreSurrealDebuggerserão gerados na pastabuild -
Os seguintes pacotes de desenvolvimento são necessários:
- cmake
- g++
- pthreads
- dl
- alsa (libasound2)
- SDL2
- waylandpp (opcional, bindings C++ do Wayland, usado no backend Wayland do ZWidget)
-
No Linux, o SDL2 é obrigatório, e o SurrealEngine o utiliza para recursos de janela e suporte nativo ao Wayland (
SDL_VIDEODRIVER=wayland)
Resumo do GN⁺
- Surreal Engine é um projeto que reimplementa o código original do UnrealEngine para permitir jogar mapas de Unreal Tournament (UT99)
- Atualmente, apenas Unreal Tournament v436 e Unreal Gold v226 estão em um estado relativamente jogável; outros jogos podem travar
- É possível compilar no Windows e no Linux usando CMake, com algumas dependências como SDL2
- O projeto permite voltar a jogar games antigos em sistemas modernos e pode ser interessante para desenvolvedores e engenheiros de jogos
- Um projeto open source com funcionalidade semelhante é o OpenRA
1 comentários
Comentários do Hacker News
Fez o port de Quake III para a web e adicionou suporte a multiplayer e mobile
Achou que este projeto era parecido com o projeto de hospedar jogos de UE1 no UE5
Este projeto o deixou muito feliz e trouxe muitas lembranças
Unreal Tournament 99 e Deus Ex estão entre as lembranças mais felizes com jogos
A Epic poderia tornar o motor original open source, como a id Software fez
Outro desenvolvedor está trabalhando no Surreal 98, que permite jogar títulos de UE1 no UE5 com VR, mods e recursos modernos
Recomenda "Epic Unreal Megaspecial", do Civvie 11
Dockerizou Unreal Tournament 2004, e funciona bem em Linux x86_64
Fica a curiosidade de quanto tempo de desenvolvimento seria necessário para reescrever Quake/Unreal do zero
Sente muita falta de UT99 e não gosta tanto dos jogos FPS modernos