We've decided on the main requirements for the next 0.2.0 release! We may add additional issues as problems or quick-fixes are found, but this is the core set of features we hope to have ready for the next major release. The main theme for 0.2.0 is "two." This includes things like 2 or more local player support, 2 or more networked sessions, and 2-channel audio support. Feel free to chime in on any of the discussions or on discord with requests or suggestions for the next release.
We've been approved for GitHub Sponsors! This is a great way to support the project. Additionally we are offering services to help bootstrap your Gamercade development process. Of course, Gamercade and related tools will always remain free and open source forever, however any donations or sponsorships will go a long way in securing the future of the project. If you want to support the project in other ways, please see our support Gamercade for more information.
Gamercade's Audio System is also due for another large improvement. In the current plan, we are hoping to add support for panning and proper stereo sound in 0.2.0. This will also lay the foundation for the audio effects system we plan on adding in 0.3.0 or later. While the console does output audio on two channels, it's the same audio just duplicated on each channel.
These additions require a bit of research, planning, and possibly some code refactoring in order to ensure good comaptibility across different kinds of hardware, while still remaining flexible and high performant as the current sound engine. We don't have anything ready to show you just yet, but things are happening behind the scenes.
As mentioned briefly in the 0.2.0 roadmap section, we are making a big push for supporting larger play sessions. Gamercade relies on p2p technology, which is great for small-scale multiplayer games. We also don't want to limit gamers to strictly requiring one player per game instance. This means that we can realistically support up to 4 separate console instances (possibly up to 6 in ideal network conditions), where each instance could have multiple local players. While we can't confirm what the hard cap is, we know for certain that we want to support different configurations such as (but not limited to):
4 Instances, 1 player per instance, for 4 players total.
2 Instances, 2 players per instance, for 4 players total.
2 Instances, 1 + 3 players per instance, for 4 players total.
3 Instances, 1 + 1 + 2 players per instance, for 4 players total.
The technology can support any number of players, so if there's someone out there crazy enough to organize a 4-instance, 4-player per instance, 16 player game session, we want to give you that option, but due to the networking requirements of a 4-player mesh (or more!) we don't expect this to be the norm.
For this week, we will focus on stability and bug fixing. We have seen a large influx of new users since the release, and are likely to encounter interesting bugs and unique issues. We have already seen a few issues pop up on GitHub, and will continue to focus on these for the time being.
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
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.
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.
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 .wav files. 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 gcclhere
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 -w or --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!
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.
It's been an exciting week at Gamercade this past week! We're going full-speed ahead for our first real release. The community is continuing to grow with more contributors and members in the discord each day! Here's to another great week ahead.
As stated in our last weekly update, we are focusing our efforts on rounding out the whole experience in preparation for our first 0.1.0 release! This will be a big milestone and a culmination of a lot of hard work over the past months. There was a lot of housework-style tasks to be done, like organization of the projects, issue tracking, etc. But from now the majority of these efforts are being tracked by this issue.
From the current looks of things, most of the features are already implemented, with documentation and examples being lacking. Any issue on the nice to haves list will be great to have as additions in future updates - as these are also updates which wont fundamentally break Gamercade by introducing them.
Same as this week, we will continue improving the projects documentation and examples to provide a much better user experience for all future users! Of course, any critical bugs will be resolved if found. Again, the expectation of the 0.1.0 release is sooner rather than later. From a tech standpoint, Gamercade is ready! But we really want to ensure a solid developer in order to make a stronger impact during the big announcement.
It's been an exciting week at Gamercade this past week! We've wrapped up much of the audio features in both the editor and console. The community is continuing to grow with more contributors and members in the discord each day! Here's to another great week ahead.
Since .gif doesn't have sound, start by watching this video:
This video showcases the current state of the editor in regards to audio features. This includes all of the instruments:
Wavetable: Generate or draw waveforms on the waveform chart. Great for chiptunes or other complex sounds.
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 .wav files. They can be pitched and played back at specific notes.
It also includes the tracker-style editor UI, which allows users to create and edit phrases, chains, songs, and sound effects. One great thing about this is that trackers are very efficient in data size. Another interesting point about the way the editor and console is setup, is that it uses the exact same code to generate (synthesize) the sounds on both applications! This means what you hear in the editor is exactly what it will sound like in-game.
Now that audio exists in a functional state in both the console and editor, we have completed the entirety of the core features! It's time to start preparing for our first official release! Much of this is going to involve documentation updates, usability fixes, major bug patches, and other cleanup style tasks. So for the time being, we will pause development on new features in favor of these. While we don't have a specific date set in mind currently, we do expect it to be a matter of weeks, not months.
It's been an exciting week at Gamercade this past week! We finally got audio playback in the console! Audio Editor features are coming next (with active development happening now). The community is continuing to grow with more contributors and members in the discord each day! Here's to another great week ahead.
It's official! Gamercade Console now has sound! After a bit of a monster PR, we finally have sound effects playing and triggerable by games! This also includes the rolling back of the sound state, should that be necessary in some multiplayer gameplay. While the rollback is not completely perfect, this is an exciting milestone, since proper sound and music support is a necessity for any successful game (and game engine or library).
Now that sound exists within the console, we have started development on the audio editor. This is currently being tracked on this pr. Once it's done, game developers will be able to create and edit instruments, and use these to create songs and special effects. This is also following a "what you see is what you get" kind of approach, where the code used to playback sounds in the console is the exact same as that in the editor. Gamercade takes its audio seriously, and you can learn more about the coming features on the Audio Spec page.
It's been an exciting week at Gamercade this past week! We are continuing to make solid progress on the audio tech that will power the engine the editor, and the community is continuing to grow with more contributors and members in the discord each day! Here's to another great week ahead.
We are excited to announce that the Gamercade team has partnered up with Spicy Lobster to collaborate on a game project: Hoppy! A spiritual successor to Jump n' Bump or Super Mario War, Hoppy is a fast and fun game about running, jumping, and bonking your friends. It's an ideal match, since Gamercade makes writing small, networked games simple and fun. The project is actively seeking contributors, and will be a completely open source developed game.
We have combined all of the main Gamercade repository into a single place! gamercade_console is the new repository which combines all of the separate projects into a single one. This helps with organization of issues which span across multiple projects, as well as making sure that each project, and their dependencies, are all compatible with one another. From this point onward, everything related to Gamercade itself, will take part in this repository.
After quite a large rewrite, the audio engine is getting much closer to hit a state where it's usable in engine. Who knew audio programming was so difficult? We didn't, but we do believe that the current solution fits the unique requirements of Gamercade much much better: Lightweight, retro-style sounds, while also supporting full gameplay rollback with minimal sound glitches. There is currently a draft PR open on the main repository, so expect to see (or hear) audio in your favorite games soon!
Similar to the past few weeks, the main focus area is on both console and editor audio integration. We are getting closer to finally having sound as the next major feature and are working hard to get this ready as soon as possible. Expect to hear some rudimentary music and sound effects in console games soon, with the editor to follow shortly after. Take a look at our audio specs to see what's coming.
Gamercade is starting to make its way around! We've had numerous questions and suggestions made in the community Discord, and both user count and engagement are growing. It's important to have a strong community in a project like this, so we will continue to do what we can to keep things as strongly as they are now, or even better.
It's been an exciting week at Gamercade this past week! Not only is great progress happening on the tech side of things (namely, audio), we've also seen our community double in size! Maybe you saw our entry in the This Month in Rust GameDev #36 article? Here's to another great week ahead.
The team has been very busy over at Gamercade Audio building out the entire audio system from scratch. And over the week we've reached a great state with many of the most important features implemented:
Wavetable sampler, and FM synth instrument support, each with fully adjustable parameters and ADSR envelope.
8 + 8 Audio channels, each with configurable instruments.
Tracker-style playback of songs and sounds, bpm, and instrument swapping during playback.
Sound State rollback, which is vital for networked games.
A simple data serialization format to support saving/loading of sounds and editor values.
All of this packed into an easy-to-use SoundEngine abstraction which handles the audio thread completely.
While some of the details are still being ironed out, a few other members of the Rust Gamedev community has contacted us with hopes of building a collaborative, open source game together. We can't share too much about this yet, but expect good things coming soon. With this completed, we will see an even bigger rise in community outreach and more chances for collaboration with the community.
While the foundations for audio are in place, they still need to be integrated into the engine and editor. This includes designing and implementing the audio api, editable parameters, as well as building out the entire audio editor feature set for the editor. Both of these tasks are quite a big undertaking, but solid progress is being made in all areas. We are also making minor tweaks and enhancements to the audio engine to support cool new things like stereo output and special effects.
We are continuing to work on showcase examples to really show off the intended use case of Gamercade. Currently, this is primarily the collaboration game featured above, with actual 2d art assets, and a proper game loop. We are still working on a cutting-edge 3d example game to show off the raw power of WASM, with all Gamercade features pushed to the limit.
We're going to start posting weekly updates, starting from today! This one is a bit special because it will contain two weeks, but expect normal weekly updates from this week onward.
It's been an exciting week at Gamercade these past two weeks! We had our initial release, open sourced the project, and also made a lot of great additions to the editor, console, and example projects. Let's take a look at some of the cool things that happened recently.
As mentioned in our previous blog post, we've open sourced the project! We believe this is the best direction for the project both from a community and technological standpoint. You can see all of our official repositories (including this site) on our GitHub page. We are actively seeking contributions of all kinds.
Automated Edge builds for Windows, Mac, and Linux
While you can build the project from source, not everyone wants to clone from Git and build the entire project. We've also added automated edge builds for all major platforms. Check out our downloads page for more details about this.
Output from the editor is now compressed. While this is a breaking change, we will now see a drastic reduction in size in the output .gcrom files that the editor produces. This means that all projects will need to be rebuilt by a newer version of the editor in order to be used by the most recent iterations of the console. This makes it much easier to share and download games.
While using the transparency mask for drawing sprites does work, it did become a bit of an annoyance having to set one up for each and every palette. Now both the console and editor support using specific colors with zero alpha, creating a much easier workflow for working with transparency. This only affects draw sprites, and does not break existing transparency mask functionality.
We've published and will maintain the gamercade_rs crate, which provides some helper functionality and a safe abstraction over the raw Gamercade Api. If you're a Rust developer looking to make games for Gamercade, we definitelly recommend using this crate as it can help remove much of the complexity when dealing with the Rust-to-WASM gotchas.
TextApi has been started! Send text messages to the console, helpful when debugging.
RandomApi has been implemented! Easily generate random numbers in a multiplayer friendly way.
MultiplayerApi has been implemented! Query information about the active game session.
init, update, and draw functions are now optional. Now it's possible to build a game which only uses some of these functions, removing the need to export empty functions in your code even if they aren't used.
Fixed with height of high resolution to properly be 640 x 360. Previously it was incorrectly set to 640 x 320.
We are investigating and building prototypes for the audio system to lay the foundation for sound and music in Gamercade. While we don't have a set deadline yet, we do hope to get this in everyone's hands as fast as possible. However, we can confirm that we do want to support the importing of sounds as samples (as well as generating your own!) and the ability to play them back as individual notes like a keyboard & tracker.
While our community is still small, we are still actively trying to increase awareness of the project and help streamline the onboarding process for game developers, players, and contributors. Expect to see more information about the project on your favorite places!
We are continuing to work on showcase examples to really show off the intended use case of Gamercade. Currently, this includes some more feature-rich and complex multiplayer games, with actual 2d art assets, and a proper game loop. We are also working on a cutting-edge 3d example game to show off the raw power of WASM, with all Gamercade features pushed to the limit.
Gamercade is officially open source! You may have noticed the addition of the GitHub at the top of the page.
After a lot of discussion, we believe that this is the best choice of action for the future of Gamercade, as we are a community driven project. By open sourcing the project, we move much of the power and direction into the hands of the community. With your help, we can make Gamercade the best it can be!
If you want to contribute to the project, consider checking any of the issues listed on official project repositories. This isn't only limited to developers! Documentation, tutorial, and example suggestions are welcome. We are happy for your contributions!