What's A Microgame?
Microgames are single-screen, single-objective games lasting around 5 seconds, designed to be presented to the player in rapid-fire fashion. Cosplay Crunch is a collection of cosplay- and crafting-themed microgames, intended to mirror the frantic pace of last-minute crafting.
Design Considerations
Microgames should have a cosplay/crafting theme, but eclectic visual, audio, and gameplay design is encouraged. Gameplay-wise, microgames should have a single objective that is clearly conveyed to the player through choice of verb and visual cues. A frustrated player is not a returning player. Keep in mind that a microgame that seems well-balanced when played in isolation might feel unfair when the player is rapidly context switching between games. Accessibility is also important to consider, e.g., don't rely on audio being heard.
Writing A Microgame
Microgames are implemented similarly to pared-down Swadge modes: they have a similar init/main loop/deinit cycle that is managed by the Cosplay Crunch game mode. Microgames go through a series of states as defined in cosCrunchMicrogameState, allowing them time before gameplay to display helpful animations and time after gameplay to congratulate or taunt the player. Once a player succeeds or fails the microgame, send the result with cosCrunchMicrogameResult() to signify that the microgame is over. If you don't send a result, the game will be failed once the timer runs out.
|
const tintColor_t * | cosCrunchMicrogameGetTintColor (void) |
| Get a color set (base/highlight/lowlight) suitable for greyscale tinting to use for this microgame. Using tint colors is optional, but microgames that can easily swap colors (painting, drawing, etc.), especially if the colors can spill over onto the background, are encouraged to do so.
|
|
wsgPalette_t * | cosCrunchMicrogameGetWsgPalette (const tintColor_t *tintColor) |
| Get a palette suitable for tinting a greyscale image using the drawWsgPalette*() functions from wsgPalette.h.
|
|
void | cosCrunchMicrogamePersistSplatter (wsg_t wsg, uint16_t x, uint16_t y) |
| Microgames can leave paint, marker, glitter, and whatever else on the mat that persists across a play session. This will copy whatever is in your wsg to the background, where it will stay until it gets drawn over by another microgame or the current game session ends.
|
|
void | cosCrunchMicrogameResult (bool successful) |
| Submit the player's result of the currently running microgame. Every microgame must have a success condition, but a failure condition is optional. The microgame timer running out will automatically send a failure result unless you implement fnMicrogameTimeout.
|
|
const tintColor_t * cosCrunchMicrogameGetTintColor |
( |
void | | ) |
|
Get a color set (base/highlight/lowlight) suitable for greyscale tinting to use for this microgame. Using tint colors is optional, but microgames that can easily swap colors (painting, drawing, etc.), especially if the colors can spill over onto the background, are encouraged to do so.
This function returns a different color set every time, so microgames should only call this once to get the color assigned to them.
- Returns
- A pointer to a tint color set
void cosCrunchMicrogamePersistSplatter |
( |
wsg_t | wsg, |
|
|
uint16_t | x, |
|
|
uint16_t | y ) |
Microgames can leave paint, marker, glitter, and whatever else on the mat that persists across a play session. This will copy whatever is in your wsg to the background, where it will stay until it gets drawn over by another microgame or the current game session ends.
Your microgame's destroy callback is a good place to call this from, since no drawing takes place while games are being switched out. You can also call this multiple times during gameplay if building up splatter incrementally would work better for your microgame.
- Parameters
-
wsg | An image with transparency to be copied onto the background |
x | Screen x coordinate to draw |
y | Screen y coordinate to draw |