What is Handmade Hero?
Handmade Hero is an ongoing project to create a
complete, professional-quality game accompanied by
videos that explain every single line of its source
code.
Is it a simple game, for teaching purposes?
Quite the opposite! The game design has been
specifically tailored to require more complex
code than exists in most game designs. Sophisticated
procedural level generation, intricate item
interactions, and globally propagated effects are just
some of the many aspects of the game that will be
implemented during the series.
Are the videos just recordings of someone coding?
No! Although 100% of the programming for the game is
captured in the videos, each step is also accompanied
by continuous explanation of what is going on and why.
It is meant to serve as a de facto class on game
programming.
How far along is the game, and what is left to do?
The series started on November 17th, 2014. I try to
limit the sessions to two hours or less per weekday so
it remains manageable for people who practice coding
along with the series at home. At this rate, and
allowing for topical explanations and explorations, it
will easily take all of 2015 to get the majority of
the game implemented, and it will likely take all
of 2016, and possibly more, to get the game to a
solid, final release.
Can I be notified whenever the live stream starts?
Yes. If you make
a
Twitch account,
you can
follow
@handmade_hero.
Twitch will then send you an e-mail whenever a new
stream starts, so long as you have e-mail
notifications enabled in your user profile.
What do I do if I've missed some days?
If you miss a day or two, don't worry, they will all
be
archived
on YouTube. The archive videos are available to
everyone, not just people who purchase the game.
If you would like to be notified whenever a new video
is uploaded to the archive, you can create
a
YouTube account
and then subscribe
to
the
Handmade Hero channel. YouTube will then e-mail
you whenever new videos are uploaded, so long as you
have e-mail notifications enabled in your user
profile.
Will the game support multiple platforms?
Yes! Windows will be the first platform, since it is
currently the most common gaming platform, but the
series will later cover (at least) Mac, Linux, and
Raspberry Pi. Portability will be a major topic in
the series, so all the code will be structured to
demonstrate how to write code that is easy to port to
new platforms.
Will the game have real art, or programmer art?
Real art. The
talented
Yangtian Li
is already working on custom artwork for
Handmade Hero
so that there will be plenty of great art to bring into
the game when the time comes.
Is all the source code included with the game?
Yes! If you buy the game, you will get absolutely all
the code. And not just to the most recent build, but
to every build from every day, so you can easily go
back through the video archives and practice along
with them.
How will the source code be licensed?
Two years after the final version of the game is
released, 100% of the source code will be released
into the public domain. Prior to that, all rights are
reserved, so please
contact
me for permission before you use it in your own
projects. This is a precaution to prevent people from
directly cloning the game until after it has been out
for a reasonable time, since this project is an
expensive endeavor and I hope to offset some of the
cost through sales of the game proper.
Who are you?
I
am
Casey
Muratori, a Seattle-area game programmer. I spent
many years in the industry working on popular game
technology libraries, so you can currently find my
code in literally thousands of games (partial
lists
here
and
here).
Why are you doing this project?
Game programmers need to start creating high-quality
teaching materials for their trade. While most game
programmers frequently post about specific algorithms
they've discovered, few ever post about the
programming methodologies they have found to be
effective, nor about how they approach the general
problems inherent in developing a large, complex game
codebase. As a result, novice game programmers
looking to learn the basics of programming must rely
on materials from other industries that are often of
dubious quality.
Personally, I have found most resources that purport
to teach people how to "program properly" actually
teach primarily bad programming practices. The
copious emails I received from college students around
the world in response to
a
post I made about compression-oriented programming confirmed
for me that there are many young programmers out
there whose progress is being hamstrung by bad
learning materials. This project is an attempt to
provide one high-quality alternative, and perhaps
to convince other experienced game programmers to think about what
they could do to help teach the next generation of
game programmers how to program well.