Category: GameDev

GameMaker adjusts business model

Today GameMaker announced changes to their pricing and business model. Moving forward, they will provide three tiers of product.

The Free tier is intended for non-commercial use, and should appeal to educators and hobbyist game developers. And great news, the free version is not limited or restricted in terms of features in any way, other than that if you want to build a game for commercial release, you need to buy a Professional or Enterprise license.

The Professional tier is a 1-time $99 charge, and does away with the subscription model for small indie developers who want to make commercial games but have balked at paying a subscription for the tools to create them.

The Enterprise tier is still subscription-based, at $800/year, and enables game console builds for PlayStation, XBox, and Nintendo Switch.

It’s great to see GameMaker giving affordable options to smaller developers. Most of GameMaker’s traditional userbase has been non-professional programmers who wanted an simplified tool that is inexpensive.

Fixing the Weapon Break Mechanic in BOTW/TOTK

The most often criticized feature in Legend of Zelda: Breath of the Wild and its sequel, Tears of the Kingdom, is the weapon breaking system.

I like to put on my game designer hat and come up with ways to improve games, and this is a subject that I’ve thought about a considerable amount off and on since I played through BOTW, and am thinking about more now that I’m playing through TOTK.

So here’s my suggested solution.

I actually like the possibility for weapons to break. I think it does make combat more interesting, and I support Nintendo’s reasoning that the feature gives the player reason to use other weapons than the current best damage weapon in their arsenal, which results in the player experiencing a wider variety of combat mechanics that result from the different properties and behaviors of the different classes of weapons found in the game.

So we’re not ditching the system, we’re going to tune it.

First, let’s recognize that weapon quality should come into play, as it does, but durability should increase much more quickly as weapon quality goes up.

So, at the start of the game, we have what I’ll call “found object” weapons, like the tree branch. These should rightly be very easy to break, in just a few solid hits, as they are.

The next class of weapon above that should be “improvised object”. These are tools, such as brooms, shovels, pitch forks, and so on, which are capable of being used as weapons, and are designed to be durable, but are not intended to be weapons. These should break more easily than a designed weapon, because using them for combat is putting stresses on them that they were not designed for.

The next class of weapon above “improvised” is “crude”. Crude weapons have a primitive look to them, and are built by crude or less skilled means, and won’t hold up as well as a better made weapon. Crude weapons are made of roughly hewn wood, bone, and stone, and not refined metals. Crude weapons can be repaired more frequently, and can be repaired in the field at places similar to the cooking pots found throughout the world. This amounts to “duct tape” level reinforcement of the weapon’s shaft, or the attachment of the weapon’s head to the shaft, for things like stone hammers and stone axes

The next class is “Standard”. Standard weapons are in good condition and should last a long time if properly treated and cared for, but are subject to breaking when abused, neglected, or subjected to abnormal rough treatment. In the game, a Standard quality weapon would be given no “modifier” adjective, eg there would be a “Sword” rather than a “Standard Sword” or “Traveler’s Sword” rather than “Standard Traveler’s Sword.”

Above that is “Quality”. Quality weapons are a bit more durable, and last a bit longer. They are made better, and from better materials. They are rare, and are found only in places like Shrines or stored in chests found in places where they would be well shielded against the elements, such as inside of a cave or building, not out in the open or under water. Quality weapons are often used by enemies of higher status, and can be won through combat against them.

Above that, is “Magical”. Magical weapons are the ones that have special powers, like elemental properties, or the Master Sword. These weapons do not ordinarily break through wearing out, but may break when subjected to extreme damage or misuse.

In BOTW, the Master sword cannot break, but gets “used up” after a certain number of uses and has to recharge. I don’t especially like that solution, as it feels artificial, but we’ll come back to that. I think the Master Sword should be a special case weapon, maybe a level above “magical”. We might call it “Legendary”.

Another factor in durability should be its condition.

