Skip to content

Microgame Config

space edited this page Jun 2, 2024 · 20 revisions

0) Choose Your Author ID

You must prefix all of your assets with a unique author ID.

  • Your author ID should be some variation of your name or username.
  • Your author ID should stay the same for all your assets.
  • Make sure nobody has the same author ID as you.
  • Feel free to use shorthand, e.g. net8floz -> n8fl

This prevents naming conflicts between microgames.

If your username is Johndoe and you want to make a wall object, name it johndoe_obj_wall

Your author ID will never be shown in-game.

1) Create Your Dev Folder

Make A Metadata Script

Open the "Microgames" folder in the resource tree and find the script named example_metadata.

Make a copy of this script and rename it to {YOUR AUTHOR ID HERE}_metadata.

Make A Dev Folder

Create a new folder in the "Microgames" folder. Name it with your author ID.

This is your dev folder.

Move the metadata file made in the previous step into your dev folder.

You will be creating folders for your microgame(s) and storing all your assets inside this folder.

2) Fill In Your Metadata

Open your metadata script and uncomment the function call.

The data in this function tells Loungeware how to run your microgame.

You can register multiple microgames in your metadata script with multiple function calls.

Microgame Key (String)

Give your microgame a unique key. This is the first argument of the function.

Your microgame key must be unique and it must be prefixed with your author ID.

Property Values

The next argument is a struct containing property values.

You may not know what game you're going to make yet, so feel free to use placeholder values and edit the metadata script as you go.

config_version (Int)

The current version number of the example configuration script.

Do not change this value -- it will be used if the config format is updated.

game_name (String)

Display name for your microgame.

This name will be shown in-game as well as on the website.

  • Make sure your name fits in the game window (See below image for example).
  • Use whatever name you want!

authors (Struct)

Your author ID and a display name as a key/value pair in a struct.

The display name will be shown in-game as well as on the website.

Use your unique author ID as the key, and a display name (String) as the value. Example: authors:{johndoe : "John Doe"}

  • You can add multiple authors:
creator_name:{
  johndoe : "John Doe",
  janedoe : "Jane Doe"
}
  • If you add multiple authors, they will be displayed in-game with an ampersand linking them: John Doe & Jane Doe.
  • If one of your authors does not already have an author ID, you can make one up for them.
  • You should not include minor credits in here -- for that, use the "credits" property.
  • If you think having this property as a struct is kinda weird, you're right, but it's a long story.

prompt (String)

Prompt to be displayed when your microgame begins.

The prompt explains the game's objective to the player in one or two words.

  • Try to keep this as simple as possible. For example, a game about putting out a fire would have a prompt like "DOUSE".

  • An exclamation mark (!) will be automatically added to the end of

    the prompt.

init_room (Room)

The initial room that loads for your microgame.

  • If you want to use multiple rooms for your microgame, ask in the discord.

view_width / view_height (Int)

The initial view width/height for your microgame.

You can use any view size as long as it has an aspect ratio of 3:2

  • -1 defaults to room width and height.
  • If you are not sure, set these values to 480x320.
  • You can change this at any time in-game by calling camera_set_view_size() on CAMERA.
  • Your view will be stretched to fit the gameboy screen (480x320, 3:2).
  • If you are making a pixelart game, then it is strongly advised to use one of these resolutions: 480x320, 240x160, 120x80, 96x64.
  • WARNING: Loungeware sets your view size during the room start event, which comes after the object create events. If you try to change the view size in an object create event, then the game is going to change it back immediately! If you want to change the view size right away, you need to wait until after room start.

time_seconds (Int)

Length of the microgame timer in seconds.

Every game has a timer displayed at the bottom of the screen. When the timer expires, the microgame is over and the current win/lose state is confirmed.

  • You cannot use floating point numbers for this property -- it must be an integer.
  • A function exists in the public_functions script for ending the timer early, but most games should not use this.
  • Try to aim for a 4-6 timer. The absolute maximum is 12 seconds.
  • After you confirm your win/lose state, use the remaining time to show some kind of victory/loss animation. See Warioware for examples.

music_track (Sound)

Audio resource to be used as the music for your microgame.

This track will be played when your game starts, and will automatically fade out when the game ends.

  • Set this to noone for no music.
  • If you want to handle playing music yourself then you must use the microgame_music_start(...) function. Details can be found in the public_audio_functions script.
  • If you do not want to make your own music, there is a Public Music folder in the project that anyone is allowed to use.

music_loops (Bool)

Whether to loop the music_track.

interpolation_on (Bool)

Whether to interpolate colours between pixels during your microgame.

