Project Moondance is an effort to develop a modern, open source engine specifically for multi-platform rhythm video games, as well as a suite of games which showcase its capabilities.

Hello, I’m Lirodon – a UX designer and a community liaison for Project Moondance

The addition of Lua support to StepMania enabled greater power and flexibility for add-on content such as themes. Since the release of StepMania 5, themes have become more extensive in their functionality, building upon the Lua API to provide features such as personalization, gameplay enhancements, and in-game statistics.

The new default theme for OutFox, Soundwaves, is inspired by the community, and how it has enriched the StepMania experience. It’s clean and lightweight, but still has a sense of style. It’s being designed around the new features and functionality being developed for OutFox, along with familiar concepts inspired by other popular themes.

What you see now is what I’ve dubbed Soundwaves G1: besides integration with a few OutFox features mentioned in the previous post, it is largely compatible with the Lua API and functionality already present in StepMania as of the current release. As we continue the process of modernizing StepMania, we will be adding new features that can be leveraged as part of themes, which will be used to further enhance Soundwaves over time.

One of our objectives has been to ignore any existing limitations: if StepMania can’t do something we really want it to do, just build a way to do it. Jousway already came up with an early version of a feature that a ton of users have likely been waiting for.

Soundwaves is being designed exclusively with 16:9 resolutions in mind; a legacy version of the theme based on the 5.0.12 default is also being designed. As of December 27, 2018, 4:3 support has been added in beta!

If you have any questions, critiques, or feature requests for the theme, or OutFox in general, feel free to share them with us. Remember; as mentioned earlier, we do not have to be bound to existing limitations. We already had some ideas in mind, but they are dependent on future additions to the base codebase.

 Dev Notes  
  No Comments

Hiya, this is Squirrel, Jousway and Lirodon once again showcasing the development work on the new OutFox branch!

Remember you can follow the progression using the tracker link at the top of the page. It has been a busy month in terms of development, and we’ve been beavering away at the code-base to try to bring you some more improvements!

This month’s progress:

GLU and it’s emulation/non-support in Windows/MacOS.

We also found out that most of the time in Windows and MacOS, there is no GLU support due to 1.2.2 being offered, when the game needs 1.3. This will also need a rewrite to remove the dependency on GLU again, as much of the hardware since 2005 has not supported any acceleration of the GLU functions, so these are emulated on the CPU. Many even consider the inclusion of GLU on GL applications nowadays laughable, as you are slamming the brakes on any optimizations. We will of course, rewrite the code to omit this, so we can push forward performance.

Vertex/Fragment Shader Errors.

We discovered a few bugs in the way the driver was reporting the availability of these shaders, and this was due to GLEW not reporting things correctly. We have corrected the check code, and now fragments are being loaded and compiled as expected. It also showed us that many of the GL commands being used, are forcing the engine to be <GL 1.4 and this needs to really be modernized.

New NoteSkin features

NoteSkins can now optionally be coded to be usable in any game type, rather than be tied to a specific one. These are known as global NoteSkins.

There are two major new capabilities for holds and rolls too: a single sprite for an entire hold tail can be stretched to the required length, rather than constructed from a tiled middle portion and bottom/top caps (as they are traditionally done). and there is also support for quantized holds (i.e. a hold’s color can match that of the note itself, such as red holds for red quarter notes, etc.).

Some of these new abilities are showcased in bundled noteskins, such as Paws (a noteskin its creator had a lot of fun making).

Meet the Appearance folder!

There is a new folder in the StepMania directory tree known as Appearance, which is used to store customizations can be used across supported themes.

The Appearance folder is used by the default theme for two new features; you can now load in custom judgement graphics (a feature that users of the third-party theme Simply Love may recognize), and the Toasty system has been upgraded so you can build your own exciting (or annoying) sets of effects to celebrate combo milestones. Both of these features are accessible from within the player options menu before starting a song.

Giving Clearer Log output.

