0% encontró este documento útil (0 votos)
1 vistas9 páginas

Summer Project Game Engine

Cargado por

lufcresposoliz
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1 vistas9 páginas

Summer Project Game Engine

Cargado por

lufcresposoliz
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

🎮🧠 MOTOR DE VIDEOJUEGOS

(DESDE CERO)
Un motor de videojuegos no se improvisa.
Se construye por capas, como si fuera un mini sistema operativo para juegos.

🧠 QUÉ ES REALMENTE UN MOTOR


Un motor hace 3 cosas principales:

 🌍 Simular el mundo (lógica + física)


 🎨 Renderizarlo (gráficos)
 🎮 Permitir interacción (input + scripting)

Todo lo demás es soporte.

🧱 ARQUITECTURA BASE DEL


ENGINE (C++)
ENGINE
├── Core (loop, tiempo, app)
├── Platform (ventana, OS)
├── Input System
├── Renderer (OpenGL)
├── Scene System
├── Entity System
├── Physics (básica)
├── Resource Manager
├── Audio System
└── Scripting (Lua)

🚀 ORDEN REAL DE DESARROLLO


Si rompes este orden → te pierdes.

🥇 FASE 1: CORE + VENTANA


Sin esto NO existe motor.
while (running) {
pollEvents();
}

🔁 Game Loop (el corazón)


while (running) {
float dt = getDeltaTime();

update(dt);
render();
}

👉 Esto = motor vivo

🎮 FASE 2: INPUT SYSTEM


Detecta teclado y mouse.

if (Input::isKeyPressed(KEY_W)) {
// acción
}

💡 Regla clave:

 Input NO tiene lógica del juego


 Solo detecta eventos

🎨 FASE 3: RENDERER (OpenGL)


Aquí empieza lo visual.

 inicializar OpenGL
 dibujar un triángulo

Si logras esto → ya tienes motor gráfico básico.

🔥 Pipeline mental
CPU → datos → GPU → shaders → pantalla

🌍 FASE 4: SCENE SYSTEM


Una escena = un estado del juego.

class Scene {
public:
void update(float dt);
void render();
};

Ejemplos:

 menú
 juego
 editor
 carga

🧩 FASE 5: ENTITY SYSTEM


Todo es una entidad.

class Entity {
public:
Vector3 position;

virtual void update(float dt) {}


virtual void render() {}
};

Ejemplos:

 cámara
 luz
 enemigo

📦 FASE 6: RESOURCE MANAGER


Evita duplicar memoria.

Model* m = ResourceManager::load("[Link]");

Gestiona:

 modelos
 texturas
 shaders

🎥 FASE 7: CAMERA SYSTEM


Sin cámara no hay mundo 3D.

[Link] = vec3(0, 0, -5);


[Link](target);
🔊 FASE 8: AUDIO SYSTEM
 sonidos
 música
 efectos

🧠 FASE 9: SCRIPTING (LUA 🔥)


Convierte tu motor en plataforma.

function update(dt)
if [Link]("SPACE") then
[Link].y = [Link].y + 1
end
end

C++ expone el motor:

lua["entity"] = entity;
lua["input"] = input;

🧱 FASE 10: PHYSICS (BÁSICA)


No necesitas realismo extremo.

 colisiones
 gravedad simple
 velocidad

if (aabbCollision(a, b)) {
// respuesta
}

🧱 RESULTADO FINAL DEL ENGINE


ENGINE FINAL
├── Window System
├── Core Loop
├── Input
├── Renderer (OpenGL)
├── Scene Manager
├── Entity System
├── Camera
├── Physics
├── Resource Manager
├── Audio
└── Lua Scripting
🧠 IDEA CLAVE (IMPORTANTE)
Un motor NO es:

 ❌ un juego
 ❌ gráficos bonitos
 ❌ física realista

Un motor ES:

 ✅ arquitectura
 ✅ modularidad
 ✅ reutilización
 ✅ orden limpio

🧠🎮 INTERFAZ EN UN MOTOR
Hay 2 tipos:
1. UI del juego (HUD)

 vida
 score
 botones

2. UI del motor (IMPORTANTE PARA TESIS)

 FPS
 inspector
 consola
 debug tools

🧱 ARQUITECTURA UI
ENGINE
├── Core
├── Renderer
├── Scene
├── Input
├── UI SYSTEM (ImGui)
│ ├── Debug UI
│ ├── Console
│ ├── Inspector
│ └── Tools
└── Game (Lua)

🚀 RECOMENDACIÓN PRO
🔥 Usa Dear ImGui

 rápido
 estándar en la industria indie
 fácil con OpenGL
 te ahorra meses

🔁 GAME LOOP CON UI


while (running) {

[Link]();

[Link](dt);

[Link]();

[Link](renderer);

[Link]();
[Link]();
[Link]();
[Link]();
[Link]();

[Link]();
}

🧠 UI SYSTEM
class UISystem {
public:
void init();
void beginFrame();
void endFrame();

void drawDebug();
void drawConsole();
void drawInspector(Entity* e);
};

📊 MÓDULOS CLAVE
🔹 Debug Panel
 FPS
 entidades
 draw calls

FPS: 60
Entities: 128
Draw Calls: 45

🔹 Inspector (pro mode)


Entity: Car
Position: (10, 2, 5)
Rotation: (0, 90, 0)
Speed: 12

🔹 Console
spawn enemy
set gravity 9.8
reload scene

🔹 Tools
 wireframe
 spawn objects
 pause time

🎮 UI DEL JUEGO VS MOTOR


Tipo Uso
HUD jugador
Debug UI dev
Editor UI creación

⚙️INTEGRACIÓN CON LUA


[Link]("Score: " .. score)
[Link](true)
🧱 ESTRUCTURA DE CARPETAS
/engine
/core
/renderer
/scene
/input
/ui
UISystem.h
[Link]
[Link]
[Link]
[Link]

/game (Lua)
/assets

🚀 PIPELINE UI
1. Render mundo 3D
2. Render HUD
3. Render UI del motor

🧠 FRASE NIVEL TESIS


“El motor implementa un sistema de interfaz desacoplado del render principal,
permitiendo herramientas de depuración y edición en tiempo real.”

💥 RESUMEN FINAL
Tu UI del motor debe tener:

 ✔ ImGui integrado
 ✔ Debug panel
 ✔ Console
 ✔ Inspector
 ✔ Tools
 ✔ Separación total del juego

También podría gustarte