2023-11-06
RELEASE: Dominatrix, a SiN port
My daughter turns three months old today - that's pretty neat, but SiN turned a quarter of a century yesterday (I think. Ritual themselves didn't seem too sure of its release date). While the series is probably never going to continue like Half-Life (VR doesn't count), more than zero people are still thinking about SiN. Night Dive did a re-release a few years ago called SiN Gold, and announced a remaster called SiN Reloaded, with all of the KEX engine bells and whistles. Who knows when that's coming out, though. While SiN Gold is a pretty decent way to play the game, it still has a few pain points that could really use some smoothing over. So I'll throw my hat in the ring.
I'm releasing a new port of SiN. It's called Dominatrix. You can download it here. Read below for more details.
Here are some of the features that Dominatrix has, in order of importance (to me).
It's on Linux. Again. While Hyperion Entertainment was the first to port SiN to Linux, getting their version to run on modern distributions is a pain - I don't want to run padsp or osspd again! Sure, you could run Sin Gold under Proton, but where's the fun in that? Dominatrix is 64-bit and uses SDL2 and OpenAL-soft, making it much more future-proof.
No more hardcoded resolutions. If you wanted to run SiN in a widescreen resolution (or something bigger than 1600x1200), you had to hex edit the main exe (or the renderer DLL, I don't remember) and replace an existing resolution entry. Dominatrix uses SDL2 to get the display's supported resolutions and populates the menu that way. I've done all my development on a 1920x1080 monitor, so let me know if it's not picking up your monitor's resolution. Note: Dominatrix does not automatically change the FOV on widescreen resolutions, so use the "fov" console command appropriately - I've always done 100 for 16:10, and 105 for 16:9. If you're on an ultrawide monitor, play around with it! Oh, and computer terminals/ATMs now take your FOV into account!
Controller support. Dominatrix uses the SDL2 Game Controller API for gamepad input. It comes with a default.cfg that sets some sensible defaults (X for using/reloading, A for jumping, B for crouching, Y for inventory using, right trigger for attack). You can of course, change these inputs in the same binding menu you use for changing keyboard inputs. While in the binding menu, the Y button also serves for clearing a binding. You don't need to bind controller inputs for moving or looking - those are currently hardcoded (left stick for moving, right stick for looking). The "back" or "select" button is currently hardcoded to open the menu.If you want to bind gamepad buttons to functions not found in the in-game menu (like with the "bind" console command), here are the new buttons: GAMEPAD_A, GAMEPAD_B, GAMEPAD_X, GAMEPAD_Y, GAMEPAD_LB, GAMEPAD_RB, GAMEPAD_START, GAMEPAD_BACK, TRIG_LEFT, TRIG_RIGHT
- Weapon radial menu. Want to choose the best weapon without cycling one at a time? Use the radial menu! By default, this action is bound to the left bumper (or L1) of the gamepad. Right stick moves the radial cursor, releasing the left bumper makes the selection. Pressing the "attack" key/button will change the page, which you'll need in Wages of SiN.Fun fact: Selecting the same weapon you have equipped counts as a secondary use of the weapon, so you don't have to bind the "use weapon" button for functions like zooming the sniper rifle.
Note: Currently if you want to bind the activation to a different button or key, you need to use the console. Example: bind TRIG_LEFT +radial_weapons
Gamepad friendly virtual keyboard. At certain points in the game, you need to interact with in-game terminals such as ATMs or computers. Most of the time you only need to use the arrow and enter keys to make selections, but other situations require you to type in passwords. Now you can do so with a gamepad! Inputs here are currently hardcoded, which you can see when the virtual keyboard is engaged. It only appears if the game's last input was from a gamepad, so keyboard/mouse players won't need to see it.
Better menu/interface scaling. SiN's HUD and menus were designed for a real estate of 640x480, and don't scale to higher resolutions. Dominatrix scales these graphics to try to fill up as much of the screen as possible while staying in 4:3 aspect ratio. Note: I don't have an ultrawide monitor to test the scaling there, so let me know if it looks off.
No more logging in. Here's a controversial change - when entering the main menu, Dominatrix will automatically login as user "blade". Attempts to set the "player" cvar to anything else will be ignored. SiN was written before multi-user operating systems were mainstream, and included a login system to allow different users to have have their own configs and saves without conflicts. While this was made with good intentions, the implementation was annoying, because the game's window would always be destroyed and recreated when the player logs in. This was made worse in the modern era, because when starting for the first time, the game would default to fullscreen 640x480, usually causing the player's monitor to black out for a few seconds to change modes, then do it again when logging in! It's not a great first impression.
You'll know just how awesome your GPU is. Ritual and Id Software never imagined the GL_EXTENSIONS string would ever surpass their fixed size 1024 byte buffer. They were wrong of course, and their assumption led to crashes as soon as you were playing on a computer made in the 21st century. SiN Gold got around this by truncating GL_EXTENSIONS to fit this buffer. Not any more - Dominatrix will now print the full string in your console!
Dominatrix requires SiN's data files to work. You will need to provide these yourself. See the FAQ for which version of the releases work.
Also, please don't contact Night Dive for support.
FAQ is available here.