Announcing RVGL

See the Future of v1.2 thread for some background.
RVGL is a cross-platform rewrite / port of Re-Volt that runs natively on both Windows and GNU/Linux and uses modern, open source components to power it. We currently use OpenGL for the graphics, OpenAL Soft for the audio, SDL for input and OS specific support and ENet for networking.

We have playable builds for both Windows and Linux, so you can already test it. As of September 2016, we provide both 32-bit and 64-bit builds for both Windows and Linux.

Download the win32 or win64 installer setup, depending on your system, run it and follow the on-screen instructions. The setup will automatically set required folder permissions and update registry keys.

It is possible to manually extract files from the executable without running (you might have to install 7-zip first). This is intended for advanced users only.

That's it, you can now run rvgl.exe from the Re-Volt folder (or create a shortcut to it on your Desktop).

[/hide]
[hide]Installation steps for GNU/Linux:
Setting up RVGL to run natively on Linux takes a bit more work. This is because the filenames on Linux are case sensitive (for example, "Parameters.txt" is not the same as "parameters.txt"). In such cases RVGL needs to know the exact filename to look for. To solve this problem, all the files inside the Re-Volt folder should be renamed to use lower-case names only. Fortunately, we provide automatic setup scripts to do the renaming for you.

Download the linux 7-zip archive and extract it to your Re-Volt folder.

Run the setup script found inside the Re-Volt folder (you might have to set execute permission for the setup script in order to do this). The setup script will automatically rename all the data files to lower-case, set the necessary file and executable permissions, and create an RVGL launcher on your desktop.

Install dependencies required by RVGL, if necessary. See the next part for detailed steps.

You'll now be able to run RVGL using either the desktop launcher or the 'rvgl' script in your Re-Volt folder. Depending on your system, this will start either the 32-bit or 64-bit rvgl.

Note that when you install additional custom content like tracks or cars, you'll have to rename those files to lower-case. You can use the fix_cases script to do this for you (instead of having to run the entire setup again).

External libraries:
RVGL requires 'libgl' (provided by your graphics card driver), 'sdl2' and 'sdl2_image'. Installing the other libraries are recommended, but RVGL is able to run without them, by making use of libs included with the package instead.

*The first and most obvious thing I noticed is that textures with indexed colors are not supported by this build, so my texture optimization pack doesn't work anymore and I am greeted at every loading screen with an error, "cannot load whatever.bmp". Fortunately this doesn't crash the game, and I can go back into RV with the pause screen waiting for me.

*AL likes to complain about wanting a 44100 Hz audio rate but getting 48000 Hz instead. As someone with a strong interest in making some RV videos for YouTube in the near future, I would personally prefer having 48 kHz added to the options menu.
Speaking of which,
*No options menu It bothers me that anisotropic filtering is disabled/not working and I can't do anything about it, lol.

*I see you mentioned FLAC support for Linux, it'd be really awesome to get that for Windows too

Otherwise, this seems to be a perfectly stable and uninteresting build of RV, and I mean that in the best of ways. Good work Huki!
By the way, will the antialiasing option actually do something in the future?

EDIT: OGG music works for me.

The Obsoletist, a YouTube channel about making the most of old technology.

I couldn't really notice any differences, which is good.
Additional strings are working great.
Finally, properly resizable window.

My only complain is ALURE32.dll library which takes damn 4.4 megabytes, but you can't rid of it anyway. And command prompt window running alongside the main application. (Enabled only for testing/debugging purposes I suppose. It is quite usual in freeware/open source OpenGL games, at least on win32 builds, not sure why. Rarely shows anything inside these windows though.)
Not a big deal.

My complaints are of course the lack of options, 44100khz menu sounds now being at a higher speed (while in the previous builds these sounded the way they should), and that (in my case at least) the intro logos cannot be shown (white rectangles).

I'm guessing this is because of 64bit vs 32bit, but after following the not-arch-specific instructions* on enabling multiarch, it seems neither libsdl2-2.0-0 nor libalure1 have an i386 version, or at least they don't exist in the normal ubuntu repos.

I recall you had it working in mint a while back.. are there any additional repos/sources/etc needed for it to work? Or was that native 32bit?

[/hide]
Runs pretty smooth As others have said, background music doesn't work (I have both the mp3s and the redbook files installed). I had the redbook folder symlinked to the Music folder, which broke when it ran through lowercasing everyting. Works now.

Looking forward to the options menu. Can't tell if vsync is working or not, since I can't get the fps counter up.

Edit: more fun times. The .desktop refuses to run, though the executable itself works fine:

