2012-07-14

Super Foul Egg 20120714

Another Super Foul Egg release:

This one reduces the difficulty of the “Hard” AI to somewhere in between the old level and “Medium”. I’ve retained the old “Hard” level but renamed it to “Insane”.

I’ll get around to the last menu eventually. The problem I have with Super Foul Egg development is that I’ll add something, compile it, try out the change, and then end up playing the game for an hour or so and forgetting that I’m supposed to be writing it, not enjoying it. At that point I’ll have no time left to do anything else. Plus, I’m really sick of creating menu systems.

2012-07-03

Super Foul Egg 20120702

Here’s the first release of the newly rebranded Super Foul Egg for OSX:

This version includes the original title music/screen, plus a basic menu for choosing the game mode (practice, easy/medium/hard AI, two player). This build probably requires Lion, but I haven’t got any older OSX installs to test on.

It also includes an improved AI that I wrote months ago but didn’t get around to blogging about. The old AI tried to figure out where best to place an egg pair based on the number of connections that a given placement would make. It tried every column for both horizontal orientations, and each outcome was penalised for increasing the overall height of the playfield. The new AI creates copies of the game grid and runs simulations of all possible moves that it can make. It takes into account sequential chains, chain lengths, garbage egg removals and overall grid height. Once all of the simulations has run it chooses the move that produces the highest score.

The new AI doesn’t consider the pair of next eggs that are due to fall, but as I don’t recall ever beating it on its hardest setting (with the standard 4 egg colours) that isn’t really a concern. The main motivation for rewriting it was to improve its performance with 5 and 6 egg colours (which aren’t exposed in the menu system yet). If I remember correctly, the new version beats the old one most of the time.

2012-05-13

EarthShakerDS 20120513

It’s about time for another EarthShakerDS release:

EarthShakerDS 20120513

Changes this time around include:

  • The ability to load and save levels in the editor with user-defined names (so you can have more than one custom level, and share them with other people);
  • A “Custom Level” option on the title screen listing all user-created levels
  • Slightly re-organised level editor;
  • The ability to load and save boulder/wall/door/soil types in a custom level;
  • Fixed for the latest devkitARM;
  • Updated to the latest WoopsiGfxGameTemplate (fixes SDL version);
  • Start button can be used to test a level in the editor;
  • Select button can page through level editor menu panels.

I need to finish off the file requester in the level editor and it’ll finally be done.

Looking through this code again, I’m astonished at the level of spaghettification. On the other hand, I did knock the whole thing up in a couple of weeks.

2011-08-19

Really Bad Eggs OSX Demo

Here’s a preview release of the Mac version of Really Bad Eggs:

For those of you without a Mac, here’s a screenshot:

I’ve been debating what to do with the game when it’s finished. I can either:

  • Open-source it on BitBucket;
  • Release it via the Mac App Store;
  • Release it as freeware on this blog.

If I want to release it on the Mac App Store (which would be neat) I’ll need to sign up for the Mac Developer Program. That’ll cost me $99 that there’s little chance of recuperating. There are a couple of Puyo Puyo games on the store already for bargain prices. I haven’t tried them so I’ve no idea if they’re any good, but Really Bad Eggs would probably need to be free to get any downloads at all. I won’t put advertising in the game, so there’s no chance of making any money from it.

I’ll also need to replace the graphics and sounds. I haven’t been able to track down the original developers so can’t get their permission to use their assets. I’m sure they’re great people and would have no objection to me using them, but I’d rather not get the game pulled due to a copyright dispute. Fortunately I know a couple of great artists who have expressed an interest in helping to replace the graphics, so that’s not too much of a hassle.

Releasing it as freeware is much cheaper (it’s free). If I can get the game listed on something like MacUpdate it should get plenty of exposure.

The last option is to open-source it. As a huge fan of open source software I’d love to do this, but I’m loathe to supply a finished game that someone else can release via the App Store themselves.

