Category: GameDev

I never liked Donkey Kong

There. I said it.

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 feel like I am about to regret one quarter just looking at this screen capture.

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.

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.

For sake of brevity, I’ll focus on the first screen.

How high can you climb?

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

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.

Ladders

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.

Some of the ladders are broken, turning the ladder into a deadly dead-end. You can climb up them, but only get part-way. At the top, barrels rolling by below you will still hit you and kill you, even though you’re 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. 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, and it would make the game feel a little more fair.

Hammer

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 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.

Since the levels are timed, and running out of time will kill you, getting the hammer can screw you if you grab it while the timer is running low. 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 it worthwhile. It would be better if you could cancel the hammer early. 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 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 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, but still let him take hits from above and the rear.

Barrels/fireballs

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”.

Why did Donkey Kong succeed?

In 1981, videogames were still quite new and very popular, 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 black and white era that gave way to the mega-popular blockbusters of the start of the 80’s, like Berzerk, Defender, Pac Man, and Moon Patrol. But 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, though, Ms. Pac Man or Zookeeper is a far better play.

Legend of Zelda: Breath of the Wild Diaries (1)

I bought a Nintendo Switch last spring, two years after launch, when Super Mario Maker 2 was announced, and I bought my obligatory copy of Legend of Zelda: Breath of the Wild on the same day.  And then didn’t play it until a global pandemic swept through the country and forced everyone into becoming homebodies.

I guess that’s weird, right? You should see my backlog of Steam games I have purchased but never played.

So, I’ve read reviews and know a bit about the game ahead of playing it, but I’m trying to experience this game as much as I can by figuring it out on my own, and not going to walkthrough sites and reading how to win the game. I think this is the best way to enjoy the game, because it seems like the designers meant for it to be a journey of discovery, and I want to experience it that way, and not as a list of tasks that I need to complete in order to say I’ve experienced the game.

So far, I’m liking the game. I think my response to the experience of playing BOTW is more interesting and nuanced than gushing fanboy praise. Zelda games are Top Shelf, and typically get high 90% reviews. And while they’re clearly lavish, and intended to be special, I think I’m enjoying being critical of it as well, perhaps more than I would enjoy the game if I felt nothing but awestruck by the whole thing.

I’m playing it handheld, and I wonder if maybe the small screen contributes to my feeling this way. There’s no denying the graphics are beautiful, but maybe they’d be much more impressive on a 40+” screen rather than on a 7″ or however big the Switch’s screen is.

At any rate, I started posting my progress and impressions on Facebook, and as I’ve gotten into it more, I think it’s more fun to post this sort of thing on the website too.

I haven’t done something like this before, but I think what I’ll do is continue posting to Facebook, journaling my progress in the game, and then re-publish them, cleaned up, here, later. The Facebook posts aren’t public, but these articles are. They’ll be published on a delay, so commenters won’t be able to spoil the experience for me. Hopefully this will be interesting and worthwhile for people to read along.

I get that these days the hip thing to do is stream and talk, and that’s where the monetization is (or was, for a while), but I’m a bit more old school than that, so it’ll be text, and occasionally images. Assuming I can remember to take screen caps, and then post them. While pictures are great, I’m not really here to sell the game, but to talk to my experience of it and my reflections on those experiences. And I’m not sure that images are all that necessary for this. If you’ve played the game, you know what I’m talking about.

And it’s been out almost 3 year snow, so if you haven’t, well, you should have already. What’s wrong with you?

Oh, and it goes without saying, I’m not worried about posting spoilers. The game’s been out.

Open World Arcade Post-game report

This past Saturday, Dec 7, I had the joy of exhibiting my game, Ancient Technologies, at the Akron Art Museum’s Open World Arcade. It was an honor to have my game selected by the committee for inclusion in the event.

I made Ancient Technologies in 2016 for Ludum Dare 36, already quite a while ago. In preparation for the event, I wanted to make a few improvements and add features I’d wanted to include in the game, but hadn’t had time for due to the time constraints of the game jam weekend.

As a result, behind the scenes, I did battle with a few “ancient technologies” of my own.

At the Open World Arcade on Dec 7, 2019, Chris Sanyk showed his game, Ancient Technologies.  A young gamer tries it out.
Chris Sanyk at the Open World Arcade at Akron Art Museum, 12/7/2019

Plenty of time to get ready

About a month prior to the event, I had to decide how to bring my game to the public. I didn’t want to use my daily driver laptop for this, as it is the machine I depend on for everything, and I just didn’t want to assume any additional risk with it being touched by anyone who I didn’t know. But I have an old AMD Phenom II PC that I built around 10 years ago, which had sufficient specs to play the game, so I decided I would bring that.

I don’t run this box a whole lot, so the very first thing I needed to do was get it updated. I had wiped it some time ago, and reinstalled Windows Professional 7.1 x64, Google Chrome, a few other minor apps, and then hadn’t used it for much since then. So when I powered it on, the first thing I wanted to do was run Windows Update. WU detected about 150 updates that needed to be downloaded and installed, which took quite some time to complete, and I expected that it would take an hour or so, but it ended up taking far longer than it should have. My PC ran updates overnight, and I woke up the next day to find that it had failed to apply updates.

I then had to spend a few days researching the failure, and trying various things to get the system to update. Eventually, I found a Microsoft tool that fixes Windows Update when it breaks in the way mine was broken, and was able to install updates. Well, almost all of them. There’s still one update that just will not install, no matter what I do. Oh well. Typical Microsoft garbage.

