Lessons from Open-Source Game Projects
Tags: gamedev, programming, learning
Published: 2024-04-10 13:30:07

Tutorials are an excellent way to learn the basics of game development and become familiar with your chosen framework or engine. They provide a guided path, allowing you to follow along and practice the concepts being taught. However, tutorials often have a limited scope, focusing on specific tasks or features rather than the bigger picture.

When you're ready to tackle your first major project, you'll likely find yourself facing various architectural decisions. To make these choices wisely, it's crucial to study good practices and see how successful projects have been implemented in the past. One of the best ways to do this is by examining open-source games.

Open-source games offer a wealth of knowledge, as they allow you to see how experienced developers have approached various challenges and solved common problems. By studying these games, you can gain insights into best practices, efficient coding techniques, and innovative solutions.

Here is a list of open-source games that you can study to improve your game development skills:

## Open-Source Games by Genre

### Action
* [Unvanquished](https://github.com/Unvanquished/Unvanquished) - FPS arena game with some RTS elements. **C++, libRocket**
* [Bemuse](https://github.com/bemusic/bemuse) - Web-based rhythm game. **Typescript, Javascript, React, Redux, PixiJS**
* [Ikemen-GO](https://github.com/ikemen-engine/Ikemen-GO) - Remake of the IKEMEN (open-source fighting games engine that supports M.U.G.E.N resources). **GO, GLFW, OpenGL**
* [Carnage3D](https://github.com/codenamecpp/carnage3d) - GTA 1 clone. **C++, C, GLFW, GLEW, Box2D**
* [RE3](https://github.com/halpz/re3) - GTA 3 clone. **C++, DX9, OpenGL**
* [San Andreas Unity](https://github.com/GTA-ASM/SanAndreasUnity) - GTA San Andreas clone in Unity. **C#**
* [donut](https://github.com/plowteam/donut) - Simpson's Hit & Run clone. **C++, OpenGL, SDL2**
* [OpenMB](https://github.com/cookgreen/OpenMB) - Mount & Blade clone. **C#, Oger3D**
* [OpenTomb](https://github.com/opentomb/OpenTomb) - Tomb Raider 1-5 clone. **C++, C, Lua, OpenGL, SDL2**
* [Rigel Engine](https://github.com/lethal-guitar/RigelEngine) - Duke Nukem 2 clone. **C++, C, OpenGL, SDL2**
* [Doom Retro](https://github.com/bradharding/doomretro) - Doom source port for Windows. **C, SDL2**

### Platformer
* [SuperTux](https://github.com/SuperTux/supertux) - Platformer inspired by Mario Brothers. **C++, SDL2**
* [The Secret Chronicles of Dr M](https://github.com/Secretchronicles/TSC) - 2D Platformer. **C++, OpenGL, SFML**
* [Godot Open 2D Platformer](https://github.com/gdquest-demos/godot-platformer-2d) - Metroidvania inspired Platformer made with Godot. **GDScript, Godot**
* [Commander Genius](https://gitlab.com/Dringgstein/Commander-Genius) - Commander Keen 1-6 clone. **C++, OpenGL, SDL2**
* [Jazz 2 Resurrection](https://github.com/deathkiller/jazz2-native) - Jazz Jack Rabbit 2 clone. **C++, OpenGL, SDL2**
* [nXEngine-evo](https://github.com/nxengine/nxengine-evo) - Cave Story clone. **C++, SDL2**
* [Prince-Monogame](https://github.com/salvadorc17/Prince-Monogame) - Prince of Persia 2 clone. **C#, Monogame**
* [SDLPoP](https://github.com/NagyD/SDLPoP) - Prince of Persia clone based on DOS disassembly. **C, SDL2**

### Adventure
* [Zelda3](https://github.com/snesrev/zelda3) - Zelda 3 clone. **C, SDL2**
* [ZQuest Classic](https://github.com/ZQuestClassic/ZQuestClassic) - Engine to play and create games like the original Zelda. **C++, OpenGL**
* [ScummVM](https://github.com/scummvm/scummvm) - Engine to run DOS Point & Click Adventure games. **C++, SDL2, OpenGL**
* [raw(gl)](https://github.com/cyxx/rawgl) - Another World clone. **C++, SDL2**

### Text-based Games
* [Angband](https://github.com/angband/angband) - Roguelike Dungeon Crawler. **C**
* [A Dark Room](https://github.com/doublespeakgames/adarkroom) - Text Adventure with survival and city-building elements. **JavaScript**
* [Ravenier](https://github.com/RanvierMUD/ranviermud) - MUD server (text-based MMORPG). **Javascript, Node.js**
* [Evennia](https://github.com/evennia/evennia) - MUD server (text-based MMORPG). **Python**
* [CoffeeMud](https://github.com/bozimmerman/CoffeeMud) - MUD server (text-based MMORPG). **Java**
* [Mudlet](https://github.com/Mudlet/Mudlet) - Client to connect to a MUD server, scriptable. **C++, Lua**

### Visual novel
* [Ren'Py](https://github.com/renpy/renpy) - Visual Novel Engine. **Python, Cython, C**
* [Learn to Code RPG](https://github.com/freeCodeCamp/LearnToCodeRPG) - Visual Novel that teaches you to code, created with Ren'Py. **Ren'Py, Python**
* [Bathory](https://github.com/LaChapeliere/Bathory) - Visual Novel created with Ren'Py. **Ren'Py**
* [The Parallax Door](https://github.com/RockArt13/TheParallaxDoor) - Visual Novel created with Ren'Py. **Ren'Py**

### RPG
* [Flare Engine](https://github.com/flareteam/flare-engine) - ARPG Engine inspired by Diablo 2. **C++, SDL2**
* [Flare Game](https://github.com/flareteam/flare-game) - ARPG, the Flare engine was created for. **Plain Text, Python**
* [OpenMW](https://gitlab.com/OpenMW/openmw) - The Elder Scrolls Morrowind clone. **C++, OpenGL**
* [OpenDiablo2](https://github.com/OpenDiablo2/OpenDiablo2) - Diablo 2 clone. **Go**
* [OpenEnroth](https://github.com/OpenEnroth/OpenEnroth) - Might&Magic VI-VIII clone. **C++, OpenGL**
* [OpenGothic](https://github.com/Try/OpenGothic) - Gothic 2 clone. **C++, DX12, Vulkan, Metal**
* [OpenVIII](https://github.com/MaKiPL/OpenVIII-monogame) - Final Fantasy VIII clone. **C#, MonoGame**
* [Riiablo](https://github.com/collinsmith/riiablo) - Diablo 2 clone. **Java, LibGDX, OpenGL**


### Massively Multiplayer Online Role-Playing Game (MMORPG)
* [CMangos Classic](https://github.com/cmangos/mangos-classic) - World of Warcraft: Classic server emulation. **C++**
* [Azerothcore](https://github.com/azerothcore/azerothcore-wotlk) - World of Warcraft: Wrath of the Lich King server emulation. **C++**
* [Open RSC](https://github.com/Open-RSC) - RuneScape Classic clone. **Java**
* [Runelite](https://github.com/runelite/runelite) - Open Source old-school RuneScape client. **Java**
* [Ryzom](https://github.com/ryzom/ryzomcore) - Commercial MMORPG available on [Steam](https://store.steampowered.com/app/373720/Ryzom/) went open source. **C++**

### Simulation and Management Games
* [OpenTTD](https://github.com/OpenTTD/OpenTTD) - Open source simulation game based upon Transport Tycoon Deluxe. **C++, SDL2**
* [Rogs of Rods](https://github.com/RigsOfRods/rigs-of-rods) - Soft-body physics simulator mainly targeted at simulating vehicle physics. **C++, OpenGL**
* [FreeSO](https://github.com/riperiperi/FreeSO) - The Sims Online and The Sims 1 clone. **C#**
* [OpenRCT2](https://github.com/OpenRCT2/OpenRCT2/) - Roller Coster Tycoon 2 clone. **C++, SDL2, OpenGL**
* [Librelancer](https://github.com/Librelancer/Librelancer) - Freelancer clone. **C#, OpenGL**
* [fs2open](https://github.com/scp-fs2open/fs2open.github.com) - FreeSpace 2 clone. **C++, SDL2**
* [CrosixTH](https://github.com/CorsixTH/CorsixTH) - Theme Hospital clone. **Lua, C++**
* [Keeper FX](https://github.com/dkfans/keeperfx) - Dungeon Keeper clone. **C**
* [KeeperRL](https://github.com/miki151/keeperrl) - Dungeon Keeper inspired, available on [Steam](https://store.steampowered.com/app/329970/KeeperRL/). **C++**

### Strategy and City Building 
* [openage]https://github.com/SFTtech/openage) - Age of Empires II clone. **Python, C++**
* [0. A.D.](https://github.com/0ad/0ad.git) - RTS. **C++, C**
* [The Battle for Wesnoth](https://github.com/wesnoth/wesnoth) - Turn-based strategy game. **C++, Lua, Python**
* [Unknown Horizons](https://github.com/unknown-horizons/godot-port) - Real-time strategy and city-building game. **Godot, GDScript**
* [Cortex Command Community Project](https://github.com/cortex-command-community/Cortex-Command-Community-Project-Source) - Cortex Command clone. **C++**
* [fhearos2](https://github.com/ihhub/fheroes2) - Heroes of Might and Magic II clone. **C++, SDL2**
* [GLSMAC](https://github.com/afwbkbc/glsmac) - Sid Meier's Alpha Centauri clone. **C++, OpenGL, SDL2**
* [Julius]( https://github.com/bvschaik/julius)) - Caesar 3 clone.  **C, SDL2**
* [openblack](https://github.com/openblack/openblack) - Black & White clone. **C++, OpenGL, Vulkan**
* [Open Sage](https://github.com/OpenSAGE/OpenSAGE) - Command & Conquer clone. **C#**
* [OpenSC2K](https://github.com/nicholas-ochoa/OpenSC2K) - Sim City 2000 clone. **JavaScript, TypeScript, WebGL canvas, Physer 3**
* [OpenXCOM](https://github.com/OpenXcom/OpenXcom) - XCOM clone. **C++, SDL2**
* [Return to the Roots](https://github.com/Return-To-The-Roots/s25client) - The Settlers 2 clone. **C++, SDL2**
* [Sourcehold](https://github.com/sourcehold/Sourcehold) - Stronghold 1 clone. **C++, SDL2**
* [VCMI](https://github.com/vcmi/vcmi) - Heroes of Might and Magic III clone. **C++, SDL2**
* [Warcraft Remake](https://github.com/b3dgs/warcraft-remake) - Warcraft: Orcs & Humans clone. **Java**
* [Mindustry](https://github.com/Anuken/Mindustry) - The automation tower defence RTS. **Java**

### Sandbox
* [Minetest](https://github.com/minetest/minetest) - Minecraft-inspired voxel game engine. **C++**
* [Terasology](https://github.com/MovingBlocks/Terasology) - Minecraft-inspired voxel game. **Java**
* [Sandspiel](https://github.com/MaxBittker/sandspiel) - Physics sandbox. **Rust, WebGL, Javascript**
* [The Power Toy](https://github.com/The-Powder-Toy/The-Powder-Toy) - Physics Sandbox. **C++, SDL2**

### Racing
* [SuperTuxKart](https://github.com/supertuxkart/stk-code) - Mario Kart inspired racing game. **C++, C, OpenGL, SDL2**
* [DreeReally](https://github.com/enriquesomolinos/DreeRally) - Death Really clone. **C, SDL**
* [Vangers](https://github.com/KranX/Vangers) - Racing Game with Role-Playing elements, available on [Steam](https://store.steampowered.com/app/264080/Vangers). **C++, C, SDL2**

### Card, Board and Puzzle Games
* [PokerTH](https://github.com/pokerth/pokerth) - Poker Game. **C++, QT5**
* [Lichess](https://github.com/lichess-org/lila) - Online Chess Server. **Scala, TypeScript**
* [Enigma](https://github.com/Enigma-Game/Enigma) -  Puzzle Game. **C++, C, SDL2**