HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
munificent
game-programming-patterns
HTML2014–2019
munificent / game-programming-patterns

game-programming-patterns

Source repo for the book

5Distinct people
13Mentions
1Explicit recommenders
4.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Source repo for the book

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

> Often times, when I seek feedback on a project, it’s not actually constructive feedback that I want; it’s simply approval. I want a pat on the back and a “job well done.” I…

munificent used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:24:10 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year13 dated mentions

Observed mentions: 2014-02-14 20:27:14 UTC to 2019-07-25 16:44:09 UTC.

0123452014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2019

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC505
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC202
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC220
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101

What Hacker News says

13 sources
Tangent: I was really impressed with how you've made your own book-building script [0], which I assume you found comfortable iterate off of from your previous book [1]. Can't argue with the results, but did you ever look into other bookmaking frameworks (e.g. sphinx, knitpy, knotr, R's bookdown)? Or did your custom script already feel feature-complete for the way you think and work when organizing book content? [0] https://github.com/munificent/craftinginterpreters/blob/mast... [1] https://github.com/munificent/game-programming-patterns/blob...
In Crafting Interpreters: Calls and Functions
For my blog [0], I use Jekyll. I'm not super enthusiastic about it, but it gets the job done. Ideally, I'd use a system that doesn't require as much futzing around with Bundler and pip (I use pygments for source highlighting, so Python is in the mix too) every time I touch it. It's kind of slow too. For my first book [1], which is online too, I hand-rolled a tiny Python script [2] that converts the Markdown pages to HTML. It uses Python Markdown and that's about it. SASS for authoring CSS. (Weird observation: that 499-line Python script is probably the most profitable code I've ever written.) For my second book [3], I took that script and gave it some more juice since book #2 has more complex needs around including code snippets [4]. It's still hand-rolled. In addition to Python Markdown, the other interesting library it uses is jinja2 fo
Read the rest
r templates. I like it. I understand the arguments against rolling your own, but a blog generator is simple enough that the benefits of code reuse are relatively small. Meanwhile, the convenience of being able to jam little hacks specific to your need is very real [5]. When I get time to hack on my blog again, there's a good chance I'll ditch Jekyll and roll my own. [0]: http://journal.stuffwithstuff.com/ [1]: http://gameprogrammingpatterns.com/ [2]: https://github.com/munificent/game-programming-patterns/blob... [3]: http://www.craftinginterpreters.com/ [4]: https://github.com/munificent/craftinginterpreters/tree/mast... [5]: https://github.com/munificent/craftinginterpreters/blob/mast...
In Ask HN: What is your blogging platform of choice in 2018?
A pretty simple hand-cobbled-together chunk of Python: https://github.com/munificent/craftinginterpreters/blob/mast... It's more complex than the build script[1] for my previous book[2], but still pretty simple. There's a real luxury in writing a program that literally only has to run on one single set of input data. A whole lot of things get easier. [1]: https://github.com/munificent/game-programming-patterns/blob... [2]: http://gameprogrammingpatterns.com/
In Show HN: “Statements and State”, the next chapter of my book on interpreters
I use sidenotes very heavily in my book[1], which is written in Markdown[2]. Instead of putting the contents of the asides in the middle of a paragraph, I pull them out into separate <aside> tags. Inside the paragraph, I have a little <span> with a name to indicate which text the <aside> should be positioned to line up with. There is some CSS to put the asides on the side[3] (with a ton of variations to make it play nice on mobile). Then there's a bit of JS to correctly line them up with <span> markers[4]. It was a bit more effort than I expected, and I don't like having to rely on JS, but the output is really nice, I think. For example, take a look at this chapter[5], and try resizing your browser window or hitting it on a mobile device. [1]: http://gameprogrammingpatterns.com/ [2]: https://github.com/munificent/game-programming-patterns
Read the rest
In Tufte CSS
> what are your self-publishing plans (if you don't mind discussing them)? The book will remain freely available in web form in its entirety. When I put up the last chapter, that will include a nice redesign that should hopefully make it pleasant to read across most devices. Soon after, I'm going to start working on an eBook and print version. I'm not sure how I'll do the eBook yet, but I'll do some investigation. The book is written in markdown, so it should be fairly straightforward to eBook-ify it. For the print version, I'll be laying it out by hand with lots of love in InDesign. I was a designer before I turned to programming, and I've always wanted to typeset a full book. I didn't think I'd have to write it first to get the opportunity! Sometime soon, I'll also contract out for a proofreading pass over the book. Each chapter has gon
Read the rest
e through a few revisions already, as well as numerous bug reports from eagle-eyed readers, but there's always mistakes. I'll pay out of pocket for it. I'm purchasing my own ISBN. I'll put the eBook and print-on-demand version up on Amazon. I'm not sure if I'll sell it through other channels yet. I still have to look into it. The best thing I did was start a mailing list when I was about halfway through the book (using MailChimp, who are swell). It's got over 2k subscribers now, so when the eBook and print versions are ready, I have an audience I can tell. > What software do you use for writing? Sublime Text. The first thing I did when I started the book was set up a very simple workflow. I have a Python script[2] that takes the markdown, transcludes the code snippets (which are in separate source files so they can be compiled and tests), and converts it to HTML. I write in Sublime and then run the script to see the resulting output. I find seeing the prose in two different forms (markdown and styled HTML) helps me during the editing process. It's serves as a proxy for a fresh pair of eyes. [2]: https://github.com/munificent/game-programming-patterns/blob...
In Write Code Every Day
munificent·Feb 26, 2014Recommendation phrase
> Often times, when I seek feedback on a project, it’s not actually constructive feedback that I want; it’s simply approval. I want a pat on the back and a “job well done.” I think creative people want and need both. I spent a lot of my free time working on a non-fiction book[1]. I'm really aggressive about soliciting feedback: every page of the book links directly to its issue tracker on github[2]. I love critical, detailed feedback. I want my book to be great, and I can't improve the clarity of my writing without people telling me, "this was confusing" or "this was boring". Bug reports fill me with joy. At the same time, though, the reason they fill me with joy is because they make the book better. And a big part of the reason I care about making the book better is because it means I get more approval, more email patting me on my back.
Read the rest
I'm fortunate enough to also get positive feedback, comments from people that say nothing more than "You're doing a great job!" That isn't actionable feedback, but if I didn't hear those kinds of comments too, I wouldn't have the motivation for the feedback that is actionable. [1]: http://gameprogrammingpatterns.com/ [2]: https://github.com/munificent/game-programming-patterns/issues
In Thirty Percent Feedback

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.