/C_gamedev_resources

Collection of gamedev tutorials & projects that use only/mainly C

MIT LicenseMIT

Table of contents


Introduction

This will be collection of tutorials, projects (and examples later on) written only/mainly in C.
If you want some project, site removed from here please do create an issue or pull request for it.
If you want to help me gather resources in one place, please do an issue or pull request.
For the moment this will be my personal collection of tutorials & projects that i have found.
Currently i have included SDL2, OpenGL and Vulkan as those i am interested in, this might expand in the future.


SDL2

Tutorials

https://acry.github.io/SDL2-C.htm
https://prdeving.wordpress.com/2019/05/30/how-to-write-a-game-engine-in-pure-c-part-1-state-manager/
https://lazyfoo.net/tutorials/SDL/index.php
https://wiki.libsdl.org/Tutorials
https://nullprogram.com/blog/2023/01/08/ SDL2 common mistakes and how to avoid them
https://www.youtube.com/watch?v=XfZ6WrV5Z7Y Creating a Game Loop with C & SDL (Tutorial) by pikuma
https://www.youtube.com/watch?v=yFLa3ln16w0 Writing 2D Games in C using SDL by Thomas Lively (CS50)
https://gigi.nullneuron.net/gigilabs/animations-with-sprite-sheets-in-sdl2/ Animations with Sprite Sheets in SDL2
https://gigi.nullneuron.net/gigilabs/sdl2-bounding-box-collision-detection/ SDL2 Bounding Box Collision Detection
https://gigi.nullneuron.net/gigilabs/handling-keyboard-and-mouse-events-in-sdl2/ Handling Keyboard and Mouse Events in SDL2

Projects

https://github.com/tsoding/nothing A simple platformer about nothing
https://github.com/nybblesio/ckong Reproduction of the classic Donkey Kong coin-op arcade using C11 and SDL2.
https://github.com/chocolate-doom/chocolate-doom Chocolate Doom is a Doom source port that is minimalist and historically accurate.
https://github.com/andwn/sdl2-tetris Tetris clone written in C
https://github.com/rapiz1/DungeonRush A opensource game inspired by Snake, written in pure C with SDL
https://github.com/angeluriot/Minecraft_clone A simplified version of the famous game Minecraft.
https://github.com/cuppajoe123/Pong-Hard-Mode A game inspired by Pong, but with several twists and added functionalities
https://github.com/dashed/tetris-sdl-c A toy project implementing a simple tetris clone in C for learning SDL 2.x.
https://github.com/velorek1/asteroid Classic Asteroid Game coded with SDL2 in C
https://github.com/bradharding/doomretro The classic, refined DOOM source port. For Windows PC.
https://github.com/deccanengine/DeccanEngine Deccan Engine is an Open-Source Cross-Platform 2D Game Engine written in C11. Powered by SDL2.
https://github.com/silvematt/TomentRaycaster 1 Toment Raycaster - A Raycasting Engine written in C and SDL2.
https://github.com/NVIDIA/Q2RTX NVIDIA’s implementation of RTX ray-tracing in Quake II
https://github.com/megamarc/Tilengine Free 2D graphics engine with raster effects for retro/classic style game development
https://github.com/Janko-dev/raycasting_c 2D raycasting in C using SDL2
https://github.com/superjer/tinyc.games Tiny C games you can compile and run RIGHT NOW
https://github.com/vkoskiv/c-ray c-ray is a small, simple path tracer written in C
https://github.com/Error916/Chip8_emulator
https://github.com/angband/angband A free, single-player roguelike dungeon exploration game
https://github.com/cxong/cdogs-sdl Classic overhead run-and-gun game
https://github.com/sezero/quakespasm QuakeSpasm -- A modern, cross-platform Quake game engine based on FitzQuake.
https://github.com/iortcw/iortcw Merge of ioquake3 features and fixes into RTCW code bases
https://github.com/olzhasar/sdl-tetris Tetris game implemented with C and SDL-2
https://gitlab.com/KilgoreTroutMaskReplicant/1oom 1oom is a Master of Orion (1993) game engine recreation.
https://sourceforge.net/projects/abe A scrolling, platform-jumping, key-collecting, ancient pyramid exploring game, vaguely in the style of similar games for the Commodore+4. The game is intended to show young people (I'm writing it for my son's birthday) all the cool games they missed.
https://github.com/dorkster/freeblocks FreeBlocks is a puzzle game with similar gameplay to Tetris Attack.
https://gitlab.com/osgames/freenukum
https://github.com/DarkPlacesEngine/darkplaces DarkPlaces is a game engine based on the Quake 1 engine by id Software. It improves and builds upon the original 1996 engine by adding modern rendering features, and expanding upon the engine's native game code language QuakeC, as well as supporting additional map and model formats.
https://github.com/dethrace-labs/dethrace Reverse engineering the 1997 game "Carmageddon"
https://sourceforge.net/projects/etw/ Eat the whistle GPL is a football simulation game written in C that works on many platforms (win32/linux/macosx/amigaos/morphos), it uses the SDL framework.
https://github.com/alxm/faur My personal C games framework. 2D graphics, sound, inputs, states, ECS, and misc utils for data, files, math, memory, strings, time, and more. Builds for Linux, Windows, Web, and embedded devices.
https://github.com/JNechaevsky/inter-doom International Doom is a set of bilingual limit-removing source ports of Doom, Heretic and Hexen. It has numerous optional gameplay and aesthetic enhancements, higher 640x400 and 1280x800 rendering resolutions along with emulated Doom Press Beta and Jaguar Doom game modes.
https://github.com/riksweeney/edgar A 2D platform game with a persistent world. When Edgar's father fails to return home after venturing out one dark and stormy night, Edgar fears the worst: he has been captured by the evil sorcerer who lives in a fortress beyond the forbidden swamp.
https://github.com/pr-starfighter/starfighter Project: Starfighter is a space shoot 'em up game originally developed by Parallel Realities in 2002, and released in 2003. You assume the role of Chris Bainfield in his quest to put an end to WEAPCO, the weapons corporation which has enslaved the galaxy.
https://github.com/sergiou87/open-supaplex Reverse engineering Supaplex
https://github.com/callaa/luola A 2D caveflying action game
https://github.com/nevat/abbayedesmorts-gpl l'Abbaye des Morts - ported to Linux, Pandora, GCW0, Wii and PSP
https://github.com/cknave/kevedit KevEdit ZZT editor
https://github.com/ioquake/ioq3 The ioquake3 community effort to continue supporting/developing id's Quake III Arena
https://github.com/sezero/hhexen HHexen: Hacked Hexen
https://github.com/snesrev/smw Smw


