There's a very interesting two-part game jam starting soon called Shape Jam II. In the first part, developers make a game without any artwork other than simple placeholder shapes. Then in part 2, artists take one of those games and add in their own artwork and other assets to make something beautiful.
To do this, you need your game to be moddable — that is, written in such a way that end-users can modify it. Fortunately in Mini Micro, this is almost trivial!
Your game will be just the Mini Micro app itself (which you could rename if you like), with a user.minidisk folder next to it. When Mini Micro launches, it mounts this folder as the /usr disk, and looks on it for a script called startup.ms. If found, it automatically loads and runs that script.
So, you can just put your game in that folder as startup.ms, or you can keep your game in a different file, and have startup.ms just load that. For example, the startup script in Annelids looks like this:
// Add our own "inc" folder to the include search paths
env.includePaths = "/usr/inc"
// Load and run the game!
load "annelids"
run
Either way, once your game is running, it will load images and sounds from disk, which is to say, from that same user.minidisk folder or some subfolder thereof. So your game is automatically moddable — the artists can simply replace your placeholder images with better ones, and relaunch your game.
Loading Images and Sounds
You load images in Mini Micro using file.loadImage
. Once loaded, an image can be drawn into a PixelDisplay, or assigned to the .image
property of a sprite, like so:
HealthPickup = new Sprite
HealthPickup.name = "HealthPickup"
HealthPickup.image = file.loadImage("Objects/HealthPickup.png")
Sounds work much the same way. Mini Micro supports generating sounds from code in the classic 8-bit style, but for this challenge, you'd want to load sound files from disk, so that modders can easily replace them. (My suggestion: supply placeholder sounds that are recordings of you saying things like "Bang!", "Health!", "Ouch", etc.!)
hitSound = file.loadSound("sounds/hit.wav")
hitSound.play
Mini Micro supports sounds in WAV, MP3, and OGG format.
Loading Data
The current release (v0.8) of Mini Micro does not have a JSON library built in, but one was posted to the forums a couple months ago. You can copy that code into /usr/lib (or a custom include directory as shown above), and then you'll be able to load JSON files like this:
data = json.parse(file.open("config/level.json").read
This gives you either a list or a map, depending on which sort of data was at the root of the JSON file.
Customizable Code
If you want to go really moddable, you can point out to your users that the code of your game is itself accessible and tweakable. It's all MiniScript code, which is so simple it is described in a single-page document (plus a few more pages for the Mini Micro API).
To make this especially inviting, divide your project neatly into modules which you import from your main program. See the Annelids project on Github for an example of how this is done.
Why not Mini Micro?
You've seen how easy it is to make a moddable game in Mini Micro. Mini Micro was already used to win one game jam and take second place in another. You can do it too! Best of all, it comes with extensive free tech support from the creator; you'll have me in your corner, providing whatever assistance you need and rooting for you all the way. Why not give it a try?