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!