OpenGL

Tutorials

https://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/
https://www.glprogramming.com/red/chapter01.html
https://github.com/SonarSystems/Modern-OpenGL-Tutorials
https://openglbook.com/the-book.html
https://youtu.be/huMO4VQEwPc Let's Program Doom - Part 1 by 3DSage
https://youtu.be/gYRrGTC7GtA Make Your Own Raycaster Part 1 by 3DSage
https://lazyfoo.net/tutorials/OpenGL/index.php

Projects

https://github.com/afiskon/c-opengl-text OpenGL example in pure C: text rendering, textures, etc
https://github.com/orangeduck/Corange Pure C Game Engine
https://github.com/eduard-permyakov/permafrost-engine An OpenGL RTS game engine written in C
https://github.com/fogleman/Craft A simple Minecraft clone written in C using modern OpenGL (shaders).
https://github.com/c6dy/minecraft-c Minecraft clone made with C and OpenGL
https://github.com/ec-/Quake3e Improved Quake III Arena engine
https://github.com/tsherif/space-shooter.c A cross-platform, top-down 2D space shooter written in C using only platform libraries.
https://github.com/MarilynDafa/Bulllord-Engine lightspeed lightweight elegant game engine in pure c
https://github.com/etlegacy/etlegacy ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
https://github.com/bentorkington/sf2ww A clone of Street Fighter 2 World Warrior, written from scratch in C + OpenGL
https://github.com/quou/openmv An open source metroidvania engine.
https://github.com/FabianHahn/shoveler A minimalistic OpenGL 3D game engine written in C
https://github.com/knicked/CCraft A Minecraft clone written in C
https://github.com/Mikepicker/opengl-racing An OpenGL game and simple game engine, written in C99
https://github.com/yui0/catgl a cross-platform 3D graphics engine
https://github.com/loopj/opengl-racing-game Simple OpenGL racing game I made back in 2001, just rediscovered the dusty zip file
https://github.com/lowlevel86/OpenGL-3D-Adventure-Game-Engine A minimalistic super mario 64 like 3D game engine.
https://github.com/TheComet/lightship-dbp A cross-platform multi-player 3D arcade game implemented entirely in plain C and OpenGL.
https://github.com/goodpaul6/Wolf3D Modern OpenGL clone of Wolfenstein 3D (1992).
https://github.com/ArtemisChief/Heracles a simple 2D Graphic Physics Engine based on OpenGL 3.3
https://github.com/WHKnightZ/OpenGL_Cube_Snake Game Cube Snake
https://github.com/justinmeiners/shamans A 3D turn-based strategy game for the iPad.
https://github.com/joeycollins/EvoC2D Evolution simulator written in C and OpenGL
https://github.com/RosieSapphire/glfw-3d [Repository deleted from Github]
https://github.com/victor-borges/aim-trainer Joguinho de treinar mira feito em OpenGL
https://github.com/yalue/l_system_3d A library for drawing 3D L-systems using plain C, with OpenGL and GLFW.
https://github.com/Denzy7/dengine Simple 3D Graphics Engine
https://github.com/licktheroom/warship-opengl A textureless navel combat game.
https://github.com/rfmineguy/firefly-lib This library is intended to be something you can use to make a game.
https://github.com/Chloekkk/cub3D 3D game using raycasting DDA algorithm
https://github.com/Silviculturalist/OpenForestViz Forest Visualisation with OpenGL. Experimental. For learning. Can change at any time.
https://github.com/nusbog/Basilisk Rendering engine developed in C with OpenGL
https://github.com/RohanFredriksson/WaffleEngine An OpenGL 2D game engine built with GLFW in C.
https://github.com/MrFrenik/gunslinger/ C99, header-only framework for games and multimedia applications
https://github.com/NetHack/NetHack Official NetHack Git Repository
https://github.com/rswinkle/PortableGL An implementation of OpenGL 3.x-ish in clean C
https://github.com/xtreme8000/BetterSpades BetterSpades, an Ace of Spades client targeted at low end systems (GL/ES 1.1). Runs on your grandmother's rig!
https://github.com/GameEngineering/EP01_SandSim Inspired by Noita, this is a simple "falling sand" simulation to demonstrate the mechanics and ideas behind Cellular Automata.
https://github.com/scottcgi/Mojoc A cross-platform, open-source, pure C game engine for mobile game.
https://github.com/jakehffn/lesser-doom Doom-style render engine experiment in C
https://github.com/kraflab/dsda-doom This is a fork of prboom+ with extra tooling for demo recording and playback, with a focus on speedrunning.
https://sourceforge.net/projects/dtris 4D-TRIS is an alteration of the well-known Tetris game. The game field is extended to a 4D field, which has to filled up by the gamer with 4D hyper cubes. The software is written in C with OpenGL and GLUT
https://github.com/aperture-software/colditz-escape Amiga's "Escape From Colditz" ported to Windows, Linux, macOS and PSP
https://github.com/yquake2/yquake2 The Yamagi Quake II client
https://github.com/FNA-XNA/FNA3D FNA3D - 3D Graphics Library for FNA
https://github.com/Rinnegatamante/vitaGL openGL wrapper for PSVITA.
https://github.com/n64dev/cen64 Cycle-Accurate Nintendo 64 Emulator
https://github.com/Falconerd/engine-from-scratch 2D platformer + shooter engine and game written in C