Anyway, the game in its present state is playable but has no presentation screens. The CPU is set to its hardest level, and restarting a game requires the player to restart the application. It has a few improvements over the DS version:

  • The larger screen let me include the blocks at the bottom of the two grids;
  • The garbage egg landing animation is more effective;
  • Eggs drop off the bottom of the losing grid when a game ends;
  • It includes the original background graphic from the Amiga game rather than the truncated DS version;
  • The incoming garbage indicator is in the original Amiga position at the edge of the screen, rather than on a separate screen where it can’t easily be seen.

Have a play and let me know what you think. Controls are included in the readme.

2011-06-28

Really Bad Eggs 20110627

Another of my favourite games from when I was growing up is Super Foul Egg. It’s a simple Puyo Puyo clone that excises all of the tedious anime interludes present in the original and focuses exclusively on the gameplay itself.

Really Bad Eggs is my latest project: a DS port of Super Foul Egg. However, I’ve been tinkering with the game a little to try and improve the single-player experience. You can download a copy here:

I’ve tried to bring some of the mechanics of Tetris to Super Foul Egg:

  • The game tracks how many chains of eggs you make;
  • The game includes levels, and the current level determines how fast the current shape drops;
  • The level increases each time 10 chains are made;
  • The game tracks the player’s score.

At the moment, I’m not sure how well the new mechanics work. The game doesn’t have the same draw as Tetris in single-player. Two-player mode (in this case, one player vs the AI) seems to be the only way that Puyo Puyo is really interesting, mainly because suddenly getting garbage dumped in the grid is the only excitement in the game. The game includes two of the Tetris-inspired game types: type “A” and “B”, which reflect the game types in GB and NES versions of Tetris. At present, type “B” is less exciting than type “A”, so I might ditch it.

In any case, the new mechanics are only part of the single-player mode. The player-versus-AI mode uses the familiar Super Foul Egg mechanics, and features an AI that would put up a good fight against the original.

Here’s a screenshot:

2011-06-08

EarthShakerDS and EarthShakerOSX Releases

EarthShakerDS has had about half a dozen releases since the last blog post as I tried to get as much done as possible before the GBATemp Homebrew Bounty deadline. This version has a lot of changes, most of which you won’t notice:

One of the big changes is the inclusion of the “poke” functionality. This allows you to poke an adjacent block using the A, B, X and Y buttons without moving into that block. It’s essential for getting anywhere at all on level 9. Unfortunately, poking has nothing to do with pushing values into RAM via a call to the BASIC POKE function to enable cheats. Authenticity has to stop somewhere.

The other big change is the addition of a level editor. This has been a much bigger job than I’d hoped as I’ve had to write a simple GUI system - stylus-driven buttons, event handlers, etc - to build the interface. Why do that, you ask, when I’ve got a perfectly good GUI system already written? Well, it seems that the M3i Zero at least can’t cope with homebrew ROMs bigger than 3MB. EarthShakerDS includes a few large WAV files that bulk the ROM out significantly. If I include Woopsi I’d make the game unplayable on at least one popular flash cart. When your target audience is people who a) had a Spectrum, b) played EarthShaker on it, c) own a DS, d) own a flash cart, e) are nostalgic enough to want to play EarthShaker still and f) want to play a remake instead of a perfect emulation offered by any of the Spectrum emulators for a DS, you don’t want to exclude members of that tiny audience unless you absolutely have to.

At present the level editor only allows a single level to be edited, saved, reloaded and tested. Supporting multiple levels requires me to create a keyboard and file lister, and haven’t I done all of this before? Gnnk. Level data is saved to “/data/EarthShakerDS”. The folder is created automatically if it doesn’t exist.

I followed the patterns established in Woopsi when coding EarthShakerDS to ensure that it was as portable as possible. This approach allowed me to get an SDL-based build running on OSX very easily:

The OSX build requires OSX 10.6 as I’ve built it with LLVM, Clang, LLDB and Xcode 4, but it should be trivial to get it working on 10.4 simply by switching back to GCC etc. It should also be very simple to get it working under Linux, but as I don’t have a Linux install at present I’m not in a position to make one. There’s one OSX-specific API call used in the LevelIO class to determine the location of the user’s data folder that would need to be altered, but otherwise it’s all platform-independent with a few POSIX I/O calls.

Here’s a screengrab from the OSX build: