Posted September 29, 2025 by enegames
#game design #game dev
"Thunder Lizard: eat or be eaten" is a game set on a prehistoric, procedurally generated island where dinosaurs fight for dominance and survival -- all in ASCII art. And now it is complete and fully playable.
The concept and inspiration behind this game was to see how far I could push a simple text-based roguelike game engine beyond what it was intended for. This simple game has a surprising depth and complexity behind it. The island itself is generated via a fairly complex noise-based custom algorithm, then converted to ASCII (ok, technically unicode), creating a compelling look. The full map, including the mobs, is stored in multiple forms of indexed stores for different kinds of retrieval, like coordinate, range or proximity.
The dinosaurs have complex behavior, including hunting, hiding, herding and resting after a kill. All of this is powered by an ECS system for runtime-swappable components. For example, NPC dinosaurs have an "awareness" component that takes into account their unique range, alertness, the type of terrain other dinosaurs are on, and how "focused" they are if they are fleeing pursuit.
One of the big design challenges was in trying to represent the massive size of dinosaurs in a single character. Recognizing relative size is an important game play mechanic, but I found the limitations of ASCII worked against this. I settled on using numbers for the dinosaur bodies to solve this, but what really made it work was adding extra animated parts to each dinosaur for visual clarity, suggesting a head, tail and legs which helped distinguish size and direction and ultimately made them feel more alive than simple numbers moving around.
What really pulled the game together were the small visual touches, like animating ripples in water when dinosaurs move through it, or trails in other terrain types, or the subtle zooming in and out when the player is surrounded by other predators, or blending the color of a dinosaur to the background when hiding. Like in my previous game "Edge of Known Space," I found these subtle ASCII based animations to make a large impact.
The sound design was the last part that I worked on. I wanted to evoke "Jurassic Park" vibes and avoid sounds or music that sounded too video-game-y. It took a bit, but I decided on a layer of tribal drums that increase or decrease in intensity based on game activity, with a constant backdrop of jungle animal sounds. I lay in a french horn inspired melody at pivotal moments. I found a number of dinosaur roars which play based on player action and proximity of other dinosaurs. I really wanted to capture the iconic ground shaking footsteps, but they just didn't work with the "smallness" of ASCII or the speed of dinosaur movement. I worked them in, but in a much quieter and faster pace. The effect is subtle, but when surrounded, the footsteps multiply adding to the intensity of the moment.
I'm proud of how the game turned out and I hope you enjoy playing it. If you are curious about how I implemented the features above, you can view the code.