The current version of the game spits out a lot of log code, which is not really sorted to be human readable and easy to be used to send to us to debug in the future. We are going to ensure our use of logging is modernised and correctly attributed to the right portion of the game, for example ‘Graphics Manager: OpenGL Renderer Version 3.1.0`. In doing this, we will be able to also remove a lot of the unnecessary logging portions in the game loop which should give us another boost to performance.

Clang modernize checks and code improvements.

We have begun to move the code to be compliant and standard to C++11 so that it will have less bugs and warnings when compiling on modern systems. The code currently builds on MSVC2017 and linux fine, and we also have a Darwin (MacOS) build compiling without any issues. We have found that a few of the bugs we had with memory leaks on long play times are gone, as well as a crash after 93 minutes on windows 7 has also not shown itself since this patch. We will keep you informed if it returns!

Visual Studio 2015 and Windows Version Checking.

It was noticed that when compiling on Windows VS 2015, the compiler would output many errors in relation to the code, and this after some research, was found to be an error in that compiler. It will never be fixed, and we recommend you build with VS2017, as it will not spew these messages. We also fixed a problem with archaic windows checking, and enabled the game/compiler to be windows version aware. Jousway also fixed the NSI to give new options in the installer process, allowing us to have more control and freedom in allowing for mods and new features and functions to be added, while keeping compatibility to older legacy themes and content.

PRs from SM Mainline.

Squirrel also added PR’s/Suggestions/Help from the Mainline, and this month we added the fix for ghosting on X11 input, a small fix for a %s being shown on translation files, as well as a few small tweaks for sound on Linux.

(Alpha Code) New debugger OpenGL Loader, and fixed function issues.

This month Squirrel has been planning to move on from GLEW, as it has a host of problems and adds to some of the complexity of debugging, as well as some of it’s own bugs that seem to just be ignored. We will be looking at integrating GLATTER, as it has a unique function to enable us to truly debug the GL code effectively, and as we rewrite the rage code to be non fixed-function, it will be invaluable. The issue with the RAGE engine, is it uses a really old method to draw and manipulate the screen, which is done nowadays by shaders. The system emulates most of this code, but it’s horribly inefficient.

(Alpha Code) Raspberry Pi support

SpottyMatt generously helped us with a patch and code addition to allow building on the Raspberry Pi 3/3+! Right now it utilises the basic OpenGL in the engine, but we are going to finish the GLES support to give a boost in performance to allow a better gaming experience on the Pi. More news to follow in future months!

We hope you enjoyed this months progression review, and hope to see you next month!

 Dev Notes, Announcements  
  No Comments

Hiya, and welcome to the first development blog update for project moondance!

This will be the first of our monthly progression posts enlightening our user-base on some of the things the team have been doing over the month in regards to development and fixing/modernizing the game.

Firstly, we have chosen to develop from the 5_1-new branch. Why? Well, pretty simple one to answer! The newfield changes removed a lot of support and compatibility and this prevented us from continuing from our 5.0.x project. Secondly, I had a hard time comprehending some of the decisions made in why the changes were made in the first place. So for ease of continuation and simplicity, we chose that branch.

Although it will be internally known as version 5.3, we’ve decided to give this particular version a prominent codename as well: “OutFox”. To outfox is to be clever and cunning, a skill that will be very useful while working on this code!

We are active in several branches on our development repo, as this allows everyone to work on something to their talents, and also keeps things fresh in the team as we can always sit and have a chat on different topics.

This Month’s Progress:

You can always follow our work on the Taiga tracker, and if you feel like you can offer anything to the project, please feel free to contact us!

Libjpeg and libPNG removal: Replaced with STB_Image

It has been a bane of RageTexture in regards to texture support due to the age of the libraries and the methodology in how it loads and supports textures in game. We have noticed that the versions of these libraries are from circa 2005, and are almost as archaic as Rage itself. We have changed the texture support to stb-image which removes library dependency altogether, and removes a lot of the paletted texture problems which are causing problems on modern day hardware. The use of paletted textures has been deprecated since 2004, and it is about time we remove this code from the engine.

Update GLEW to 2.1.0

In preparation to remove GLEW completely in favor of a new methodology, we chose to modernize the version first to see if there was any benefits or improvements in it’s technique for loading function pointers. It gave a marginal gain, but was disappointing overall. It will be removed in a future build.


A modified version of the Lambda default theme introduced on 5.1 is included in these builds, with OutFox branding, a new blue and gold/orange colour scheme, and other internal performance improvements.

 Dev Notes, Announcements  
  No Comments