OpenGL-SDL

Tutorials

Projects

https://github.com/johnpayne-dev/MinecraftC A Raytraced Minecraft Classic 0.0.30a port to C
https://github.com/solenum/exengine A C99 3D game engine
https://github.com/taisei-project/taisei A free and open-source Touhou Project fangame
https://github.com/OpenSWE1R/openswe1r An Open-Source port of the 1999 Game "Star Wars Episode 1: Racer"
https://github.com/cdev-tux/q3lite Q3lite, an OpenGL ES port of Quake III Arena for embedded Linux systems.
https://github.com/dreamchess/dreamchess DreamChess - OpenGL Chess Game
https://github.com/KellerMartins/PixelVoxels A "Pixelart like" voxel engine
https://github.com/ultitech/GLMaze GLMaze is a Windows 95 Maze screensaver clone written in C using OpenGL.
https://github.com/justinmeiners/c-craft Minecraft clone written in C.
https://github.com/lcthums/C3D OpenGL 3D Game Engine written in C
https://github.com/zorgiepoo/Sky-Checkers Blast off enemies and be the last one standing!
https://github.com/renehorstmann/Pixelc An opensource tile/sprite editor in C, using SDL2 and OpenGL, also running on Android and in the web
https://github.com/renehorstmann/some Sdl2 OpenGL Mini Engine.
https://github.com/tristanpenman/asteroids Asteroids clone written in old-school C. Ported to JS using Emscripten, and currently being ported to N64
https://github.com/Vespidian/GameFramework 3D game / software engine built upon SDL2 and OpenGL
https://github.com/zaps166/NFSIISE Need For Speed™ II SE - Cross-platform wrapper with 3D acceleration and TCP protocol!
https://github.com/shinyquagsire23/OpenJKDF2 A cross-platform reimplementation of JKDF2 in C
https://github.com/atsb/Doom64EX-Plus An improved modern version of Doom64EX.
https://github.com/mdsteele/azimuth A metroidvania with vector graphics
https://github.com/UnknownShadow200/ClassiCube Custom Minecraft Classic 0.30 / ClassiCube client written in C from scratch (formerly ClassicalSharp in C#)
https://github.com/Interrupt/systemshock Shockolate - A minimalist and cross platform System Shock source port.
https://github.com/zturtleman/spearmint Spearmint — an updated id Tech 3 engine for continuing the classics and creating new games.
https://github.com/simple2d/simple2d Simple, open-source 2D graphics for everyone


