Kickstarter shuts down indie game project Meifumado over copyright dispute

Meifumado was a goodlooking indie game with detailed 16-bit style pixel art and smooth animation that OldBit pitched on Kickstarter earlier this year. It reminded me of a hit indie game from a few years back, Shank, but with a samurai theme and setting.

Meifumado was a good looking indie game with detailed 16-bit style pixel art and smooth animation that OldBit pitched on Kickstarter earlier this year.

Today Kickstarter took down their project page temporarily pending resolution of a copyright dispute from one of the project’s contributors, who claims they have not been paid for the music they contributed, which was used in the trailer video.

Meifumado [Submitted by private individual]

Date: 2022-08-23T10:56:53.000+01:00

Sender

[Private]

Sent via online form

Recipient

Kickstarter, PBC

58 Kent Street

Brooklyn, NY 11222

USA

Re: Meifumado

Description of copyrighted material: The music in the trailer is created by me , but I havent received any payment and cant reached the creator and devs of the game. I dont know the developers personally and only had briefly contact during the creation of the trailer music.

Several backers are asking for an update, but receive no information, like me. This comes off as a scam.

Under the section “Team” I and my music are mentioned and linked too.

Bc of this situation I am asking to be removed from the text and campaign page and further more ask the kickstarter team to look into the situation.

I am very saddend and disappointed by all of this, esp. for everyone who supported this project. Everyone has been very patient, but I worry a bit that the frustration at some point might be redirected at me, as its seems I am the only “real” and reachable person.

Here is a personal link I gave Marco (german ks support) as proof. This is the trailer track and the soundcloud profile linked to. https://soundcloud.com/more-sound/marco-kickstarter/s-0qrEefYer5I

Thank you for your help and I hope this matter can be resolved. Best regards, Moritz

Description of infringing material: Trailer music as linked here : https://soundcloud.com/more-sound/marco-kickstarter/s-0qrEefYer5I

The use of me as a team member under “Team” and the link to my soundcplud page.

[Submitted by private individual]

Kickstarter

Backers have not heard from OldBit since the project achieved its funding goal — no updates from the project team in months. Meifumado’s twitter account has been silent since April 1 of this year. The project had a page on Steam, which also appears to have been set up and abandoned not long after.

It’s looking more and more like this project was a scam, or fell apart due to poor project management or bad business practices. Kickstarter is not returning funds to backers at this time, and likely will not do so per Kickstarter’s terms of service.

Some indie dev teams are made up of non-professionals, complete amateurs, and skilled kids who can collaborate despite lack of formal business structure, and based on the account given above by Moritz, and its lack of proofreading, it seems like that must have been the case with the Meifumado project.

It remains to be seen how this will resolve.

ZORK|DALL-E

I decided to play Zork through DALL-E on Twitter, and created a new account for it:

Follow along, if you like!

Artist’s Statement

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, my new game jam partner

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.

The original Mega Man box cover.

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.

Eef Freef!

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.

Asteroids

Dig Dug

Double Dragon

Elevator Action

Commando

Bionic Commando

Metal Gear

Mega Man

Castlevania

Legend of Zelda

Tetris

Contra

Metroid

Super Mario Bros.

Super Mario World

Ninja Gaiden

Gradius

Pac Man

Ms. Pac Man

Space Invaders

Frogger

Punch-Out!!

Disney’s DuckTales

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.

Atari to release SwordQuest AirWorld for 50th Anniversary Celebration

The company that calls itself Atari these days is releasing the fourth and final game in the SwordQuest series, as part of the brand’s 50th Anniversary Celebration. Atari was founded in 1972 by Nolan Bushnell, Al Alcorn, and Ted Dabny, making 2022 the 50th anniversary of the brand’s existence.

The SwordQuest series was an ambitious, ahead of its time, puzzle/quest game, intricately tied into a real-world contest to solve each game. The first three games in the series: EarthWorld, FireWorld, and WaterWorld were released, but the final game, AirWorld, was never developed and was canceled amid the 1983 video game crash.

