Skip to main content
  1. Projects/

Coffee Engine

·298 words·2 mins·
C++ OpenGL Game Engine
Table of Contents

Coffee Engine is a small game engine made from scratch by Hugo Planell Moreno and myself as a personal and academic project, with the purpose of learning more in-depth about how game engines work.

This project started as a summer experiment and later became the foundation for the Game Engine course in the third year of the CITM Game Design and Development Bachelor’s Degree. The project received the highest distinction in the course (MatrĂ­cula de Honor), achieving a perfect score (10/10).

It was also selected as the official engine for the entire class to develop a game with 40 students as part of the Project 3 subject. The game is currently in development, and once it is released at the end of Q2-2025, I will update this post with more information.

The project is cross-platform, tested on Windows and Linux. macOS support is possible, but since we don’t have Apple devices, it hasn’t been tested.

Features
#

  • Cross-platform (Windows, Linux, macOS)
  • Custom Editor with Scene Tree, Gizmos, Content Browser, Output panel, and other UI elements.
  • PBR-based Rendering System with lighting, materials, shaders, and frustum culling
  • Entity Component System with an event system and serialization support
  • 3D Model Import & Resource Management (Assimp, logging system, resource monitor)
  • Mouse Picking & Octree-based Optimization
  • Play & Stop Modes for testing projects
  • Event System
  • Modular scripting system: Currently supports Lua, with the flexibility to integrate additional scripting languages as needed.
  • Project Save/Load System
  • Extensive Documentation (Doxygen)
  • … and more!

Technologies Used
#

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

Explore the Project
#

You can find more about the project on various platforms:

Thank you for exploring Coffee Engine!