Just nice, apparently looks like the older engine (windows), same quality, new lighting?, new engine

it even uses 1.2 inis, for your profile make a copy of <profilename>.ini and rename it to profile.ini

Found interesting bug: with an almost complete profile 100% cars, TT not done. there's a duplicate of Championship.

for the main settings it uses same ini but again renamed. settings.ini -> rvgl.ini

For these who have custom settings can simply do that (ini editing is "Options" workaround for now....

gj huki

ps: add -console instead of showing the window by default.

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

3) The weird graphic glitches that I mentioned a long time ago seem to be fixed, now its just objects and some polygons being visible through walls but one can at least orientate himself in the world now when it happens.
This could be a track issue but I have seen similar glitches in other tracks in certain edit modes so I'm not sure. But whatever the case, I hope it gets fixed at some point.
See screenshot from RVGL for comparison with the one from the original game that I posted in the link:

4) Regarding mipmaps, the changelog says

- Auto Generate Mipmaps: All mipmap levels can now be automatically generated at loading time (no need for .bmq, ... files). We only recommend using this option if Anisotropic filtering is also enabled. Otherwise there can be excessive blurring.

So is this done by default or is the "GenerateMipmaps" option responsible for this? (because the latter appears to be turned off by default)
Also how does this work in regards to higher resolutions, should/can they be renamed to .bmp files or will the game still look for .bmo, .bmn, etc files to use the higher resolutions instead of the default ones?
And last but not least, if the lower resolution files are not needed anymore and are automatically generated, why does the game still try to open them? (see game log)

641.44 (RVGL) vs 494.88 (v1.2)
A vast improvement indeed. Keep in mind, I had background applications running. Tested few times, results were about the same.

Windowed mode with vsync on is a little bit choppy for me, even if it shows 60 fps.
Using gamegauge on window and of course with vsync turned off again, I've got slower results - 545.28

Also, shockwave weapon effect seems to be affected by higher fps on RVGL.
I can't properly 'printscreen' when the application is running full-screen. It works, but the screenshots have like 5 second delay.

GenerateMipmaps works, but it looks too blurry on some tracks. See Toytanic 1.[Edit]: Works much better with Anisotropy set to 16.

I couldn't get mp3 music working either. Because of missing mpeg libraries?
Ogg works, we have vorbis dlls after all.

Btw, try to quickly tap Enter key right after when frontend is loaded. You will be stuck on profile selection screen.

Great to see the feedback.. I'll answer some of the points about the last build:

Console window: Good catch, I forgot to disable it in the release build. It could be useful to log some info in the console window, but as we already log stuff to text files I'm going to disable the console for the next release.

How to get hardware info: After you run rvgl, you can check inside the "profiles" folder for a re-volt.log file. This will contain some info about your OpenGL hardware and it would be helpful if everyone post theirs.
To log audio info you can run the alsoft_log script file (that is included in both win32 and linux packages). The script will start rvgl, then you can close it and find an alsoft.log file in the "profiles" folder. You can post that too (maybe use pastebin as it can be big).

Configuring options: The options menu is not completed yet, but you can configure settings by directly editing the ini files. Of course, setting joystick and buttons is not yet possible. Edit the "rvgl.ini" in the "profiles" folder to configure audio/video settings.
To enable Anisotropic Filtering: In "rvgl.ini" make sure "TextureFilter" is 1, then set the "Anisotropy" entry to 2, 4, 8 or 16 (or 32 in newer cards). Setting Anisotropy to 1 (the default) disables anisotropic filtering.
"TextureFilter" takes 0 (Point) or 1 (Linear). "MipmapFilter" takes 0 (disabled), 1 (Point) or 2 (Linear).

Textures wrote:*The first and most obvious thing I noticed is that textures with indexed colors are not supported by this build, so my texture optimization pack doesn't work anymore and I am greeted at every loading screen with an error, "cannot load whatever.bmp". Fortunately this doesn't crash the game, and I can go back into RV with the pause screen waiting for me.

I'll have to check whether SDL supports reading indexed bitmaps. Can you give me a link to your texture pack so I can test it myself?

48k audio wrote:*AL likes to complain about wanting a 44100 Hz audio rate but getting 48000 Hz instead. As someone with a strong interest in making some RV videos for YouTube in the near future, I would personally prefer having 48 kHz added to the options menu.

It means AL is already using 48k audio rate (though we hard-coded it to request 44.1k). Once the options menu is done you can expect more control over this.

FLAC support wrote:*I see you mentioned FLAC support for Linux, it'd be really awesome to get that for Windows too