Each game was packaged with a comic book which told the story and held hidden clues which the player would follow while playing the game to try to discover the secret. Players who solved the puzzle were entered into a contest where they could real jewel-encrusted gold prizes, worth $25,000 according to Atari: a scepter, a crown, and a cup. I think the plan for the fourth prize was a sword, but like the game you’d need to beat for a chance to win it, it was never made.

The games were very cryptic, and would have been suitable for older (teenage and up) gamers. As a 7 year old, I didn’t really understand what was going on in these games, but spent hours wandering around, trying to collect the objects from the rooms to figure out what they did, and what you were supposed to do in the game, but never really understood that the game required the comic books in order to solve the real puzzles and beat the game. You controlled a man who ran around a top-down “overworld” which consisted of mostly empty rooms with doorways to each of the cardinal directions. The only difference between the overworld rooms was their color, and sometimes items that were found there. Many of the rooms had a challenge that you had to overcome before you could enter. This challenge consisted of one of a selection of mini-games where you had to evade obstacles in order to pass from one side of the screen to the other. Typically if you fail the challenge, you get knocked back and have to start over, or you can give up and back out. EarthWorld, FireWorld, and WaterWorld had color schemes and graphical themes corresponding to their respective elements, as well as tie-ins with things like the Zodiac.

The mini-games were challenging enough, and were fun enough, when they weren’t infuriatingly unfair.

EarthWorld and FireWorld are very common, but WaterWorld is a rare cartridge. It was produced in limited numbers and I think it was only available by mail order or some kind of limited time special order offer. A friend had a copy, which I was fortunate to be able to play when I as a kid, and I never realized that it was so rare. As a result WaterWorld is an expensive collector’s item, although as a game it’s not really any better than the other two, which, apart from their contest allure to win real-world gold prizes, are not really great games by modern standards, barely worth replaying now.

Not much is known about AirWorld yet, but we can expect it will likely be similar in format as the first three, but perhaps more refined, than the other SwordQuest games. We do know that it will play on the 2600, and that it was not a re-discovered unreleased game, but was developed only recently. I’m actually curious to see what it’s like, and looking forward to playing it, just to be able to complete it. A re-issue of WaterWorld that I could buy at a reasonable price would be nice, but Atari’s re-releases of 2600 games have been priced at $100, which is about what a loose copy of WaterWorld is worth. There’s no word as yet on whether there will be a new contest with a big-ticket gold prize, but I’m not holding my breath.

When finally released, SwordQuest AirWorld will set a record for the longest time between initial announcement and release — about 40 years — beating Metroid: Dread (16 years) and Duke Nukem Forever (15 years) by over a decade. (Of the three Duke Nukem Forever was supposedly under continual development, and was never canceled, making it the longest continual game development project.)

DALL-E mini… legit or cheat?

DALL-E mini is a scaled down implementation of DALL-E, a neural net AI that can create novel images based on natural language instructions. I’ve been having fun trying it out.

I like pugs, so I have told DALL-E mini to make me a lot of pug pictures of various types. A lot of the results look at least halfway decent.

The twitter account @weirddalle posts a lot of “good” (amusing) DALL-E results. Most of which I think are safe to say are novel creations, not something you would expect to find many (if any) examples from a google image search (although, who knows, the internet is a really big, really weird space).

And then I asked DALL-E mini for “a great big pug” and the mystique unraveled for me. I could recognize a lot of familiar pug photos from Google’s image search results page. I tried to go to google to find them, but the current results it gives me are a bit different; I’d guess that the images in the screen cap of DALL-E, below, would have been the top hits for “pug” in Google Image search several years ago.

The four in the upper right corner look especially familiar to me, as though I’ve seen those four images in that arrangement many times before (as I believe I have from searching Google for images of pugs many times.) I feel very confident that I have seen images very close to all nine of them before. Of course now, in 2022, if I search google for images of pugs, I get different results. But I’ve been a frequent searcher of pug pictures for 20 years, and I’m pretty confident that perhaps 5 or 10 years ago, most of the above 9 images were first-page results in Google Images for “pug”.

So, this makes me wonder, is DALL-E merely a sophisticated plagiarist? Is it simply taking images from Google and running some filters on them? For a very generic, simple query, it seems like the answer might be “maybe.”

DALL-E’s source code is available on github, which should make answering this question somewhat easy for someone who has expertise in the programming language and in AI. But I probably don’t have much hope of understanding it myself if I try to read it. I can program a little bit, sure, but I have no experience in writing neural net code.

My guess is that DALL-E does some natural language parsing to guess at the intent of the query, tokenizes the full query to break it up into parts that it can use to search for images, very likely using Google Image search. Then it (randomly? algorithmically?) selects some of those images, and does some kind of edge detection to break down the image’s composition into recognizable objects. We’ve been training AI to do image recognition by solving captchas for a while, although most of that seems to be to help create an AI that can drive a car. But DALL-E has to recognize whatever elements form the Google Image Search results match the token in the query string. Once it does so, it “steals” that element out of the original Google image, and combines it with other recognizable objects from other images from other parts of the tokenized query string, compositing them algorithmically into a new composition, and then as a final touch it may apply one of several photoshop filters on the image to give it the appearance of a photograph, painting, drawing, or what have you.

These results can be impressive, or they can be a total failure. Often they’re close to being “good”, suggesting a composition for an actually-good image that would satisfy the original query, but only if you don’t look at it too closely, because if you do, you just see a blurred mess. But perhaps if DALL-E were given more resources, more data, or more time, it might make these images cleaner and better than it does.

(Mind you, I’m not saying using the set of data that is Google Image Search results is the cheating part. Obviously, the AI needs to have data about the world in order to apply its neural net logic to. But there’s a difference between analyzing billions of images and using that analysis to come up with rules for creating new images based on a natural language text query, and simply selecting an image result that matches the query and applying a filter to it to disguise it as a new image, and then call it a day.)

So, when you give DALL-E very little to work with, such as a single keyword, does it just give you an entire, recognizable image from Google Image search results, with a filter applied to it.

Is it all just smoke-and-mirrors?

I guess all of AI is, to a greater or lesser degree, “just smoke and mirrors” — depending on how well you understand smoke and mirrors. But the question I’m trying to ask really is “just how simple or sophisticated are these smoke and mirrors?” If it is easy to deduce the AI’s “reasoning method” then maybe it’s too simple, and we might regard it as “phony” AI. But if, on the other hand, we can be fooled (“convinced”) that the AI did something that requires “real intelligence” to accomplish, then it is “sophisticated”.

I really enjoy playing around with DALL-E mini and seeing what it can do. It is delightful when it gives good results to a query.

For example:

DALL-E: A group of pugs having a tea party
DALL-E: “A world war one doughboy who is a capybara” didn’t quite work, but I’m giving them points for trying. I wanted an anthropomorphic capybara in a WWI uniform. Perhaps I should have asked more specifically.
DALL-E: “Pugs at the last supper”
DALL-E: Pug Da Vinci
I think DALL-E gets Da Vinci pretty well. The Puga Lisa?
I like these so much.
DALL-E doesn’t do a bad Klimt, either.
DALL-E, a beautiful stained glass window of a pug
DALL-E, a mosaic tile floor depicting a pug

I would proudly hang any of these cubist pug paintings in my house.

I think this puggy spilled the paint before he could get his portrait finished.

Please don’t do this

I got this email today…

To:
Webmaster

Name:
Dean

Email:
[redacted]

Subject:
Dungeons and DoomKnights

Message:
Hello friend! I saw your posts about Dungeons and Doomknights and I
was wondering if you could send me a copy of the rom?

I know this is a bit blunt however I can’t find a digital copy of the
game anywhere including for purchase. I am a really big fan of the
creators and would really love a chance to play the game. Thank you!

I replied:

Hello, Dean,

I’m not at liberty to share the ROM. It is a copyrighted work.

You may purchase it from Hero Mart, however: https://www.heromart.com/products/copy-of-dungeons-doomknights-retro-edition

If you’re a big fan of the creators, you should want for them to be paid for their work.  This will enable them to create more games for you to enjoy.  $14 is not a lot of money to pay for a game such as this.

You’re welcome,

–Chris


I think ripping ROMs and sharing ROM files for abandonware titles is an ethically very-light-grey area, and would like to see copyright law revised to make it fully legal. But please do not hurt developers, particularly small indie and homebrew developers, by asking around for ROMs for recently released commercial products.

It’s one thing if the creator/rights holder releases the game for free, it’s quite another to go about asking reviewers for an unauthorized copy. If you understood how much effort was taken to create the work you’re seeking, you would appreciate how little they are asking for a legit copy.

I love Free/open source software, but not everything is. And that’s OK.

Respect creators. By paying them.

Update

“Dean” wrote back to me, to let me know that he tried to purchase the ROM from Hero Mart, at the link I provided, and the purchase failed. He wrote to their customer support and they confirmed that the ROM is no longer for sale, and Hero Mart have since taken the item off their site.

I do think it’s unfortunate that they chose to discontinue sale of the game so quickly. I can’t understand why they would want to do that. It’s their choice, but to me it runs counter to the spirit of the homebrew community, which is trying to keep old systems alive.

Update 2: rom and cart are back on sale https://www.heromart.com/collections/dungeons-doomknights-collection

Dungeons and DoomKnights

Dungeons and DoomKnights, a new NES release in 2022, dropped last week. I didn’t kickstart it, but I did pre-order it about a month ago. Unlike just about every other thing I’ve pre-ordered in the last 10 years, this one arrived quickly — not two years later than announced, but just a few weeks after I paid for it.

I put about an hour into it today. I haven’t gotten very far yet, but I’ve made a little bit of progress. So far, I’ve managed to lose and re-gain my Axe, collect two Heart Containers, and befriend an attack Pomeranian, who can reach some areas that I can’t fit into.

I’m not entirely sure what else I’m supposed to do, or where I’m supposed to go next. The level design is non-linear, allows backtracking (to an extent), and doesn’t give you a lot of indication about what you’re supposed to do, or where you’re supposed to go next (although there’s some tantalizing spots where you can see an area that you can’t get to due to some obstacle, and the primary challenge of the game seems to be to find objects that will grant you an ability that you can use to clear the obstacle to get to the next area.

I’ve managed to find two keys, and there’s been a few switches that you can flip to open doors as well. It’s that sort of game. So you have to experiment and figure things out. Oddly, there doesn’t seem to be a pause feature, nor are there any functions to the start or select buttons.

My impressions so far are that it’s decent, if not great. I find the controls feel on the stiff side, not necessarily a good thing. Your primary attack is an overhead axe smash, which can hit slightly behind, above, and in front of you, as the axe passes through its arc. You don’t have a lot of range with it, meaning any time you’re close enough to hit an enemy, it’s also pretty close to you, and if you’re not careful you’re likely to blunder into it and take some damage. Due to the stiff controls, it usually seems like you should have been avoided most of the damage, if only they controls were a bit more fluid. Also, if you’re approaching from above, your attack hitbox will put you at a disadvantage, and so far I haven’t found too many solutions to compensate for this weakness.

Enemy AI is very rudimentary, but very much on par with what you’d expect from a NES game. Enemies basically move around in a simple pattern, not really reacting to your presence. They don’t sense your presence, and don’t deliberately attack you, they just follow a looped set of actions and if you’re in the way, you’ll take damage. Accordingly, although there’s enemies pretty much on every screen, they’re not terribly interesting or challenging to deal with. Certainly they’re no worse than many other games from the original NES era.

The game has a lot of nostalgic cultural references and callbacks to the NES, for laughs. It’s pretty cheesy, but if you grew up in the 80s, you’ll probably appreciate and understand most if not all of the references.

On the plus side, the graphics are really great. For a NES game, they did a excellent job of creating good looking pixel art for the background tiles and character sprites, using the palette limitations of the NES to good effect to create a legible visual language that is fairly easy to pick up. At times you can be fooled by what’s dangerous when touched and what you need to walk up to to talk to, though. And some of the entrances to caves can be a little bit non-obvious – basically if you see a big black hole in the wall, it’s a doorway, unless it’s not. Usually it is though. This was probably more obvious back in the day, but more recent retro games made for modern platforms tend to be a little less ambiguous.

Dungeons and DoomKnights was built with NESMaker, and (as far as I’m aware) it’s the first NESMaker game I’ve played. If you liked games like Wizards & Warriors or Rygar this is probably a worthy pick-up. You can purchase it, while it lasts, at their web site.

.

Some thoughts on the design of Mini Metro

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.

Making Minesweeper

I haven’t done any game development in years. My enthusiasm for game development took a big hit after I struggled to get used to the changes to the IDE that came when GameMaker Studio went from 1.4 to 2.0. I still don’t like the GMS 2 UI, for many reasons. The GMS 1.4 IDE had plenty of UX issues itself, but I thought that YoYoGames threw out too much when they did their ground-up rewrite of the IDE for the 2.x version. A more incremental UX transition from 1.x to 2.x would have been better.

GameMaker 2 is definitely improved over 1 in many other ways and obviously is the way forward for anyone who wants to work in GameMaker. But GameMaker is still rather limited in certain ways that I’ve always found annoying, and so I had the choice: stick with it, switch to something else, or quit.

I opted to quit. After spending nearly 10 years working in GM8 and then GMS1, I didn’t want to start over learning a new tool, and even switching from GMS1 to GMS2 felt enough like learning a new tool that I didn’t want to do that either.

Having taken all that time off, though, I realize that I still have a desire to make games, provided the experience is itself enjoyable more than it is painful.

In 2020, during pandemic lockdown, out of boredom I made a Snake clone in GameMaker, called Tangle, and it made me happy.

The other day, I was feeling nostalgic for the old built-in Windows game Minesweeper, and discovered that it is not included with Windows 10. You can install a version of Minesweeper from the Microsoft Store for free, and so I tried it, but I hated it. They added all this needless tutorial crap to it that tries to teach you how to play minesweeper by telling you how to do every little thing — stuff that’s easy to figure out on your own, and more enjoyable and rewarding to figure out on your own.

There was a fad in game design over the last 10-20 years to build the manual into the game, in the form of tutorials that told you about how every feature in the game works and how to do every single thing. This is a great idea in theory, but in execution they often prove more annoying than useful. There’s so much built-in gamer knowledge that any experienced player will bring to a new game, from the hundreds of games they’re already familiar with. Such conventional knowledge is just tedious to explicitly spell out for a player.

As well, putting up signposts for every single mechanic is insulting to the player’s intelligence. It’s really more delightful to discover things through exploration and experimentation than it to have the experience of someone holding your hand and telling you when and how to interact with every single thing in the world.

At the same time, in a lot of games I find that I can get frustrated when I can’t figure out how to do something, and I spend a long time trying to figure it out, and it’s not obvious how to “do the thing”. Often the game world is dressed up to look like a realistic world that is full of things we’re familiar with, and we bring assumptions and expectations about those things with us. When we see a chair, we think “I know what that is”. In many games, a chair is just a tile that you can’t interact with, that serves to convey to the player that they’re indoors in a furnished room that has a chair. But there’s nothing to do with the chair. You can’t sit on it. You can’t pick it up and use it to tame a lion. You can’t set it on fire. You can’t break it over someone’s head like a pro wrestler. You can’t move it next to the shelf so you can stand on it and get an object on the top. It’s just a tile that you can’t walk over and have to walk around.

And that’s bullshit. Because it creates the expectation of useless or limited usability in the other objects in the world. You see another object in the game, a chest. You know you can open the chest and find a treasure. You know some chests are locked, and some are trapped or trigger encounters. But even though the chest looks like it is made of wood, you can’t break it up and put the pieces into the fireplace, or set a fire and use it to signal an ally far away on the map, or keep yourself warm in a cold zone.

Games like Legend of Zelda: Breath of the Wild amazed us with the greatly broadened scope of things you could do with nearly every object in the game world that you could see. But that amazement was a break in expectation from what decades of more limited games had trained us to know about interactive game worlds.

Minesweeper is super simple and abstract — about as far away from BOTW as you can get. You can figure out how to play it in a few seconds by clicking. There’s no need for a tutorial mode with achievements to track the things the game explicitly taught you to do. You just go directly to the game play, and you figure it out, all on your own. This makes you feel smarter, empowered, and like the game respects your intelligence. The Microsoft Store version of Minesweeper treats you like a baby, insultingly trying to be helpful and explaining things to you that you already knew, or could have figured out faster without their “help”.

It turns out that the OG minesweeper is available for download if you google for it, and you can still run it on modern day Windows. I don’t know how legal it is to download, but it ain’t like anyone’s making a fortune pirating minesweeper, a game that was given away for free for over a decade with every install of Windows.

So I downloaded it and played it and, you know, it’s just minesweeper, but as I was playing it I was appreciating the design of it, the simplicity, the clear logic that it communicates to the user through its iconography. And I have to say, minesweeper, though utterly commonplace, is really well designed as a game.

I thought, “what the hell” and decided to try to make it myself. I just wanted to see if, A) I could do it, and B) if I could find the experience enjoyable.