The bottom condition is “decrepit”. These are the weapons Link may find laying out in the open environment, which have been neglected and subject to weathering, rust, or rot. These will do in a pinch, but may be at their end of life. Decrepit weapons can be upgraded through repair, one time, taking them to a blacksmith shop or weapon shop in one of the towns or stables (which don’t exist in the game as they are, but could be added with a reasonably small effort) and it should cost materials and rupees to get them fixed. They cannot be restored to anything above Standard quality, regardless of how they started out in life. Fixing is not a skill that Link should devote time into learning, so he relies on skilled tradesmen and women to do this work for him, and he definitely can’t do it in the field. Decrepit bladed weapons do less damage and are weaker against armor than

Above “Decrepit” there is “Worn”. A worn weapon has been used, but is otherwise in good condition and functions as it should. Above “Worn” is “New”. There’s nothing better than “new”. A weapon in New condition remains in New condition until it is used, and then slowly degrades to Worn, and if not cared for, will degrade further to Decrepit and then eventually break in action.

You can check your inventory to see the current condition of the items you have, and the item in hand will visually give an appearance of its condition as well, to make it obvious when it is no longer New, and when it transitions from Worn to Decrepit. The “gonna break any time now” pulsating glow from the game-as-it-is can remain in place, but only happens with weapons in the Decrepit state on their last legs.

Using a weapon will degrade its condition from its current state down to Worn, then Decrepit, and then eventually it will break. There’s a risk of breaking at each condition level, but the risk increases dramatically as the weapon becomes increasingly worn out. As the weapon goes through these stages, it gradually diminishes in the damage it deals, becoming increasingly ineffective toward the end.

Weapons of Standard and Quality quality can be repaired a finite number of times at the places where that service is available, and if maintained (brought in for service before they become Decrepit) they can be restored to their full original quality level.

Weapons of different types will progress through their wear states differently. Bladed weapons will become dull through use, and will do less damage as a result. High condition, high quality bladed weapons will do much more damage than a crude weapon or a weapon in poor condition. Likewise with stabbing weapons such as spears, as their tips become rounded with use, they will likewise do less damage. Blunt weapons, on the other hand, remain just as effective regardless of their condition, which is an advantage that they have over sharp weapons. Offsetting this advantage, blunt weapons are heavier, making them slower to swing, slower to recover, and slower to windup when using a long-press attack move.

Weapon damage doesn’t have to happen every time the weapon is used. When a weapon is used in the intended way, weapon damage should be minimal to nonexistent, with perhaps a small change of something more happening due to an unlucky strike. But when a weapon is misused, or strikes a durable surface like armor, a shield, stone, or wood, some damage may occur.

So if you swing your weapon and connect to do damage, if the enemy is a normal flesh and blood creature, the damage done to a weapon will range from 0-1 durability points, with 1 being a rare unlucky hit.

When you parry with your weapon, or when your attack is parried by the enemy, or when your weapon strikes the enemy’s shield or an armored enemy, or when the enemy is made of something more durable than flesh and blood, such as skeletal enemies, stone enemies, elementally infused enemies, hitting them does more damage to your weapon. Parrying with your weapon does less damage than when your attack is parried by the enemy.

Depending on the material the weapon strikes, and the type of weapon, it will take more or less damage. Hitting rocks with a hammer, pick, or drill will use up very little of that weapon’s durability, while hitting stone with a bladed weapon or spear will do significant damage very quickly.

Hitting wood with an axe blade will cause only slight to no wear, but hitting wood with a blunt weapon or a bladed sword will do more damage to those types of weapons. So misusing weapons, abusing them to hit the wrong type of material than they were designed to be effective against, will cause them to wear out and become damaged or ruined very quickly, but using the right type of weapon for the material being struck will result in slow, gradual wear.

This is already implemented to a degree in BOTW, where weapons like hammers and axes do get a durability attrition bonus when used to chop wood or mine ore, but my proposed solution goes further, and the wear to properly used tools and weapons is reduced, particularly against softer enemies, while abused weapons take greater damage, and most weapon wear happens when the weapon hits a shield, armor, is parried, or is used to parry, or when the player hits a rock or tree in the midst of combat.

