Monthly Archive for November, 2016

New Panel Texturing

I’ve been working on few new additional features to the Subtransit texturing subsystem. The game uses a slightly unconventional approach to texturing which permits significantly higher detail density than simply using unique textures per object. I will talk about the texturing subsystem more in the following posts, but this post should give a general hint of how it’s structured.

So while driving the train, one of the most important parts about the experience is the drivers controls and the drivers panel. In the 81-717 train, the panel is a big console located right in front of the driver, containing most of the primary train controls. It is made up of several panels called blocks (numbered from 1 to 7):

In Subtransit, each of the train wagons is unique to an extent (defined by its unique wagon number, as well as minor differences in the cabin and in the interior). This means that the scuff marks, scratches and other damage, re-painting traces and paint colors and so on are all varied and different in every single wagon.

While it wasn’t originally planned that the train panels would have a complicated rendering procedure, the need for easy adjustment of panel colors, preference for having unique cabins and so on was all justification for blending the final panel material in runtime. Here is a test render of the panel after all the improvements I’ve added to the base shader. This does not reflect how it will look like in the final game, it is merely a test mockup!


Continue reading ‘New Panel Texturing’

How Does a Rheostat Work?

The last post might look confusing without knowing what rheostats are and what they are used for. So this post will explain that without going into too much detail.

First, a simple reminder from the electric motor theory: any electric motor is a reversible machine, meaning that it can be used for both converting electricity into mechanical force and for converting mechanical energy back into electric energy.

Taking for example the train acceleration, as train starts to gain velocity its motors start acting as electric generators, generating counter-current that negates the externally applied voltage. If one would simply connect an electric motor to the DC power, it would simply spin up to a certain finite (and fixed) RPM value – at that point the generated voltage would be equal to external voltage.

The Ohm law applies for electric motors as well. A motor has very low internal electric resistance. Applying a high voltage would quite literally burn the motor. This is why when DC motor is starting, it requires only a fraction of voltage. One of the easiest way to adjust voltage is to dissipate the excess energy using extra resistance.

As train accelerates, the resistance should be decreased to compensate for constantly decreasing voltage (which is caused by motors generating electric voltage in the opposite direction of externally applied voltage). A rheostat is simply a variable electric resistance. The 81-717 train we simulate in Subtransit uses a rheostat controller to switch contacts through preset positions, resulting in parts of rheostat being shorted out and total current adjusted as needed (the schematic is a simplified version just for illustration):
(black square indicates closed contact, empty square indicates contact is open)

Continue reading ‘How Does a Rheostat Work?’

Rheostat Arrays

I have completed some work on the undertrain equipment for the 81-717 train, specifically the rheostat arrays. They are an array of resistances which are connected together in a specific way – as the train accelerates or brakes, the extra electric power that cannot be utilized by train is dissipated on these resistors as waste heat.

The rheostat array in Subtransit is all wired up correctly on each type of train – every single resistor, wire and conducting link are in their correct places and correspond to the physically simulated model. Of course, I don’t think anybody would notice if it was wrong, but these are the kinds of details that I want to see in the game.


Continue reading ‘Rheostat Arrays’

Metrostroi – Subtransit Prototype

It may be interesting to mention where Subtransit originated from. Before the development of the game started, I was working on what effectively became the prototype for the game. It was an addon for Garry’s Mod, which initially was just a fun test to see if nice trains could be implemented using Source Engine physics.

Initially, the mod only had trivial simulation of the train systems. It was a very arcade-like model, as having proper moving trains in Garry’s Mod was a huge novelty at the time. The trains utilized collisions provided by Havok to stay on the rails – effectively simulating behavior of flat wheels on flat rail heads… and very very low polygon curves.


Continue reading ‘Metrostroi – Subtransit Prototype’

Introduction Post

Welcome to the official development blog for Subtransit! It is a highly detailed subway network & train simulation game we are currently developing. I’m known under the nickname of Black Phoenix – I am the lead developer, engineer and artist for this project and I will be posting about the progress of the development, as well as various engineering things related to the project.

This project is based on my prior work with writing aerospace simulation code, directly deriving from the internal systems simulation framework I originally wrote for another project. Our simulator is designed to recreate the atmosphere of the metro network, though the main functional feature is that everything is fully simulated within the train and outside of it.

All of the trains systems, electric wires, pneumatics are simulated in realtime for every wagon, replicating every intricate detail of the trains behavior. The physics are based on a rail-vs-wheel simulation code that provides detailed dynamics of motion, calculating full collision between the wheel and the rail surfaces.

That is just the basis for the simulator from though. We are working on replicating the real metro lines and their infrastructure. All of the objects in the game are based off engineering data or schematics – making this likely the most detailed train simulation ever available to the public… or possibly even the most detailed one ever!

To answer a question about the setting, we chose the former-USSR metro networks for a variety of reasons. The trains presented in our simulator are pretty much legendary to those living in the area. They are very sturdy, reliable and have been around for many years transferring people around consistently and on very tight schedules.

Everyone on the development team has been on these trains many times. The atmosphere of these metro networks is unlike any other in the world – it is the atmosphere of a workplace where rules are strict, but every rule is written out for a good reason (and often after a serious accident). The train schedules are precise down to about 5 seconds and are well-maintained. The whole transport network is incredibly efficient.

At the moment this post was written, the official website was not available yet – but when it will become available, you will find the link to it in the top menu of the website. This is not the official website for the game, only a development blog.