Skip to content

lord-pixc/EntityEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EntityEngine

EntityEngine es un prototipo ligero de motor 2D escrito en C++ que utiliza SDL3 para gestionar la ventana y la entrada. Incluye utilidades básicas de tiempo y logging para facilitar el desarrollo de pequeños juegos o demos técnicas.

Características

  • Bucle principal listo para usar mediante EntityEngine::Application, responsable de inicializar SDL, crear la ventana y despachar eventos.
  • Gestión de entrada con InputCodes, Input e InputMap: códigos propios del motor, estado de teclado/ratón y actions configurables.
  • Utilidades de tiempo (Time) para medir delta time, FPS y tiempo total desde el arranque de la aplicación.
  • Sistema de logging sencillo con niveles de severidad configurables.
  • Renderizado 2D a través de una interfaz IRenderer2D y una implementación de referencia basada en SDL.

Estructura del proyecto

  • engine/ contiene el motor como biblioteca:
    • include/ headers públicos organizados por módulo (Core, Render, Platform).
    • src/ implementación de cada módulo.
  • game/ ejecutable de ejemplo que consume el motor.
  • external/ dependencias externas (si aplica).
  • CMakeLists.txt archivos de configuración de CMake para compilar la biblioteca y el juego.

Requisitos previos

  • Compilador C++17 o superior.
  • CMake 3.16+ para la configuración del proyecto.
  • Cabeceras y librerías de desarrollo de SDL3 disponibles en el sistema.

Cómo compilar

  1. Crear el directorio de compilación:

    cmake -S . -B build
  2. Generar los binarios:

    cmake --build build

Esto produce la biblioteca del motor y el ejecutable de ejemplo en build/.

Cómo ejecutar

Después de compilar, ejecuta el ejemplo desde la raíz del proyecto:

./build/game/Game

Si SDL no encuentra los backends de vídeo del sistema, revisa la instalación de las dependencias (drivers, paquetes de desarrollo o variables de entorno como SDL_VIDEODRIVER).

Uso rápido del motor

  • Incluye engine/include/Core/Application.h y crea una instancia de EntityEngine::Application con el título y dimensiones deseadas.

  • Llama a Run() para entrar en el bucle principal.

  • Consulta Input::IsKeyHeld, Input::IsKeyJustPressed o Input::IsKeyJustReleased con KeyCode. Para ratón usa MouseButton con Input::IsMouseButtonHeld y sus variantes JustPressed/JustReleased.

  • Usa InputMap para crear acciones configurables:

    inputMap.Bind("Jump", EntityEngine::KeyCode::Space);
    inputMap.Bind("Attack", EntityEngine::MouseButton::Left);
  • Utiliza Time::GetDeltaTime() para que tu lógica sea independiente de la velocidad de fotogramas y Time::GetFPS() para mostrar diagnósticos.

  • Ajusta el nivel mínimo de logs con Log::SetLevel y emite mensajes usando las macros EE_LOG_*.

Extensión y personalización

  • La interfaz IRenderer2D permite añadir nuevos backends (por ejemplo, OpenGL o Vulkan) implementando BeginFrame, Clear y EndFrame.
  • Window expone GetNativeWindow() y GetRenderer() para integrar otras APIs de renderizado o librerías de UI.
  • Application::OnUpdate es el punto pensado para conectar sistemas de escena, entidades y lógica específica del juego.

Contribuir

Las contribuciones son bienvenidas. Si encuentras problemas o tienes sugerencias para nuevas características, abre un issue o envía un pull request describiendo los cambios propuestos.

About

A beta of a 2D game engine

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors