Going back in time

Going back in time It been a long painful one this time around. We have stepped back in time to fix up some of our old projects, so lets jump in and tell you what we have been doing over at bitshift.

Dog Fight As we have recently updated our company name, I decided to dig our our previous project: Dog Fight. I figured it should be easy to just pull it out, update the version of the Unreal Engine it is running on from 4.11 to 4.18, change the splash screen with our new company logo and possibly add Vulcan support (which we hoped to release with but never made the cut).
Unfortunately I have forgotten how painful and slow using the UE4 Engine was/is. I've wasted a good half a week just trying to get the game open in the editor. The frustrating part is that it takes so long to do one thing, and if you do not get it right I need to go back and try again - which has happened a lot! But at least I now have this running on the latest UE4 engine but have put this on hold.

QLaunch I updat…

Vehicle Edit & Clone Support

Vehicle Edit & Clone Support We are having a LAN with mates soon and want to test out T&T with more than 2 players. On that note, we have been sprinting towards ironing out the final big pain points.

What would that be you ask?
I'm glad you asked... seeing as I planted the idea that you in fact did want to ask in the first place! If not, tough! But you already know as the title has given it away: Bug free (I hope!) support for editing a vehicle's route as well as the ability to clone a vehicle.

The vehicle panel (left side of the screen) has some snazzy looking tool buttons that provides access to: (1) locate and follow the vehicle, (2) edit the vehicle, (3) clone the vehicle, (4) delete the vehicle.

Clicking edit or clone will bring up the dialog you see on the right which shows where the train will stop and what will be unloaded and loaded at each stop. This is now editable once the vehicle has been setup, which should allow for some good micro to optimize profit!

Pain point iteration

Leveling System  We have been continuing our "pain point iteration," that is, playing the game, finding pain points - things that are painful to endure when playing, fixing them and repeating the process. Again we sat down as a team on the weekend and had a multiplayer game of T&T. Once the game was over we discussed what is the biggest thing that needs to be improved?

Surprisingly we came away feeling that the game was really fun and well balanced. It caused us to have to think about where and when we built, to watch the wallet and to ensure we were encountering profit before we proceeded to attempt to expand.

The biggest pain point was that the only way to expand was to expand to other cities and develop resources all over the map (lets call this "horizontal" gameplay). The cost of horizontal expansion is significant which leads to a mid game economic slump. The early game we have the bank to give us enough of a loan to get up our first resource chain to de…

Dialog overhaul

Now that setting up a train is a really lovely experience, we sat down and had a few games of multiplayer so that we could identify the next major pain point when playing Trains & Things.

Surprisingly, it boiled down to fighting with the user interface - we were always moving windows around and they would always end up in crazy positions. Especially when playing in a window and resizing the window. They would even vanish into the ether and we could not rescue them!

Our initial UI design philosophy was to have dialogs as we knew from the get go there would be a lot of information the user could dig into. We figured that allowing the user to lay this out as they liked would be great!
But here we see the ideal depart from reality. The theory is great, the practicality is vastly different.

We again talked about what different games do thing well, and why they are done well and those games that do them bad and came up with a new solution to the problem: Let the game pop panels in from …

Mod support & Train config

Whats going down in code land? Mod support Lately, I have been working on mod support. I wanted to get this done early in the piece, so that modders can start working their craft.
Also I want to get feedback from modders to help improve my code API for them, and so would rather do this sooner rather than later.

For example, in writing the "Example Mod," which will ship with the game I wanted to replace the train with a customized version. To do this without any modifications to my code would take 5-10 lines of code. This was overly verbose, and as a result I modified my game code so that I could do it in 1 line of code.

The tricky bit with modding at the moment is that of breaking backwards compatibility as I continue to work on code. This is the bane of modders - when a developer goes and radically alters their code breaking mods. Unfortunately there is nothing I can do here except provide good communication over what has changed and why.

For research, I looked at Factorio…

Master server

The new master server code is up and running!

In Dog Fight we used the Unreal 4 engine, which provides its own master server, which I assume is located at Epic HQ somewhere. But Godot has no such built in feature.
I came up with the interesting idea of using IRC as my master server as I noticed many free IRC servers. I hobbled together a master server implementation based on IRC by implementing the IRC protocol in Godot. I found this took a long time to connect to the IRC servers as there was quite some handshaking going on.

Sometime later, my brother stumbled across a great Godot plugin written by vurpo, which adds C++ support for the Matrix IM protocol. I then dropped this plugin into my project and have had only chat support for a long time, and this caused my IRC plugin (and hence the master server code) to become broken.

Seeing that I have had some time recently, I decided I wanted to finally get this sucker working again so I don't have to keep joining my multiplayer games …

The end of hibernation

Well, study is finally winding down as I finish my degree. That means I now have time to resume work on T&T.
Since last time I haven't done much apart from keep an eye on on the Godot engine watching it become more and more stable and getting in a few of my own bug fixes.
My computer blew up which was well over 5 years old. I have built a new system: a Ryzen 5 1600, RX580 and a 29" ultrawide monitor. This thing is such a dream to work on.
As I write this up, I am doing a build which is making out all 12 threads at 100%!

See full size
First thing I have worked on is to get the latest Godot code and get T&T working again as the engine API is still in flux. The closer Godot gets to a release the less and less this will change.

I am also looking now at working getting the master server working with the Matrix IM protocol. Previously I was using IRC as a chat and master server system but it took too long to connect to the IRC channels. Matrix is much faster, and I have pus…