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!
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.
Project Moondance is an overall effort to modernize and revitalize the open source rhythm gaming engine StepMania. It is led by Team Rizu, a development team led by community veteran Squirrel, as well as many other prominent members of the current StepMania community.
Moondance was originally conceived as being a complete fork of StepMania. However, we have since gained the support of its current lead developer, and are currently working on an experimental branch codenamed OutFox – based on version 5.1. OutFox focuses primarily on refactoring low-level portions of StepMania in preparation for future development, including code modernization to improve performance, as well as changes to its graphics architecture to provide more complete support for modern hardware.
However, OutFox is only the first stage of our plans: “Serene” is a future project that will significantly refactor StepMania to make it a true video game engine for rhythm games, with wide support for various game play styles and input schemes, including touchscreens.