AutomataMP
NieR: Mod multijogador autômato
Aviso
Este projeto é um trabalho em andamento. Embora alguns aspectos importantes do jogo sejam bem suportados, outros não. Não espere fazer uma história completa com alguém neste projeto (ainda).
No momento, este projeto deve ser usado apenas para travessia e exploração básica do mundo com amigos, ou para jogar na sala de depuração. A sincronização de missões ainda não foi implementada. Algumas partes do jogo serão simplesmente quebradas.
Características
Servidor mestre
- Permite que os servidores sejam descobertos pelos clientes sem saber previamente o IP
Servidor autônomo
- Servidor codificado em Go que pode ser executado em Linux ou Windows
- Sistema MasterClient para permitir um "host" que controla o mundo do jogo (inimigos e outros estados mundiais)
- Mais de 2 jogadores são suportados, não apenas jogador + amigo
Pacotes Linux
Arch Linux (AUR)
- Versão marcada
- Versão Git
Sincronização de Jogador
- Posição
- Rotação
- Animações
- Disparo de pod
- Programas de pod
- Lanterna de cápsula
- Seleção de armas/carregamento (mas não os próprios tipos de armas)
Sincronização Inimiga
- Replica a geração de inimigos conforme o MasterClient os gera
- Exclui inimigos nas extremidades normais do cliente que não deveriam estar em rede
- Posição
- Rotação
- Saúde/estado vivo
- Algumas animações
Recursos planejados/desejados
- Trocador de modelo
- JxJ
- Sistema de sala/lobby
- Sistema fantasma quando não conectado a uma sala/lobby
História
Mod que foi desenvolvido em 2017 e teve um desenvolvimento muito curto antes de eu passar para outras coisas. Este não era de código aberto e foi lançado antes, pois as bibliotecas por trás da versão original não eram compatíveis com código aberto.
Como este é um código bastante antigo, originalmente não destinado a ser divulgado publicamente, os padrões de codificação não estão de acordo com o meu conjunto atual. Por favor, perdoe isso. Pode ser corrigido com o tempo.
Final de agosto de 2017
- O desenvolvimento começou
- Muita engenharia reversa
- Sistema de script (mruby?)
- Sistema de entidades
- Sistema de camaradagem
- Animações, botões
- Adicionado enet e enetpp, conectando esses sistemas ao multijogador
- O servidor foi hospedado diretamente dentro do próprio mod, não em um programa independente
- Cliente/servidor comunicado com dados de estrutura bruta definidos em C++
- O sistema usou ganchos VEH para conectar o meio das funções e recuperar o contexto da CPU
Início de setembro de 2017
- Projeto foi abandonado, alguns vídeos curtos dele em ação foram gravados
2017-09-01_06-35-26.webm
Final de julho de 2022 até o presente
- Projeto foi revivido
- Uma combinação de NieR ganhando manchetes, ferramentas de modding sendo lançadas e eu sendo contatado aumentou a motivação aqui
- Removi qualquer código que não fosse compatível com código aberto e substituí tudo pelos equivalentes de código aberto
- O código do servidor foi colocado em um projeto Go independente que pode ser executado em Linux ou Windows
- Código cliente/servidor refatorado para usar flatbuffers para estrutura de pacotes
- Novo sistema usa MidHook do safetyhook para executar ganchos de função intermediária e recuperar o contexto
- Isso é muito mais rápido e não tem as desvantagens de não ser thread-safe
- A refatoração do código do cliente começou a se manter de acordo com os padrões atuais e a refletir melhor a estrutura real do jogo
- Lagarto:
- Correções de bugs na conexão e ligeira remodelação