I owe my game design passion at least in part to ZZT - the wonderfully obscure 1991 ANSI art game by Tim Sweeney, that chap who went on to found Epic Games and create the Unreal Engine.
I have no idea how long I played ZZT as a child, bumping heads with centipedes made of zeroes and running away from Pi symbols that the game tried to convince me were tigers, before I happened upon the game's editor. From that point, ZZT was no longer a game; it was a colourful, characterful, years-long course in scripting and programming games.
I guess it can be compared in some ways to modern titans like Minecraft and Roblox in that, for so many coders, programmers, and game designers, ZZT was where they began. The game's scripting language, ZZT-OOP, was (I now realise) hilariously basic and limited, but entirely approachable as a kid who knew nothing about how programming actually worked. It allowed you to create your own rules for objects - you could plop down a smiley face in a corner of a screen, and then tell the game whether that smiley face was a helpful vendor that would sell you ammo in exchange for white wine spritzers, or whether it was a cannibalistic assassin that would lock onto your scent and not rest until it was happily chewing on your ANSI-corpse.
It was my first introduction to concepts such as Object-Oriented Programming, and really, just scripting in general. And let me tell you, I spent hours upon hours upon hours designing entire worlds in ZZT. There were villagers that you could talk to and receive quests from; there were interconnected screens of winding caverns and spider-infested dungeons; there were evil necromancers called things like "Blork" and "Skurn" summoning undead armies deep in the Dark Forest of Dismemberment and Awfulness (or something). It was all terribly confusing to everyone but me, and not at all fun to play, I'm sure, but all that experience and joyful crafting set me up beautifully for all my future coding endeavours.