I didn’t need to have the PC connected to the internet for the event, so I wasn’t that worried about not having it 100% updated, but I always like to run systems that are updated and maintained.

Once the hardware was updated, I turned my attention to the game. There were a number of features that I had to drop from the original Ancient Technologies, so I took the opportunity to work on adding these.

The most important to me were the UFOs and the player’s special ability (hyperspace, shields, or flip) that in the Atari 2600 version of Asteroids that I was re-creating inside of Ancient Technologies, is activated by pressing Down on the joystick. Fortunately, getting these implemented wasn’t terribly difficult, and I found it enjoyable to add these things in and get to see the fully realized vision of what I had wanted this game to be. It took me only about four evenings to do it, and it mostly went smoothly.

And, actually, adding these features wasn’t what took most of my time, it was fixing numerous minor bugs that I kept finding in the game as I tested it, and I tested the game extensively. None of these bugs were game breaking, and probably wouldn’t have been noticed by players in a short session, but, being a perfectionist, if I know it’s there, if I can fix it, it needs to be fixed. Numerous minute details, like logical conditions that should prevented certain sound effects from being heard, such as the TV being turned off, or the game console being unplugged or the cartridge being removed from the slot, needed to be checked and tested and fixed.

I figured out a simpler way to do this: create an audio group for all the sound effects that play through the in-game TV, and then set the gain to 0 when the TV is off.

The last minute stuff

The day before Open World Arcade, I tested out my game one last time. This time, I did more extensive play testing with my gamepad. Mostly, I’d been testing the game with keyboard input, since it was more convenient. To my horror, I discovered that the D-pad on Xbox 360 gamepads is absolutely terrible. It wasn’t so noticeable before, but now that Down does something, I kept accidentally hyperspacing when I just wanted to turn. It was completely unacceptable. The engineers who fucked up the D-pad on the XBox 360 gamepad should be flayed and their families put to ruin. Seriously, you guys, how hard is it to include a bit of tech that’s been around since the mid-80s, and not make it total garbage?

Suddenly, on short notice I had to find a better controller, a wired gamepad that worked via Xinput, and that has a really good D-pad.

I researched and couldn’t find any reviews that I considered reliable enough for alternative wired XBox 360 controllers that have a D-pad that doesn’t suck. I did find a number of tutorials on how to do surgery on your controller to make it work better, but I wasn’t willing to take a risk on it so close to deadline. I’ll probably do it later, though.

I did end up finding a few controllers for Xbox One that had reviews for good D-pads. I wanted to pick up a Hori Fighting Commander, which looked like it would be ideal, as it lacks analog sticks, it therefore must have a good D-pad. But I couldn’t find a physical store to buy one at within 100 miles, and I couldn’t order one to be delivered and have any hope of getting it in time. This was super frustrating.

I ended up picking up a PowerA Enhanced Wired gamepad for Xbox One.

Then I found that because Microsoft is a horrible company, they couldn’t be bothered to ensure that Xbox One controller drivers were available and easy to install for Windows 7, and had to spend several hours trying to find a method to install drivers so that my PC would recognize the damn thing. I still don’t have it working on my laptop, but fortunately, for whatever reason, I found a driver that will install and work on the PC I intended to use for the Arcade. Why the exact same driver won’t install on my laptop, I have no friggin’ clue. Goddammit, Microsoft, why? Why do you have to be so abysmal when it comes to supporting your own shit?

One nice thing, though, the D-pad on the PowerA Enhanced Wired gamepad for Xbox One is better than the horrible D-pad on the otherwise pretty darn good Xbox 360 controller.

Another last minute idea that I had was that I thought it would be fun to put Ancient Technologies side-by-side with the original. I had the equipment, I only needed a small enough CRT TV set that I could easily transport it and set it up. I didn’t have one, but I put the word out and one of my friends had a small TV that I could borrow.

Game Day

Game day started out smoothly, until I realized during setup that I had forgotten to pack my PC’s speakers. My desktop system has a nice set of 5.1 speakers which were really more than was called for, and I knew I had a set of regular stereo speakers in a closet somewhere, meant to grab them, got distracted, and forgot. This necessitated a last minute run to a store where I could pick up a set. Fortunately, I had plenty of time before the opening of the Arcade to do this, and it ended up not being a huge deal, but I had to drop another $25 on that, which, after the $25 I had to spend on a gamepad yesterday, left me annoyed at myself.

When I came back from the store, I happened to check my phone, and saw in one of the Facebook communities that someone had posted a photo of their old living room gaming setup:

Posted to one of the gaming communities I follow on Facebook, just before my day at the Open World Arcade began: an old TV set with Atari 2600 system connected to it.  Suddenly I felt connected to millions of people who grew up with this experience.
This looks familiar…

Seeing this hit me emotionally, and it made me feel that the game I was about to exhibit belonged and had relevance and cultural resonance. So may people in my generation grew up in a house with a big wood cabinet color TV set, and hooked up their game systems to it.

The screen where Ancient Technologies takes place echoes a common experience shared by a generation of the first video gamers.
Ancient Technologies harkens to a shared past.

