1
Turok 3 Shadow of Oblivion / Turok 3 60fps, mouselook, writeup
« on: November 19, 2021, 12:01:16 AM »
HOLD UP
I worked on the remaster for Turok 3, available on all current platforms. Please consider buying the remaster over using this mod!
Original Post
Hey all, this is just a writeup about a modification that I put together ages ago but never got to releasing due to some unfortunate bugs. This supersedes the mod in this thread, as it is made for a much more accessible platform, with much more complicated code.
In any case...
What is this?
This is a mod for ModLoader64 that supports the US release of Turok 3 which allows you to use a couple tools and features:
* = when using the static option, the game targets 60 fps, and will run in slow motion of you do not hit this target; when using the dynamic option, the game will run relative to your performance.
** = options are available to dynamically scale the engine tickrate, as well as normalize it to have the same ratio as it (1/2 framerate) does normally.
Where can I get it?
You can download the mod here
To use this mod, you must have ModLoader64 installed, simply put the mod in the mods folder and enable it on the launcher before you boot into Turok 3 US.
Feature Rundown
When you boot into the game, you will see 2 UI with various options on them. In this section I will go into detail about the options.
Controls
Mostly everything is controllable through the options menu, however, there are some functions that I mapped to the keyboard:
/: When pressing / you will toggle mouselook. When mouselook is toggled, the mod automagically binds these keys:
Additionally, when you have the weapon wheel open, the your mouse can be used to select an item on the wheel.
Another thing that happens when mouselook is toggled is that the mod disables Auto Aim and Lookspring for all players.
Options Menu
60fps
The first option on this menu is pretty self-explanatory. Toggling this enables 60fps mode. If this option is enabled without the following option ("Dynamic Scaling"), then the game will statically target 60fps. This means that if you are not getting 60fps, the game will appear to run in slow-motion. This is extraordinarily likely, and because of this, I highly suggest toggling the Dynamic Scaling option.
Dynamic Scaling
When toggled alongside the 60fps option, the mod will evaluate your performance and using this information, attempt to scale the game to run at the correct speed. I developed this option because the game, even on emulator, unfortunately runs terribly. A quirk of this is that if you make the emulator try to run faster than full speed, it will actually scale the game correctly to any framerate (200+!)
60hz Gametick (!!)
When toggled, the mod will modify the game engine's tickrate to 60 (from the default of 15,) which may improve the smoothness of things that happen in the update loop (as the antitheses of the draw loop). Just like the 60fps option, you need to be running this fast for this option to appear to work at full speed, and as such, if you are using this option, I highly suggest enabling the following "Gametick Scaling (!!)" option, or the "Normalized Gametick" option.
Gametick Scaling (!!)
When toggled alongside the 60hz Gametick option, the mod will attempt to scale the engine's tickrate to match your current performance. This is probably the most dangerous option available.
Normalized Gamrtick
When toggled alongside the 60hz Gametick option, the target engine tickrate that the mod applies will be halved. This means with only 60hz gametick toggled, the engine tickrate will instead be 30, and with the dynamic option toggled, it will be half of your current framerate. This option is here to allow the user to preserve the original ratio of engine tickrate to target fps (which is originally 15 / 30.)
Average Length
This value represents the number of samples that are used to determine your average frametime. The higher this value, the smoother the game will react to performance hitches, however it will adversely react to these hitches less sharply. I suggest keeping this value low, since that keeps the game running at the correct speed most of the time.
Following this is a display of two histograms which detail your frametime history, and the values that are currently being used to average your frametime. These are essentially used for profiling.
Pitch Coef
This value represents the amount of rotation (in radians,) that a single unit of movement from your mouse will move your character's view vertically.
Yaw Coef
This value represents the amount of rotation (in radians,) that a single unit of movement from your mouse will move your character's view horizontally.
(!!) = dangerous
Bugs
There has been a small amount of testing a long while ago from our good friend Badger (Thanks,) so this list may grow:
Bugfixes
Not sure if this will get updated in any fashion, since I am recently busy with other things, but I've been hoarding this code for over a year, and it's much better than my old mod, so I hope you guys enjoy the ease of use of this in comparison.
I worked on the remaster for Turok 3, available on all current platforms. Please consider buying the remaster over using this mod!
Original Post
Hey all, this is just a writeup about a modification that I put together ages ago but never got to releasing due to some unfortunate bugs. This supersedes the mod in this thread, as it is made for a much more accessible platform, with much more complicated code.
In any case...
What is this?
This is a mod for ModLoader64 that supports the US release of Turok 3 which allows you to use a couple tools and features:
- 60* fps (dynamic and static)
- 60** hz engine tickrate
- mouselook
- high level profiling
- game object debugger
* = when using the static option, the game targets 60 fps, and will run in slow motion of you do not hit this target; when using the dynamic option, the game will run relative to your performance.
** = options are available to dynamically scale the engine tickrate, as well as normalize it to have the same ratio as it (1/2 framerate) does normally.
Where can I get it?
You can download the mod here
To use this mod, you must have ModLoader64 installed, simply put the mod in the mods folder and enable it on the launcher before you boot into Turok 3 US.
Feature Rundown
When you boot into the game, you will see 2 UI with various options on them. In this section I will go into detail about the options.
Controls
Mostly everything is controllable through the options menu, however, there are some functions that I mapped to the keyboard:
/: When pressing / you will toggle mouselook. When mouselook is toggled, the mod automagically binds these keys:
- Left Mouse = Z
- Space = R
- A = CLeft
- W = CUp
- D = CRight
- S = CDown
- Q = A
- Right Mouse = B
- Middle Mouse = L
- Return = Start
- Z = DLeft
- X = DUp
- C = DRight
- LCtrl = DDown
- LShift = Toggle 60fps mode
Additionally, when you have the weapon wheel open, the your mouse can be used to select an item on the wheel.
Another thing that happens when mouselook is toggled is that the mod disables Auto Aim and Lookspring for all players.
Options Menu
60fps
The first option on this menu is pretty self-explanatory. Toggling this enables 60fps mode. If this option is enabled without the following option ("Dynamic Scaling"), then the game will statically target 60fps. This means that if you are not getting 60fps, the game will appear to run in slow-motion. This is extraordinarily likely, and because of this, I highly suggest toggling the Dynamic Scaling option.
Dynamic Scaling
When toggled alongside the 60fps option, the mod will evaluate your performance and using this information, attempt to scale the game to run at the correct speed. I developed this option because the game, even on emulator, unfortunately runs terribly. A quirk of this is that if you make the emulator try to run faster than full speed, it will actually scale the game correctly to any framerate (200+!)
60hz Gametick (!!)
When toggled, the mod will modify the game engine's tickrate to 60 (from the default of 15,) which may improve the smoothness of things that happen in the update loop (as the antitheses of the draw loop). Just like the 60fps option, you need to be running this fast for this option to appear to work at full speed, and as such, if you are using this option, I highly suggest enabling the following "Gametick Scaling (!!)" option, or the "Normalized Gametick" option.
Gametick Scaling (!!)
When toggled alongside the 60hz Gametick option, the mod will attempt to scale the engine's tickrate to match your current performance. This is probably the most dangerous option available.
Normalized Gamrtick
When toggled alongside the 60hz Gametick option, the target engine tickrate that the mod applies will be halved. This means with only 60hz gametick toggled, the engine tickrate will instead be 30, and with the dynamic option toggled, it will be half of your current framerate. This option is here to allow the user to preserve the original ratio of engine tickrate to target fps (which is originally 15 / 30.)
Average Length
This value represents the number of samples that are used to determine your average frametime. The higher this value, the smoother the game will react to performance hitches, however it will adversely react to these hitches less sharply. I suggest keeping this value low, since that keeps the game running at the correct speed most of the time.
Following this is a display of two histograms which detail your frametime history, and the values that are currently being used to average your frametime. These are essentially used for profiling.
Pitch Coef
This value represents the amount of rotation (in radians,) that a single unit of movement from your mouse will move your character's view vertically.
Yaw Coef
This value represents the amount of rotation (in radians,) that a single unit of movement from your mouse will move your character's view horizontally.
(!!) = dangerous
Bugs
There has been a small amount of testing a long while ago from our good friend Badger (Thanks,) so this list may grow:
- Doors do not work when 60fps mode is enabled. Use the LShift keybind, or the UI to disable it before interacting with doors that are relevant to progression
- Hit detection was not originally designed for 60fps, and for some reason some of it happens during draw, so in some cases the windows for hit detection may be too short, or may trigger more than normal
Bugfixes
- The train works correctly. This thing is a piece of garbage
Not sure if this will get updated in any fashion, since I am recently busy with other things, but I've been hoarding this code for over a year, and it's much better than my old mod, so I hope you guys enjoy the ease of use of this in comparison.