Articles

  • Edit: An updated Alpha 4 build with bug fixes was released on 16 December 2019, and now includes macOS builds with Catalina support, and Linux.

    17.png

    Today we have released our first public alpha build, StepMania 5.3.0-alpha4 "OutFox". For those unfamiliar with the project, 5.3 is a continuation of the existing 5.1 branch by a new development team.

    Right now, our focus has been on refactoring StepMania's codebase to adhere to modern coding practices, in preparation for more larger improvements and features that we plan to add in the future.

    As a recap, here's a summary of the changes we have made so far, which are present in this build (a full detailed changelog will be posted soon):

    Internal changes

    We have been modernizing StepMania's internal code to optimize it for better performance on modern hardware. These changes help the engine run smoother and more consistently than previous versions, while remaining backwards compatible with existing content for 5.0.12 and 5.1-beta.

    We have also upgraded the internal Lua library to Lua 5.3.5 (with shims in order to maintain the backwards compatibility with existing code), and will also support macOS Catalina.

    New theme and coding features

    Alongside its low-level changes, we have also added new user-facing features and theme components. The new default theme of 5.3.0, "Soundwaves", serves as the official reference implementation for these new features.

    Modules

    5.3 introduces a new theming feature known as Modules. It is common for StepMania themes to include Lua scripts to enhance their functionality. However, these scripts are loaded on every single screen, which is inefficient. Modules is a new system for creating reusable scripts that can be called from within themes. Unlike scripts, they are only loaded and called when needed,. Reducing the number of global scripts in a theme can help improve performance.

    Advanced timing windows and judgments

    On previous versions of StepMania, the game's timing windows were defined only in the preferences file. On 5.3, we support the ability to load timing window presets from a module (including the StepMania defaults and other popular standards, such as In the Groove and ECFA), and allow players to choose the timing windows they wish to use from the player options menu before a song. In addition (excluding misses), these presets support up to 10 distinct judgments as opposed to just 5, which are used in our new "Advanced" variants of the StepMania and ITG timing modes: can you get a truly Flawless full combo?

    Another module allows themes to load custom judgment fonts, which can be selected from the player options menu. Unlike similar theme-level implementations, the image files are located in a new Appearance folder outside of the theme.

    Global noteskins

    Our future development will place an emphasis on fleshing out non-4-panel game modes. The new "global noteskin" system is an aspect of this goal, allowing you to create noteskins that are available to all game types.

    Toasty!

    Toasties are also back and upgraded: you can make custom Toasty styles with your own image, sound, and trigger conditions. As with judgment fonts, they are stored in the Appearance folder, and you can also select them from the player options menu.

    Profile avatars

    A new module also provides support for profile avatars: currently, our implementation checks for an image matching your profile name in the Avatars subdirectory of the aforementioned Appearance folder,

    Larger splash screens

    Splash screen images are no longer restricted to 468x68 dimensions.

    No more warnings about image dimensions

    StepMania will no longer display warnings if a texture's dimensions in pixels are not a multiple of 2.

    Soundwaves

    Soundwaves is the new default theme of StepMania 5.3 "OutFox". It has a clean and modern feel with influence from flat design, whilst still having visual flair. Soundwaves is developed around the new paradigms and features of 5.3, and provides a larger number of built-in features over previous SM default themes, including popular requests such as judgment font selection, notefield zoom and angle controls, user-selectable timing windows, and a zoomable judgment scatterplot.

    More modifiers

    We have also added more PlayerOptions modifiers. In comparison to the popular fork NotITG V3, we have approached feature parity, barring certain advanced features that had been implemented in this particular release (GL shader actors and additional notefields).

    We have also added AMod, a BPM-based scroll speed modifier based on the average BPM of a song.

    Download

    Download links are available here. Windows, Linux, and MacOS versions are available.

    For In the Groove 2 hardware, we are officially recommending use of Ubuntu 18.04 with the low-latency Linux kernel (linux-lowlatency). The Ubuntu Studio distribution ships with this kernel by default (you do not need all the included multimedia software. just the kernel).

    Known issues

    • Please use Portable mode on Windows if you have a large song library. We are experiencing issues with access to the appdata folder. The latest build defaults to using portable mode on installation.

    • If Intel integrated graphics are defaulting to Direct3D instead of OpenGL, please update your drivers. See the troubleshooting page for more information.

    • Themes containing ThemePrefs may need to be updated to use the new preferences system.

    Notes

    • If you have any bug reports, issues, or other suggestions, you can post them on the Project Moondance Discord server. DO NOT POST BUG REPORTS FOR THIS BUILD ON THE MAIN STEPMANIA GITHUB.

    • Due to OS security limitations, you may need to perform additional configuration changes to install on macOS. Please see the troubleshooting page for more information.

    • Be sure to also provide us with crash logs from StepMania when reporting crashes.

    • To ensure quality, we are not currently releasing the source code publicly at this time. We are planning to do so as we approach the final release, under the Apache License 2.0

  • We have been hard at work on OutFox, as well as engaging with the community via other platforms -- such as our Discord server, and occasional development update streams on Twitch. As we approach our first public alpha release -- which will be released on December 15, 2019 -- we will be updating the site to reflect the progress we have been making.

  • 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.

    h3. 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":https://tracker.projectmoon.dance/, 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.

    Themes

    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.