Core Design Principles - efroemling/ballistica GitHub Wiki

Although Ballistica is technically an engine, it is unique in its scope compared to other game engines. Most engines provide low level building blocks to facilitate creating any type of game in any type of visual style, but that is not the goal here. Ballistica aims to provide a very specific framework for very specific types of game in a very specific style. At the moment BombSquad is the only example, but the hope is that most of Ballistica's tech and art could be repurposed for other games or apps in the future (or could simply support a nice variety of gameplay and mods for BombSquad).

Gameplay

  • Should be playable by up to 8 players simultaneously on a single device connected to a large TV. Other form factors such as smart phones, desktop computers, etc. are secondary and this 'couch multiplayer' form factor should always be kept in mind. This means UI elements should be designed to gracefully display info for up to 8 players at once, maps should be designed small enough to allow all players to remain visible at reasonable sizes on a single screen, etc. Note that games may involve more than 8 players, but this should be seen as a reasonable limit to be playing on a single device.
  • Should be built around the concept of 'squads' of players joining together to compete in activities which may include taking on other squads or competing amongst themselves in free-for-all or cooperative styles of play. A squad may consist of any combination of people on any number of devices. (so 8 on a single TV, or 4 on a TV and 4 more on a tablet, or 8 on individual phones, etc.)

Controls

  • Should be playable with a single analog stick and 4 buttons in the standard diamond shape. Note that other controls such shoulder buttons and triggers may be given unique functions, but those functions should either be alternately available via the 4 base buttons, or else used for functions not necessary for gameplay (such as taunts). An example of this is running: triggers and shoulder buttons can be useful for this purpose, but players lacking those buttons can fall back to holding any button to run. The 'BombSquad Remote' app available for Android and iOS provides a convenient way to test against this minimum control set.
  • Support for non-analog d-pads is considered nice-to-have, but game design should not limited by this, as d-pad-only controllers are very rare these days. So game designs should feel free to require players to move at arbitrary angles and speeds and not increments of 90 degrees, etc.
  • Visual representations of buttons on screen should depict them solely based on position (top, left, bottom, right) and only include button names if it is reasonably certain that they match the labels on all controllers present (for instance on a console).

Visual Style

  • A 'hand-crafted', 'stop-motion' look. To achieve this, it is important to build objects in real life out of clay, building blocks, or common household items and recreate them as 3d models using photogrammetry. Any tools and workflows should be built keeping this style target in mind.
  • While realism and visual quality is important, the designs themselves should feel simple and unpolished; like a diorama built by a child for use with their action figures or handmade clay characters. The look should evoke a feeling of playtime and silly fun.
  • It is certainly possible to create other styles within the engine, but elements matching the above descriptions will be prioritized in any sort of public asset listings, in-game marketplaces, rating systems, etc.

Tech

  • Limited size 'tabletop' worlds with single 3/4 perspective vantage point. It should be assumed that most everything in play will be visible in camera at a given time, and the available space to fill is limited, so optimizations such as frustum culling or selective simulation can be skipped. The visible space to fill is limited, so techniques such as tiling of models or textures can largely be avoided in favor of unique elements throughout. Background models and shaders can be 'cheated to camera' since camera position will not vary significantly aside from sliding side-to-side or up-and-down or zooming in and out.