This means that your weapon could last a long time, if you know how to use it properly, and are skillful with your aim and don’t make ineffective attacks that hit the shield, or if you only mine ores with hammers and only chop wood with axes.

To adjust the adjacent systems in the game to accommodate for increased weapon life and the ability to repair weapons, weapon drops would be less frequent, and enemy’s weapons would tend to be in worse condition, reflecting that it is in all likelihood a used weapon, as well as any additional wear done to it while wielded by the enemy. It also means that an enemy’s weapon might break in their grasp, which I think would potentially make combat a little more interesting. Special weapons of Quality, and Magical weapons, would be correspondingly higher in rarity, reflecting their increased durability and capability of being repaired. We might also do with fewer inventory slots for carrying weapons. This would have a further advantage of being a bit more reasonable and realistic. When you consider how many things Link is able to carry in his inventory slots, it’s a bit ridiculous. Being forced to choose between 2-3 weapons at most, one of them being a bow, and a shield, would be an interesting constraint and force the player to choose, sometimes opting for a weaker weapon that has a useful ability or property, and storing their other “keeper” weapons back at Link’s House in Hateno Village.

It would definitely be interesting to see how the game feels with these changes. If a weapon broke only once every few fights, it would go a long way toward making me more willing to engage in battle. And by “every few fights” I mean every few encounters, not every few enemies. So if I’m fighting 4-5 bokoblins and a moblin, that is what I would consider a single “fight”. Weapons breaking every 3-4 encounters of that size, I think would be much less annoying, and feel more reasonable, while still providing the types of incentives that Nintendo’s designers were going for, to encourage the use of different types of weapons, rather than reliance on the single best weapon that you’ve found so far. I think I would enjoy combat much more if weapon breaking wasn’t something that happened in nearly every fight, especially with the better weapons you can find later in the game. When the weapons break so frequently, it makes me want to avoid combat in order to preserve my better weapons for use in fights that I want to have.

Design ideas for competitive Wordle

Wordle, the guess a 5 letter word in 6 tries game, is a really good game. Any good game deserves a competition.

I thought about how to design a proper competitive Wordle, and wanted to share my ideas with the world so that people could use them to organize Wordle tournaments. I have no connection to the creators of Wordle or the New York Times; these are just my ideas that I am offering as an add-on to enhance the existing Wordle experience. I offer them freely for anyone to use or modify to suit, under the Creative Commons Attribution International 4.0 license.

Csanyk’s Competitive Wordle Rules

Version 1.0, Creative Commons Attribution International 4.0 license.

Level Playing Field

  1. Consistency is Fairness. All participants will play the same list of solution words, presented in the same order. All players will either play in hard mode (where any revealed hints must be used in subsequent guesses) or normal mode.
  2. No cheating. Players may not have advance knowledge of the solutions at any time, and may not consult a dictionary.
  3. Players may not receive outside help to come up with the solution, in any form.
  4. Players may use scratch paper if they desire, but the sheets must be blank before the start of the competition.

Timekeeping

  1. To keep tournaments from running indefinitely, a finite time bank will be used.
  2. Each player will have their own time bank which they will be allowed to use during the period in which the competition is ongoing. Eg, the overall competition might be slated for a specific date and time window of, say, 2 hours, with each player granted a time bank of 1 hour to play their games, to be used within that 2 hour window, affording them up to an hour of break time, if they wish to use it, however they wish to use it.
  3. The amount of time given can be determined arbitrarily by the organizing body, but a suggested length of 1 hour or less would be reasonable for most tournaments. For larger tournaments, more time may be needed, or more rounds of competition, each with their own time bank. For ultra brief or high speed play, time banks of 5 or 10 minutes might be appropriate.
  4. For precise timekeeping, the clock start and stop can be coded into the Wordle program itself, but if such a feature is not present in the software being used, time may be kept externally, using a stopwatch or pauseable countdown timer.
  5. The timebank clock starts when the player submits their first guess for the current puzzle, and stops when they solve the puzzle.
  6. The player can take breaks between puzzles as often and as long as they wish, subject to any other rules governing breaks which may limit their number or duration or how often.
  7. There are no timeouts once a puzzle has been started.
  8. Players will play successive rounds of Wordle until they either fail to solve a round, or run out of time in their personal time bank.

