After over half a year in development, we are happy to announce Gamercade 0.1.0!
Gamercade, at its core, is a neo-retro Fantasy Console that runs WASM games. But it's also a bit more than just that.
The main features of Gamercade are:
- Simple and Powerful - 2d Rendering, Input, and Audio all included.
- Language Agnostic - Write in your favorite language and compile to WebAssembly.
- Tool Agnostic - Build assets using your favorite tools. Bundle them with the Editor.
- Seamless Multiplayer - Built-in p2p rollback lets you get multiplayer "for free."
- Collaboration Friendly - Save work-in-progress as JSON, for easy collaboration.
- Free and Open Source - Free to build, use, and play, forever.
Imagine you are a small team or solo developer, and you want to make a multiplayer game. Here are some of the common issues you need to face in order to have a successful project:
- Your project needs to correctly handle the complexities of online multiplayer.
- You have to market your project well enough to ensure a large player base for short wait times.
- Setting up server hosting, and the costs to keep them running well after release.
- Your game needs to be fun and interesting to play.
With Gamercade, the first three requirements are removed. This creates a more modern development environment which lets game developers do what they do best: Make exciting games!
Every feature and function of Gamercade and its related tools are built with the goals of achieving the following:
- Effortless Multiplayer - The main priority is developing a top-notch multiplayer experience for both players and developers. This means providing an easy-to-use networking solution for developers, and also one which is robust and high performant.
- Empower Creatives - Gamercade is a platform for all kinds of people, of different backgrounds and experience levels. Programmers, designers, artists, and are all welcome. Gamercade should empower creators and allow them to always do their best work.
- "Neo Retro" Game Development - Project scoping is important. Retro consoles are cool, but also constrained and complex. Gamercade provides the balance between retro and modern development. Games are limited by content, but creativity is unlimited.
The console is the first of three applications as part of the Gamercade suit of tools. It's primary purpose is to play awesome games! It does have a few interesting features both for players and developers.
Learn more about the console specs and features here
Input & Controller
The standard Gamercade controller is similar to any modern game controller. It features:
- 8-Way Directional Pad
- Four Primary Face Buttons, A B C D
- Two Shoulder Buttons
- Two Analog Sticks (with press-able buttons)
- Two Analog Triggers
- Start & Select Buttons
Gamercade supports drawing primitive shapes like circles, rectangles, and lines. It also has full support for customizable palettes, sprites, and sprite sheets.
Each palette supports up to 64 colors, including alpha on/off. Each game can support up to 256 color palettes, giving a possible total of 16,384 unique, user-definable colors. Sprites can be drawn using any palette.
Gamercade has a simple and familiar tracker-like audio interface. The console supports up to 8 channels of audio, and an additional 8 channels for background music. Each of these channels are synthesized by the console, live, at runtime. Sounds and music are generated from a number of different, fully customizable, instrument types, such as a wavetable synthesizer, an FM synthesizer, or a sampler.
Thanks to the Fantasy Console abstraction, each and every Gamercade game supports multiplayer! This is completely abstracted out of the game code, so writing an online multiplayer game is simple! The console removes any notion of the network, and instead exposes a simple "controller and slot" style interface. Each networked player is simply seen as a second controller to the game. If you can write a local multiplayer game, you can write an online multiplayer game with Gamercade.
Bindings, API Docs, and Example Projects
Since Gamercade gams are built from WASM code, there are many different programming languages you can use. We have compiled a list of popular game development and WASM languages, and included both sample projects and bindings to the Gamercade Api as well.
Of course, if you'd like to work with the raw api itself or develop your own bindings, we have fully documented the api here.
- Variable Screen Resolutions - Pixel Perfect scaling, from 128x72 up to 1920x1080.
- Custom Frame Rates - Adjust the console's frame rate to your liking, from 24 up to 240 frames per second.
- Gamepad Emulation - No gamepad? No problem. Use your keyboard to simulate a gamepad, including analog controls.
The editor is the second application from Gamercade. It is responsible for organization, creation, and editing of all assets used by the games. This includes things like setting up palettes and sprite sheets, but also creating instruments, songs, and sound effects for the games.
All in-progress games are saved in a source-control friendly format. You can open, save, and share your works freely and confidently.
The Editor is also responsible for bundling and exporting games into the format usable by the console. Learn more about the editor here
Adjust settings about the game itself and console configuration. Set the games graphical resolution, tweak the resolution, and define the player count for the game. All done via an easy-to-use graphical user interface.
The graphics editor is responsible for all palettes, sprites, and sprite sheets in your Gamercade games. Create sprites in whatever application or workflow you wish. Then, import them into your games using the included tools.
- Palette Editor - For creating and editing palettes and their colors, and preview changes on sprites.
- Sprite Sheet Editor - For defining, editing, and organizing sprite sheets. Includes a sprite atlas importer and palette previewer.
The Audio Editor is responsible for all sound related things in your Gamercade Games! All instruments, background music, and sound effects, are created and modified here. But here's an example to listen to instead:
The sound engine produces all of the sounds via instruments. Think of them as a source of sound, rather than a musical instrument. Instruments can be triggered on and off, and also be set to play at specific frequencies. This can be done via game code, or by triggering songs or sfx, which playback a predetermined series of chains and phrases.
Gamercade features different kinds of instruments. They can be created and edited by using the instrument editor. Each of these instruments come with their own pros and cons, and each are able to produce different kinds of sounds. Experiment with the ones you like. Gamercade features three kinds of instruments:
- Wavetable Synth - Great for chiptunes or other complex sounds. Generate pre-defined waveforms using the generator, or click on the chart to modify them frame by frame.
- FM Synth - A 4-op FM synth, similar to the Yamaha YM2612 found in the Sega Genesis / Mega Drive. It can be complicated to use, but can produce tons of unique and interesting sounds.
- Sampler - Playback pre-recorded
.wavfiles. They can be pitched and played back at specific notes. The most flexible, but also uses the most amount of space.
The tracker editor modes are responsible for defining the playable sequences in your games. All songs and sfx are composed of a series of chains and phrases, which are a series of note frequencies and the instruments that play them.
Each of the tracker modes features a similar interface: multiple rows with spaces for data entry. The track will always flow from top to bottom, playing any of the entries (if they exist) in sequence. They will continue to play until they are finished by reaching the end of the sequence.
The third and final tool is GamerCade Command Line Interface, also known as
gccl. This provides a collection of use scripts and tools for working within the Gamercade ecosystem. It's especially useful for developers who want a fast cycle of edit-build-test for their games. Learn more about the
Bundling & Console Modes
The primary use for
gccl is being able to export and bundle games via the command line. This is much faster than the methods using the editor to export the game files. By using
gccl bundle and providing arguments to the path of the code, assets, and output files, users can quickly and easily bundle their games for rapid development.
gccl can also be used to run the console. This is invaluable when paired with the concept of bundling above. Users can execute commands like
gccl console rom [PATH TO ROM] to automatically launch the console and run the game at that desired path.
By using the
--watch flag, the
gccl can automatically re-run any commands. For example, taking the following command from above
gccl -w console rom [PATH TO ROM] will automatically launch the console whenever any file change is detected on the game rom.
Gamercade has come a long way since the beginning. While it has all of the core features ready to go, there is still a bright future ahead. Some of the next features we want to add over the next few months are:
- Stereo Sound Support - Left/Right panning for music and sfx.
- Instrument Presets - Community built presets of high-quality instrument sounds.
- Audio Effects - Slides, reverb, chords, anything to make our sound engine even better.
- N-Player Multiplayer - Support for 3+ multiplayer games, with multiple local and networked players.
- More Language Bindings - Bindings for other popular languages like C, Go, Odin, and more.
- Text Api - Define fonts in the editor, and draw text easily in the console.
- Online Games Directory & Platform - Search, upload, download your favorite games, and find other people to play with.
Of course, we are open to suggestions and comments from the community!
Join the Community
If this sounds interesting to you, consider joining the community! Currently, we're mostly active in discord. Gamercade is also completely open source and open for contributions and suggestions. We'd love to hear about all the cool stuff you're building.
Head on over to our downloads page to get the latest release.
Learn more about Gamercade on our official documentation page.