Projects Inspired by Handmade Hero

Handmade Hero has inspired people to take up a "Handmade" project; maybe even a game of their own. I figure it's a good idea to list those projects here and perhaps encourage new heroes :)

Post your project title, short description and a link and we'll add you to the list.

Ongoing Projects
---------------------------------------------------------------
Data-Oriented Design: Solving Programming Problems



Book project with working title.

By moderating both these forums and on the live streams, I get a ton of messages from college students that find the learning curve for Handmade Hero extremely steep. Most (but not all) recent programming courses in many universities focus way too much on code. Programming, however, is not really about code, but how you solve problems with it.

Casey Muratori has placed me in contact with an interesting Publisher, and we are ironing out the details of how to flesh out the book.



Author: Abner Coimbre

---------------------------------------------------------------

4coder



4coder is a code editing tool inspired by the comments of programmer Casey Muratori during his live stream show Handmade Hero. Whereas most editors focus on being able to edit text of as many kinds as possible, 4coder is intentionally focused on editing C and C++ as powerfully as possible.

Dev: Allen Webster

---------------------------------------------------------------

Tale of Light



A game that will use various lighting mechanics for puzzles :)
Light/shadows are analytically calculated and are pretty "cheap".
Thus, we can achieve a lot of artistically interesting shadow casting in our scenes.

In this screenshot, each firefly is a light source that can be blocked.
At the moment, each pass through the game loop takes only <1.5ms.
We do use OpenGL for light polygon blitting and sprites.
Also, we have code to cast correct reflections, but we're not yet happy with how it looks.

Hope you like it :)
ands

Devs: @cat_in_snow and @andsz

---------------------------------------------------------------

IMGUI Toolkit



I am working on imguit a minimal ANSI C immediate mode library toolkit without any direct dependencies (not even the standard c library). The main promise of this library is be a modular approach to only provide a user interface implementation and leave platform window creation and input handling, rendering and font handling to the user and try to stay as much as possible out of the way of the user.

The library was heavily influenced by Casey's blog entries describing the creation of a GUI panel layout, his talk about API design and of course handmade hero for general programming style of compression oriented programming.


Dev: Vurtun

---------------------------------------------------------------

Papaya



In my spare time, I'm making an open source GPU-powered image editor called Papaya in OpenGL and C++.

The first feature - a brush tool - is already faster than GIMP and most other open source and proprietary applications, because I'm using the GPU-centric approach.

Handmade Hero was the primary source of inspiration, and the main source of information as far as WinAPI is concerned. Just like, Handmade Hero, Papaya also uses a unity build (single file compilation), and almost entirely avoids any object oriented code.

One significant deviation from the Handmade Hero style is that I elected to go with normal, multiple memory allocs instead of allocating a large memory chunk upfront.

Again, without Casey, I probably wouldn't have delved into low level programming right now, and would have missed out on all the fun I'm having. :)


Dev: Apoorva Joshi

---------------------------------------------------------------

Homebrew Operating System

I have an informal operating system project which I've tentatively called 'Homebrew OS'.

(Suggestions are open for a better code name. Any suggestions which involve candy, unnecessary alliteration, large cats, or locations from Halo may result in an insta-ban.)

At the moment, it's just been a few streams, only one of which is now saved in my Twitch archive. Github coming soon.


Dev: Andrew Bromage
---------------------------------------------------------------

Techne



Techne is a text editor partially inspired by HMH that I've been working on in my spare time. I don't really know what I want to do with the source code but if I do open source it (which I most likely will eventually) it'll be up on github. For now here's my announcement post:

Dev: David Kirn
---------------------------------------------------------------

TwitchNotification-Windows

Not really doing anything big just a twitch.tv notifier for Windows. Everything will be done from scratch like the https exchange between my program and twitch's apis, the Json parser, etc.

Later I hope to create something that's more meaningful like a flash card program for learn Kanji effectively using psychology and philosophy.

Dev: C0D3
---------------------------------------------------------------

Hale




Hale is an open-source text editor prototyped in Qt/C++ (mostly for historical reasons), about to be rewritten to independent HMH-style code (hopefully mostly live on my stream), when the prototyping is done. Hale uses unique scope-based approach for visual and functional customization, plus a close shell-level integration with the OS. It combines principles from TextMate (Sublime), Emacs and Vim in a single coherent package. It's using Lua/LuaJIT, while still allowing for writing extensions in C++ (either as Lua module, or by directly talking to the Hale's C++ API).

My blog: coh.io
My twitch: twitch.tv/martincohen (archiving broadcasts currently doesn't work, I'm investigating why that is)
My twitter: twitter.com/martin_cohen

Dev: Martin Cohen
---------------------------------------------------------------

Dungeon Lab

Dungeon Lab is a project that I wanted to start because of the lack of transparency in available game engines. There are some open source engines out there that let you dive into the code, but few of them output well-structured, readable code. So, I decided to make a game engine for roguelikes.

Dungeon Lab will allow users to look at all the code and see exactly what the code looks like once you export your game.

## A Game Engine Built For Learning

My vision for Dungeon Lab is a game engine that lets users start at the top with a prefab game engine while also allowing them to dive deeper as they learn more.

Start with configuring your game through gui elements. Once you've learned a few things, you can start scripting your game through a simple scripting language. Finally, once you're ready to start learning to write low level code, take a look at the C code yourself and make your game exactly what you want it to be.

Hopefully this can be a tool to get more people into making games and learning about how computers work. Programming is too much fun to hide the code behind a graphical game-making engine.

### Project Overview

Language: C
Editor: Vim
Libraries: SDL, stb
Repository: GitHub
Misc: GIMP, GDB


### Development Goals

Create a graphical game engine that...

* is used for making roguelikes.
* exposes all code, from the engine to the game.
* encourages learning from high to low level.
* allows gui interaction, scripting, and coding of roguelikes.
* is stable and usable on multiple platforms (Windows, Linux, OSX, etc.).
* teaches me a lot about programming while making it.


### Misc

I originally started working on a roguelike of my own for my handmade project, but it sort of evolved into me wanting to build tools to help others make roguelikes. Thus, Dungeon Lab (laboratory or labyrinth, you decide) was born!

While I'm working on the engine, I will be simultaneously creating two very simple roguelikes in order to motivate decisions made about the engine. Each step of the way, I will have a specific mechanic from each game in mind, which will determine what modules need to be added.

It's a big project (my biggest ever, in fact) so it will be a while before it's finished. The first step is to get the bare minimum in place so people can poke at the engine and give me feedback on how it works.

Stay tuned! I will add images and videos as I create them for previews and demos of how the project is coming along. Also keep an eye on my site,
GamesKraft, in case I get the urge to write about how things are going.

Dev: Minimal Kraft
---------------------------------------------------------------

Handmade Quake

Hello everyone,

The contribution I am currently planning is called Handmade Quake, where I start from nothing (of course) and build the original Quake source code, as it exists (more or less) on GitHub.

I found this source base to be fundamental when I was learning to program games, and I hope to help use this historic and impressive code base to introduce more people to a basic game engine that's only about 40k lines big - not impossible to really wrap your head around!

The code base itself is admittedly messy, and has some gross hacks that were maybe essential in 1996, but definitely don't apply in 2015 (the function to manually page all storage into memory is one of my favorites). However, as a milestone in games and 100% free, plus an online community that still exists today, it seems like a good spot to introduce new game programmers to the world of 3D.

It's currently in the planning phase, but a little over a year ago I started something like this for Quake 2. Sadly, grad school was pretty overwhelming at the time and I only did one video. The idea was definitely good though:

Overall, I'll post more info as I get everything in order, but Handmade Quake should be a great addition for budding game programmers who want to get their feet wet in the 3D world.

Dev: Philip Buuck
---------------------------------------------------------------

The Veldt



Loosely based off the story by Ray Bradbury, this run based roguelike has you dropped into your own imagination. In the Veldt, your character's perspective comes into fruition as drastically warped and construed horrors, as you go deeper and deeper, the world around you starts to become more and more surreal as you reflect your imagination back into itself by facing it head on.

Dev: Zak S.
---------------------------------------------------------------

Zvuk

What is it: software drum machine / sampler / sequencer written from scratch.

Blog Announcement: brokenopcode.com

I'll be streaming most days at random times on twitch.tv Note I don't talk during the stream, it's just pure C coding goodness!

There's two streams so far and here's an example of what's been done:

* window creation
* file memory mapping
* modern opengl context creation and function loading without libraries
* monitor textures and shaders folders and automatic reloading when they are changed.
* tga loader for opengl textures.
* setting up and using a streaming opengl buffer.
* orthographic projection
* printing without stdio.h

Note day one the first 20 mins or so I didn't realise the screen was blank (I was really tired!)

[strike] I'll be archiving the streams on youtube as well once I figure that out.[/strike]

Youtube Archive: Link

Dev: BrokenOpCode
---------------------------------------------------------------


Completed Projects
---------------------------------------------------------------
Milton



[i]Milton is a paint package with infinite Zoom. It's basically Mischief, but I swear I started before knowing about it :)


I am releasing it open source (GPL); you can get it here: github.com/serge-rgb/milton

Casey is first in the 'Thank You' notes. Handmade Hero was an enormous help and inspiration. Thank you so much!


Dev: Sergio González
---------------------------------------------------------------

Handmade Minesweeper

So back in around February I made a minesweeper clone in C, being inspired by Handmade Hero. Due to some life stuff and my army service beginning, I didn't have a chance to share it on this forum until now.

How HH inspired me:
Before watching the series I didn't really program in C++, and I was a big fan of OOP but my interest in programming was diminished. Somehow the series rekindled that interest, and I was really surprised that programming in a more data-oriented approach and a lower level was way funner for me that what I was used to do in university!

So after watching like the first 20 episodes of HH, I decided to devote my free time in making something, so I stopped there, and started programming. My goal was to make it look and feel as close as to the original old minesweeper for windows.

I basically used all I learned from HH up to ep.20 to program this, and I only had to work out how to do sprite handling myself, which turned out to be pretty fun.

Controls etc, TL;DR:Try the arrow keys, and the +, -, *.

There are no menus like the original game, but you can control the size of the board with the arrow keys, and add or decrease mines with the + and - keys. Also the * key automatically adds an appropriate number of mines based on the current size. This isn't a very comfortable way of doing this, but I wasn't comfortable with doing a UI for these yet. Also the game doesn't save anything, sorry about that ^^'.
So here it is:

www.dropbox.com/s/1xpv26cw9zakng8/Minesweeper_x86.exe?dl=0

Thanks Casey for making programming fun for me again :)

Dev: bnvdarklord
---------------------------------------------------------------

Twitch Panel

Now that everyone is streaming on twitch, and since twitch has a very slow website, I made this:



It's a little dashboard that lets me see who's streaming at the moment and provides quick links to their latest broadcasts.

You can see it live here: http://asafgartner.github.io/twitch_panel/
And customize the user list by downloading the html here: https://github.com/asafgartner/twitch_panel

Dev: Asaf Gartner
---------------------------------------------------------------
[Note: Important to state Handmade Hero is not necessarily affiliated with these community projects.]

Edited by Abner Coimbre on Reason: Updated CaptainKraft's project.
@cat_in_snow and @andsz (me) on twitter are working on "A Tale of Light".
A game that will use various lighting mechanics for puzzles :)
Light/shadows are analytically calculated and are pretty "cheap".
Thus, we can achieve a lot of artistically interesting shadow casting in our scenes.



In this screenshot, each firefly is a light source that can be blocked.
At the moment, each pass through the game loop takes only <1.5ms.
We do use OpenGL for light polygon blitting and sprites.
Also, we have code to cast correct reflections, but we're not yet happy with how it looks.

Hope you like it :)
ands

Edited by ands on Reason: oops
I've already talked to @ands on Twitter about this, but make sure you have a title and at least one link to a website, blog post, or anything that announces the project. The title can be a codename and you don't need anything fancy for the website, just something we can refer to. A screenshot is unnecessary but I'll make sure to add it if you provide one.
I have an informal operating system project which I've tentatively called "Homebrew OS".

(Suggestions are open for a better code name. Any suggestions which involve candy, unnecessary alliteration, large cats, or locations from Halo may result in an insta-ban.)

At the moment, it's just been a few streams, only one of which is now saved in my Twitch archive. Github coming soon.
Pseudonym73
I have an informal operating system project which I've tentatively called "Homebrew OS".

(Suggestions are open for a better code name. Any suggestions which involve candy, unnecessary alliteration, large cats, or locations from Halo may result in an insta-ban.)

At the moment, it's just been a few streams, only one of which is now saved in my Twitch archive. Github coming soon.


