AutómataMP
NieR: Mod multijugador de autómatas
Advertencia
Este proyecto es un trabajo en progreso. Si bien algunos aspectos importantes del juego están bien respaldados, otros no. No esperes hacer una historia completa con alguien con este proyecto (todavía).
Por el momento, este proyecto solo debe usarse para recorrer y explorar mundos básicos con amigos, o para jugar en la sala de depuración. La sincronización de misiones aún no está implementada. Algunas partes del juego simplemente se romperán.
Características
servidor maestro
- Permite que los clientes descubran los servidores sin conocer la IP de antemano
Servidor independiente
- Servidor codificado en Go que puede ejecutarse en Linux o Windows
- Sistema MasterClient para permitir un "anfitrión" que controle el mundo del juego (enemigos y otros estados del mundo)
- Se admiten más de 2 jugadores, no solo jugador + amigo
Paquetes de Linux
Arco Linux (AUR)
- Versión etiquetada
- Versión Git
Sincronización del reproductor
- Posición
- Rotación
- animaciones
- Disparo de cápsulas
- Programas de cápsulas
- linterna de vaina
- Selección de armas/equipamiento (pero no los tipos de armas en sí)
Sincronización enemiga
- Replica la aparición de enemigos a medida que MasterClient los genera.
- Elimina enemigos en los extremos del cliente normal que no se supone que estén conectados en red.
- Posición
- Rotación
- Estado de salud/viva
- Algunas animaciones
Funciones planificadas/deseadas
- Cambiador de modelo
- JcJ
- Sistema de sala/vestíbulo
- Sistema fantasma cuando no está conectado a una habitación/vestíbulo
Historia
Mod que se desarrolló allá por 2017 y tuvo un desarrollo muy corto antes de pasar a otras cosas. Esto no era de código abierto y se lanzó antes ya que las bibliotecas detrás de la versión original no eran compatibles con el código abierto.
Debido a que este es un código bastante antiguo que originalmente no estaba destinado a ser publicado públicamente, los estándares de codificación no están a la altura de mi conjunto actual. Por favor perdona esto. Es posible que se solucione con el tiempo.
Finales de agosto de 2017
- El desarrollo comenzó
- Mucha ingeniería inversa
- Sistema de secuencias de comandos (mruby?)
- Sistema de entidad
- Sistema de amigos
- animaciones, botones
- Se agregaron enet y enetpp, conectaron estos sistemas al modo multijugador.
- El servidor estaba alojado directamente dentro del propio mod, no como un programa independiente
- Cliente/servidor comunicado con datos de estructura sin procesar definidos en C++
- El sistema utilizó ganchos VEH para conectar la mitad de las funciones y recuperar el contexto de la CPU
Principios de septiembre de 2017
- El proyecto fue abandonado, se grabaron algunos videos cortos del mismo en acción.
2017-09-01_06-35-26.webm
Finales de julio de 2022-presente
- El proyecto fue revivido
- Una combinación de NieR en los titulares, el lanzamiento de herramientas de modificación y el hecho de que me contactaran aumentaron la motivación aquí.
- Se eliminó cualquier código que no fuera compatible con el código abierto y se sustituyó todo por sus equivalentes de código abierto.
- El código del servidor se colocó en un proyecto Go independiente que puede ejecutarse en Linux o Windows.
- Código cliente/servidor refactorizado para utilizar búferes planos para la estructura de paquetes
- El nuevo sistema utiliza MidHook del gancho de seguridad para realizar enlaces de función media y recuperar el contexto.
- Esto es mucho más rápido y no tiene los inconvenientes de no ser seguro para subprocesos.
- La refactorización del código del cliente comenzó a cumplir con los estándares actuales y a reflejar mejor la estructura real del juego.
- Lagarto:
- Correcciones de errores de conexión y ligera remodelación.