Thinktober!!

Thinktober!!

Nuzcraft
Nuzcraft

In October 2024, I spent the month Thinking about game development with the intentional goal of taking a step back from prototyping and developing. I wanted to get ready to start my next project, and I wanted to put myself in a headspace where I could take some steps away from active problem solving and into a different mood. Knowing I want my next game to be a roguelike, I tried to pursue some roguelike-y topics.

I documented Nuzcraft’s #Thinktober on Mastodon, and will be recapping and reviewing some of what I experienced here.


But first, please consider subscribing. I enjoy writing this little blog and it would mean a lot to me for it to be delivered directly to you! Thanks!


#1 and #4 - UFO 50

At the beginning of the month, I started playing and watching others play UFO 50, a collection of 50 games themed as releases from a fictional 1980’s development studio. I think this game has a plethora of tips and tricks for the observant developer; here are a few:

  • Bigger Sprites - it’s okay to take up more screen space with important parts of the game
  • You don’t have to hold the player’s hand for everything
  • Empty space is OK
  • Start simple, complexity should come naturally
  • sound effects are more important than you think

screenshot from the UFO 50 game, Planet Zoldath

  • Absurdity is fun and may help your game stand out
  • I love that I don’t understand what’s going on in Mooncat
  • Lean into the mechanics you want to use. Figure out how to make them shine.

screenshot from UFO 50 game Mooncat

#2 - Roguelike Programming Patterns with Bob Nystrom

I really, really enjoyed this talk on programming patterns in roguelikes.

  • ECS may not be the best for traditional roguelikes
  • inheritance as a pattern is powerful if broad and shallow
  • use components to represent broad capabilities, then shift toward inheritance or custom types for specifics
  • define your own types; Type Object Pattern
  • turn actions into objects; Command pattern

#3 - GMTK on Mystery/Curiosity in Games

I enjoyed this video, but I will probably take less of it into my next game than other things. I think mystery and curiosity are very hard to develop for, and may be left for a more experienced Nuzcraft.

  • It’s okay to not tell the player something
  • if you don’t tell the player, maybe make it obvious or weird so they get curious
  • locking an interaction behind knowledge is powerful, but can isolate players who aren’t engaged
  • avoid spoiling curiosity with repetition (unless knowledge is the goal)
  • engage different levels of curiosity

#5 - Procedural Map Generation Techniques

Herbert Wolverson does a great job breaking down a bunch of procedural generation options that are used in all kinds of games. I really appreciated the dive into potential use cases for different generation methods and especially liked the end where he talked about combining and layering different types of procedural generation. There’s a balance to strike between the randomness and reigning it in so that the player can see something recognizable.

#6 - Dungeon Generation with Wave Function Collapse

Brian Bucklew takes the topic of dungeon/map generation into a deep dive focusing on Wave Function Collapse. I really, really liked this talk and look forward to experimenting with WFC in my next game.

  • one algorithm with highly varied outputs
  • inputs can be designed instead of programmed
  • inputs can be tailored to constrain or allow more randomization
  • Like the previous talk, they do well when you combine different WFC outputs or different procedural generation techniques

#7 - Kate Compton on Practical Procedural Generation

I appreciate this talk as informative and interesting. I think I have less to take away from in in terms of practical application, but little bits of wisdom that will help.

  • BEWARE 10,000 bowls of oatmeal
  • Allow the players to take ownership of the generative result
  • Consider the level of ‘uniqueness’ required and tune your generative process for it.

#8 - Polybot-7

I played Kyzrati’s amazing 7DRL from 2018, Polybot-7. https://kyzrati.itch.io/polybot-7. I was a fan back when it came out and had such a great time revisiting it

screenshot from Polybot-7

  • give the player mini-goals that are optional, challenging, and rewarding
    • in Polybot-7, finding slots and upgrades are pivotal ways to power up, but are also optional
  • spur player curiosity
    • the FOV shows when there is a room behind a wall, but not what’s inside
    • double wide doors indicate something different/special
    • blue walls indicate potentially powerful loot
  • combat gives strategic agency since the gimmick of how items attach is directly related to how combat works

#9 - Principled Coding Practices

Diving into the hard coding side, I tried to understand some best practices that might help with a longer term project.

  • I’ve yet to find a definitive file structure to stick with in Godot
  • I want to be more conscious about using SOLID principles, while consciously breaking them around hero/player classes that are special
  • I would like to try out some GDScript unit testing
  • I refuse to slow down
  • Obtuse Code is bad

#10 Principled Coding Practices in Godot

In a follow up to the previous video, I watched this playlist of Godot-focused design principles that was not very helpful. Inheritance is not always the answer!! They managed to avoid talking about scenes altogether and only used different flavors of inheritance to describe SOLID principles. Disappointing.

https://www.youtube.com/playlist?list=PLJ690cxlZTgK6j3wpoI9PBopRLNZc5QPv

#11 The Ground Gives Way

I wish I was better at this game! I had a lot of fun digging into this game that runs on a literal terminal. Here are a few things I liked about it:

  • items, enemies, statuses, effects, there is so much STUFF and it all interacts together
    • A lot of the fun is discovering new things or new interactions
  • I like the seen window for items, monsters, and features.
    • I can keep playing without needing to examine as much
    • This is most useful in an ASCII game, but I could see it applying to tile based games as well
  • Balancing health vs energy is a way to promote cautious exploration and strategy
  • As a player, I get impatient and lose a lot. I’m not sure how to mitigate that yet.

screenshot from Underground 1 of TGGW

screenshot of Castle from TGGW

#12 - What Makes a Good Roguelike by Pepperhead

This video was mostly focused on action roguelikes as opposed to traditional roguelikes, but had some really good points that resonated with me.

  • Make each run start unique
    • This could be from a loadout or initial items or initial setting, anything to make the start of each run different from the last
  • Offer rewards for risky behavior
  • Runs should feel different every time
    • Progression should be varied enough that each run veers into a different direction
  • Allow players to find interesting combos/effects/synergies
  • Find mechanical changes that change the game and make it fun
    • Stat changes should be more decorative

#13 - The Untapped Potential of Roguelikes by Tom Cadwell

I almost turned this video off because it didn’t seem like Tom was going to talk about anything directly related to roguelike game development, but I’m glad I didn’t. Tom talked about general ideas that line up with some other lessons from previous topics.

  • let your hero get powerful
  • force the player to make hard choices with tradeoffs
  • players should be able to choose what to learn
  • variety is fun, randomness not always, find the balance

#14 - Honorable Mentions

I’ve been spending time reading Game Programming Patterns by Bob Nystrom and Blood, Sweat, and Pixels by Jason Schreier and have found them both to be excellent. I haven’t finished either of them yet, which is why they aren’t included in #Thinktober.

Final Thoughts on Thinktober

I found this exercise to be extremely helpful in resetting my brain to think about some new things. It also allowed me to spend some brainpower outside game development throughout the day since my learning sessions tended to be more compact. If I remember next year, I’d love to make this something I do again. I’m looking forward to seeing what I can take into my next development project, which I plan on being a traditional roguelike.

Thank you for reading! Please consider subscribing if you haven’t.

nuzcraft