I also discovered, to my dismay, that the TV set that I borrowed wouldn’t work. I didn’t have time to test it prior to the event, but when I looked at it more closely, I discovered that the power button was gone. There was a hole where it used to be. A remote control was taped to the TV set, but when I tried it, it wouldn’t work, and then I noticed that the batteries inside had gone bad and corroded the contacts, so there would be no way to use the TV. Regretfully, I put the TV and the Atari back in my car, and they would not be a part of the show.

Turning my attention to the PC, I booted it, launched, and tested that everything was working as it should. Of course, it wasn’t. Why should it be? I had only tested extensively and fixed every visible problem that I could see for a week. But somehow or another, the “put down” sound effect that I had coded wasn’t working. When you unplug the cartridge, or the power cord, it’s supposed to play the sound, but it doesn’t for some reason. I had never noticed this previously to the day of the event. My first thought was, “OK, somehow or other, I accidentally added the “put down” sound effect into the group of sounds that play through the in-game TV set, which is off, and that must be why the sound isn’t playing.” Nope! When I turn the TV on, the sound still doesn’t play. And when I went back to review my code, the “put down” sound effect isn’t in the TV sounds audio group. What’s more, if you unplug the joystick it also plays the same sound, and that’s the one place where it’s still working properly. Looking at the code in that object vs. the others, it’s the same frickin code: when you click the mouse on the object, play the sound. It works there, but not in two other places that are identical. No clue why. Maybe it’s because the joystick stays in the same place, while the cartridge and power cable move, putting them away from the mouse cursor, which somehow retroactively fails the audio_play_sound() function, even though it’s in the same god damn code block as the code that moved the object? WTF, GameMaker? What the Fing F?

Ancient Technologies is coded in GMS 1.4, which is no longer supported. I suppose the next thing to do would be to import the project into GMS 2, compile it, and see if it behaves the same way. I had been enjoying picking up this old project and working on it again, but with weird shit like this breaking for no explainable reason, it really puts me off wanting to do anything serious with GameMaker.

This problem wasn’t a showstopper. Most people who played the game probably wouldn’t have noticed it at all, not knowing that there was supposed to be a sound played when there was none, or in a lot of cases not even doing the action that would have triggered the sound effect. But after looking into it and finding no fault in my code whatsoever, I’m more frustrated with GameMaker Studio than ever.

The Open World Arcade

The event itself was great. I sat in my chair all day, and people came up and gave Ancient Technologies a try. I tried to give each person the experience from the start of the game, rather than leave the Atari console hooked up and playing Asteroids already. Players were about 50%-50% on having owned an Atari or played one before. I had people of all ages try it out, from about 4 on the low end to a gentleman who looked to be in his 60s.

Most of them were uncomfortable with the controls at first, having forgotten the function of the Down direction, or never having known it. I observed that nearly all of them immediately went to the dual analog sticks on the gamepad, a conditioned reflex that explaining the controls to them would not undo. About half of the players opted to use the keyboard controls rather than the gamepad, and it occurred to me that I could just as well have not bothered providing the gamepad at all, and no one would have really missed it.

Almost everyone started out playing the Hyperspace variation, and everyone’s immediate reaction to starting the game was to rapidly touch every control on the gamepad to figure out what did what. In virtually every case, the first thing they did was blink out of existence, into hyperspace, and then re-appear, confused and often about to collide with an Asteroid, which would promptly kill them. I realized pretty quickly that Hyperspace was probably the worst ability to start players off with, and that Shields or Flip would have been a much better choice. I needed to explain to most players that there were several variations, and how to access them using the Game Select switch on the console by clicking it with the mouse.

Many players seemed to hesitate after losing a life, reaching for the mouse for some reason. I’m not sure what they were thinking in the moment, but perhaps they weren’t aware of how many lives they had remaining, and thought that they would need the mouse to restart the game. But most players didn’t play more than once, even though I told everyone they could play as many times as they liked. It occurred to me that using the gamepad’s start button would have been convenient, but this wasn’t really a design decision given that I was trying to replicate the experience of hooking up and using an Atari 2600, and the Game Reset switch is on the console, not on the controller. A few players left their game in-progress, but I didn’t let it bother me.

I had left a stack of flyers with information about the game, but if anyone took one, I’d be surprised. I don’t think anyone did, although a handful at least looked at it. I also left a notepad for players to leave feedback or a comment, and only one person did so. I’m not sure what to take away from that, to be honest. I didn’t push anyone to leave me feedback or take a flyer or one of the business cards that I had, unless they engaged me in conversation and seemed like they would like one, then I gently offered that they could take one if they wanted.

Most of the “feedback” I obtained was through silently observing players and noting common patterns in how they engaged and interacted with the game. This gave me a bunch of ideas of things that I wish I would have thought of to put in the game, but couldn’t have thought of without watching someone else experiencing the game. Any time I noticed anything that could have been added or changed to make the experience better, I took note of it. Much of this was help/tutorial text on screen. Although, I wanted to avoid that, since the first part of the game is figuring out how to hook up the Atari. But I think something, like a ? icon in the corner that appears after several seconds of nothing happening, could have possibly helped players get into the game. As it was, I found that I had to explain to most of the players how to set up the Atari, and I think that defeated much of the purpose of letting them figure out the “Mystery of the Ancients” for themselves. Another feature I would have liked to add was an idle timer that reset the game after a period of inactivity, so that it would always start the next player off with a fresh experience even if I forgot to reset the game after the last person.

In all, it was a great experience for me to show my little game to random people and see how they interacted with it. Thanks to the Akron Art Museum and their wonderful staff for organizing this event.