Scoring

  1. Players score points each round, based on how many guesses were needed to solve the Wordle.
  2. A solved puzzle will score base value of 100 points. The exact number used for the Base Points is somewhat arbitrary, and doesn’t matter a whole lot. The Base Points value will be modified by multipliers, as follows:
    1. 1/6 Solve: * 1. Solving in 1 is pure luck, and shouldn’t be rewarded with a special bonus.
    2. 2/6 Solve: * 4. Solving in 2 guesses involves skill as well as some luck (to get enough clues from the first guess) so should count for more.
    3. 3/6 Solve: * 2. Solving in 3 guesses isn’t easy, so deserves a bonus.
    4. 4/6 Solve: * 1. Solving in 4 guesses is par.
    5. 5/6 Solve: * 0.5. Solving in 5 guesses is good, but just isn’t as impressive.
    6. 6/6: * 0.25. Solving in 6 guesses deserves points, just the least number of them.
    7. X/6: * 0. No points awarded if you fail to solve.
  3. The above scoring system rewards fast play, in terms of guesses used, but also rewards cautious play, since solving each puzzle unlocks future scoring opportunities without limit other than that imposed by the time bank.
  4. Players can score more points per round if they solve in fewer guesses, but they can score more points overall if they play many rounds. But players can play the most rounds if they don’t take risky strategies that are more likely to solve early but increase the risk of busting, and they can play more rounds if they solve each round quickly.

Time Bonuses

  1. Optionally, solving each Wordle may afford opportunity to gain bonus time. This is a double reward, since solving in fewer guesses typically consumes less time already. To prevent limitless time, the structure will need to be carefully considered, and calibrated to the speed of the players. It’s forseeable that future players could become faster than we can imagine at solving puzzles, so to avoid infinite play, this will need to be adjusted.
  2. Suggested values for timebank bonuses are a starting point only, and are subject to revision.
    • 1/6: + 30 seconds
    • 2/6: + 20 seconds
    • 3/6: + 10 seconds
    • 4/6: + 0 seconds
    • 5/6: + 0 seconds
    • X/6: Timebank * 0; player is busted, their remaining timebank is zero per the normal rules.
  3. Typically the bonus possible in a single round should not afford a player more bonus time than it typically takes to play a single round; it should therefore only extend the player’s time bank to allow for multiple additional rounds of possible play if they accrue bonus time over several rounds of play.

Micro Points

  1. Micro points are an optional way to increase nuance with the scoring system. This is intended to help avoid ties.
  2. Micro points scored as follows:
  3. Grey letter (Each letter used in a guess but is not found in the solution: 1 point.)
  4. Yellow letter (Letter found in word, but used in the wrong position: 2 points.)
  5. Green letter (Letter found in word, used in the correct position: 5 points.)
  6. Micro points are tallied over successive plays in the round, so if the same letter is used in multiple positions as a Yellow, each unique position in the word that the letter is used counts for score. But if the yellow letter is played in the same position in multiple guesses, only the first time that letter appeared Yellow in that position scores points. For example, if the solution contains the letter T in the 2nd position, and the player guesses a word that uses T in the 1st position and in the 3rd position, in both guesses the T will score 2 points. But if the player played a word with the letter T in the 1st position in two guesses, only the first guess that yields the clue that T is in the word, but not in the 1st position should count for points, and any subsequent guesses using T in the 1st position will not score additional points.
  7. Likewise, only the first time the green letter is discovered for each position counts for points. Thus if the solution is YEAST, and the player guesses: 1. STATE; 2.STEAK; 3. MEATS; 4. BEAST; 5. FEAST; 6. LEAST, and fails to solve, the micro point scored for the round would be:
    2+2+5+2+0 = 11
    0+0+2+2+1 = 5
    1+5+5+0+2 = 12
    1+0+0+5+5 = 11
    1+0+0+0+0 = 1
    1+0+0+0+0 = 1
    = 41 micro points.
    The micro points then are divided by 10 and added to the regular points, so in this case the 4.1 micro points would add 4.1 points to the player’s tournament score.
  8. On an X/6 solve or unsolved round where the player ran out of time but still had remaining guesses, we can optionally score the “micro points” to reward whatever progress the player made in their final round, or we can simply award 0 points for the round since it was not solved.
  9. Micro points are normally scored for every round played. This could aid in making tie situations more unlikely, while de-emphasizing the final round’s micro points.

