I’m using a walkthrough, because I can’t remember how to solve all the puzzles 42 years on, not that I ever DID solve all the puzzles back in the day anyway!
I was all of 8 or 10 years old when I first played Zork, I think, in 1982 or ’84, on a PC at a friend’s house that I didn’t have infinite time on, so give me a break. I also had a Choose Your Own Adventure-like book adaptation of the game, which I “played” through many times when I was the same age. It wasn’t published by the CYOA people, but it was the same concept — Choose Your Own Adventure stories are basically a print form of the text adventure computer game in many ways, although a bit more limited in the choices the player can “input”. Zork was one of the most popular home computer games in the early 80s, at a time when tabletop role-playing games like Advanced Dungeons & Dragons were at one of their early peaks in popularity. Together these games created the cornerstones of the geek subculture, a movement which has blossomed and thrived since then, particularly as the internet took off in the 1990s.
DALL-E is a text-to-image AI developed by OpenAI, that uses natural language inputs to generate high quality images. It’s been growing in popularity in recent weeks as the internet has begun to discover and share the images created by it. A twitter account @weirddalle is worth a follow, if you like that sort of thing. (Which, who possibly couldn’t?)
I’ll be feeding the text of Zork through DALL-E as input, and the results, will be the images that I tweet along the text from the walkthrough on the twitter account for the project.
I get rate limited to 50 posts every 23.5 hours on DALL-E, so each time I hit my limit, I’ll have to take a break. Accordingly, it’s expected that this will take maybe a few days or weeks to complete. It’s also possible that I could run afoul of DALL-E’s anti-abuse filters with some parts of the game, and if that happens I will failover to CrAIyon, the DALL-E Mini AI. It doesn’t generate as good images, but it’ll do as a backup.
I’m really pleased with this project, it’s so simple and the execution is easy, but it’s fun, and I feel like a creative guy just for having the idea to do it. Simple ideas really make me happy.
To put Zork, one of the earliest PC text adventures, which was released some 42 years ago, into an AI-based text to image generating system, and see what it outputs for illustrations seems like the funnest, coolest thing you could do, and a great way to tie the cutting edge of technology to some of its early roots.
Not all of the images DALL-E will generate will be accurate to the game, and that’s OK. It’s fun just to see what it comes up with, using the sparse descriptions that the game gives. Most of Zork took place in your imagination, and so we get to see what an AI might imagine.
The downfall of this process is that DALL-E will not remember from one run to the next all the context from the previous events in the game, so it will in many cases forget things that it should be aware of, resulting in some odd continuity. But that’s not the point, of course. The point is to do something fun with technology, playing with it to see what happens.
If you want to play Zork for yourself, you can do that! It’s free to play in your browser through an embedded DOSBox emulator.
DALL-E has been getting a lot of my attention lately. I signed up for the wait list to become a user and got an invitation a few days ago. DALL-E is much more capable than DALL-E mini, later renamed Craiyon, that I had played with previously. It generates images higher quality images, faster.
I’ve been using DALL-E like a bad graphic artist’s client, pestering it every few minutes for free concept art with the promise of “exposure” as its own reward. DALL-E doesn’t seem to mind, though. And we love each other. I ask it for whatever comes to mind, and it seldom disappoints me.
I decided to ask DALL-E to create box cover artwork for Mega Man, since why not. It occurred to me that this would be a good John Henry competition, pitting the new machine up against the mightiest artist to ever lift a colored pencil, to see who was better.
It turns out that DALL-E was more than up for the challenge.
I mean, none of these is exactly good, but all of them are awesome.
Most of these don’t feel like Mega Man, but they all have a pretty good Japanese Giant Robot vibe, which is just fine. Mega Man is a small robot, not a giant robot, of course, but that hardly matters — instantly, my imagination is fired by the idea of a 1960’s or 1970’s Mega Man anime imported to the US in the 80s alongside shows like Star Blazers, Mobile Suit Gundam, Mazinger Z/Tranzor Z, and Macross/Robotech, and Diaclone/Transformers… What a “What If?” to think about! So the nostalgia factor for this alternative Mega Man that never existed is powerful.
It makes me think that if I got back into game development, I’d use DALL-E to give me the initial inspiration, concept art, cover art, what have to get me going.
I have so many questions about DALL-E.
Why does it get the title wrong? Megan? Meggian? Megman? It can’t be hard to get the exact text out of the description I entered and replicate it in the image. Is this a deliberate nerf on the part of the developers to prevent users from creating meme captions that could be offensive?
Due to the way DALL-E can’t seem to get the words right for the titles, a lot of what it generates reminds me of this hilarious meme from years ago, which parodied corporate fast food logos by turning them into dada-ish nonsense. Which makes it unintentionally (or not) hiliarious and entertaining, but it also limits its usefulness for creating images I want to actually use.
It’s exciting to be alive at this time, getting to see these developments in AI. I don’t get the sense that DALL-E is truly intelligent, but what it does is impressive nonetheless. The images it creates are often quite good, and about as often are complete nonsense. But frequently this “nonsense” is either hilarious or entertaining, or has a superficial feeling of artisticness to it. If I knew a human had created some of these “artistic” images, I would be more inclined to ascribe creativity or meaning to them. But what when DALL-E does it, it feels more like it is holding up a mirror to our culture’s human-created art, as though it put the conceptual ideas of art and design into a blender, and reassembled them for us, not quite at random, but according to rules that don’t quite work yet, but still give the impression of… I don’t know, “something going on in there.” Often times the results it spits out give me the impression that I’m looking through a window into an alternate reality; as though, the many worlds theories of physics are true, and DALL-E is somehow extracting images of alternate realities from one of an infinitude of alternate universes in our multiverse. And from an information theory standpoint, perhaps that might as well be what it is doing.
When the images are purely visual representations, the impression of intelligence at work is more effective, but when the images contain words, it’s clear that DALL-E is just throwing shit at the wall to see what sticks, following rules of some kind, but not intelligently, not with deliberation or intent. We get nonsense words that are a jumble of letters that the DALL-E parser decided it thinks we wanted it to put into the image. And sometimes we get strange alternative glyphs, as though from some alien alphabet.
Much of the time the images DALL-E creates could be used to stimulate human creativity, to give a human creator a spark that they could use to work from, an initial inspiration. That’s a valuable thing in itself. And I’m sure the potential is there for it to continue to develop its abilities, and I expect that in time AI development will give us more capable AI. That seems almost a given.
Seeing what DALL-E would create was so fun that I asked it to create alternative cover art for many of my favorite games. There were many that I thought would be fun to share.
Legend of Zelda
Super Mario Bros.
Super Mario World
Ms. Pac Man
Teenage Mutant Ninja Turtles
Bad Dudes vs. Dragon Ninja
These are amazing, especially considering the amount of human effort it takes to create them — literally just typing in a few words and clicking a button. They are so fun to look at, to anticipate what DALL-E will come up with while the progress bar fills. Each one is as interesting for how it fails as it is interesting for how it succeeds. Each seems like an alternative universe’s version of the game title. The art style varies — some of it looks like the illustration on a children’s cereal box, a lot of it looks like the cover of a paperback book or movie, while others look like the box a board game is stored in. Tetris appears to have strong links with Rubik’s Cube, and here and there I can pick up hints of other influences. It’s especially fun to see when DALL-E “knows” the game title, and picks up on stuff that is recognizable from the game, and uses it in the images it composes.
I picked up Mini Metro about a week ago. I know it’s been around a few years, but I never claimed to be trendy.
I like the aesthetic and the mechanics of the game. It’s relaxing to play, yet gets hectic and overwhelming. It’s a fairly unique concept for a game, so it gets innovation and originality points. It’s a math-y game, but it presents the math intuitively and concretely, using shape and color and quantities that you have to eyeball, rather than representing quantities with numbers. There are various rates at which things happen, things that place demand on your resources, and you have to come up with a system that effectively utilizes those resources and balances demand. It requires a bit of strategy and some cleverness, and you can pause it, take your time, and think, or count and measure, or whatever you need to do to figure out your strategy. You have to understand how the rules work, and there is complexity in the ways the rules combine, but the rules are relatively simple taken individually, and they are introduced one at a time in a way that makes them easy to learn.
I don’t think it’s perfect, but it’s a pretty good game concept. Obviously, it’s been successful and popular.
But I think about ways I might improve its design.
What I don’t like about it is that there’s a little too much randomness in the spawning of the station points. Depending on how those play out, you can get totally screwed and have no possible way of managing the problems the game presents you. I feel like a better game design would always ensure that there was a solution that a sufficiently talented player could come up with, but that seeing the solution and implementing it would be the things that are difficult. It’s fine for the game to present a difficult challenge, and more difficult as the game progresses, but they shouldn’t be impossible.
So, for example, spawning a cluster of 6-10 Circle stations with no other types of stations in the region is an unfair situation. The spawning code should either not do this, or there should be ways to consolidate/erase multiple stations into a super-station. The game does give you Interchange stations, which have more capacity and speed than a basic station, but it only upgrades one existing station, and can’t be used to consolidate several nearby stations of the same type into one. I think it would be way more interesting if you could upgrade one station, and then all basic stations of the same shape within a certain radius of the new interchange would de-spawn, consolidating their traffic into the Interchange. But I think the way I’d prefer to solve the problem would be to put the Station spawning in the player’s hands, not have it be done automatically by the game.
So my proposal would be that **passengers** would appear throughout the city, with a destination in mind (indicated by their shape). They have a limited walking distance that they are capable of traveling before they get tired and irritated. Irritated pedestrians change color and vibrate to indicate they are tired and unhappy. They will walk toward the nearest station, and try to travel to the closest station that matches their shape.
To make them happy, you can build a station near enough to them that they will walk to it, and then you can connect stations with your rail systems to take them efficiently to their destinations. You can spawn an unlimited number of stations (hmmm, perhaps), but you have limited resources in terms of rail lines, cars, carriages, bridges, and tunnels to connect them.
The passenger spawning is out of the player’s control, that part is provided by the game as the challenge, and the player can strategically build stations of the type desired, at the point desired. Maybe the player should be constrained by having to choose how many of which shape station is available to them, or something like that.
The other thing that I see with the game is that, at some point the game just decides to flood you with passengers until you die. Usually somewhere around the 1200-2000 passenger mark, the game just cranks up the generation of more passengers, attempting to overwhelm the player and force the game to a conclusion. Again, I think it’s better to give the player challenges that are possible. Maybe it gets harder and harder to keep up with the challenge, but there should always be a way to do it.
(I accept that it could be there is, and that it only seems like the game becomes impossible because I’m locked in to the design choices I made, and if I tore everything down and re-designed, maybe there’d be a way to create a more efficient system with the same resources available to me that could handle the new volume of traffic. But it doesn’t seem that way to me — even on Endless and Creative modes, where I have no constraints on the resources available to me to build the system, no matter how many lines and cars I throw at the problem, the population will always scale to a point where there’s always overcrowded stations.)
One thing I like about the game is that they don’t have an in-game currency that you earn by transporting passengers and use to spend on improvements for your transit system. I think if the game had that, it would be too much like a Sim-style game, and I think removing a concept of money, and de-coupling a potential feedback loop of performance → income → improvement → more performance helps to keep the game simple — and I like that.
I wonder about that, and why the designer of the game decided on that. Because it’s inconceivable that they wouldn’t have considered every completed trip being converted into in-game money that would be spendable on more rail lines, trams, carriages, etc.
And they must have considered that, and then discarded the idea. I wonder why they decided it and what pros/cons they weighed to make that decision.
I’ve revisited the concept, and today I give you Fibonacci8. Update 10/12/2021: it has now been officially registered.
By making the sett of the tartan design asymmetrical, I was able to extend to the 8th number in the sequence, and added a 5th color to the pattern, a natural ecru white.
I tried each of the original four colors for the 8th number, and I thought red and green had the some appeal, yellow was interesting, and blue wouldn’t work because it was the 7th number, and I didn’t want to re-order the first 7 colors. But in the end I decided that adding a new color would give the tartan better balance. Each number in the sequence is roughly as big as the previous numbers in the series combined in the early part of the sequence, so after the first 5 numbers, repeating colors really changes the balance, with the color of the last number dominating. So going with a new, and neutral, color for the 8th value in the series works well.
I like starting with yellow as the starting number, symbolizing the start of the golden spiral, and then not using it again, in order to keep it special and to give the eye a visual anchor to where the pattern begins.
Donkey Kong is the foundation of a modern business empire, a cultural cornerstone, the genesis story of the Marioverse. Not liking Donkey Kong is something akin to blasphemy. I gave it a shot. I wanted to like it. But I just never liked it.
I first played Donkey Kong when it was new, in the Arcade, on Atari, and ColecoVision, and I never considered it one of my favorites. It was a smash hit when it came out, sold tens of thousands of arcade cabinets, swallowed hundreds of millions of quarters, sold millions of cartridges on home consoles, and been ported to just about every console of its generation and the next few after. It was groundbreaking, both technically and in terms of game mechanics and narrative.
I recognize all of that, and I still don’t care for the game. I respect it for its accomplishments, but yet I don’t like it. I can’t enjoy playing it.
This isn’t merely a statement of opinion or taste; I don’t enjoy playing Donkey Kong, and I don’t find it to be a particularly well-designed game.
Let’s talk about that.
Barrels – the first screen
Donkey Kong is very difficult and unforgiving. Part of its difficulty stems from the tight window for clearing dangerous obstacles, and the narrow clearance for successful jumps. But much of it comes from design choices that tend to make the game feel unfair.
Jumping is the key mechanic around which the whole game is based. Yet, the jumping mechanic is rough. When you jump, you can’t change direction or height, so you’re committed to the path of the jump until you land. This makes jumping risky and hard. When you make a mistake, there’s no second chances. You know you’re going to die, and there’s nothing you can do but watch and wait for it.
You can’t jump very high — just the exact height to clear a barrel or fireball, and the exact distance to clear two barrels if they’re right next to each other… barely. Miss a jump by a little bit and you’re dead.
On the first screen, some of the ramps look like they might be close enough together to allow Jumpman to jump up to the next platform from the one below, but that is not permitted. You can only ascend to the next platform by climbing a ladder.
Not that you’d normally ever want to, but you can’t jump down from the edge of a ramp to the one below, either — the height is not great, but it will still kill you.
If you jump off a platform, you die if you fall just a short distance. Jumpman can’t survive falling any farther than the peak height of his jump.
You can’t get off a ladder until you get allll the way up to the top of it, or allll the way to the bottom. Very often, you’ll think you’re there, and try to move left or right, only to find that you’re still locked onto the ladder and unable to move. A better design would have been to treat horizontal joystick input as continuing Jumpman’s previous climbing direction, moving him the rest of the way up/down the ladder until he is clear.
There’s no jumping from a ladder, either. Allowing this would make the game play feel less stiff, and give the player greater control and flexibility. It seems like Jumpman should maybe be able to reach up from the lower ladder to grab the bottom rung of the upper half and climb up, or to jump off from the top of the broken ladder to get some extra distance and height out of the move. And, surely, if only he could only jump vertically from the top of the ladder, you’d be able to reach the top half and continue up. But no, he can’t do any of these things.
Some of the ladders are broken, turning the ladder into a deadly dead-end. You can climb up them, but only get part-way. Even if you’re at the very top rung of the bottom half of a broken ladder, barrels rolling by below you will still hit you and kill you, even though you’re well off the ground. It’d be nice if the game gave you a break and decided there was enough clearance that you could be safe here. And a barrel that decides to roll down from the platform above and take the ladder path will also kill you. If it does, there’s no way you have time to get out of the way in time; you’re a sitting duck You’re stuck on the broken ladder until you backtrack down and get off. If you could jump off the ladder, or jump to clear the gap where the ladder broke, you’d have one more option, open up possibilities, a chance to dodge out of the way, and it would make the game feel a little more fair. But Donkey Kong doesn’t give this to you.
The Hammer power-up allows Jumpman to fight back against the barrels and fireballs that are his bane, and earn extra points. But this comes at a cost.
Jumpman can’t climb ladders with the hammer, and cannot jump. This means he is stuck on the platform where he grabbed the hammer, for as long as the hammer persists.
The hammer is a temporary item, which runs on a timer that ends after a few seconds, but without warning. You can be right about to smash a barrel when suddenly the hammer disappears, leaving you defenseless and no time to jump out of the way. And if that happens, again you have no choice but to die. This feels unfair. To fix this problem, the game should give the player a cue to let them know that their hammer time is about to expire — blinking or an audio signal would be helpful. And maybe if the game detects that Jumpman is facing a barrel, and it is within a “close enough” distance just as time is about to expire, give the hammer enough extra frames before despawning it to allow the barrel to be busted, avoiding what would otherwise feel like an unfair death.
Since the levels are timed, and running out of time will kill you, and you can’t clear the level when you have the hammer because you can’t climb with it, getting the hammer can screw you if you grab it while the timer is running low.
As well, your remaining time gives you bonus points, so being forced by the hammer to wait before you can finish the level can actually cost you points, unless you can smash enough barrels/fireballs to make up for the lost bonus time, and make it worthwhile. It would be better if you could cancel the hammer early, or if you could still climb and jump while holding it. Or, perhaps hitting the jump button while holding the hammer could make Jumpman throw the hammer, giving you a useful way to cancel it early, and a ranged attack that could come in handy and give you one more option.
The hammer may make you seem invincible, but you can still be killed if a barrel gets past the hammer to touch Jumpman. Most players don’t realize this until, soon enough, they learn it the hard way. A barrel coming down a ladder can be hit by the hammer, but if it swings out of the way and the timing is just wrong, the barrel may hit Jumpman in the head before the hammer swings back up. Likewise, the rolling barrels may approach Jumpman from behind, or roll under the hammer while it is swinging above Jumpman’s head. The swinging of the hammer is automatic, not controlled by the player, so whether the hammer hits the barrel or the barrel gets through is somewhat random. Usually Jumpman will hit, but once in a while the barrel will get through. I would fix this design issue by making Jumpman invincible from the front while holding the hammer, but still let him take hits from above and the rear.
Barrel pathing is pernicious; whether a barrel will go down a ladder or continue down the ramp can’t be known for absolutely certain, but it seems that barrels are more likely to go down the ladder if you’re on the ladder, making using ladders especially deadly. It makes you paranoid to avoid starting up a ladder until any approaching barrels have cleared the ladder you need to climb. To some extent, you can manipulate the barrel AI by your position and direction, as the enemies will tend to take the path that is least advantageous to you. So by standing to one side or the other of a ladder, and facing the right direction, you can often influence the barrel to take the short path or the long path.
Barrel spacing is too random and can often kill you unfairly. Donkey Kong will sometimes roll two barrels at you too far apart to jump both together, and too close together to jump the first one and then immediately jump the next one.
Sometimes DK will toss a barrel that will go straight diagonally down the screen, ignoring collisions with the ramps. These move extremely fast and are unpredictable, making them all but impossible to dodge. If you happen to be in their path, at the top of the screen, you have almost no warning and no time to get out of the way.
Collisions with barrels will kill you with any overlap — even if you’re standing on the platform below, with your head poking above the next level, a barrel rolling along that level will collide with you and kill you. An if it passes below and clips your feet even a little, while you’re on a ladder, it’ll kill you as well. Collision boxes could have been made smaller, to make slight collisions forgiving, and allow for exciting “close calls” rather than cruel kills.
You clear this screen by popping all the rivets out of the girders, causing the structure to collapse. You clear the rivets by walking over them. This creates a narrow gap between the two rivets, really it’s just a crack. It looks narrow enough that you should easily be able to walk over it without inconvenience, much less danger. Yet, if you try, you find that Jumpman will fall through this narrow gap, to his death. This could have been nerfed by making you stop at the edge of these gaps rather than fall, or by allowing you to step over them unimpeded.
In later Mario games, Mario has the ability to fall any distance without injury, so long as he doesn’t fall into a bottomless pit. In Donkey Kong, though, Jumpman can’t fall any distance greater than the height he can jump. This means you have a lot less options and possibilities for moving around a level. The result is the controls feel stiff and uncomfortable.
You can grab a hammer on this level, as well, and if you do, you’ll be stuck walking back and forth on the girder you’re on, unable to walk over any gaps created by a missing rivet. This often means waiting for several seconds on one of the smaller side platforms, unable to climb up or down the ladders, and unable to cross the rivet gap. When you have the hammer, the fireball enemies that move around this level will often keep out of your reach, unless they happen to already be on that platform with you, seemingly waiting for your hammer time to end, so they can swarm you the instant you’re again vulnerable. If this happens, you’re often blocked from multiple sides, or facing two consecutive fireballs spaced so that you can’t clear them with any possible jump. Again, it’s like the game is designed to punish you.
I could never clear this screen as a kid, not that I got many chances to. To get to it, you have to clear Girders, Rivets, and then Girders again, making the first Elevator screen level the fourth level in the game, and by this time I’m usually out of lives.
The jumps on this screen are very unforgiving, due to the height that Jumpman will fall if he misses the moving elevator platforms that he must land on in order to make his way to the goal. If you mis-time your jump, you may miss the platform, or simply land on it after falling too far. And you don’t have to fall very far to fall too far and trigger a death when you land.
There are bonus objects to pick up on this level, and not very many other scoring opportunities. But the bonus objects are so difficult to reach it’s not really worth it. You’ll waste too much time, or miss a jump and die.
At the end of this level, there’s a bouncing spring that moves horizontally very quickly, bouncing at you before falling down the right side of the screen. This makes any approach up the level involving movement through the right side of the screen especially deadly. It takes pixel perfect timing to avoid this final obstacle, and it’s probably the hardest single challenge to negotiate in the entire game. Apparently (I say, because I’ve never done it) the way to clear this final obstacle is to wait patiently, and time your move so that you can pass through the danger zone between one spring launching and the next. Move at the wrong time, and you’re screwed. It’s possible stand in a specific spot where the spring will bounce over Mario harmlessly. I don’t think it’s possible to jump over the spring; if you can it’s almost certainly not worth the risk.
Pie Factory Screen
This screen is also known as the cement factory, or the conveyor belt screen. I don’t remember ever playing it, so I don’t really have complaints here. To get here, you need to clear 7 screens, and since I could never get past the Elevator screen in level 4, making it to the Pie Factory was far beyond my ability. It’s also the level that is often omitted from home console ports. I don’t even know what you need to do to clear this screen.
I watched some videos of people playing this level, and it looks like it might one of the more enjoyable levels. A few of the platforms are conveyor belts, which affect Jumpman’s horizontal speed when running on them, depending on which direction you’re facing, they’ll make you slower or faster. This doesn’t seem to affect your jumping ability much, though, because any other objects on these platforms are also affected by the conveyor belt speed.
At the top of the screen are two extension ladders which slide up and down according to a timed pattern. To clear the level, you have to wait for the ladders to extend up, then climb to the top-most platform. This doesn’t seem terribly difficult, although you’ll be at the mercy of the timing if there happen to be any fireball enemies nearby, you may not be able to get past them due to the timing of the ladders.
It’s hard to say without having played it, but all-in-all I think the Pie Factory might actually be one of the easier levels in the game. Which makes it seem strange/questionable that it is the last to be introduced to the player.
Lose a life and start over
On any level, if you lose a life, you start over from the start of the level you’re on. No progress is saved, no checkpoints. In order to clear the level, you have to do it perfectly, not making any lethal mistakes. This makes clearing any level which you have difficulty with especially difficult.
In a modernization, I imagine that there would be a waypoint system to allow you to keep some of the progress you make in a level. On the Rivets screen, this would be a simple matter of remembering the rivets you’ve popped. On the Elevator screen, starting Jumpman on the last platform he safely touched before dying would be helpful. On the Barrels screen, resuming exactly where you died would be nice, but if not, then at least start over on the last platform touched.
Why did Donkey Kong succeed?
Donkey Kong was one of the most successful arcade games ever, and even today it is a favorite of many gamers who appreciate the games of this period.
In 1981, arcade videogames were still quite new and had grown almost unimaginably popular after about a decade of market growth and technical development, with great interest in any new title that came out. It was a time we now look at as a golden age for the video arcade, after several years of ascendancy through the 70’s black and white era that gave way to the mega-popular blockbusters that dominated the early 80’s, games like Asteroids, Berzerk, Defender, Pac Man, Dig Dug, Joust, Galaga, and Moon Patrol. Out of all of them, only Pac Man made more money than Donkey Kong. What made it such an attraction?
Donkey Kong had the benefit of being unlike anything that had come before it, in terms of play style and technology, yet it had instant familiarity all at once, in the way it echoed the familiar King Kong story from classic cinema. It had colorful cartoon-like graphics. Its sound effects and music were charming. The game play was novel, yet intuitive, despite the brutal difficulty level. And for an arcade game, being extremely difficult was actually a good thing, since it resulted in shorter games, more credits per hour, and thus higher revenue. The challenged appealed to many gamers of the time. And there were not yet other games similar enough to compare against it, so the rough edges in the mechanics weren’t very obvious.
As one of the earliest platformer games, it broke ground and innovated, and for the time that was enough. Despite the shortcomings, rough edges, and unforgiving difficulty, it captured the minds of the public and gave them entertainment.
For all that, though, it just wasn’t for me, and I’ve come to accept that. For my quarter, Ms. Pac Man or Zookeeper is a far better play.
My research on Superman has lead me to a deep understanding of the map topography, and I have come to regard it as an inspired design. But whenever I hear people talk about Superman, I feel like I must be in the minority. People who like the game tend to agree with me, while people who don’t, don’t.
Often I’ll hear players who do not have the appreciation for the game that I have complain that the map is a weakness in the design. I always rebut this by saying that yes, it’s confusing at first but once you learn it, it’s actually a strength. I can point to all the shortcuts that are made possible by the map topology, its utility in weighting the randomness of the AI movement, and argue that it’s actually beneficial that the map is confusing, because it makes the overworld seem bigger than it really is, and adds to the challenge of the game.
But I think it would be even more convincing to demonstrate alternative maps, and let players experience them and decide for themselves.
It’s fairly likely that I’m the only one in the world who cares about this, and I’m almost certainly the only one who cares about it as much as I do. But what the hey.
I decided to see if I could could learn how to hack the ROM for Superman, and change the map navigation in order to rearrange the map screens. This would be preferable for authenticity, but it might also be limiting, in terms of what’s actually possible.
If that doesn’t work, or if I have ideas for expanding on Superman‘s design that aren’t feasible in a romhack, the other option would be to remake Superman in GameMaker, keeping it as faithful to the Atari version as possible, and experiment with the map that way.
The easiest Map design to implement would be to make the vertical and horizontal sequences identical, and to make up/right be “forward” and left/down be “backward”. The subway system could be left unchanged, up to go to the next station, and any other direction to exit back to the overworld, keeping the exit screens the same as in the original. At the end of the list of overworld, we can loop back to the beginning.
The biggest problem with this redesign idea is that there are no overworld shortcuts, other than to take the subway. To get to/from anywhere, it is always a straight line. This is slow, tedious, and to me, it seems like it would be boring. Subway travel helps somewhat to speed up travel, and becomes more important. But a bigger problem is that the gangsters can’t really spread out deep into the map by randomly moving in one of four possible directions. Their possibilities have been halved; they can only go forward or backward to the next screen, and so they will all be found in the first few screens, and rarely if ever would they make it to the end of the map.
But on the plus side, this map is extremely easy to navigate, much harder to get lost in. Gone are the one-way vertical transitions from the Phone Booth and Bridge screens, and the confusion they created. This might make it an ideal variation for a very young player, or for someone who is very inexperienced with Superman.
The other easy to understand map would be a cartesian grid. We have a problem in that 21 overworld screens do not map neatly to a regular grid of equal rows/columns. We can take a 5×4 grid to get 20 of the rooms in, with one room left over. We could truncate the overworld to simply remove this screen, which is the easiest solution. At the end of each row or column, we can either have a hard edge, where you cannot proceed beyond, or we can wrap around to the start of the row or column, or we can increment the row/column and move to the start of the next row or column. I’m not sure how to make a hard edge work, though. The easiest way would be to make these edges refer back to the same room, but doing it this way, Superman would still warp to the other side of the same room, which would be weird. Still, as a proof of concept, it’s quick and easy to do.
The advantage of this map is that it would be still be easier to understand and learn. The disadvantage is that, at least using the first two traversal approaches, you can no longer go through the entire overworld by going in one direction. When the world loops, it will only take you to the beginning of the the current row or column.
The ROM Hack
I looked into it and discovered that the ROM hack path would be much easier than I had anticipated. So much of the work had already been done for me by others.
I searched the web and found decompiled assembly source code for Superman, which had been nicely annotated.
This saves me a ton of time. I don’t have to learn how to disassemble the rom myself, and I don’t have to learn 6502 Assembly well enough to be able to make sense of the disassembled code to figure out what’s going on.
So, literally, all I had to do to get started was:
Install Visual Studio Code
Install Atari Dev Studio plugin
Open the decompiled superman.asm
Test it in Stella
I’m astounded that it’s this easy. The annotated source code is documented well enough that I can tell where I need to make my edits, and what the changes I need to make are. Hats off to the homebrew community for developing these tools and making the information generally available!
First, I did a test compile to make sure that the decompiled assembly that I had was viable. It compiled right away without any problems. I fired up Stella and ran it, and it ran, and seemed to play exactly like Superman. Success!
To make the edits, I read through the source .asm file and tried to understand what I could. Fortunately, the file is reasonably well documented. Without actually knowing 6502 ASM, I can’t say I understand everything I’d like to, but I can see enough that I should be able to make edits by trial and error, and make progress.
From reading through the code, I infer that the stuff after a semi-colon is a comment, so the different comments explaining the Offsets help me to understand that Offsets 4 through 7 have to do with the connections between the different screens in the map. All I should need to do is update them with different addresses, and the map will change! Easy!
In my next update, I’ll present my modded Superman maps and do a little analysis of them.
My five year old nephew started learning to play Chess recently, as I discovered on a visit a few weeks ago. We played two games, and I didn’t have too much trouble beating him, but for a five year old he’s not bad. He knows all the pieces and their basic moves and their relative value.
I thought it would be fun to build a video Chess game that he could use to help learn strategy and how to see the board. So this is my latest project. I’ll be posting more about that as I work on it.
My first step was to design graphic resources. I didn’t want to spend too much time on it, just a basic “programmer art” chess set, that I could use to build the program with. Of course, it didn’t end up that way, and I’ve gone down the rabbit hole designing variations on sets of minimalist pixel art chess men. It’s too fun and fascinating not to.
My first attempt was actually rather good, I thought. I went for 16x16px representations of the classic chess pieces. I drew them very quickly, but was very pleased with my results, particularly the Knight.
I could have stopped right there, but it was so fun to make this set that I wanted to continue exploring and see if I could refine my pixeling technique further.
I decided to search the net for images of chess pieces to see what variety there was, and found a lot of examples of beautiful sets. I started to take notes and to infer design rules for chess men:
Chess pieces are called “chess men” which seems antiquated and sexist, especially given that the most powerful piece in the game is the Queen.
The modern standard chessmen are a design named for English chess master Howard Staunton, and have been in use only since the mid-19th century. A strength of its design is that each piece is easily distinguished from the others, making errors from mistakes in identifying a piece — a problem with other sets — unlikely. Previously, chess men of different types had a less distinct appearance from one another, and were not as standardized.
In a Staunton set, the Knights are the most detailed, ornate, varied, and realistically represented pieces.
In Staunton sets, there is a standard height order: pawn, rook, knight, bishop, queen, king. (This surprised me, since Rooks are more valued in Chess I would have expected them to be taller than Bishops.)
The pieces are differentiated by their tops. Each type of piece has a distinct, unambiguous shape.
The body/base of the pieces have a common design, to create unity among the pieces in the set.
I tried to apply design choices to my chess set following these insights.
A follower on Twitter offered feedback that the pieces should be different heights, so I tried that. With a 16×16 pixel tile size, I could only shorten the back row pieces by 1-3 pixels. I also tweaked the King piece by adding a few more pixels to its top, to make it a bit more distinct from the Queen, and moved the Pawn so that it would be more centered in its square.
I do like the result:
I think my initial 16×16 Staunton set look like they’re in ALL CAPS, while this set is more “readable” by using “mixed case” heights for the pieces.
I wanted my chess game to be focused on usability and instruction. I needed each piece to be immediately recognizable, and not to convey a bunch of extraneous information to the player that has nothing to do with play mechanics.
My next attempt was a different take altogether. I wanted the look of each piece to suggest its rules for movement. I also thought that it would be clever if the pieces communicated the rules for using them through their visual design.
I ended up being very pleased with this set as well, although I went through many more variations, particularly with the Pawn. This one also came together easily and rapidly. When your tile size is 16×16 and you’re working in just a few colors, it’s easy to work fast.
Things I like about this set:
The shape of the piece is a built-in tutorial for how the piece moves.
The Pawns still have a pawn-like shape (at least the black pawns; white pawns are “upside down”).
The Knight’s shape may be read as an abstraction of the horse’s head shape of the Staunton piece.
I think out of these variations, my favorites are: P9, Kn2, B3, R1, K? I’m least certain which King I like. I think K4 and K5 are my top two, but I also liked the idea of incorporating a crown motif into the design, to signify the King’s special property of being the King. K1, K2 and K6 were attempts at this, but I think K1 looks too much like a Staunton Rook, unfortunately.
I wasn’t sure which of my designs to use for my final set, so I posted my sets on Twitter and a pixel art community on Facebook. @Managore responded to my request for feedback by coming up with a set of his own design, which I quite like.
His design was retweeted and liked over 500 times, and received many positive compliments from his followers, many of whom are game developers. One of my favorite indie developers, @TerryCavanaugh, who made VVVVVV and Don’t Look Back, pointed out an physical chess set that had been designed a few years ago which incorporated the same ideas.
It’s exciting to see my idea get picked up and reworked by fellow game developers who are inspired by the concepts I am exploring. So fun! Getting that validation that what I’m working on is interesting to others is very motivating. But it’s particularly good to get some attention from developers whose work I’ve admired for years, however modest.
I’m excited about this project and look forward to working on the program. I have more design ideas that I’m looking forward to getting into soon.
My friend Douglas Underhill wrote an interesting article about game design, dealing with the frequency of an ability’s use with its reward payoff. Doug’s question comes down to, given that there are hundreds of abilities to potentially pick from in character design, and that certain abilities are either useful much more often and in a much wider range of situations, or else provide a much greater payoff than others, what can be done in designing the rules system and/or world to encourage diversification in putting a finite amount of skill points into skills that are useful less often, or which provide a lower expected payoff.
Underhill asserts that, ideally, less-used abilities should be higher in their payoff, in order to encourage players to put character building points into them at all, while frequently used abilities should be low in payoff, to offset their wider applicability and to prevent the game from falling out of balance. But it’s an inherent problem because the feedback of high reward will encourage the use of an ability.
Essentially, though, game design encourages the use of abilities that grant a high reward, and the higher the reward, the more likely the player is to use and rely on that ability (barring some other limiting mechanism that mitigates or suppresses over-use).
But beyond unbalancing the game, or making the player’s strategies predictable and boring due to min-maxing, the reward weight/use frequency of abilities in a game’s design will determine and shape what the game is about. Dungeons and Dragons is nominally about role-playing and fantasy adventure, but its rules systems make it a game largely about dice rolling and fantasy medieval combat.
Tabletop RPGs are inherently flexible, though, so a given group of players might opt to make their game (or at least a particular game session) about negotiation and barter in a fantasy medieval economy, and there’s nothing wrong with doing so. But it’s much more likely that the typical group of D&D gamers will spend most of its time fighting and questing for objects and abilities that make them ever better at fighting and surviving in exotic, hostile fantasy environments.
After reading Doug’s article, it got me thinking about how this principle applies in video game design. (more…)
The auto maker Lexus used to have a marketing slogan, The Relentless Pursuit of Perfection.
This sounded really good, right? As a customer, you would like perfect products. You don’t want to spend money to acquire problems.
But from a making perspective, perfection is often the enemy of good. It turns out that perfection, the idea of perfection, as well as the pursuit of it, has a lot of problems.
Perfection as Impossibility
First, everyone has heard the cliche that perfection is impossible in the real world. No matter how hard you work at something, there will always be some tiny deviation from the ideal defined by the design or blueprint. We build things to tolerances, understanding that exactly hitting a desired metric is practically impossible. But we don’t need exact, we need good enough, and good enough can be as precise as it needs to be for the application. In some situations, tolerances are more critical than in others.
Chasing after something impossible can waste a lot of resources, and the futility of it can be frustrating. People tend to put an undue amount of pressure on themselves, feel negatively about themselves when they prove incapable of attaining such a high standard, and react negatively to mistakes and criticism, or even hide or deny problems rather than own up to them, which is exactly the wrong way to respond to these learning opportunities.
Subjectivity and Contingency
Second, what is perfect? People have different needs, different opinions. Needs change as the times change. What is ideal for one situation is likely not ideal in another. There’s no such thing as a one size fits all solution that is a perfect fit for everyone. So perfect then means something more like highly customized, bespoke solutions.
But the amount of resources that are required to create such customized solutions for everyone are often better allocated toward more general solutions that are a better fit for the needs of larger groups of people. Imagine an auto maker taking your exact body measurements, and then using those to build a car with a seat that fits you — and only you — exactly perfectly, and where the dashboard and mirrors are likewise laid out in a perfect way so that you can see all the gauges and reach all the controls without straining.
But this would make a car that is many times more expensive to design and build, is much more expensive to maintain and support, and which has limited resale value. It’s much more cost effective and beneficial instead to design a car with adjustable seats, that can fit 99% of people, is cheaper to design, manufacture, and support, and can be sold to anyone, not just people who are close enough in size to you that they can use your bespoke seat.
And even then, a car that is good for commuting isn’t going to be the best for cargo hauling. Or have the best possible fuel efficiency. Or be good off-road. Or have the safest crash rating. The perfect car contingent upon the usual need will score high in several of these important categories, but different users will value categories according to their own criteria, and may have a variety of use cases that they need to cover with a single vehicle, that cannot possibly be perfect for every need and every situation.
The foil of Trade-Offs
As is apparent in the car example above, most things are complex enough that there are always going to be trade-offs. For example, a structure may need to be strong, but often weight is another important factor, and making something both strong and lightweight is a challenge because increasing one tends to diminish the other. Thus, a perfect thing in all aspects is not possible, but perhaps we replace the idea of a thing that is ideal in all categories with the idea of a thing that is a perfect balance of tradeoffs among the categories. But this sort of perfection is a lot more dependent upon subjective and contingent parameters. A set of compromises isn’t the usual concept of what perfection means.
The more you want to improve something, the more effort needs to be put into improving it. At some point, the amount of improvement that you gain for the amount of effort that you put into the improvement will start to decrease. At some point short of perfection, the value of the improvement isn’t worth the effort.
For example, I could study for 2 hours and get an A on a test. I could study an additional 4 hours, and boost my A to an A+. Perhaps by studying 8 hours, I could score 100% on the test. Is it worth it? Or would that 6 hours be better spent getting an A on three other tests?
Can you hear the difference between a $500 stereo and a $5000 stereo? And if so, is it worth spending 10x as much to get that difference? Is a $200 CPU good enough, or do you really need the $1000 CPU that delivers merely 2x the performance? Sometimes it might be. But the situations where extreme high performance is required are comparatively few.
Perfecting a local maximum
Perfecting a thing requires focusing on the thing. But what if the thing isn’t the important thing, and the thing is merely a means to an end? Say you want the best bicycle. So you spent all your time working on making bicycles better, better, and better still. So now you have a bicycle that’s nearly perfect. In the early days of pedal-power, the design of bicycles was much different.
A design known as the velocipede featured a large front wheel driven directly by pedals, and a tiny trailing wheel for balance. This design was popular for a time, and in the quest for ever greater mechanical advantage for producing higher top speeds, the front wheel diameter was increased. This gave rise to diminishing returns, and negative tradeoffs in balance and safety.
Prior to the invention of the modern bicycle, velocipede design had evolved to a point where it could go no further. Wheel size was so large that any larger would be impractical or impossible. This was a local maximum for the design, the zenith of a particular design concept, but still better designs were possible.
Eventually the design died out when an inventor hit upon a better design, the modern bicycle, which featured two wheels of identical size and a chain driven gearing system that allowed higher gearing ratios than were possible in the now-obsolete direct drive velocipede designs.
Missing the next-gen paradigm shift
But what if your goal isn’t really to ride bikes exactly, and you simply want to go from point A to point B quickly? There might be other vehicles that are better, but if all you can think of is a better bicycle, the idea to invent them may never occur to you. Famously, bicycle mechanics Wilbur and Orville Wright pioneered the airplane. If they’d been focused exclusively on perfecting the design of the bicycle, they never would have come up with their flying machines.
And paradigm shifts continued to happen with flight, from bi-planes to monoplanes, from propeller driven airplanes to jets. At each stage, what worked for the current generation could only be taken so far, and to make the leap to the next generation required a re-thinking and a discarding of older concepts in order for even better concepts to flourish. The old continued to serve while the new was developed, but eventually once the new concept was proven a success, the old fell out of favor. And yet, at no stage was anything truly “perfect.”
The relentless pursuit of improvement
This is not to say that we shouldn’t make things as good as you can. But whatever we do, is always done within the scope of certain constraints. Being aware of those constraints, we should make intelligent choices in order to maximize value, without being trapped by an idea of a perfect thing.
PNG_2_room is a simple, easy to modify demo for how to populate a room with instances according to a color coded image file.
Each pixel in the source image can be color coded to correspond to an object or tile in your game. Use the script room_instance_add_from_png() to populate a room with instances using the image as a key.
For example, this PNG image:
…was used to generate this room:
You can modify the script to use whatever colors you wish to represent whatever objects or tiles in your project.
With this script, instead of using the built-in room editor, now you can use any image editor to create maps for your game more quickly!
You can even allow players of your games to create their own custom maps for your game, using whatever image editor they choose as a resource editor for your game!
A simple demo included in the asset shows how to use the script.