Superman (Atari 2600) alternate map Romhacks, part 4

I had one more idea for an interesting map. This time I wanted to emphasize the importance of the Bridge to the map. So I thought, I would split the map into two halves, and put the bridge between them, as the only way to get from one side of the map to the other.

This was my prototype:

The prototype was shaped like an H.

I thought that this map had interesting potential, but I also had some concerns. I wanted to make sure that the traffic flow would still work, and that by splitting the map in this way, I didn’t make it likely that random movement would tend to collect everybody in one area of the map, and I wanted the random distribution of characters to not be unevenly distributed between east and west ends of town. I also wanted to ensure that the subway system would be evenly distributed, both in terms of entrances and exits, and that the subway provided useful shortcuts.

As I walked through this map, I quickly decided that a less obvioulsy symmetric map would be more interesting. I re-arranged screens and quickly came up with this:

A masterpiece of design!

The connections between the screens are a bit different from my previous versions. Moving horizontally, the map wraps, shifting up a row if you’re at the west edge, and down if you’re at the east edge. Vertically, the columns wrap around without shifting. The Bridge screen is different, when moving vertically it wraps around back to itself. This serves to keep the Bridge screen isolated, so bridge pieces will be somewhat protected from the helicopter when placed here.

Finally, the extreme corners of the map, the northeast and southwest corner screens, are connected to each other horizontally, creating a second junction between the two halves of the map. This helps provide a route for Clark Kent to walk to the Daily Planet at the end of the game, without being forced to use the Subway system, although this overworld walking route is very long.

The subway exits are again unchanged, and the subways provide several routes for traversing from one side of the map to the other. I arranged the subway system so that each colored subway screen has two exits on the opposite side of the map, and one exit on the same side of the map.

Thus, despite the broken bridge in the center, this map has very nice traffic flow between both halves of the map, many interesting shortcuts, and a challenging layout to learn, without the confusing one-way vertical borders on the Phonebooth and Bridge screens that vexed many beginner players of the original. After playing this map a few times, I think it’s every bit as good as the original, and might even be more fun to play. And aesthetically, I love that the Bridge is now the centerpiece of the map, and truly joins the two halves of Metropolis together.

Here’s the map again, with the wrap routes indicated:

I don’t think there’s much more I can do with the map after this. So I think this is where I will leave the evolution of the map variations.

I would still like to introduce randomized bridge piece starting screens, but to figure that out will require more understanding of the source code than I currently have.

I also think it would be neat to make a super-rom that includes all of the map variations in one file, switchable via the Game Select switch. Again, this is beyond my current capabilities with my very limited understanding of the source code and 6502 asm.

You can download the entire collection of romhacks here:

Superman (Atari 2600) alternate map Romhacks, part 3

After publishing part 2 of this series, I played my grid map romhack a few times, and I think it’s rather good. I don’t know that I would say that I prefer it over the original map, but this is certainly a viable alternative map.

After a few playthroughs, I notice a few things:

  1. The helicopter moves bridge pieces away from the Bridge screen much more frequently. In the original, once you’ve placed a piece at the Bridge screen, the helicopter would only rarely remove it.
  2. The helicopter seems to move pieces from their starting screen much sooner, as well.

I like both of these differences; they make the game more challenging, and I think, more fun. You really feel like you need to race the helicopter to complete the bridge task. But I think it’s worth experimenting with the map to see if there’s a way to restore the original design intent, by reducing the number of paths into the Bridge screen. It occurs to me that an easy way to do this is to make the two screens above and below the Bridge screen connect to each other, rather than to the Bridge screen. So the Bridge will exit vertically to those screens, but reversing course will skip over the Bridge, but still place you near the Bridge; players would need to figure out that they are “around the corner” from the Bridge in this map, which is potentially disorienting, but should be less of a problem than the original map, which puts you clear across into the middle of the other end of the city.

I do think that this map has a few peculiarities that make it sub-optimal.

  1. Some of the subway entrances are right next to their exits. There’s little point in a subway trip that results in you re-emerging on the overworld map one screen over from where you started. For example, the Red subway entrance is one screen away from two of its exits, due to being on the top left corner of the grid, and the wrapping effect. The Blue and Yellow subway entrances are about optimally located relative to their exit screens, and the Green subway entrance is directly above one of its exit screens.

It’s possible to remedy this by moving the subway entrances around, or by changing their exits to more useful screens for this map layout. I was reluctant to try this, because I wanted to keep the changes that I am making to the maps minimal, but it seems that these changes are necessary for the good of the game.

Metropolis 21/7

Another thing that strikes me is that I didn’t need to remove one screen from the overworld in order to have even rows. 21 = 3 x 7, so I could have made an overworld map of 3 rows of 7 screens. This might make the subways more useful, since it would make it easier to place the subway exits such that they are 3-4 screens from their entrances.

A 7×3 grid will allow all 21 overworld screens to be included in the new map. Again, I went to an image editor and re-arranged the screens to make a layout, then visually reviewed and analyzed the map for playabiltiy concerns, and made tweaks.

My first iteration of this was to lay the screens out in the original map’s horizontal sequence, and see how that would play. That map looks like this:

First iteration

Without actually playing it, it’s easy to miss things, but I can see that this map has a few potential issues:

  1. The bridge pieces starting screens are all on the west end of the map, and are nearby the Bridge screen.
  2. The Phonebooth, Bridge, and Jail are all on the bottom row, which makes the bottom row feel too important, and the top row feel unimportant.
  3. The “critical path” relationships in the original map are broken in this map. This may not be a problem per se, but it will make the new map feel less familiar to experienced players.
Superman bridge piece routes
The original Metropolis map has a very tight spatial relationship between the most important screens on the map. The new map layout breaks this by moving the Jail screen far away from the rest of the screens.

Otherwise, I think the map looks pretty decent. I’m not sure how I feel about the potential issues I mention above.

I do think that the Bridge should be the center piece of the map, so I shifted rows and columns in order to make it so, but the rooms are still in the original order, using the horizontal progression from the original map.

It’s interesting how shifting things around can change perspectives on things. With this view, I’m able to notice different things:

  1. Now all the “important” screens (Jail, Bridge, Phonebooth, Daily Planet, and all but one of the bridge pieces) are on the west end of town.
  2. But balancing that, all the subway entrances are on the East end of town.
  3. Subway exits are somewhat evenly distributed, but there’s a few interesting things to point out: The Red subway exits all line up in a column at the far west edge of the map, while the Yellow subway exits are all distributed across the top row. The Green subway exits follow a diagonal from the northwest corner of the map, moving southeast. And the Blue subway exits are scattered about as far from each other as they could be.
  4. Shifting the screens changes the loopback point at the top right, and as a result the screen that normally is to the left of the Phonebooth screen no longer is. Which, despite what I thought when I first decided to shift the screens to put the bridge in the center of the map, does fundamentally change the map. Then I realize… I did it wrong!

I can’t just grab the top row and move it to the bottom, and then slice the right couple of columns and move it to the left. That will not preserve the horizontal order of the screens. To do that, I need to grab the top-right screen, move it to the bottom left, and then let all the other screens shift right by one, snaking around. This approach gives this result:

Overall, it’s actually very similar to the first two iterations. It’s literally the same horizontal sequence as the first iteration, but it’s not all that different from the second iteration, either; the “important” screens are still mostly to the west, the subway entrances are still mostly to the east. I think the subway exits are a bit better distributed than in iteration 2.

The vertical path is quite different. I think this map will run slower, due to the placement of the Jail in the corner of the map, and its distance from most of the subway entrances, and the Phonebooth/Bridge screens. There might yet be some quick paths that will become apparent through repeated play, but for now I feel that the map feels disorienting because the Jail isn’t north of the Yellow subway entrance screen any longer, and I struggle to locate it as a result.

Certainly there are many other possible arrangements for the overworld map, and I haven’t even begun to re-design the subway. But I think this is enough to satisfy my curiosity, at least for the time being. I may come back and revisit this further if I feel a need to after playing the maps I already created more extensively.

There’s much more to do in a hack of Superman, as well. I would like to figure out how to randomize the starting places of the bridge pieces, for example. I would also be interested in figuring out how to put up a hard barrier around the outer edge of the map, rather than having the map wrap around at the edges. But these projects, if I ever attempt them, will have to wait until I have a deeper understanding of 6502 assembly.

Download all of my Superman map romhacks here:

Superman (Atari 2600) alternate map Romhacks, part 2

For the second alternative map, I needed to carefully re-organize the screens to put them into a grid.

There are 21 overworld screens, and so I will use a 5×4 grid, omitting one of the overworld screens, since there can be only 20 screens in a 5×4 grid.

Selecting the right screen to omit is important. The removed screen must not be:

  • A subway entrance
  • A subway exit
  • The phonebooth, bridge, or jail screen
  • A bridge piece start screen

One of my goals with this redesign is to keep the layout of the screens reasonably familiar to players of the original game. This is a formidable task, and technically impossible since I am changing the layout, but my goal is to make the changes minimal, and to preserve as much of the critical paths through the map as possible.

But just as important, I want the redesigned map to be balanced and fun to play.

To achieve this, I want the subway entrances and exits to be distributed about the map, and not clustered together too much.

There are 11 unique subway exits, and 5 subway entrances (counting the Daily Planet), so 16 of these screens have something to do with the subway system, and another three are the Jail, the Daily Planet, the Phonebooth, and the Bridge screen. (Both the Daily Planet and the Jail are also subway exit screens, so are already counted among the 16 overworld screens that are related to the subway system, but adding the Phonebooth and Bridge brings the total of “must keep” screens to 18, leaving just 3 redundant screens for possible removal.) I didn’t realize how tight the map design is until I noticed this.

After considering the matter for a bit, I decided that this screen would be the one to go:

But I just as well I could have picked this one:

Or this one:


I mean, they’re all kindof the same, aren’t they?

I note that the three “dispensable” screens all have a similar color scheme to them, green and white, and wonder if there’s something being communicated through a visual language here, or if it’s just a coincidence… there are two other green/light grey screens, the Yellow Subway entrance, and the screen above the Jail, which is one of the bridge piece starting rooms. So… probably just a coincidence, then.

At the edges of the overworld grid, the map will wrap around to the next row or column. As an experiment, I think I’ll also create a variation where the map will wrap around to the same row or column, but I think this variation will only be playable on Easy difficulty — because, when Superman is struck by kryptonite, he will be stuck in the current row of the overworld map, and if Lois Lane isn’t present on that row, he’ll be unable to get revived until she wanders in, or the helicopter brings her, which could take ages, and would be unfair.

