{"id":24023784,"url":"https://github.com/theo-mestre/sapphire","last_synced_at":"2025-08-23T01:39:33.720Z","repository":{"id":214515787,"uuid":"736702881","full_name":"Theo-Mestre/Sapphire","owner":"Theo-Mestre","description":"I'm learning how to make game engines!","archived":false,"fork":false,"pushed_at":"2025-03-27T08:10:10.000Z","size":11079,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-16T02:08:34.170Z","etag":null,"topics":["cpp","game-engine","learning-by-doing"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Theo-Mestre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-28T16:20:40.000Z","updated_at":"2025-03-27T08:10:13.000Z","dependencies_parsed_at":"2024-11-11T10:47:44.309Z","dependency_job_id":"d7889f9b-b670-4a53-9775-b83885aa7b3b","html_url":"https://github.com/Theo-Mestre/Sapphire","commit_stats":null,"previous_names":["theo-gamedev/sapphire","theo-mestre/sapphire"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Theo-Mestre/Sapphire","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Theo-Mestre%2FSapphire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Theo-Mestre%2FSapphire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Theo-Mestre%2FSapphire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Theo-Mestre%2FSapphire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Theo-Mestre","download_url":"https://codeload.github.com/Theo-Mestre/Sapphire/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Theo-Mestre%2FSapphire/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271731360,"owners_count":24811300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-22T02:00:08.480Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","game-engine","learning-by-doing"],"created_at":"2025-01-08T14:44:41.615Z","updated_at":"2025-08-23T01:39:33.689Z","avatar_url":"https://github.com/Theo-Mestre.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sapphire\r\n\r\nSapphire is a game engine developed in C++ using OpenGL. It started as a personal project to explore game engine architecture and learn how to manage a multi-system application. Inspired by The [Cherno's game engine series](https://www.youtube.com/playlist?list=PLlrATfBNZ98dC-V-N3m0Go4deliWHPFwT), this project has been a hands-on journey into graphics programming, rendering techniques, and engine development.\r\n\r\nYou can check out the presentation I made for this project [here](https://docs.google.com/presentation/d/1hBBXi7OgnB5CnnUq6ogenfiARTrwbtATjnQTT7INczE/edit?usp=sharing). \r\n\r\n## Why I Built This\r\nI wanted to understand how a game engine works under the hood while also tackling the challenges of structuring a multi-system application. Rather than focusing purely on the complexity of code, my goal was to design an engine that effectively integrates different components, such as rendering, scene management, and EditorUI.\r\n\r\n## Development Journey\r\n1. **Core Engine:** I began by implementing the core application that I could rely on to build the redenring features.\r\n2. **Graphics Features:** I progressively added: \r\n   - Quad rendering\r\n   - Texturing \u0026 blending\r\n   - Batch rendering\r\n   - Frame buffers\r\n3. **Lighting System:** I experimented with a simple shader-based lighting system to push my understanding of real-time rendering.\r\n4. **Scene Management \u0026 Editor:** Currently, I am developing a scene management system and an editor to make the engine more practical for game development.\r\n\r\n## Installation\r\nTo get started, clone the repository:\r\n```sh\r\ngit clone https://github.com/Theo-Mestre/sapphire.git\r\n```\r\nThen, build the project using the `SetupWindows.bat` script located inside the `Scripts` folder.\r\n\r\n## Tech Stack\r\n- **Language:** C++20\r\n- **Rendering:** OpenGL 4.5\r\n\r\n## Dependencies\r\n- [GLFW](https://github.com/glfw/glfw) (Windowing and Input)\r\n- [Glad](https://github.com/Dav1dde/glad) (OpenGL Loader)\r\n- [Spdlog](https://github.com/gabime/spdlog) (Logging)\r\n- [ImGui](https://github.com/ocornut/imgui) \u0026 [ImPlot ](https://github.com/epezent/implot) (UI Framework)\r\n- [GLM](https://github.com/g-truc/glm) (Mathematics Library)\r\n- [EnTT](https://github.com/skypjack/entt) (Entity Component System)\r\n\r\n## License\r\nThis project is licensed under the MIT License - see the LICENSE file for details.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheo-mestre%2Fsapphire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheo-mestre%2Fsapphire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheo-mestre%2Fsapphire/lists"}