Geight

Playin games, makin posts

  • he/him
          Gum Monster!!!          

rohit
@rohit

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-LifeVR 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).

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

  2. 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!

  3. 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 for SiN

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

Virtual keyboard for SiN

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

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

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

  4. 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:

Q: Which data files does this work with?
Dominatrix has been mostly tested with SiN Gold, currently available on Steam. The GOG files should work as well. The files from the original Windows CD also seem to work, but haven't been thoroughly tested. The Hyperion Linux release also works from my limited testing, but you need to remove the .pth files in the base/maps/ directory, if these exist. Note: Dominatrix does not support the Cinepak AVI video files from the Windows CD release of SiN. You'll need to convert them to Ogg Theora, in YUV420p format, using a tool like ffmpeg. Example:

ffmpeg -i ritual_logo.avi -vf format=yuv420p ritual_logo.ogv
ffmpeg -i sintro.avi -vf format=yuv420p sintro.ogv
ffmpeg -i sinend.avi -vf format=yuv420p sinend.ogv

These video files are located in the base/movies/ directory in the Windows CD. When they are converted, place them in the base/movies directory of your install location.

The Steam/GOG/Hyperion releases of SiN are unaffected and Dominatrix will play their video files fine. Thanks pl_mpeg and theoraplay! If anyone knows a C/C++ library to play Cinepak/Indeo files, let me know!

I have not tested the Mac version or the pre-Night Dive Steam release of SiN that came with SiN Episodes: Emergence.

Q: Does Wages of Sin work?
Yes, but I haven't tested it very much. I was able to complete the single player campaign using the data files from SiN Gold.

Q: Where are my saves and config files located?
Windows: Dominatrix checks the APPDATA environment variable, which is usually the user's AppData/roaming directory. Here, the "dominatrix" directory is created.
Linux: Dominatrix will first check the XDG_DATA_HOME environment variable - if that doesn't exist (usually the case for me...), it will check for HOME, and then create a "dominatrix" directory in .local/share.

Q: Does multiplayer work?
I think so? I set up a server on my Linux laptop and managed to get my Steam Deck and work laptop clients connected to it. I followed the instructions here.


You must log in to comment.

in reply to @rohit's post:

thanks for the hard work!

minor bug report that i can't seem to replicate upon restarting the game:

  • the first time i started it i would change the volume sliders in the menus and the helicopter sounds on the first level would just ignore that volume, like even if i set it to 0. very strange

some questions (as someone who's never played sin in particular):

  • is there a way to disable mouse acceleration? at least i think that's what's going on. i know something is going on. and i know that q2 engine games historically had mouse acceleration that couldn't be turned off
  • is there a way to disable the gun lagging behind the camera as you turn? it's a motion sickness thing for me
  • is there a way to disable the weird viewbob specific to jumping / landing from jumping? i've found the other options typical to q2 engine games like run_pitch and so on but not this. again it's a motion sickness thing.

Thanks for playing - it's possible that the helicopter sounds didn't update their volumes because they were looping and I don't check every frame, but I can take a look.

I just looked in the source for where mouse input is handled, and it turns out my backend isn't even using a cvar related to it! I'll take a look at what the Windows backend is doing and try to do it in SDL.

I don't think the game has options for gun lagging and the view bob, but I'll see if I can make new cvars for them and allow them to be toggled in the menu.

You simply need to launch the binary with +set game 2015". For example, the Windows version of WoS would be launched with "dominatrix.exe +set game 2015"

Whenever I release the next version, I'll include a batch script that does exactly this.

Hello, I'm getting a really strange crosshair misalignment bug. Playing in 4k. With the screen at max size shots come out bottom left of the reticle. Reducing the size of the screen progressively aligns them.

Strange, I thought I fixed that, but never tested in 4K. By reducing the screen size, are your referring to using the -/+ buttons? I tried that and the crosshair became more misaligned as I went down.