Tournament ranking and winners

  1. At the end of the tournament, players points are tallied over all rounds of play, and then ranked in descending order. The player with the more points holds a higher rank in the standings.

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.

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.

YoYoGames charging monthly subscription for Game Maker Studio

It looks like GameMaker Studio is finally going subscription-based.

Which makes total sense, and I predicted it about 5 years ago. They denied going to a subscription model at the time, because of course they did. Users at the time weren’t in favor of it, preferring perpetual licensing. But I guess everything changes when you get bought.

Of course, for development tools, everything gets stale if you don’t keep it updated, so a subscription based licensing model probably does make the most sense.

For professionals, anyway. For amateurs and hobbyists, though, it’s a lot of money to pay for a tool if you only use it occasionally. GameMaker’s bread and butter used to be the student/hobbyist/indie developer who could readily afford a one-time price of $40, then $100. Now it’s $100/year, or $9.99/mo. Which is still not that much if you use it a lot, but if you’re just not ready for that type of commitment, there’s really nothing like what GameMaker 8 once was, over a decade ago.

YoYoGames still offers a free edition, intended for student/hobbyist users, but it lacks exports, not even for Desktop OSes, so it’s of extremely limited usefulness for anyone who wants to actually build their projects in order to get feedback from peers and friends.

GameMaker Studio finally coming to Linux?

About 10 years ago, YoYoGames was talking about a Linux IDE for GameMaker Studio on their long-term roadmap. A few years passed, and the roadmap disappeared and all talk about a Linux IDE went silent. It seemed that PlayTech may have been responsible for killing the project when they bought YoYoGames.

I’d given up all hope of a GameMaker IDE on Linux long ago, but a few days ago, this article crossed my newsfeed. It looks like new YoYoGame owners Opera is developing a port, currently in beta. It appears it will be supported on Ubuntu only, but that’s better than zero Linux distros, and Ubuntu is a pretty good choice.

This would have really excited me a decade ago, and would have been the last obstacle to me completely ditching Microsoft. While better late than never, it’s still not really here yet. It sounds like the beta currently has some rather severe issues that make it less than suitable for production at this time. Hopefully this will change quickly. It will be interesting to watch and see how it goes in the coming weeks.

“Life as a Bokoblin” BOTW mock-documentary suggests deeper gameplay possibilities

I absolutely love this beautifully produced fake documentary that was published last week.

Imagine the gameplay possibilities. In BOTW, all we can really do with Bokoblins is kill them or ignore them. Occasionally there are encounters where we run into Bokoblins harassing some Hylian travelers or hunting animals. These encounters have their purpose — they allow Link to rescue the Hylians and do something heroic, while the hunting parties provide a demonstration to the player that hunting is possible activity that they could participate in themselves in the game.

But these encounters are somewhat limited and shallow. They don’t build and develop to anything greater. They hint at what could be, however, and I find the possibilities tantalizing.

This video shows potential for a much greater depth possible in the game. If you unlock the “monster shop” Fang and Bone, operated by the creepy, nocturnal Kilton, you can buy monster themed items, including a mask. These masks can be used to fool enemies of the type that the mask is of that you are one of them, allowing you to encounter them without having to fight them. The items from Fang and Bone are not really crucial to completing the game — in fact, they’re completely unnecessary. And in my run through the game, I encountered the shop very late in my exploration of Hyrule, and thus had accumulated so much power that the shop seemed almost pointless. I didn’t need disguises at this point — I was already comfortable hunting down Lynels and Dragons. So I did not explore these possibilities and discover this area of the game very much at all. Clearly, I missed out on some enjoyable, amusing bokoblin antics by not diving into this aspect of the game more.