It turns out, I could.

I fired up GMS1.4, still installed on my PC, because I didn’t feel like being frustrated by the lack of familiarity with where all the controls in the GMS2 IDE are, and how they all look familiar yet work subtly differently.

Minesweeper is really, really simple. You have a grid of cells. Apart from edge cells, each cell has 8 neighbors. A cell can either have a mine in it or be empty. An empty cell is safe to click on, and doing so reveals how many mines there are among the eight neighbors. You can then use this information to deduce the locations of mines. Once you are sure of a mine’s location, you can right-click the cell to mark it with a flag. This makes the cell safe, because you cannot accidentally set off a mine in a cell that has been flagged. You proceed to traverse the entire minefield, until you have identified and marked all of the mines correctly. If you make a mistake, and click a cell containing a mine, you lose the game. When you lose the game, the entire minefield is revealed, and if you mistakenly flagged any empty cells, those flags are marked with a red X to indicate your error; also the mine you clicked on to end the game is drawn with a red background to indicate it blew up.

There’s a bit more to it than that: a timer, which is used to rank players based on how quickly they can complete the game; a scoreboard of high scores; also the first click in the game is always “free” — the position of the mines is determined after the opening move is played, so that the first cell the player clicks on can always be empty, and thus you always have a chance to win the game — there are no unfair first-move deaths. Finally, there are three different levels of play: beginner, intermediate, advanced, with grids of increasing size and more mines to find at the higher difficulties.

I went with the simplest approach I could think of to build the core features. I didn’t bother with the high score, the timer, or the dashboard at the top of the window. I just implemented a mine cell object, a controller object to handle global state and data, and put most of the logic in the cell object. There’s no actual grid data structure; the mines are simply laid out to create a grid, and each mine cell only needs to be aware of its surrounding eight cells, so that’s all they do. The checks for this don’t care if they’re edge or corner cases, either. They check all 8 positions where a cell could be, and check to see there is one; if so, it checks to see if it is empty or a mine, and if it’s a mine it counts the neighbor and adds it to its tally.

