Quick Start Guide
Game development kit for the Gamewall platform. Includes build tools integrated with the Gamewall Simulator, an API mock, and developer documentation.
⚠️! WARNING !⚠️
The compiled outputs of this package will not run outside of the Gamewall environment. Sign up here for a developer account.
Getting Started
The recommended way to start a new game project is through the command-line utility:
npm create gamewall@latest
(Or, alternatively, npx gamewall create
)
This will initialize a TypeScript-based repository with the Gamewall SDK already installed. Alternatively, you can manually install the SDK:
npm install gamewall
We recommend adding the following entries to your scripts
entry in your package.json
as well:
{
"start": "gamewall serve",
"build": "gamewall build --output-folder dist"
}
These are added by default to a project created with the command-line utility. We recommend using the start
command for the development process, which is fully integrated with the simulator, allowing for quick and seamless testing. The build
command can be used to generate production-ready game packages. If you'd like to create a developer-friendly package to share internally, you can run gamewall build --dev
to generate one.
Should you opt for the manual install, you will also need to create a manifest.yaml
file. Refer to the manifest page in the docs to see your full range of options. Here is a minimal example of a manifest:
gameWallSpec: '1.0'
name: My Game # human-readable name
codename: my-game # machine name (limited to a-z, 0-9, and -)
description: | # a short description that shows up for your game entry
An example game to show the Gamewall SDK
thumbnail: thumbnail.png # an image for your game entry, in ./assets
author: Me Incorporated # human-readable author name
version: '0.1' # game version, must follow semver
screensAvailable: # an array of screens your game can show
- screen
- controller
defaults: # specifies which screens to show unless otherwise specified
screen: screen # the default choice for large-format screens
controller: controller # the default choice for user devices
playerCount: # specifies how many players your game is able to support
min: 1
max: 4
settings:
tickRate: 128 # number of discrete timesteps per second
queueLength: 80 # number of ticks retained in memory
autoInputDelay: true
The manifest is used to specify any and all metadata the execution environment needs to know about. Only the screens and user devices will execute your game code. Notably, the Gamewall servers do not execute your code, therefore some implementation details, like the tickRate, player counts, and input delay settings, need to be exposed in this manifest. Learn more in our in-depth documentation.
Developing For Gamewall
Once you have the SDK installed, to run the development environment you just need to sign in to Gamewall and navigate to the simulator, then run the start
command:
npm start
(Alternatively, run npx gamewall serve
if you don't have the script configured.)
Running the build tools in serve mode automatically rebuilds and serves the build artifacts on port 31302
, which the simulator will pick up. Your game files should be automatically loaded at this point, and you should see something like this:
[insert build tools picture here]
You can press the play button to run your game and use the additional controls to pause or restart it at any point. The simulator includes a controller in the sidebar, but you can also use the QR code to connect your phone and test with a realistic control scheme.
Additionally, you can connect multiple phones using the QR code to simulate a multiplayer game. You can also share this screen with your coworkers either by
directing them to the share screen page and giving them the 2x6-digit pin for your session, or
sending them the share link generated and displayed under your QR code
They will be able to join either by scanning their own QR code or using their on-screen simulated controls, allowing you to test out multiplayer experiences without being confined to a single screen.
Any code changes you make will be picked up by the simulator while the dev tools are running. The simulator will offer you an option to reload the game, at which point the new version of the game is loaded into the sandbox on all connected devices. You can also opt for a hot reload, which preserves the game state and keeps the game running.
⚠️! WARNING !⚠️
Do not navigate away or use the browser's reload function while you're controlling a shared session. Doing so would disconnect your coworkers.
You can debug the game using the browsers built-in debug tools (commonly activated with the F12
hotkey). Development mode builds are not minified and come with sourcemaps, ensuring a high degree of compatibility with existing browser debuggers.
Publishing For Gamewall
When your game is ready for release, simply run
npm run build
(Or npx gamewall build
if you don't have the scripts configured)
This will generate a .gwpack
file containing your production-ready game code and all your assets, as well as a marker that the build is intended for production. You can then submit this build on our game submission page where, if accepted, it will become available in live environments.
In-Depth Documentation
Once your environment is set up, please refer to our in-depth docs to learn
how the game loop operates
how to render visuals
how to process inputs
how to set up your environment
how to specify a manifest
or use our API reference to see the full range of methods available to you.
If you're new to Gamewall, we recommend starting with a project generated using the command-line tools, which provides a basic boilerplate setup, and following the tutorials starting with the manifest and the game loop.
Legal Disclaimer
Copyright (c) 2024, Mondriaan DC Kft.
This software is intended for use to contracted partners of its respective authors. Access to this software shall not be construed as a license to use, modify, or distribute this software. License to use this software is granted only through a separate written agreement.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.