As I played through Breath of the Wild, I often felt guilty about killing the Bokoblin enemies. They’re almost cute, they’re almost not really dangerous, and it’s clear from their scripted idle behavior that they have a tight-knit tribal culture.

They hunt, they sit around their camp fires, they cook, they dance, they sleep. Sure, they don’t differentiate between people and prey animals as much as we’d prefer, and Bokoblins might get nasty if they detect a threat, but can you blame them? They’re just trying to survive. Why can’t we just get along?

A problem I have with Breath of the Wild is that for being a vast game, it’s depth doesn’t really match its breadth, and thus the game begins to feel repetitive after a certain point. You usually encounter Bokoblins in camps, and they’re pretty much all the same. There’s a camp fire, a few bokoblins sitting about, maybe a cave or some other shelter, a couple of watch towers. You can approach pretty closely and they mostly won’t notice you. And when you grow tired with scouting about the edge of their range of vision, you can pretty much run up at any point and straight up murder them through button mashing without much risk.

They don’t fight very well — your attacks almost never miss, almost always disrupt them, and if you’re just full-on aggressive with them, you can keep them reeling and beat on them repeatedly until they die, which doesn’t usually take very long. Conversely, their attacks aren’t too strong, usually have a big windup that telegraphs to you that you need to either dodge or interdict with a pre-emptive counter attack of your own, and if they do hit you, they will hurt a bit, but you’ll probably be able to shrug it off and hit back and gain the upper hand.

I like bokoblins, and I think they have a lot of potential, but I just don’t find them as interesting as they could have been if they’d been developed a bit more. It seems like a shame, because it feels like a considerable amount of work went into developing them to the point that they were. They exhibit a lot of different behaviors and it gives them personality. The bokoblin documentary shows this quite well. But there’s not that much that you can really do with them, or need to do with them, beyond slaughtering them whenever you encounter them.

This video, though, shows a glimpse of what could have been. Imagine if there were alternatives to fighting that were not just viable, but interesting, rewarding, and even necessary.

Imagine if you could help an injured or trapped bokoblin, and gain its trust.

Imagine if you could approach a camp of freezing, starving bokoblins, and if you approached with your weapons un-equipped, they didn’t immediately regard you as a threat, and if you approached them with your hand outstretched, holding a food item, they would tentatively approach and you could give them the food and then they’d be grateful.

What could they then offer you? Might they trade with you for something that they own, or guard? Might they show you a secret, or allow safe passage through a difficult to get to part of the map? Might you learn how to co-exist peacefully, and put an end to the age-old conflict once the evil Ganon is finally defeated? Might you become an honorary member of their hunting band, and gain allies who come to your aid later when you’re ambushed by another band of hostiles?

I’ve been playing video games for nearly four decades now, and as games become more realistic and immersive, I find myself wanting that reality to offer me solutions to conflicts other than violence and destruction.

I don’t want to be misunderstood in saying this. During my whole life, there has been a pushback against violence in video games. I like videogames, and I like violent videogames. I like shooting everything on the screen, and games where you do nothing but destroy and fight never ending waves of enemies. I just have played enough of them.

I think game designers can challenge themselves, advance the state of the art, and delight players by providing different challenges and different solutions to problems apart from straightforward brute force. And to be fair, Breath of the Wild does this, quite a bit more than most games. It’s just that most of these alternative approaches apply themselves to the games physics puzzles than to dealing with foes. When it comes to foes, you basically can fight, run away, or avoid. The combat system does offer a lot of variety. But what if you encountered foes and didn’t have to fight or sneak? What if you could bribe, negotiate, deceive, trade?

