What if you could learn math and computer science topics the same way you learn while playing a game?
I’m exploring ways of explaining concepts that incorporate the reader playing with them in addition to reading, watching, or studying formulas & code. I’m starting with topics relevant to game developers, but the techniques I’m using are applicable more generally to math and computer science.
I’ve been curating game development articles since 1990, and my web site has been up since 1995. All of my articles are available for free, with no signup and no ads. The main audience is independent, student, and hobbyist game developers, but I’d like to cover other math and computer science topics in the future. Some of the more popular pages:
I’m also working on a series of pages that explain how to make interactive tutorials:
- Interactive tutorial about making interactive tutorials, including multiple diagrams, layered diagrams, drag-and-drop, and scrubbable numbers
- Drag handles with constraints
- Arrows outside the diagrams, something I haven’t seen elsewhere, and haven’t used yet
- Responsive web design implementation for interactive diagrams (canvas, svg, webgl)
- Notes on how I made the A* pages and the tool I made for graph editing
- Blog posts about my process and struggles
I also explore ideas sometimes without writing a full tutorial:
- Hexagon tiling of spheres - can you hide the pentagons?
- Noisy edges to hide straight lines in a map
- Procedurally generating names using pronunciations and neural networks
- Procedurally modifying spelling using pronunciations and letter-phoneme alignment
- Understanding the color yellow: why are there three primary colors in science but four primary colors in board games, crayons, etc.?
- Procedurally generating faces (mouths are implemented, eyes aren’t)
- Distance to seed points using Breadth First Search
- Map generation with no code, only image filters
- Homunculus: stretching and shrinking maps to match a game’s needs
- Noisy boundaries between hexagons using shaders
- Car blind spots and how to position your mirrors
- Procedural planet generation on a sphere using Voronoi+Delaunay
Accompanying code is open source, under either the MIT License or the Apache v2 License. Both allow use in commercial projects. Other projects are found at at github/amitp and github/redblobgames.
I’ve been helping people make games since 1990. I wrote games earlier in life, with Solar Realms Elite being the most well known, then worked on an environmental simulation game called BlobCity, then took a break for over a decade. The recent rise of indie, mobile, tablet, social, and web games have made me interested in game development again. My current passion is using interactivity on the web for learning, especially computer science and math. I’ve started with game development because it’s a rich source of interesting problems that can be explained visually. With modern web browsers, we can use explanations that don’t follow the formats used in magazines, technical papers, and books. We can combine learning by reading, learning by watching, and learning by doing.
I previously worked with Root-1 on educational games, Wild Shadow Studios on Realm of the Mad God, Peter Norvig on interactive diagrams for Artifical Intelligence: A Modern Approach, and Nonagon Games on A Chronicle of Misdeeds.
In addition to helping game developers with my articles, I love to talk to people working with games and interactive education. Mostly it’s informal chats over lunch, but occasionally I’ll work with someone for a longer period of time. If you’re developing games in the Palo Alto / San Jose area and want to chat in person, email me at email@example.com. I’m especially interested in game algorithms related to maps, procedural generation, and pathfinding, but love to chat about anything.
Ways to find me: