Polycade Game Dev Guide

How to adapt your game for the Polycade ecosystem

The Basics

Most games will have a "home" version and an "arcade edition". As a general rule, the arcade edition is a simplified or streamlined version of the game, while the home version gives the player greater control over modes and settings.

The minimal requirements for a game to work with Polycade:

  • Windows 10 Executable, or ROM file for console emulators
  • X-Input controls that don't use analog joysticks
  • Game opens in fullscreen mode
  • Menus controlled with X-Input. Important control standards:
  • Players can navigate menus using the D-Pad
  • "A" is "select"
  • "B" is "back"

Home Version

Aside from the basics above, there are no special requirements for a home version.

Arcade Edition

Games that appear in commercial environments need to meet certain requirements.

Reduce Menu Time

Players in commercial environments have extremely short attention spans. Because of this, we need to make the experience as close to “Press Start To Play” as possible, otherwise the player may lose interest and walk away.

  • Single Player / Multi Player: Remove this. Instead of making the player choose prior to game start, make every game initiate a single player game. Include a player 2 (& 3 & 4) call to action clearly visible on screen: "Player 2 Press A To Join". Many games will need to restart the round when additional player(s) join. 
  • Skin selection: Remove this. Instead, allow the skins to be set via the Polycade config file (see below). This will allow players to configure their chosen skin on the account level, preselected for all games they play.
  • Level Selection: Remove this. If your game does not have progression, then remove the level selection screen and randomize the level chosen in each game. If your game has progression, then place the levels in a pre-chosen order, easiest to hardest, and remove any level selection screen. Note that individual player progress can be recorded by the Polycade player account system (see "Save State" below). 
  • Character Selection: This is an acceptable menu screen, and players are used to it. Ensure your character selection is simple so that a first-time player would not be confused.
  • Game Modes: Remove this. If your game has multiple modes, choose a “main” mode and remove the other modes from the players view. Allow the game mode to be set via the Polycade Game config file. 

Easy To Learn, Difficult To Master

Arcade games should generally be easy to learn. If there is complexity in the game, it's best for this complexity to be "unlocked" or gradually introduced to the player over time, so that they're not required to learn too many concepts at once.

Also, by leveraging Polycade's player login system, player progress can be preserved across any machine the player visits, allowing complexity that is “unlocked” by the player. This ensures that novice players will have an easy, simple experience and experienced players will have access to the additional features / modes of the game.

Polycade Integration

Integrating with Polycade's features enables more rich player experiences, ultimately driving higher revenues

Player Username

Polycade's player account system allows players to easily login on any Polycade-powered system. Additionally, up to 4 players can login simultaneously, allowing games to load unique player profiles for each player.

When the Polycade software launches your game, it will pass a username for each player as command line arguments. You can test this by launching your game via command line, like this:

Leaderboards

In order to integrate with Polycade's leaderboard system, simply print our formatted JSON to STDOUT. You may print multiple types of high scores at once by including multiple rows of key/value pairs in the data array. See below for an example that exports 3 types of high scores. Note that the "key" value is arbitrary, you can make up your own keys.


{
    event: 'score',
    payload: {
        playerName: 'BallaShAwTCalla',
        data: [
            {key: points, value:1100},
            {key: time, value:'00:00:30:0000'},
            {key: rank, value:2}
        ]
    }
}

Achievements

Integrating with Polycade's achievement system can help drive sales and awareness around your game, as it will enable your game's achievements to be linked to our forthcoming platform-level quest system.

When a player completes an achievement, notify our API by printing JSON to STDOUT


{
    event: 'achievement',
    payload: {
        playerName: 'BallaShAwTCalla',
        data: [
            {name: "Sugoi Combo"},
            {name: "Careful Descent"}
        ]
    }
}

Saves

Polycade can preserve player save files, enabling games to have progress that can be spread across many experiences and any Polycade powered system.

In order to leverage Polycade's save-sync, simply specify (in the Polycade game config file) the file paths or directory paths where your game save files are stored, and Polycade will handle the rest.

Game config file:


{
    gameName: 'Vampire Survivors',
    saveFiles: [
        '%USER%\AppData\Roaming\Vampire_Survivors\saves'
    ]
}

Player Settings

!This feature has not been fully formulated yet!

Polycade's player account system enables games to have player-level settings so that players can pre-configure their profiles, skins, and more on a per-game basis. This enables games to have an ultra-fast time-to-play while also giving players the power to customize, rather than dragging them through a chain of selection screens on every game start.

We additionally include a UI in the player account login that enables the player to choose any unique settings that the game makes available.

Player settings are handled as a key-value JSON file.

Didn't find what you were looking for? Contact us.