I take a picture of the overworld, cut out each room, and put it into an image editor and move them around until I have them arranged in a 4×5 grid that I think will be satisfactory. I end up needing to move things around a good bit to achieve this, but I think I managed to do it while still preserving some of the critical relationships between certain rooms.

Here’s what I ended up with:

Grid map for the Superman romhack
I think this might be OK. And might make a cool quilting project, too!

Here’s the original map for comparison:

So you can see, there’s a bit of re-shuffling that I had to do in order to balance the map out, and many of the vertical and horizontal connections are different in the new map.

The major changes are:

  1. The one-way vertical boundaries for the Phone Booth and Bridge screens are two-way.
  2. One screen is removed from the overworld, to allow for an even grid.
  3. The Phonebooth and Bridge screens are in the center of the map. (Although, since the edges of the map still wrap, center/edge is all relative.)

The important non-changes are:

  1. The subway system exits are all to the same screens as before. (But, due to the shuffling of these screens relative to one another on the overworld, this does still mean there’s some significant differences. The key exits to get to the Daily Planet and Jail screens are the same as in the original, though. And several of the subway exits now get you close to the Bridge screen.)
  2. The bridge pieces are still found on the same screens as they were in the original. I didn’t try to re-locate them. (Sometime, I’d like to introduce randomization into their starting positions, and see how that plays.)

Now that I had the design determined, I had to hack the rom to make the changes for real. To do this, I went through the original code and noted the names of each screen, and figured out from the boundary change code the correct addresses for each room, and mapped them together. This was straightforward, if a bit tedious, but fortunately the map is small.

One thing I noticed as I coded the new map connections was that there’s a peculiarity at the top-right and bottom-left corners of the map, due to the way the rows and columns wrap; if you’re in the top-right screen, going up or right will both take you to the bottom-left screen; and if you’re in the bottom-left screen, going down or left will take you to the top-right screen. This doesn’t make sense, unless you understand the way the overworld wraps. If you get to the end of a row or column, continuing in that direction wraps you around to the next row or column, and at the very end of all the rows and columns, it wraps you around to the opposite corner, and so the top-right and bottom-left screens are connected to each other in two directions.

I have only played through this map once, and mostly just to test that everything was connected properly. I think it’s a viable, and interesting variation, but I wouldn’t call it better than the original. Certainly, due to the re-positioning of the screens, the quick path to the bridge pieces isn’t as short as in the original map, which means speed running potential for this map is reduced. Beyond that, the Phonebooth and Bridge screens are not low-traffic screens any more, meaning that you’ll often find gangsters on these screens, and the helicopter may find bridge pieces that you’ve left at the Bridge site more readily, which will again make it more challenging as the helicopter removes them again.

You can download the entire collection of romhacks here:

Superman (Atari 2600) alternate map Romhacks

So for the first alternative map, I will just make the Up screen the same as the Right screen, and the Down screen the same as the Left screen. This means that there will only be the Horizontal progression through the map, and that Up/Right will be “forward” and Down/Left will be “backward” through this progression.

You can download the modded rom below:

I playtested this, and found that it works exactly as intended. The map is far simpler to navigate, and getting lost is now virtually impossible. Fly up/right to go forward, down/left to go backward, and all overworld screens appear in order. The confusing one-way vertical borders on the Phonebooth and Bridge screens are eliminated.

The downside of this is that traversing the overworld map is slower, since there are no shortcuts to be gained by using cornering techniques. You still can rapidly advance two screens in the horizontal map sequence by going diagonal from near the corner, transitioning on both the vertical and horizontal edge transitions. But compared to the original, where a vertical transition would typically advance you between three and five screens in the horizontal sequence, it’s much slower, and offers no real opportunities for useful shortcuts.

The only real shortcuts possible are via the subway system, which I left unmodified. Despite playing this game over nearly four decades, I’ve never bothered to memorize the subway in its entirety — there’s little reason to. The only exits of real importance are the ones that go to the Jail and Daily Planet. But with this map, knowing the rest of the exits is potentially more valuable, because it can get you to the other side of the overworld in less time than any other method. It may be interesting to study the exits and try to figure out alternate layouts that might make the map more interesting by providing additional useful shortcuts.

I can reliably win Superman typically in 1:30, +/- 15 seconds, but this variant took me 3:04 to win on my first play. I’m sure faster times are possible. The gangsters seemed to be bunched up more, and rounding them up preoccupied me at first, leading to the helicopter moving bridge pieces away, which I think happened earlier than normal. But because the map is essentially a two-dimensional line, finding the helicopter was trivial, making any challenge increase by the bridge pieces moving around quite minimal.

My impression is that this alternative map might have made the game more playable for very young players, ages 3-5, and as an “easy” version for beginning players, much like Superman‘s sibling Adventure offered players Game 1 with a simplified map. But overall, the simpler map makes the game less interesting and less challenging to play. But if you’re interested in the game’s design, playing this variant to see why it’s less interesting is… well, an interesting exercise. I invite you to download it and play it for yourself and make up your own mind. If you do, please drop a comment and let me know what you think.

My next Superman romhack will present the overworld map as a grid.

Open World: Video Games and Contemporary Art

Open World opened last Saturday, October 19th at the Akron Art Museum. I attended the opening, and was very impressed with the exhibit. It is a large installation, covering three of the museum’s galleries. The works included cover a wide range of media, from ball point pen drawings to video to prints to sculpture to textiles to interactive media and virtual reality.

