Game mods, tools and stuff

freejoinAnnoyed by the clumbersome booking system in recently released multiplayer for Assetto Corsa, I wanted to see if something could be done to improve it. I came up with a system that uses prebooked slots and a specially prepared client to join those slots at any time.

Experimental version for AC early access v0.9.10 is available here. It requires the client to install a modified online interface module and a server to be running a special version. See the readme there for additional information.

While it allows joining a server at any time it has some limitations. Mainly you can only select from cars that the server has prebooked and annoyingly when a race is over the session will never end until all clients have disconnected.

edit: Freejoin updated to version 1.20 with better compatibility and various fixes. See the Freejoin page for more info.

A few people have asked for cpbo to be updated to work with Arma 3 PBOs and the possibility of releasing the source. I dont have the time to work on it and its a very old project anyway so here is the source code: download.

The source is licensed under LGPL v2.1 and should compile with Visual Studio 2005.

I recently got hold of the Oculus Rift DK1 but ran into a bit of a problem with the fact that my Nvidia card only has four display outputs which all were already in use. So to use the Rift I’d need to unplug one monitor, use a HDMI switch or a HDMI splitter. The splitter seemed like the best option but active splitters seemed very expensive and I read about EDID problems with passive splitters.

Cheap passive HDMI splitter

Cheap passive HDMI splitter

The EDID problem comes when you have two displays (a monitor and the Rift) at the end of the single HDMI output and Windows (or the video card) pretty much randomly uses the EDID from either one – and when it uses the one from the monitor the Oculus SDK will not detect the Rift as being attached and cannot read the information from it. A way to avoid this issue is to plug in the Rift first, let windows detect it and then plug in the monitor. But this is clumbersome and needs to be done on every reboot so it is not very practical.

Thinking about what to do about this the solution was simple: Make Windows not see the desktop monitor at all by cutting off the DDC pins from the HDMI cable that goes to the monitor. DDC is used for communicating the EDID and with those gone Windows will only be able to talk to the Rift. This of course means the Rift must be attached to have something visible in the monitor and the monitor will be limited to resolutions supported by the Rift, but in my case this is not a problem as the Rift reports it can support 1920×1200 which is the native resolution of the monitor I use.

In practice the easiest way to get rid of the DDC pins was to remove them from a HDMI to DVI adapter that goes to the monitor. In the DVI connector DDC data & clock are in pins 6 and 7:


Female side of the DVI connector. Pins number 6 and 7 are the DDC clock and data pins used for reading EDID information.

These were easy to remove with a pair of pliers, you need to be a bit careful to not bend the other pins too much but these adapters are also very cheap so its not a huge loss for it to go wrong. My result:


This is the male DVI side of a HDMI to DVI adapter with the DDC pins cut off.

I use this with a cheap passive HDMI splitter that cost 10 euros and it works well. One problem I did notice is that if I turn off the Rift box I get some signal errors visible on the monitor image, possibly the signal gets too weak when the unpowered Rift box is attached in the cable. It can be avoided by just keeping the Rift powered at all times or by unplugging the power cable from the Rift box instead of just turning it off (Reading the EDID from the Rift still works even with the box unpowered). Some shorter cables might help as well.

edit: Also I noticed that when you unplug the USB cable the rift display turns off so it is an easy way to unpower the rift when its not in use, while keeping the control box on.

Rift and the Dell monitor displaying the same image, but Windows only sees the Rift EDID information.

Rift and the Dell monitor displaying the same image, but Windows only sees the Rift EDID information.


Collidable objects just needed to have the string ‘wall’ in them.

I had a look at why the tree, forest, etc. collisions were not working since some Assetto Corsa patch and it turned out to be easy to fix so here is another update for Joux Plane. I improved the tree collision models as well, they no longer throw you around the track so much (rather you seem to now sometimes get stuck in them. Oh well).

Download v1.4 of Joux Plane from here.

Get version 1.41 from here.

A few of these things under the track were causing problems.

A few of these things under the track were causing problems.

Finally got around to fix the issues in Joux Plane with the recent Assetto Corsa early access versions causing collision problems in some parts of the track. There were some leftover triangles under the track in a few places from lower LOD level mesh used originally by RBR.

A few other improvements are included also, changelog for version 1.3:

  • Removed some remnants of low detail geometry under the track causing collision issues with newer AC versions
  • Broken track section no longer adds dirt to tyres
  • All grass is now valid track to avoid penalty from small cuts
  • Added more zoomed in external cameras

Download it hereThe tree collisions also meanwhile seem to have become almost nonexistant and you can fall off the track in many places as well. But just stay on the track and you’re fine ;) Edit: Get the second updated version here instead, it fixes the collisions with trees.

On the forums Justin (born2belyin) announced that he plans to continue SoftTH development:

After a year of “kicking the tires,” I’ve decided to finally put some effort behind bringing SoftTH into the DX10/11 era. I’ll be launching a Kickstarter project within the next month or so to get some initial donations for work on SoftTH. Money donated will go toward my time as developer and toward game purchases for testing (as needed). If enough money is gained, I may even be able to pay another talented developer for his/her time on the project. I plan to work on SoftTH whether the project gets much funding/donations or not, but I will be much more likely to dedicate significant amounts of time and effort if their is a show of community support. I want to bring SoftTH forward for my own gaming purposes, and I want other gamers like myself to enjoy the benefits of SoftTH not being limited to DX8/9 games.

Visit his site at to support the project!

Had a chance to test the Oculus Rift, along with D-Box. The combination doesn’t work great due to the seat motion causing the Oculus head tracking to go out of whack sometimes, but it is likely solvable with software.

This was done in Richard Burns Rally with a quickly slapped together Oculus “hack” for it as I could not get any existing solutions working. It did full stereo rendering with Oculus distortion + partial head tracking (It worked ok as long as you didn’t look too much to the sides)

First, the most important: SoftTH 2 source code is available here: Download, licensed under GNU GPL v3 (see license.txt)

I wanted to write some notes of the source but I havent found the time to do it so it is here in a bit raw form. Its a VS 2005 project, see readme for requirements. The configurations are a bit broken, you need to select the matching configuration for the architecture (Release for Win32 and Release x64 for x64).

It is looking quite likely I wont be developing SoftTH much further personally at least in major ways, so hopefully the source will find a new home. Feel free to upload it to github or similar services for easier collaboration.

As for the reasons why development has been almost at a halt is mostly lack of time and interest – It has been over 6 years since the start of the project now and the “I wonder if it would be possible” has been answered. SoftTH’s concept is proven but supporting it is quite labor intensive: New games come out which do unexpected things, and new Direct3D versions come and go. Also since I have done professional software development for a few years now I tend to want to find something else to do on my free time. Trying new experimental things and making something nobody else has done before is still as interesting as ever but I think SoftTH is mostly past that stage.

For a bit of history the birth of SoftTH happend in the Live for Speed forums here and here. The Matrox Triplehead2go gave me the original idea of rendering on a single card and copying the side monitor images to other video cards as I thought it should be possible to do what the th2go did with software. Back then I only had an AGP+PCI system and I knew from the numbers that its not going to work – PCI Express would be needed but motherboards with two PCI Express slots were very expensive back then. Regardless I decided to skimp on other components when doing a system upgrade and got myself a dual slot motherboard so I could test the concept. Turns out it worked quite well so the money was well spent.

I originally kind of hoped that major video card manufacturers would pick the triple monitor feature up and implement it without needing the likes of SoftTH. To some extent it has happened but still not well enough in my opinion, very obvious and easy features are still missing. Hopefully they’ll get there eventually

See this forum post for discussion about the subject.