When the game starts, every cell is empty, but when you make your first move, the cell you picked is cleared, and the rest of the mine cells that comprise the field randomly determines whether it contains a mine or not, and the state of the minefield is thereby determined. Thereafter, when you click a cell, if you release the button while the mouse is still over the cell, you trigger the sweep script, which will reveal whether there was a mine or not; if not, the cell will reveal how many mines are in its neighboring cells. If you mouse outside of the cell after clicking on it, and then release the mouse button, the mine cell will not trigger. This allows you to think about the move you are about to make while the mouse button is down, and if you decide that you want to take the move back, you can.

If you click in an empty cell that has 0 neighbors with mines, something special happens. Since the game is telling you that all of the neighbors are safe to clear, it does this for you automatically, saving you the time it would take to clear each neighbor manually. To do this, we check when this condition exists, and if there are 0 neighbors for the current cell, we call the “sweep” function for the eight neighbors. This “sweep” function checks each of the 8 neighbors in the same way, so that if any of them also has zero neighbors with a mine, then all of those neighbors are cleared automatically as well. This results in potentially large areas of the filed being cleared by a single click, and is probably the most fun part of the game.

The game conveys all of its information to the user graphically, through sprites. I created one sprite resource, containing the different states for a mine cell: untouched, cleared, mine, flag, and for the number of neighbors containing a mine. Most of my time spent in development was taken up by drawing the sprites. I wanted to get the colors accurate to classic Minesweeper, and but I didn’t otherwise concern myself too much with exact pixel accuracy or font accuracy. Due to my rusty pixeling skills, it took me a bit before I figured out a good workflow that would enable me to create individual images that had consistently centered positioning and sizing. I ended up deciding on 32×32 pixels for my cell size. This enabled me to create attractive, classic-looking cell graphics.

I did the drawing work in paint.net, in a single 32×32 pixel image with one layer for each sub-image in my sprite. The bottom layer had the grey background and outlining needed to convey a sense of bevel and shadow to create the illusion that the un-cleared cells have a raised tile on them. Within these, I drew very rudimentary flag and mine images, and using the text tool I created labeled numbers for the neighbor counts, colored them accurately. Then I imported the graphic into GameMaker and ordered the sub-images in the sprite in such a way to make the coding as convenient as possible.

Coding took the least amount of time out of everything. It was all pretty easy. The only complexity about the code had to do with some order-of-execution details that I worked through at the game start, because I have each cell determining whether it has a mine in it sequentially, and then I have to have each mine check its neighbors for the presence of a mine, in order to count them. Since the counting can’t start until all the cells determine whether they contain a mine, the neighbor counts don’t take place on the first step of game execution.

I also took a lot of time debugging a logic error that I created for myself unwittingly when I tried to code the recursive checking for neighbors that takes place when the player sweeps through a cell having zero neighboring mine cells. This was tricky because I was using the sprite sub-image to contain state information, which made a lot of sense because the sub-images directly convey this information. But there was one case where there was a state ambiguity: when you left click on an un-checked cell, the sub-image briefly switches to the sub-image I used for the cleared cells, because this gives the appearance of the cell being clicked like a button. When the player releases the left mouse button is when the game checks for mines, and then in the event of a zero-neighbor cell, the recursive check that happens used the sprite sub-image to confirm the state of the cell before doing further checking. Because the neighbor cells aren’t clicked on, they don’t switch from the unchecked sub-image to the cleared sub-image, and thus fail the logic test to see if the sweep check should continue, and thus nothing would happen; the if statment would follow a false branch that would stop the recursion from happening.

I had to sleep on the problem but when I woke up I immediately knew what the problem was and what I needed to do to fix it, which is my absolute favorite way to debug my coding mistakes. The only reason this took me so long to debug was that I assumed the cause of the problem was elsewhere in the code, and I tried everything else I could think of first before giving up and going to bed. But then again, if I didn’t do that, I probably wouldn’t have woken up with the answer in my head.

So now I have a fully functional core minesweeper engine. I don’t have the dashboard, timer, high scores, or variable difficulty levels, but what I have will serve as a good base to add those features.

My little minesweeper.

I enjoyed making it.