Experiencing Cory Arcangel’s I shot Andy Warhol, which is a romhack of Hogan’s Alley for the NES, for art’s sake. And yes, I got the high score.

It’s exciting to see the art world acknowledge the importance and influence of videogames on fine art.

It’s been about 15 years since famed film critic Roger Ebert famously proclaimed that videogames were not art, and could never be. He was wrong about that in so many ways, although to be fair to his argument, we should seek to understand what he meant by that. The word “art” has multiple definitions, and this is a confusing and contentious point, which can trip up many conversations before they even begin as people talk past one another without realizing it. Untangling that mess requires more words than I have time to type here.

But if I can bottom line it, Ebert was wrong, but he had a few good points.

Art is a very broad word, and to think it couldn’t include videogames is simply short-sighted and more than a bit bigoted. To make a pronouncement that games can never be art is arrogant. And of course games are art. Game design is an art, games are comprised of program code, graphics, and audio, and all of these require an artist’s touch in order to come alive.

But no, not every game is a work of high art. Just as not every book or film is art. Not every statue or painting is art. And sure, most video games are thought of primarily as commercial kitch intended for mass entertainment. But sure, a video game can be an object d’art. Why not? There’s an entire genre of videogames called “art games“, which are intended to be experienced as art.

But… wtf is art? Which definition are we using each time we say the word?

Well, that’s an important question, but never mind that. My goal isn’t to write a book about the definition of art, and argue that videogames are, or can be, art. We could spend time exploring that, and it’s not like that wouldn’t be worthwhile. But that’s not my point in writing this post; my point is to talk about the Open World exhibit at the Akron Art Museum, and how you should go see it.

Krista Hoefle

Why not simply go into the world and look at some art, and see if any of it is a videogame? And why not explore the world and find examples of art that show a clear influence from videogames, a clear sign that videogames are culture, that video games are a force that shapes and influences humanity, and has been, for decades, from very nearly the very beginning of the history of computing machines.

It turns out this is a rewarding endeavor. As much as it’s important to think about what art is and isn’t, its much better to experience art, and engage with it.

The exhibit does this very well, I think, by taking a broad survey of different approaches different artists have taken, and the different ways that video games have influenced them in the creation of art.

One of the artworks in the show is a video game: Cory Arcangel’s I shot Andy Warhol, a romhack of Hogan’s Alley for the NES, which simply substitutes images of Andy Warhol, the Pope, Colonel Harlan Sanders, the founder of KFC, and Public Enemy hype man Flava Flav for the usual graphics, to make a statement of some sort, about the historical fact that Andy Warhol was actually shot in real life. What that statement is exactly, I’m not entirely sure. But there it is, a playable video game, presented as art, in an honest-to-god Art Museum. Suck on that, Ebert.

Feng Mengbo‘s Long March: Restart, is another playable videogame, and incorporates numerous sprites from 8- and 16-bit run-and-gun games such as Contra, is another game, but was not playable on the opening day due to technical difficulties.

A lot of artwork that people might think of when they hear “art influenced by video games” would fall under the category of “fan art” — simply, works created by fans, done in homage to a favorite game, or character from a game, or to create feelings of nostalgia. This isn’t really what Open World is going after. The artwork doesn’t serve to celebrate commercial products. But there are a few pieces that might come close, such as the Colossal Cave Adventure quilt made by Krista Hoefle, one of my favorite pieces in the exhibit, or Butt Johnson‘s brilliantly executed ballpoint pen drawings, which simultaneously reference both 80’s video game culture and the Italian renaissance.

Butt Johnson
Butt Johnson

But most of the works in the show are not games. Some are digital works, such as Tabor Robak’s 20XX, or Angela Washko’s “gaming intervention”, The Council on Gender Sensitivity and Behavioral Awareness in World of Warcraft. Washko’s investigation of Warcraft players’ attitudes on feminism tends to be buried in the visual chaos of WOW’s cluttered UI and fantastical character avatars, but it is nevertheless interesting for its chat content and the social dynamics she frames and puts on display in the context of a popular fantasy MMORPG.

Many of the works in the exhibit reference games in some way, or excerpt from them. Others borrow cues from the new aesthetic of video game graphics in creating artistic compositions, such as Invader’s pixel art created out of Rubik’s Cubes, or Mathew Zefeldt’s life-size barrel and door from Duke Nukem 3D.

Barrel and Door by Mathew Zefeldt

Still others use games as raw material, taking elements out of them, repurposing or recontextualizing them, turning them into art. Still others use a game to stage a sort of theatrical performance, sometimes called machinima. These often are done for social commentary, as with Joseph DeLappe’s Elegy: GTA USA Gun Homicides, which is especially powerful in its depiction of gun violence through a modded version of Grand Theft Auto 5.

The above only covers about half of the total show, so to see the rest of it, you’ll have to go in person. Open World is up from October 19, 2019 – February 2, 2020, and after that will be travelling to Currier Museum of Art March 21 – June 28, 2020 and San José Museum of Art September 10, 2020 – January 10, 2021.

Zac Pierce is destined for greatness

I’ve known Zac Pierce casually for a few years now, and I gotta say, I really like the guy. I can’t say we’re friends, because we don’t hang out and do things together, and I don’t really know him all that well. But I do have an impression of him that’s been forming over the past several years since I met him, and it’s been consistent and continually reinforced every step of the way.