Alright, we'll try to include support for it in future releases. All it needs is the dll. You can try to find the libFLAC.dll yourself and place it in the re-volt folder (I'm not sure if they provide it in their website).

Strange, have you extracted all the files to your re-volt folder? Can you check inside the gfx folder for "devlogo1a.bmp" and so on?

MP3 support wrote:Oh, and that the MP3 tracks aren't working.

MP3 support is currently missing on Windows: this is because we use ALURE to support music files and and the alure dll they provide was built specifically without MP3 support. To fix this we will have to rebuild it ourselves from source. This problem doesn't exist on most Linux distros though.

@Abc:

Found interesting bug: with an almost complete profile 100% cars, TT not done. there's a duplicate of Championship.

Can you post the contents of your launcher file by opening it in a text editor?

@Kenny:

Generate mipmaps wrote:4) Regarding mipmaps, the changelog says

- Auto Generate Mipmaps: All mipmap levels can now be automatically generated at loading time (no need for .bmq, ... files). We only recommend using this option if Anisotropic filtering is also enabled. Otherwise there can be excessive blurring.

So is this done by default or is the "GenerateMipmaps" option responsible for this? (because the latter appears to be turned off by default)

The "GenerateMipmaps" option needs to be turned on. It's off by default because it can result in excessive blurryness with plain linear flitering. I recommend turning this on along with Anisotropic filtering (by setting Anisotropy to the desired level, like 16, as mentioned in my previous posts).

Also how does this work in regards to higher resolutions, should/can they be renamed to .bmp files or will the game still look for .bmo, .bmn, etc files to use the higher resolutions instead of the default ones?

We still search for .bmo, .bmn, etc and take the largest resolution as the base texture.

And last but not least, if the lower resolution files are not needed anymore and are automatically generated, why does the game still try to open them? (see game log)

In fact if any lower resolution mipmaps are provided, we still use them, and then we generate the rest of the missing levels automatically.

48k audio wrote:It means AL is already using 48k audio rate (though we hard-coded it to request 44.1k). Once the options menu is done you can expect more control over this.

Ok, excellent! Just out of curiosity, will there be any support (or should I say, reason to have support) for 96000 Hz?

FLAC support wrote:Alright, we'll try to include support for it in future releases. All it needs is the dll. You can try to find the libFLAC.dll yourself and place it in the re-volt folder (I'm not sure if they provide it in their website).

I found libFLAC_dynamic.dll from here and renamed it to libFLAC.dll and it works perfectly! Thanks Huki!

Testing in Win8.1: The game runs fine, the only missing feature is redbook music. I especially like the fact that the game ran my GPU graphics instead of my CPU ones!

Testing in Ubuntu run into VirtualBox with 3D acceleration enabled: Everything seems to be ok, even music. After enabling anisotropic filtering, my performance output was almost the same as running RV1.2 from the host system (Win8.1). It did not run GPU graphics.

Does re-volt/rvgl use system codecs or their own stuff for playback? (if so then installing k-lite codec pack should be enough for extended playback support)

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

This is the one I made from the ground up I think, but it's the same exec, path etc.