In the late 1990s, games like Thief received critical acclaim because they tried something different — rather than killing everything in the game to overcome challenges, what about using stealth and trickery to avoid violent confrontation that is designed to be impossible to overcome? Nearly 25 years later, I want still more options.

Even in the original Legend of Zelda, we didn’t always fight enemy creatures. Moblins were an overworld enemy who hurled spears at us, and our options were to fight or avoid. But not all of them behaved as enemies.

Legend of Zelda - It's a secret to everybody
Even in the original Legend of Zelda, some monsters weren’t hostile.

And who could forget the hungry Goriya from Level 7, who cannot be fought, only placated with food?

The hungry Goriya from Legend of Zelda's 7th dungeon
Another early hint at the possibility of non-violent challenges, the hungry Goriya from Legend of Zelda’s 7th dungeon, who can only be defeated by an offering of food.

There are encounters in Breath of the Wild where Link can give an NPC food or another item, so this sort of interaction with bokoblins wouldn’t be unprecedented, and indeed would have seemed fitting and natural, and a callback to earlier Zelda adventures.

I have a feeling that we’ll get to see such complex, multifaceted interactions in games eventually, and probably we don’t have too much longer to wait for it.

PlayTech sells YoYoGames, GameMaker to Opera

Five years ago, YoYoGames was acquired by PlayTech. Today, I see the news that they have sold the company off for a loss of about $6.4M. Update: It’s come to light that the new owner is Opera.

It was a $16.4M purchase in 2015, and during this time they put a ton of development into GMS 2, released it, and so it’s a bit concerning that this hasn’t resulted in YoYoGames becoming a more valuable property.

On the other hand, I can well understand it. In the past several years, I have never felt comfortable with the new GMS 2.x UI. I find it awkward, unintuitive, ugly, and frustrating to use compared to the GMS 1.4 and earlier versions that I learned first. And at the same time, competing technologies like Unity 3D, Unreal Engine, and Godot been strong competition.

From a coding standpoint, there’s no question that the GML programming language has gotten better and better as YoYoGames continued to develop it.

From a UX standpoint, it’s been a crapshoot. The UI has some nominal improvements, but overall I feel like they changed too much too fast, and I could never get used to it. I spend way more time looking for the feature I want to use, and then wondering why it doesn’t work the way I think it should, and it completely kills my productivity and along with it my desire to work with the tool.

In fact, it’s a big part of why I haven’t done much game development in the last year, and have mostly dropped out of the pursuit.

I hope the new owner does better and continues to make improvements with GameMaker. It was very good at its original intended purpose of making it easy for game developers who are not primarily programmers to create simple 2-D games.

Many amazing games have been built with GameMaker over the last 22 years, which shows clearly the merit of putting simple, usable tools into the hands of creators who wouldn’t know where to begin with tools intended for professional programmers. Hopefully even more will be made in the years go come.

It will be interesting to see what the new owner does with the property. I want to see a product like GameMaker continue to serve the market it has traditionally done well with, while offering features that make it viable for professional game developers as a first rate tool.

Playing REDDER (Anna Anthropy) in 2020

Usually we hate to forget things. But one of the best things about being able to forget is that you can have a cherished experienced again as though for the first time.

REDDER was a game by indie game developer Anna Anthropy and first released on the web in 2010. I played it for the first time not long after, and it remains to this day one of my favorite puzzle platform games. Few games have made me want to design my own games as much as REDDER, and that’s perhaps the highest compliment I can think of to give it.

I’ve re-played it multiple times since then, and always enjoy it so much.

This year is the first year that Adobe has ended support for Flash, the technology that REDDER was originally built on. I have written previously on the impending death of Flash, and what that means for tens of thousands of video games that were built with it during its 25+ year history.

I feared that this would result in a vast, rich cultural legacy becoming more and more inaccessible. I still fear that. Adobe didn’t just drop support for Flash, didn’t just cease continuing development of it. They pulled the plug. Browsers stopped supporting it, so now in order to run Flash objects in a browser, one needs to keep an outdated browser. This of course has its own problems, and very few people will continue do do it. Moreover, as the userbase moves into a post-flash browser-scape, web hosts will over time have less and less incentive to continue hosting legacy Flash experiences, and in time perhaps the only ones that will persist will be deliberate historical preservation efforts.

