Anar al contingut
  1. Projects/

Coffee Engine

·664 paraules·4 mins·
C++ OpenGL Game Engine

Coffee Engine és un motor de jocs creat des de zero per Hugo Planell Moreno i jo com a projecte personal i acadèmic, amb l’objectiu d’aprendre en profunditat com funcionen els motors de jocs.

Aquest projecte va començar com un experiment d’estiu i més tard es va convertir en la base per a l’assignatura de Motors de Jocs al tercer any del Grau en Disseny i Desenvolupament de Videojocs del CITM. El projecte va rebre una Matrícula d’Honor, aconseguint una puntuació perfecta (10/10).

També va ser seleccionat com el motor oficial perquè tota la classe desenvolupés un joc amb 40 estudiants com a part de l’assignatura Projecte 3. Per saber-ne més pots llegir el meu post sobre Warhammer 40.000: The Last Marine aquí.

Característiques
#

Arquitectura
#

  • CoffeeEngine Core Library: Arquitectura modular
  • CoffeeEditor: Editor complet
  • Cross-Platform Support: Suport per a Windows i Linux

Renderitzat
#

Renderitzat 3D
#

  • Forward Rendering Pipeline: Implementació moderna
  • PBR Materials: Pipeline PBR
  • Shader Materials: Suport per a shaders personalitzats
  • Textures: Sistema de càrrega i gestió de textures
  • Skybox: Mapejat d’entorn HDR
  • HDR Rendering: Pipeline d’alt rang dinàmic

Postprocessat
#

  • FXAA: Implementació de Fast Approximate Antialiasing
  • Bloom: Bloom basat en física
  • Fog: Depth Fog
  • Tone Mapping: AgX tone mapping

Il·luminació i Ombres
#

  • Directional Lights: Llum direccional / sol amb ombres
  • Point Lights (Omni): Fonts de llum 360 graus
  • Spot Lights: Il·luminació direccional en forma de con
  • Directional Shadows: Mapeig d’ombres en temps real
  • Image-Based Lighting (IBL): Il·luminació ambiental
  • Frustum Culling: Optimització basada en octree

Renderitzat 2D
#

  • Renderer2D: Renderitzat optimitzat de sprites 2D
  • 2D Batching: Optimització automàtica de draw calls

Sistemes de Joc
#

Entity Component System (ECS)
#

  • EnTT Integration: Gestió eficient d’entitats
  • Scene Tree: Organització jeràrquica d’escenes
  • Component System: Composició modular d’objectes de joc
  • Model Loading: Importació i gestió de recursos 3D

Sistema d’Animació
#

  • 3D Skeletal Animation: Animació de personatges basada en ossos
  • Animation Blending: Transicions suaus entre estats
  • Partial Animation Blending: Animació de parts del cos per capes

Sistema de Prefabs
#

  • Reusable Templates: Plantilles d’objectes basades en components
  • Hierarchy Preservation: Relacions pare-fill
  • Cross-Component References: Integritat automàtica de referències
  • Human-Readable Serialization: Format .prefab amb control de versions
  • Runtime Instantiation: Creació dinàmica de prefabs

Àudio
#

  • Wwise Integration: Middleware professional d’àudio
  • 3D Spatial Audio: Àudio posicional amb atenuació per distància
  • RTPCs: Controls de paràmetres en temps real
  • Audio Banks & Events: Gestió organitzada de recursos d’àudio
  • Auxiliary Sends: Enrutament d’àudio definit pel joc

Navegació#

  • Pathfinding System: Navegació IA amb evitació d’obstacles
  • Navmesh Generation: Creació automàtica de malles de navegació

Físiques
#

  • Bullet Physics Integration: Simulació de físiques
  • Rigid Body System: Cossos estàtics, dinàmics i cinemàtics
  • Collision Detection: Esdeveniments d’entrada/permanència/sortida amb manifolds
  • Multiple Collider Types: Caixa, Esfera, Càpsula, Cilindre, Con
  • Raycasting API: Detecció d’impacte simple/múltiple
  • Physics Debugging: Visualització de formes de col·lisió i debug de raycast

Scripting
#

  • Lua Integration: Interoperabilitat C++/Lua potenciades per Sol2
  • Advanced Bindings: Conversions automàtiques de tipus i gestió d’errors
  • IntelliSense Support: Fitxers stub generats automàticament
  • Language-Agnostic Design: Extensible per a llenguatges addicionals
  • Entity Integration: Vinculació directa de scripts a objectes de joc

Eines de Desenvolupament
#

Gestió de Recursos
#

  • Asset Pipeline: Importació i processament automàtic
  • Resource Caching: Càrrega intel·ligent d’assets
  • Hot Reloading: Actualitzacions de recursos en temps real

Funcionalitats de l’Editor
#

  • Scene Hierarchy: Gestió visual del graf de l’escena
  • Component Inspectors: Edició de propietats en temps real
  • Asset Browser: Interfície de gestió de recursos
  • Viewport: Visualització d’escena 3D

Profiling i Depuració
#

  • Tracy Integration: Profiling de rendiment en temps real
  • Debug Rendering: Sistemes visuals de depuració
  • Console & Logging: Eines integrades de depuració

Serialització i Persistència
#

  • Scene Serialization: Sistema complet de guardat/càrrega d’escenes
  • Cereal Library: Serialització robusta amb versions

Tecnologies Utilitzades
#

  • C++
  • OpenGL
  • Assimp
  • EnTT
  • GLM
  • ImGuizmo
  • NativeFileDialog-Extended
  • Sol2
  • Tracy
  • Cereal
  • FMT
  • ImGui
  • Lua
  • SDL3
  • SPDLOG
  • Bullet3
  • Wwise

Explora el Projecte
#

Pots trobar més informació sobre el projecte a diverses plataformes:

Gràcies per explorar Coffee Engine!