Non-pixelart games should have interpolation turned on so game art looks smoother.

  • If you are making a microgame with pixelart then set this to false.

cartridge_col_primary / cartridge_col_secondary (String | Array)

The colours for your game cartridge.

Every microgame in Loungeware has a cartridge associated with it. The cartridge will be shown in the transition scene before your microgame is played. It will also be displayed in the gallery.

  • If this property is a string, it will try to be read as hex (RRGGBB). You may prefix your hex string with "$", "#", "0x", or no prefix.
  • If this property is an array, it will try to be read as [R, G, B] on a scale of 0-255.

cartridge_label (Sprite)

A sprite to be used as the cartridge label. The sprite should be 152x72.

  • This label will be shown in-game as well as on the website.
  • Sprites that are not sized correctly will be rejected by the game.
  • The first frame of the sprite will be used.

default_is_fail (Bool)

Whether or not your microgame defaults to a lose state

If this is true, your game will be counted as a fail if the timer runs out before microgame_win() is called.

If this is false, your game will be counted as a win unless you call microgame_fail().

  • Most games will have this set to true, but there are types of microgame where this could be useful. For example: A game where the prompt is "Survive!" and you have to avoid projectiles until the timer runs out.

supports_difficulty_scaling (Bool)

Whether your game supports difficulty levels.

  • DIFFICULTY is a global variable from 1-5(int) that increases as the player continues to play in Arcade Mode.
  • You can check what the current difficulty level is and tune your game accordingly.
  • Difficulty scaling is optional, but we highly encourage you to include it!

allow_subpixels (Bool)

Whether your game should allow sub-pixels.

  • If set to true, the application surface will be automatically resized to your window size. This means that low-resolution games can have rotated sprites, or sprites drawn at subpixels.
  • If set to false, the application surface will be automatically resized to your view size.

credits (Array)

This array should contain the names of people you want to credit, as strings.

  • These credits will be displayed in the gallery screen for your microgame and on the website.
  • This is a good place to credit the people who contributed to your microgame, such as music makers. You may also use it to credit websites and archives, like freesound.org for example.
  • You can use a hyphen to show what you are crediting each person for if you want to. Example: ["John Doe - art", "Jane Doe - Music"]

enter image description here

date_added (Struct)

Date the microgame was added to the project Format the date like this:

{
  day : ... , // a number between 1 and 99
  month : ... , // a number between 1 and 12
  year : ... , // a number between 2000 and 2099
}
  • New games show up first in the dev menu, so you should fill this out now to easily access your microgame for testing.
  • You may be wondering: "is this the date I started working on the game or the date I submitted it"? It doesn't really matter! The date is used to loosely sort microgames by the order they were made.

is_enabled (Bool)

Whether your game will show up when the game is not in developer-mode. Set this to true.

  • This might be turned off by one of the project managers if your game has a game-breaking bug or needs fixes.
  • Developer-mode will always run your game regardless of this setting.

supports_html (Bool)

Whether you have tested your game with the HTML5 export and confirmed that it works properly.

HTML5 can be a little weird. Just because your game works on Windows doesn't mean it works in HTML5, so we need you to confirm that your game works normally when using this export.

  • Reminder that the HTML5 export is now included in the Indie Tier of GameMaker, which you can get for free if you already had a license before the change to subscriptions.
  • If you can't test this for some reason then you could ask someone on the discord to check it works for you.
  • YoYo have some good info about debugging in HTML here.

supports_pi

Whether your will run on a Raspberry Pi 4

Generally, games that work on Windows work on Raspberry Pi. The major limiting factor for the Pi is mainly graphics performance.

If your game's texture swaps and vertex batches are both lower than about 60 (including base game) it's fine to turn this on even if you don't have a Pi to test on.

show_on_website (Bool)

Whether or not to show your game on the Loungeware webite.

You should set this to true!

description (Array)

An array of strings which briefly describes your microgame.

Each array entry is a new line.

This description will be shown on the Loungeware website (and maybe the gallery at some point in the future). Here is the description from Penguin Blast, as an example:

description: [
	"The evil orange cat with sunglasses has kidnapped the fair Mimpy Penguin. The only problem? This penguin can't swim."
],

how_to_play (Array)

An array of strings which briefly describes how to play your microgame.

Each array entry is a new line.

These instructions will be shown on the Loungeware website (and maybe the gallery at some point in the future). Here are the instructions from Reach For It, Mister as an example:

how_to_play: [
	"Match the buttons on screen before your opponent does! Last hat standing."
]

3) Party Time!

Now that your metadata is all filled out, you can start developing your microgame. See this page to learn how to test your game!