That’s a damn shame, because REDDER belongs in the Smithsonian, or the Library of Congress, or both.

Fortunately, Anna Anthropy has re-packaged Redder, in a desktop OS format that wraps a Flash player into stand-alone application, and allows it to be enjoyed on Windows and Mac OS X. It is available for $5 on itch.io, and is worth every penny.

What a beautiful thing it is that I can forget this game just enough to be able to come back to it and experience it again, re-discovering the solutions to the maze and helping my little space explorer friend in their quest to collect all the diamonds to replenish his stranded spaceship.

The platforming is basic. You move, you jump, that’s it. There’s no wall jumps, no edge hanging, no coyote time, it’s pure basic simple. There’s no shooting, no destroying enemies. Your only tools are your brain, to figure out how to get past obstacles and get to where you need to go, and your agility, to accomplish the task. There are save points, to make the deadly obstacles a lot less annoying. There are switches to flip, which toggle special colored platforms into and out of existence, which serve as doors and platforms that block your way or create bridges to access deeper reaches of the world or traverse deadly obstacles to add an element of risk to the challenges you’ll face. When one type is on, the other type is off. And together they serve as the building block of the platform puzzles you’ll need to solve to win the game.

As you progress through the game, the graphics and music begin to glitch. It’s subtle at first, a tile here and there, and it adds an element of mystery to the game. As you continue to collect diamonds, the glitching increases, until, near the end the entire game is out of control with random tile animations. When the final diamond is collected, the entire facade is stripped bare, and everything turns into raw collision boxes, color coded — a clean, pure visual language.

At the end of the game, visuals stripped bare, at last we can behold the simple beauty of REDDER.

There are only three types of hazard in the game: patrolling robots, which traverse horizontally and are deadly to touch but never react to your presence in any other way; “drip guns”, which shoot deadly pellets that you must duck, jump, or otherwise avoid with good timing, and electrical fields which don’t move and must be avoided.

For all its simplicity, the game provides an engaging challenge to find your way through the complex, maze-like alien world, and collect all 27 diamonds.

One thing I love about REDDER is that there are no locks. You start out with all your powers, and apart from the switch platforms that are the only real puzzles blocking your progress, there’s nothing preventing you from doing anything, going anywhere that you can go in the game, from start to finish.

What I love about this is that this forces the design to challenge you in ways other than “oh if you get the item, you can get past this”. This comes down to understanding the map — the twisting, interconnected pathways connecting the grid of screens that comprise the world of REDDER, how platforms and switches relate to one another, flipping switches in the correct order to allow passage, and having a modest desgree of skill to master the timing and agility needed to make the jumps and avoid the dangers.

It’s a casual play — I would call the vibe relaxing. The music is soothing and evokes a spirit of exploration and puzzle solving. The game provides a fun challenge without relying on fear, anxiety, or frustration. Toward the end of the game, as the graphics and background music become increasingly glitch-ified, the game does start to produce a bit of anxiety. If you’re playing the game late at night, it can almost feel like your lack of sleep is to blame for the game’s breaking down. I really like this. To me it is the “something extra” that gives the game a memorable mystery, a question left unanswered, which both frees and empowers the player to come up with their own explanation, should they choose to.

Additionally there are three secret hidden rooms off-map. These serve no purpose other than to delight you for finding them, and perhaps provide a clue or an auteur’s signature.

BORR
ROB?
OWOR

It seems there have been a few changes from the original in this version. I don’t remember these secret rooms having these messages — a web search reveals that the original REDDER had secret rooms with the words “ANNA” “TRAP” and “PART”. TRAP and PART are of course pairs that make a palindrome, and ANNA is a palindrome, and REDDER is a palindrome. There’s something up with palindromes in this game.

But I don’t know what ROB? OWOR and BORR mean. It makes me wonder what else may have changed, and why the changes were made.