Sweet Transit developer Ernestas Norvaišas has told us about the development process behind Sweet Transit, discussed the tech and engine behind the game, and shared some thoughts on the most recent update to the game.
Introduction
My name is Ernestas Norvaišas, and I am a Game Developer, but that was not my aim several years back. Like most people, after finishing high school, I had no idea what I wanted to do in life, so I decided to enter the field my father was working in, that being a mechanic on a ship, although in my case, I was looking to become an Electromechanical Engineer.
At that stage, I was tinkering with Unity, and I had been modeling cars for at least five years, but I still never looked at games as a possible career choice. That might have been because, where I grew up, games were looked at like things for kids, and grown-ups needed to work "real" jobs and then spend their downtime watching TV or going to bars.
In my last year of studying, I had to do a half-year internship at sea which scared me a lot, and made the obvious choice for me to drop my studies and not tell my parents, as I didn't want to work like that. This stress then led to me thinking about what I wanted to do with my life, then looking into 3D artistry for games and realizing I could actually get paid doing this stuff! After that, one thing led to another, and I ended up at Wube Software, working as a 3D Artist on Factorio.
At this point, my biggest dreams and aspirations are a bit cliche but I just want to do what I love with the comfort of knowing I have enough to support myself and my family. I just love creating, and, at this point in life, creating games is the best way to scratch this itch. It's both challenging and gratifying in equal measure.
Sweet Transit's Sources of Inspiration
It all started when I was working at Wube, learning from the team about how they made this and that. The talks I had after work with Michal Pavelčík were probably the most influential and I fully believe those conversations transformed me from an amateur programmer to a slightly-less-amateur one. At first, I just wanted to make something very similar to Factorio, because everything I learned and had read online needed to go somewhere. I started with Unity due to familiarity with it, but because of its high-level limitations, I quickly switched to the Monogame engine, as I wanted more control of everything. I didn’t have much time outside of working hours, so my progress was slow, but every addition sparked a lot of motivation in me to continue. After a few years, I decided that if I was going to spend so much time on one project, it should at least have some form of return on the investment I was putting in and so the first thing I did was pivot so as not to become a competitor to the company I was working for. I created multiple spreadsheets, added data from countless games on Steam that interested me, and weighted everything by sales, competition, and most importantly, what I wanted to create. Then, I chose a genre that could reuse as much of the work I already completed as possible. Thankfully, train tycoon strategy games ticked all of those boxes.
I also didn’t want to create another clone of OpenTTD or Transport Fever, because I can't compete with the manpower, and I knew I needed to make something more unique. The main games I was playing around that time were Factorio, OpenTTD, and Anno and luckily, to my knowledge, there were no city builders that revolved around trains. From that point, Sweet Transit evolved based on those three games and a few others later down the line based on the feedback I received. To be honest, the game ended up being too complicated for just me, so having help from Team17, and especially the QA team in its development has helped a lot.
The Engine
Sweet Transit is made using Monogame as a base for a custom game engine. It is fully 2D with pre-rendered 3D assets. While I am proud of the work under the hood, it doesn’t really include anything that wasn't done before. All the technology is basically a combination of what I learned working on Factorio, found on Google, and read in published papers. However, it works well and performs well due to the fact that the engine is built to run the game. This results in even low-end systems being able to draw 100,000 sorted sprites and run 100+ train colonies in 60 FPS. This performance is one of the main reasons I chose 2D, even with some of its huge limitations in sorting.
Optimizing the Assets
The secret is automation and knowing when to stop. Usually, when developing a game, you’re faced with multiple repetitive and tedious tasks. Improving, adding, or preparing assets for the game, whether they take five minutes or one click, might not sound like much, but when you need to iterate and fix problems, automating these solutions means that you can save yourself hours of time. But knowing when to stop is also crucial. Artists always try to outdo themselves, which is good for art, but a deathly slow process. You can iterate and improve your work indefinitely, but at some point, the returns just aren’t worth it. I know that I will never make anything perfect, so I find that the best choice is to stop when something is good enough. The players will remind you what still needs some work.
That being said, the same rules do not apply when trying to find the style of a game. It took me months of experimentation until I found the right balance between speed and looks. One trick that helped was making a screenshot or letting the game run for a while and just looking at the screen. Just sitting and looking for 10 minutes or so without doing anything will allow you to start to see flaws and things that do not add up, or could be a lot better. Then, you start looking for problems afterward, and test, in your head, all of the choices that you’ve made. Doing this several times after some milestones allowed me to improve the look of things and reach this clean-ish, soft visual style that Sweet Transit has now.
City-Building Mechanics
The city-building mechanics of Sweet Transit evolved from just operating in the background to becoming some of the game’s core components. At first, the game was meant to be simpler with the main focus on puzzles, logistics, and traffic. But I noticed that players wanted to ground themselves in the world: they wanted to see people and personalize their settlements with decorations. While this makes players happy, it’s really difficult to then rewrite how the game works, so at some point I will have to stop and call it "finished", but on the other, I am happy with the direction the game took and I would never have made anything remotely as good if I’d just worked in my own bubble and not listened to the feedback I was receiving.
I believe the main gameplay hooks for people are logistical. After players set up their first train and see resources and people being transferred, they tend to stick to just that for hours. Then for me at least, the best part of the game is when intersections and stations start to slow down due to traffic and you need to invent new solutions to improve your throughput. The game really plays in "stages". First, you reach your goal, which is to unlock something. Then, you build new production chains, leading to deficits that need more production and workers elsewhere. This, in turn, creates more trains and traffic that need sorting. Once all problems are fixed and the colony works like clockwork, it’s time to jump to the next new thing and start all over again. While the game itself is built around the long-term, building up and expanding your settlements and production lines, etc., a player’s progression is designed to feel more like they are tackling short-term projects, with increasing difficulty as they progress.
Thoughts on the Recent Update
Updates in Sweet Transit mostly come from what I hear most requested by the community. I lurk everywhere I can to gather data and take note of what people are asking for and the main problems they’re running into. UI was the biggest problem of them all in this game and we’ve tried to address and fix most of the issues in this new update we’ve called ‘Swift Expedition’. Accessibility, readability, and familiarity were the main points of interest when reworking the old UI so with these in mind, we reworked the UI so that the game uses less space to present the same amount of information in a more easily digestible manner. Sweet Transit does not have GUI preview tools like Unity or Unreal Engine, everything is defined in code, so most of my time working on this update was spent coding all the new menus and panels. But on the flip side, working entirely in code also means that it’s easy to make UI elements dynamic and modular.
Another thing we did in this update was double the player’s locomotive choice. We added new jet fuel-powered trains and several ones that fall somewhere between old and new to accommodate more play styles. The addition of jet trains to the game is really quite personal for me because the first train I ever made for Sweet Transit was a jet train, so it felt like coming full circle from a conceptual point of view.
We also tweaked in-game decorations in this update so that settlements now have a ‘natural beauty’ stat and playing to this, such as building settlements near monuments of natural beauty like lakes or mountains, or adding hedges and fountains to settlements themselves, can attract tourism. In all, the additions we’ve made now have moved the game one step closer to my final vision. Most of the fixes we implement, at any time, are aimed at improving aspects of the game that do not make logistical sense. If mechanics are not grounded in reality at some level, people will not understand how they work and you then run the risk of players becoming frustrated that their theories, based on what they know in their real life, aren’t paying off. It’s the same as creating monsters in a fantasy game – there’s not much point in trying to invent a new anatomy as fundamentally, no one will understand how it works. You just reference what is familiar to everyone and build your creativity on top of that.
Conclusion
I definitely believe the market is wide enough for non-mainstream genres. It’s certainly difficult to get traction if you’re making a new FPS or side-scroller, but for something like Sweet Transit, I feel we sit in our own little bubble and fans of these types of games will find us if they seek something like this out. I feel like the general audience loves to try new things, but it was definitely an oversight to not make the game more accessible for newcomers to the genre, but I think we’ve helped fix this with the new update. We plan to continue down this path and I really look forward to introducing a whole new audience to what we’ve built.