Sobre el proyecto
FOnline es un motor C++20 con licencia MIT para crear RPG multijugador en línea al estilo isométrico clásico de Fallout 1/2/Tactics y Arcanum. Está en desarrollo continuo desde 2006 e impulsa RPG multijugador de la comunidad, con Last Frontier citado como ejemplo actual.
El diseño prioriza el multijugador: un servidor autoritativo, el estado de entidades replicado y la separación cliente/servidor son centrales en el modelo de entidades en lugar de añadirse por encima. Una sola base de código produce el servidor, el cliente, el editor de mapas, la canalización de contenido y el empaquetado para escritorio, móvil y navegador.
Áreas de características descritas en el README:
- Núcleo multijugador: tiempo de ejecución de servidor autoritativo con gestores de entidades, validación de cliente y análisis reforzado de entrada no confiable; un modelo compartido de entidad/propiedad/prototipo con envoltorios de propiedades type-safe generados y replicación automática; transportes conectables, incluidos sockets TCP, un servidor basado en Asio, WebSockets para juego en navegador, UDP ordenado y transporte en proceso para pruebas; persistencia conectable mediante archivos JSON, SQLite, MongoDB o en memoria detrás de una fachada de base de datos con cola de confirmación asíncrona y registros de recuperación; un autoactualizador de cliente integrado con transferencia de archivos reanudable y un backend de actualización del lado del servidor.
- Scripting: scripting de gameplay con AngelScript sobre un sistema de scripts neutral respecto al backend; la API nativa se exporta a scripts mediante generación de código a partir de anotaciones ///@, manteniendo sincronizados métodos, propiedades, eventos, llamadas remotas y enumeraciones; la nulabilidad se aplica en la frontera script/nativo; se admite la depuración de scripts junto con la depuración nativa.
- Renderizado: backends OpenGL, Direct3D, Vulkan y SDL_GPU, además de modos headless/null para servidores y CI; efectos escritos una vez en GLSL, compilados mediante glslang a SPIR-V y traducidos por backend mediante SPIRV-Cross; mundos isométricos basados en sprites con modelos de personaje 3D (FBX), partículas, reproducción de vídeo y audio en formatos modernos (Ogg/Vorbis) y clásicos de Fallout; modos de ventana, pantalla completa sin bordes y ventanas virtuales multicliente con una superposición de desarrollador ImGui.
- Mundo y mapas: modos de geometría de rejilla hexagonal y cuadrada con ayudantes compartidos para distancia, dirección y vecindarios; búsqueda de rutas, trazado de líneas, contextos de movimiento y un modelo de bloqueo diseñado para la autoridad del servidor.
- Canalización de contenido y herramientas: una canalización de baking convierte prototipos, mapas, diálogos, textos localizados, efectos, imágenes, modelos y scripts en paquetes de recursos de tiempo de ejecución versionados; importa formatos de recursos 2D clásicos (Fallout FRM, Arcanum ART y otros formatos heredados) junto con PNG/TGA; las herramientas interactivas construidas sobre el propio motor incluyen un editor de mapas con automatización headless, editor de contenido, explorador de recursos y editor de partículas.
- Calidad de ingeniería: pruebas unitarias Catch2 con objetivos generados por suite, ejecuciones con sanitizers y cobertura; Clang Thread Safety Analysis aplicado como -Werror en cada toolchain de Clang; vocabularios estrictos de punteros inteligentes y nulabilidad; stack traces siempre activos, reglas deterministas de seguridad ante excepciones y un modelo de asignación terminate-on-OOM; integración del perfilador Tracy.
Arquitectura: el motor es un submódulo reutilizable; un repositorio de juego lo añade como Engine/, apunta la canalización CMake por etapas a su propia configuración y obtiene objetivos de compilación con el nombre del proyecto. El juego posee contenido, scripts, configuración, branding y política de versiones. Contenido como prototipos, mapas, diálogos, localización y GUI se crea como recursos de texto plano y se hornea en paquetes de tiempo de ejecución. Los objetivos compatibles son Windows, Linux, macOS, Android, iOS y Web (WebAssembly); el README señala que no todas las características son igualmente maduras en todas las plataformas.
Estructura del repositorio: Source/ (Applications, Client, Server, Common, Frontend, Scripting, Tools, Essentials, Tests), BuildTools/ (canalización CMake por etapas, generación de código, toolchains, empaquetado), Resources/, ThirdParty/ (SDL, AngelScript, Asio, ImGui, glslang, SPIRV-Cross, Tracy y más vendorizados) y Docs/. La documentación mantenida cubre arquitectura, modelo de entidades, mapas y movimiento, red, persistencia, tiempos de ejecución de cliente y servidor, renderizado, scripting, nulabilidad, canalizaciones de compilación y baking, herramientas, pruebas, seguridad ante excepciones, punteros inteligentes, análisis de seguridad de hilos y depuración por plataforma.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.