Vulkan

Tutorials

https://renderdoc.org/vulkan-in-30-minutes.html
https://web.engr.oregonstate.edu/~mjb/vulkan/
https://github.com/ShabbyX/vktut (!!OUTDATED!!) Shabi's Vulkan Tutorials
https://www.youtube.com/playlist?list=PLv8Ddw9K0JPg1BEO-RS-0MYs423cvLVtj Vulkan Game Engine Series playlist by Travis Vroman

Projects

https://github.com/Sl3dge78/vulkan Simple Lightweight 3D Game Engine
https://github.com/Novum/vkQuake Vulkan Quake port based on QuakeSpasm
https://github.com/ec-/Quake3e Improved Quake III Arena engine
https://github.com/kennyalive/Quake-III-Arena-Kenny-Edition The cradle of Quake III Arena
https://github.com/gheshu/pim Pim is a little "zen garden" for tinkering around, for my own personal use.
https://github.com/PaoloMazzon/Vulkan2D 2D renderer written in C utilizing Vulkan
https://github.com/suijingfeng/vkOpenArena Old games never die, they just fade away...
https://github.com/fknfilewalker/Quake-III-Arena-R Vulkan RTX Path Tracing Implementation for Quake III
https://github.com/felipeagc/vkrender Vulkan renderer / game engine (Public archive)
https://github.com/cfnptr/uran Multi-platform game engine written in C
https://github.com/kondrak/vkQuake2 d Software's Quake 2 v3.21 with mission packs and Vulkan support (Windows, Linux, macOS, FreeBSD, Raspberry Pi 4)


Raylib

Tutorials

https://www.raylib.com/examples.html
https://www.youtube.com/watch?v=HPDLTQ4J_zQ How to compile Raylib from scratch and set up your first projects (Windows / C ) in 15 minutes by Rudy Faile
https://www.youtube.com/watch?v=JE7F7DLEjbo Raylib tutorial | Episode 1 | Setting up Raylib and Creating a Window by SkyVaultGames
https://www.youtube.com/watch?v=-F6THkPkF2I Getting Started with Raylib - C Tutorial by Andrew Hamel Codes
https://github.com/raysan5/raylib-intro-course A small raylib introductory course developing a simple game
https://github.com/Pakz001/Raylib-Examples My collection of raylib code examples - For learning the C language with 2D and 3D games.
https://www.youtube.com/watch?v=kBky9_X8j3Y How to create a game with 'raylib' in C by victor fisac fuentes
https://www.youtube.com/watch?v=p1VQuMziTek Coding a synthesizer in C (episode #1) by locogame

Projects

https://github.com/victorfisac/Physac 2D physics header-only library for videogames developed in C using raylib library.
https://github.com/Rabios/LINES Very hard game about avoiding a lot of moving lines,Written in C using raylib library
https://github.com/xav1t0/Clock Click Made With raylib in C
https://github.com/albertnadal/Wolf3DClone Implementation of the "Wolfenstein 3D"(1992) game engine from scratch using vanilla C and raylib
https://github.com/PixelPhobicGames/Chrome-Dino-game-ripoff- Chrome Dinosaur game written in c