Just wanted to point you to The OSDev Wiki since you are working on an OS. They also have a forum, and the wiki and forums are very helpful for budding OS devs.

- Monk
In my spare time, I'm making an open source GPU-powered image editor called Papaya in OpenGL and C++.

The first feature - a brush tool - is already faster than GIMP and most other open source and proprietary applications, because I'm using the GPU-centric approach.

Handmade Hero was the primary source of inspiration, and the main source of information as far as WinAPI is concerned. Just like, Handmade Hero, Papaya also uses a unity build (single file compilation), and almost entirely avoids any object oriented code.

One significant deviation from the Handmade Hero style is that I elected to go with normal, multiple memory allocs instead of allocating a large memory chunk upfront.

Again, without Casey, I probably wouldn't have delved into low level programming right now, and would have missed out on all the fun I'm having. :)




GitHub
My website
I am working on imguit a minimal ANSI C immediate mode library toolkit without any direct dependencies (not even the standard c library). The main promise of this library is be a modular approach to only provide a user interface implementation and leave platform window creation and input handling, rendering and font handling to the user and try to stay as much as possible out of the way of the user.

The library was heavily influenced by Casey's blog entries describing the creation of a GUI panel layout, his talk about API design and of course handmade hero for general programming style of compression oriented programming.



Github
Twitter
Milton is a paint package with infinite Zoom. It's basically Mischief, but I swear I started before knowing about it :)



I am releasing it open source (GPL); you can get it here: https://github.com/serge-rgb/milton

Casey is first in the 'Thank You' notes. Handmade Hero was an enormous help and inspiration. Thank you so much!

Github
Twitter

Edited by Sergio González on Reason: Last edit, pinky promise. Change twitter link
Techne is a text editor partially inspired by HMH that I've been working on in my spare time. I don't really know what I want to do with the source code but if I do open source it (which I most likely will eventually) it'll be up on github.

Techne Project Page
Twitter


Edited by dvkirn on
@DvKirn I've added your project to the list. Sorry for the small delay.
It's all good man, no need to apologize. :)
Handmade Music

https://simulatedsystems.bandcamp.com/album/free-sound-association

Hi. I'm not really a programmer. I used to program on the zx spectrum when i was little and some Pascal and Borland C many years ago. However i still use programming knowledge in my music work, scripting and with tools like Max/Msp. I've been following Handmade Hero almost from the start as i find the project really inspiring, made me go deeper in making sound devices from scratch.
Would love to see someone come up with a Handmade Audio Editor. ;)
Not really doing anything big just a twitch.tv notifier for Windows. Everything will be done from scratch like the https exchange between my program and twitch's apis, the Json parser, etc.

https://github.com/nsetobol/TwitchNotification-Windows

Later I hope to create something that's more meaningful like a flash card program for learn Kanji effectively using psychology and philosophy.
Not sure what do you call "included libs". libeay32.lib and ssleay32.lib are OpenSSL libraries and they are not included with Visual Studio. You should provide instructions how to compile them, it's not a very trivial task ;)

Instead of depending on OpenSSL library you can use Windows API for SSL sockets. It is called Secure Channel, and can be used with SSPI functions: https://msdn.microsoft.com/en-us/...ktop/aa374731.aspx#sspi_functions

It's a bit more code, but you can peek in curl source to figure out what you need to call: https://github.com/bagder/curl/blob/master/lib/vtls/schannel.c

Edited by Mārtiņš Možeiko on
mmozeiko
Not sure what do you call "included libs". libeay32.lib and ssleay32.lib are OpenSSL libraries and they are not included with Visual Studio. You should provide instructions how to compile them, it's not a very trivial task ;)

Instead of depending on OpenSSL library you can use Windows API for SSL sockets. It is called Secure Channel, and can be used with SSPI functions: https://msdn.microsoft.com/en-us/...ktop/aa374731.aspx#sspi_functions

It's a bit more code, but you can peek in curl source to figure out what you need to call: https://github.com/bagder/curl/blob/master/lib/vtls/schannel.c


heh, the truth is I don't want people to compile it yet because it doesn't work yet (I though it did).

It seems like Windows memory management and Linux memory management work differently? Not quite sure.

I will look into those functions and try to find a good example so I don't have use SSL libs. It will be interesting.