Escaping the path (etcetc/Program&#092; Files&#092; &#092;(x86&#092;)/etcetc) stops some of the errors, but I'm not sure if it's supposed to be needed or not seeing how it refuses to behave in general :S

Here's my log. I started the game and had a quick race.http://pastebin.com/7eDemPgB
I got some graphical glitches on 'Industry', mainly related to the aerial of the car. Random triangles appeared around the track, most of them pointing towards the aerial. Some people reported this using 1.2, I've never seen it before, though. Might be a problem with the visiboxes? Sometimes the triangles stop right where visiboxes are placed.
Tested on Win8, Intel HD 4400 gfx

For installing it on a 64-bit Debian / Ubuntu system, would this not be (more or less) the correct procedure? I know this can introduce a whole host of other problems and 32-bit dependencies down the road but this is what I had gathered using a Linux Mint installer;

is rvgl supposed to be a precompiled wine thing like teamviewer instead of a native binary?

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

Also, may as well mention in the future, packaging it would make things way less complicated for the Linux users. To prevent library conflicts, you could be able to shove any packages that directly conflict with other packages inside of /opt/RVGL (for example) and have RVGL load libraries from there.

It doesn't make sense for the 32-bit users, but for people who would prefer a 64-bit OS, it would be good for them because of the difficulties I've encountered with installation on a 64-bit system.

ElectricBee @ 4 May 2015, 05:43 PM wrote: Also, may as well mention in the future, packaging it would make things way less complicated for the Linux users. To prevent library conflicts, you could be able to shove any packages that directly conflict with other packages inside of /opt/RVGL (for example) and have RVGL load libraries from there.

It doesn't make sense for the 32-bit users, but for people who would prefer a 64-bit OS, it would be good for them because of the difficulties I've encountered with installation on a 64-bit system.

Nope, too much work for a dev, linux is like that, deal with it or die working.....

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

I didnt recompile anything, i just used a shader wrapper which supported OpenGL: ReShade

If your going to use it, please note that some effects will drain lots of FPS and that the depth buffer of RVGL still doesnt work well (only when the car respawns/is in the pause screen/is in the main menu), causing effects like DoF or Ambient Occlusion to glitch out.

Okay, what about in windows? it is ported? btw i have a EVGA geforce gtx 760 SC

edit: Wow nice software helpful, ty

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

Huki @ 2 May 2015, 08:47 AM wrote: Can you post the contents of your launcher file by opening it in a text editor?

[...]
This is the one I made from the ground up I think, but it's the same exec, path etc.

Escaping the path (etcetc/Program&#092; Files&#092; &#092;(x86&#092;)/etcetc) stops some of the errors, but I'm not sure if it's supposed to be needed or not seeing how it refuses to behave in general :S

I checked this issue: first of all the .desktop launcher is not supposed to be executed from the terminal, as it's just a configuration file and not an executable. So you should launch it from the GUI.
Other than that, the problem is with the spaces in the Exec entry. I tested using a path with spaces: covering only the Exec entry (but not the Path and Icon entries) with double-quotes fixes it for me. So it should look like this:

Adding double-quotes fixed the part where it wouldn't start, anyways. But now occasionally, somewhat randomly, it doesn't exit properly. The menu slide-out animation plays, but the window doesn't close and the music continues.
It ignored wm-sent closing signals so I tried killing it with htop - resulting in a blank rectangle :/

Also on a mostly-irrelevant note, how are the keycodes determined, and are there any sanity checks which overwrite the set values if they don't compute?
I can't seem to get the keybinds I want from ReVolt over to RVGL, and poking around the .ini it seems the default codes are different.

mastilagi: some shaders dont work properly and some effects appear to conflict, i also noticed that no pause label in fact does something, without, it looks black, with it works properly, odd....

yeah, keybindings do not work but at least i can keep my profile by copying and renaming <foldername>.ini to profile.ini

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

ElectricBee @ 5 May 2015, 02:13 AM wrote:Also, may as well mention in the future, packaging it would make things way less complicated for the Linux users. To prevent library conflicts, you could be able to shove any packages that directly conflict with other packages inside of /opt/RVGL (for example) and have RVGL load libraries from there.

It doesn't make sense for the 32-bit users, but for people who would prefer a 64-bit OS, it would be good for them because of the difficulties I've encountered with installation on a 64-bit system.

For now it makes things much simpler for us to zip up and send the executable and let users configure the dependencies themselves. But if anyone is willing to do the packaging for us then we'd gladly accept it.

@Gotolei:

Adding double-quotes fixed the part where it wouldn't start, anyways. But now occasionally, somewhat randomly, it doesn't exit properly. The menu slide-out animation plays, but the window doesn't close and the music continues.
It ignored wm-sent closing signals so I tried killing it with htop - resulting in a blank rectangle :/

Does it happen even when directly running the executable, without the launcher? So far this has never happened to me (on Linux Mint) either using launcher or the executable.

Key Bindings wrote:Also on a mostly-irrelevant note, how are the keycodes determined, and are there any sanity checks which overwrite the set values if they don't compute?
I can't seem to get the keybinds I want from ReVolt over to RVGL, and poking around the .ini it seems the default codes are different.

RV1.2 uses DirectInput scancodes while RVGL uses SDL scancodes. So there is no way to port the key bindings from v1.2 to rvgl.

Huki @ 6 May 2015, 11:13 AM wrote:Does it happen even when directly running the executable, without the launcher? So far this has never happened to me (on Linux Mint) either using launcher or the executable.

It only happened once or twice early on, just after getting the launcher to work, hence 'now' being crossed out. Hasn't happened since, could have been any number of things that caused it I guess.

RV1.2 uses DirectInput scancodes while RVGL uses SDL scancodes. So there is no way to port the key bindings from v1.2 to rvgl.

Edit:
Are sounds handled differently in this version, or is it just a setting set low by default?
Recorded myself driving over the piano in TW1 multiple times in both RVGLand 1.2, with them consistently sounding different.
(on a more positive note, liking how rvgl noticeably uses a lot less power in the background it's a wonder what actually working vsync can do)

Edit2: yeah sound is definitely different somehow. On Toytanic you can clearly hear cars driving on the other levels, and on Rooftops (the Dreamcast one) you can hear the helicopter across about half the track. Though sound reaching too far seems like a separate problem.

Matsilagi @ 7 May 2015, 04:23 AM wrote: No word at depth buffer? Isnt it possible for you to test it?

Sure, I'm eager to test out ReShade, but before that I can't guess what could be wrong. Is ReShade available only for Windows?
Any further info about reproducing your issue (any specific places / actions to trigger the glitch, specific shaders you had used)? Also, you can open a new topic to discuss this further..

Matsilagi @ 7 May 2015, 04:23 AM wrote: No word at depth buffer? Isnt it possible for you to test it?

Sure, I'm eager to out ReShade, but before that I can't guess what could be wrong. Is ReShade available only for Windows?
Any further info about reproducing your issue (any specific places / actions to trigger the glitch, specific shaders you had used)? Also, you can open a new topic to discuss this further..

Created a topic, so i dont clog the release thread with lots of research.
Thanks for your attention

A guide for ini options please? so at least we can configure RVGL like we had re-volt.
and maybe a directinput -> SDL input converter for profile.ini

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

Is there going to be some sort of official bug report topic, or do we just make our own individual ones 1.2-style at this point?

Edit: possibly worth noting that rvgl plays the sound files as they actually are, while <1.2 distort them in some way or another.
If you dig through the track's custom folder and put any of the media into a music player, it sounds just as it does in RVGL.

Abc @ 8 May 2015, 06:23 AM wrote: A guide for ini options please? so at least we can configure RVGL like we had re-volt.
and maybe a directinput -> SDL input converter for profile.ini

What might be more ideal would be an external configuration program. One step down from in-game integration, but one step up from having to translate all the menu options, or rely on a conversion script if applicable.

Yes, I'm the ABC block and you can find me in Toy World 1 track!
Reborn as Juest Zungo PS: I prefer chatting and i have Steam, Skype, Google and Microsoft account, just ask for it via PM or rarely find me in RVHouse. Also check out my interests.

48k audio wrote:*AL likes to complain about wanting a 44100 Hz audio rate but getting 48000 Hz instead. As someone with a strong interest in making some RV videos for YouTube in the near future, I would personally prefer having 48 kHz added to the options menu.

It means AL is already using 48k audio rate (though we hard-coded it to request 44.1k). Once the options menu is done you can expect more control over this.

Can you just make the RVGL set the sound output settings based on the system ones, so the people don't make things like "OS is using 44.1KHz and the game is using 48KHz soundout".

Alphacraft @ 2 May 2015, 09:02 PM wrote:Ok, excellent! Just out of curiosity, will there be any support (or should I say, reason to have support) for 96000 Hz?

Also I see almost no sense at all in making the game to output sound at more than 44.1KHz, because:
1. All the sound files should actually have a sampling rate more than 44.1KHz;
2. The audiocard should actually support such an audio mode. If it doesn't then the resampling is needed, and the bad resampling can introduce an audible glitches;
3. You simply can't hear such a high frequencies nor the audio files have them, so why bother.
High sampling rates only makes sense when making some audio processing...

Huki @ 6 May 2015, 11:13 PM wrote:

Key Bindings wrote:Also on a mostly-irrelevant note, how are the keycodes determined, and are there any sanity checks which overwrite the set values if they don't compute?
I can't seem to get the keybinds I want from ReVolt over to RVGL, and poking around the .ini it seems the default codes are different.

RV1.2 uses DirectInput scancodes while RVGL uses SDL scancodes. So there is no way to port the key bindings from v1.2 to rvgl.

Erm... what?
The scancodes are generated by the hardware keyboard controller and all the programs just use them, so why _in_a_name_of_all_the_good_things_ someone redefines them???

ElectricBee @ 11 May 2015, 09:58 PM wrote:What might be more ideal would be an external configuration program. One step down from in-game integration, but one step up from having to translate all the menu options, or rely on a conversion script if applicable.

Actually one step down from having more troubles translating all the menu options. Do you wanna have a partially-translated game?

nero @ 15 Jun 2015, 08:14 PM wrote: If I may ask, what can we expect in the near future? Will the Options menu be enabled in the next update at least?

This. What was the reason being its disabling by the way? Time constraits that left that part of the code out?

Yes, the Option menus haven't been ported over yet.
The goal for the next release is to:
- add the options menu,
- fix bugs reported in the current release.

Other than that there is some internal reorganization of the codebase pending since my last discussions with jig. It can add some delay in our progress, but it would help us better manage the project in the long term.