Other

Tutorials

https://helderman.github.io/htpataic/htpataic01.html How to program a text adventure in C
https://www.youtube.com/playlist?list=PLT6WFYYZE6uLMcPGS3qfpYm7T_gViYMMt Learn Videogame Programming in C playlist by VertoStudio3D
https://www.youtube.com/watch?v=-_HxKDNuCqA Header-Only Game Framework in C by John Jackson
https://www.youtube.com/watch?v=9pnEBa4cy5w Pixel Perfect Collision Detection in C by Nick Walton

Projects

https://github.com/camc/chess A C11 chess engine & GUI
https://github.com/snesrev/zelda3 A reimplementation of Zelda 3.
https://github.com/slembcke/Chipmunk2D A fast and lightweight 2D game physics library.
https://github.com/erkkah/tigr TIGR - the TIny GRaphics library for Windows, macOS, Linux, iOS and Android.
https://github.com/domeengine/dome A lightweight game development environment where games can be written in Wren
https://github.com/rxi/microui A tiny immediate-mode UI library
https://github.com/syoyo/tinyobjloader-c Header only tiny wavefront .obj loader in pure C99
https://github.com/datenwolf/linmath.h A small library for linear math as required for computer graphics
https://github.com/zpl-c/librg Single-header cross-platform world replication in pure C99.
https://github.com/n64decomp/mk64 A speedy Mario Kart 64 decompilation, brought to you by the cousin of a tame racing driver.
https://github.com/trevarj/dotris A mini Tetris clone made with dots
https://github.com/edubart/sokol_gp Minimal modern efficient cross platform 2D graphics painter in C
https://github.com/id-Software/DOOM DOOM Open Source Release
https://sourceforge.net/projects/duelcommander Duel Commander is a turn based command line fighting game for Windows and Unix-like systems.The game is completely text based with an easy-to-use interface.
https://github.com/jwm-art-net/XorCurses A remake of Xor by Astral Software for Linux, using Ncurses.
https://github.com/smcameron/wordwarvi Word War vi is a retro-styled old school side scrolling shooter reminiscent of Defender or Scramble, with an "Emacs vs. vi" theme.
https://github.com/vicgeralds/vitetris Classic multiplayer tetris for the terminal
https://github.com/scandum/tintin TinTin++, aka tt++, is an extensible console MUD client.
https://github.com/Dotz0cat/farmd half of a farm game
https://github.com/FoxdieTeam/mgs_reversing Metal Gear Solid PSX reimpl repo
https://github.com/erincatto/box2c Library for 2D Game Physics
https://github.com/CTR-tools/CTR-ModSDK ModSDK - a modding toolkit to create mods for Crash Team Racing in C.
https://github.com/vitasdk/vita-headers This repository contains all Vita headers needed for development.
https://github.com/kcat/dsoal A DirectSound DLL replacer that enables surround sound, HRTF, and EAX support via OpenAL Soft
https://github.com/zeldaret/tmc Decompilation of The Legend of Zelda: The Minish Cap (USA/JP/EU)
https://github.com/notaz/picodrive Fast MegaDrive/MegaCD/32X emulator
https://github.com/libretro/libretro-common Reusable coding blocks useful for libretro core and frontend development, written primarily in C. Permissively licensed.
https://github.com/ekeeke/Genesis-Plus-GX An enhanced port of Genesis Plus - accurate & portable Sega 8/16 bit emulator
https://github.com/profi200/open_agb_firm open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware.
https://github.com/Xeeynamo/sotn-decomp Decompilation of Castlevania: Symphony of the Night
https://github.com/devkitPro/3ds-examples Examples for 3DS using devkitARM, libctru, citro3d and citro2d
https://github.com/emu-russia/UltraHLE UltraHLE source code
https://github.com/pmret/papermario Decompilation of Paper Mario
https://github.com/fte-team/fteqw This is the official GitHub mirror for the FTEQW project.
https://github.com/devkitPro/3ds-hbmenu The 3DS Homebrew Menu (∩ ͡° ͜ʖ ͡°)⊃━☆゚
https://github.com/zeldaret/af Decompilation of Animal Forest


Footnotes

  1. https://youtu.be/XFCinBirBVw