We first met at a meetup of the Cleveland Game Developers, and I remember him demoing an early version of his game Bombfest, now released. Even several years ahead of its eventual release, the game was really fun, and showed a ton of promise. The animation and motion were smooth and felt very, very good. The gameplay was a lot of fun, and the graphics were splendid and cute.

The game was like playing with action figures and toys that had come to life and had the ability to hurl bombs at one another. It was something like Bomberman meets Dodgeball, with realistic physics, destructible terrain, and these sweet little digital models of toy building blocks and figurines, the sort you might have played with when you were maybe 4 or 5 years old. The goal to be the last man made it an outstanding multiplayer game, and I could tell that this game would be great at parties.

Zac delivered a talk at GDEX 2019 entitled Failing to Succeed, which was a look back at four years of developing Bombfest, which he had come to regard a failure.

I’ve never enjoyed a talk so well that I disagreed with so much. Zac is a great storyteller, and he shared his story, turning it into a masochistic confessional where he beat himself up for all the things that went wrong over the course of four years that he spent pouring his heart and soul into bringing Bombfest into the world. It was entertaining, funny, and full of valuable insights. But damn if it wasn’t hard to watch a young guy who I’ve come to admire shit-talk his accomplishments so thoroughly, just because the sales performance was underwhelming.

For certain, Zac didn’t do everything perfectly. And if a few things had been different, maybe he’d have been rewarded for his hard work more like what he deserved. But I don’t think of his story as one of failure. The Making of Bombfest story had far more success in it than failure, and far more than he gave himself credit for.

Bottom line, the game didn’t end up the hit that it deserved to be, and didn’t make him all the money he hoped it would, or needed it to. And bottom line realities are important, and they are harsh. But, despite commercial success eluding him so far, Bombfest was and is a great game, and the fact is that Zac Pierce is destined for greatness.

He’s questioning it right now, and it’s only natural, when you work as hard as he did at something for as long as he did, and it doesn’t accomplish what you hoped it would, of course you question it.

But I’m certain. While I listened to Zac tear himself down for 45 minutes, I heard him rattle off success after success, and immediately dismiss each one.

  1. He succeeded at educating and training himself in the skills and tools of game creation.
  2. He succeeded at coming up with a really fun game prototype with excellent core mechanics and a very polished visual style.
  3. He succeeded at raising funds to continue development through Kickstarter.
  4. He succeeded at completing the project and released the game.
  5. He made a lot of mistakes along the way… and he learned from all of them.
  6. He succeeded not in just releasing the game, but getting it published and ported to the Nintendo Switch.
  7. He did all of this during a period the industry has come to call Indiepocalypse, when even established independent game development studios struggled and went out of business and even bigger studios had a hard time staying afloat. And he did it with his first real project.

Zac Pierce put a game on the Nintendo Switch in his first at bat. Who else can say that, but Zac Fucking Pierce?

Zac, each morning when you wake up, you ought to go to the bathroom, splash some cold water on your face, look at yourself in the mirror, and loudly proclaim:

“I’m Zac Fucking Pierce, and God DAMN if I didn’t make one HELL of a videogame.”

Daily affirmation

The bad news, sales were disappointing.

OK, so there’s that. So despite all the litany of success, that makes Bombfest a failure? I don’t think so.

The sales didn’t meet expectations. But the game is good. Of course sales do matter. You can’t put your life into something for four years and not have it pay off, and feel great about it.

But that’s a shame, because there’s so much about the Bombfest story that Zac deserves to feel great about.

Whether he finds success and fortune in game development or in some other area, he has a bright future, thanks to his talents as a programmer, designer, and artist, his vision, and his energy.

The fact is, the biz is brutal. Indies have it harder than anyone. And there’s a glut of product. You can do everything, or nearly everything, right, and still not end up with a hit game. For his first time out, Zac Pierce did way better with his project than a lot of people do. Maybe he didn’t succeed at the biz side of bringing Bombfest to market, but he absolutely nailed the design and development of the game, and demonstrated dedication to a project that went on for four years.

Bombfest has made Zac about $30,000 so far. It needed to be more. $60,000… $100,000… $300,000… what level of revenue would be enough to tell you that you’ve made it? Enough to be on par with an entry level salary in some “real world” job that you could have taken instead of choosing to challenge yourself? Enough to put you on firm footing to produce your next project the way you want it to be without having to worry about whether it’s a hit or not? Enough to never need to work again unless you want to?

Really, people have strange ideas of what success is, what it means, and what looks like. We think of success as someone standing in a spotlight in a packed arena playing a guitar solo and then going home to a mansion and swimming in money. We think of success as something that happens suddenly, overnight, with little apparent effort, because “when you’re good, it just comes naturally.” We think that way because we don’t see successful people being successful until their success has been at work for so long that it has made them famous enough for us to be unable to fail to notice them.

But success looks a lot different from the inside. What it looks like, most of the time, is a lot like Zac Pierce’s talk on Failing to Succeed: a long story, with hard work, struggle, mistakes, goals met, challenges overcome, and a continuing battle with crippling self doubt and anxiety.

There’s two ways to read that title, as Zac pointed out himself: One, “failing to succeed” meaning literally that success was something did not happen. The other, “failing [in order to] succeed” — the things one must do on the path to success, in order to figure it out and get there. It’s pretty clear that Zac’s story is true in both senses. But in the long run, the second meaning will eclipse the first.