ROBO-8 MANUAL
=============

Robo-8 is a retro steampunk console. The games for this console are stored in the form of configurations on cartridges. They can be inserted into the console from below. The console loads the configuration and interprets it as a playable matrix of individual letters.

The monitor of the console supports 3 different color modes. These can be changed at any time via the left rotary switch. There is also a button on the right that can be used to pause a running game.


Repository
========================

Robo-8 Github repository


The ROBO-8 configuration
========================

The configuration for a game is formatted in JSON and stored in a separate JavaScript file. It consists mainly of the following objects.

  • Header
  • 3 layers (deco, ground, objects)
  • Player and player projectile
  • Enemy and enemy projectiles
  • Additional styles

There are also these real configuration examples for the two games delivered with the Robo-8 Console: Space Invaders, Striker

Feel free to copy, adapt, change and twist them in any way you like!

All objects contain a collection of properties and their values. They can either be created manually or generated by code.

The configuration has to be registered as shwon in the following blueprint code. All objects are mandatory, so you can start by pasting the following code into a new JavaScript file.

import Config from "./config.js";
Config.register({
  header: {
    // add header properties
  },
  decoLayer: [
    // add deco layer rows here
  ],
  groundLayer: [
    // add ground layer rows here
  ],
  player:  {
    // player properties
  },
  enemyObjects: [
    // list of all enemy objects
  ],
  additionalStyles: [
    // list of additional styles
  ],
  projectileConfig: {
    player: {
      // player projectile properties
    },
      enemy: [{
      // list of projectile properties
    }]
  }
});


The Configuration Objects
=========================

header
PropertyDescriptionExample
nameGame name (serves as identifier)"Striker"
worldSize of letter matrix{ x: 48, y: 23 }
autoscrollPlayground is automatically scrolling (tested only for "scroll-x" and false)"scroll-x"
groundGround gets destroyed when hit by a projectile{ destructable: true }
conditionsHow to win the game ("zero-enemies" OR "end")"zero-enemies"


decoLayer

The matrix you defined in header.world is defining the letters per row (x) and number of rows (y). For each row, a string with x letters has to be provided in an array. The first array element represents the first line of letters on the Console display, second the second etc ...

decoLayer: [
  "          ∙                                     ",
  "     ∙        .            ∙       ᐧ     ᐧ     ⋆ ",
  // for each row one string
]

The deco layer isn't influencing your game mechanic at all.


groundLayer

Defining the ground layer works exactly the same as for the decoLayer. White space serves as "no ground" as any other letter is interpreted and act as "ground".

Please note: Some special UTF-8 letters will take more horizontal space than others (as seen in the example below). The Console will mitigate these differences. For the config just make sure to provide the exact number of letters per row in a String, according to the rules above.

groundLayer: [
    "                                                ",
    "         ▟▆▆▆▙       ▟▆▆▆▙       ▟▆▆▆▙          ",
    "         ▛▃▃▃▜       ▛▃▃▃▜       ▛▃▃▃▜          ",
  // for each row one string
]

The ground layer is influencing your game mechanic. It might act as a collider or obstacle depending on your games configuration.


player
PropertyDescriptionExample
x, ytwo properties for the starting positionx: 20, y: 10
moveHorizontal1 = yes, 0 = no1
moveVertical1 = yes, 0 = no0
minX, minY, maxX, maxY4 properties defining the boundaries of the players "movement box" (player can't be moved beyond the boundaries)minX: 2, maxX: 46, minY: 0, maxY: 22
velocity0.5the speed the player is moving with each step (when greater 1, player moves 1 tile)
letterthe letter representing the character🛦
healththe number of hitpoints a player can loose before losing the game3


Development log

Leave a comment

Log in with itch.io to leave a comment.