The problem with building a car in Jalopy
Game dev is hell
This is The Mechanic, where Alex Wiltshire invites developers to discuss the difficult journeys they’ve taken to make their games. This time, Jalopy [official site].
”A lot of people have made the correlation between game development being a janky mess and the car in the game being a janky mess,” says Greg Pryjmachuk, the sole developer of Jalopy, a game about driving a Laika 601 Deluxe through the countries of the former Soviet bloc with your uncle. “It does seem quite apt.”
But he’s definitely being a little hard on himself. Jalopy is a game he never intended to be as big as it’s become, a project he started to escape from mainstream development. A couple of weeks back, after two years in Early Access, it finally reached its official launch, and with it has come a slew of negative reviews and angry forum threads born of a weight of expectation that Jalopy’s rattling old chassis was never really designed to live up to.
More apt for Jalopy is the fact that it was inspired by a film called Le Grand Voyage, which is about a father and son who drive on a 3000-mile pilgrimage from southern France to Mecca, and takes as one of its principal themes the idea that the journey is more important than the destination. Jalopy is now feature-complete, with the procedurally generated highways and border crossings of Germany, the Czech and Slovak Federative Republic, Hungary, Yugoslavia, Bulgaria and Turkey to travel, many new engine parts to install, items to trade between nations and a story about the uncle to follow.
But it began as a free portfolio piece called Hac that Pryjmachuk hoped would help him exchange making annualised Formula One games at Codemasters for the indie life. Hac was a narrative-based driving game in which you’d fit water bottles and other gear into the trunk of your car alongside your uncle and drive along the autobahn, and its distinctive setting immediately gained attention from both players and publishers. “That’s when I thought I could make some money on this, especially when a publisher says they’d give a down payment,” Pryjmachuk tells me. “That’s your contingency plan right there, two years’ development paid for. Go on then!”
Signing with publisher Excalibur, the game’s scope immediately began to change and grow. There would be different types of tyres, repairing and dirt and grime. “It was very modular, where I’d build one part of the car and send it to the publisher, who was really good about it. It was a very organic process. So we did dirt, tyre changes and then we’d talk about where to go next.”
The place they went next was the car’s engine and its trunk, and that’s when the key problem with Jalopy reared its head. “I’d taken one game and moulded it into another, and there were all these caveats I kept forgetting about,” Pryjmachuk says. The idea was that the car’s engine would become built out of different components which players could upgrade, giving the game an RPG layer, and that they’d stow things in the trunk. So he spent three months building them, but when he added them to the game, a year of fixing the bugs they caused began.
One of the problems was the fact that when objects are placed in the car they have to become part of it so they’ll stay attached as the player drives. To achieve this, Jalopy subjects objects to complex tiers of parentage when they’re installed: their immediate parent is the specific node in which they’re sitting, then the inventory the node is in, then the trunk, and then the car, and if there were any errors in parentage, the game will assign them the wrong scale.
Other issues came from Pryjmachuk’s attempt to avoid a world of even greater pain. If you’ve experienced, for example, Far Cry 5’s vehicles going wild when they interact with physics objects then you’ll be familiar with the problems physics can bring to a game. “Physics bug out loads,” he says. “Users can be quite forgiving of that sort of stuff because it’s funny and makes great videos, but especially with a game where you’re driving 20-minute journeys from A to B, if all the stuff you put in the trunk has bugged out and fallen through the world, that’s quite frustrating.”
His approach removes the physics from objects when you placed them in the car and forces them into positions. But if physics is a world of pain for developers, manipulating 3D objects in space can still sting sharply. Pryjmachuk noticed that when the game was reloaded, wheels would become oval. Bits would be flipped over. Part of the problem was quaternions, an almost entirely non-intuitive number system used in the mathematics of 3D space which I don’t remotely understand, and which regularly confounds programmers, too. Get any calculation wrong and items would be twisted around.
Still, Pryjmachuk couldn’t dodge physics entirely. As a relation of the firstperson immersive sim, Jalopy has to accept players doing things that aren’t necessarily in the game’s best interests. So when players are sitting in the car, they can open the door, pick up items from the ground and drop them inside the car. “I was going to fix that, but so many people use it as a glitch. It doesn’t unbalance the game and it’s quite useful, so if you fix it people will get quite upset,” he says, remembering when a glitch in Minecraft was fixed that allowed players to leave spaces between ladders and still climb. “People were in uproar and that stuck with me. It’s one of those things, your game isn’t yours at that point, it’s the players’ and they get to dictate.”
Then there are the physics of the car itself. The Laika 601 Deluxe has to be very light because of issues Pryjmachuk faced with Unity’s collision system. So to avoid the car from flipping over easily, he placed its centre of gravity 10 metres beneath it. That would be fine, but it means the car can never act as a full physics object in the world. “The reason you have to put the handbrake on before you exit the car is because as fun as it’d be to see the car roll away, I can’t actually do that because the car movement has to be controlled by the player. There’s no free-wheeling system in there. Nothing relies on physics, it’s all player input-based.”
If the car was given a free-wheel system, its hacked-in centre of gravity would be too tight for its wheel colliders. But if Pryjmachuk removed its centre of gravity, it would easily flip over. And if he made the car heavier so it won’t flip, it’d run into problems with collision.
And if this wasn’t enough, the way the car is set up and the number of hacks Pryjmachuk has made to Unity’s physics has prevented him from being able to keep Jalopy running in the latest versions of the engine. To upgrade the engine would mean rebuilding the whole game from scratch, potentially doubling its development time.
Now, if you speak to most game developers, they’d tell you Pryjmachuk was dead right to stick to 4.5, the version of Unity to which Jalopy is inextricably bound, but the grim irony is that they’re wrong. It happens that 4.5 has a bug, a memory leak during build. Building Jalopy is a process which takes 20 minutes and often fails, and because it can only use 2gb of Pryjmachuk’s PC’s memory, there’s a hard limit on the amount of stuff he could fit into the game. He’s fully aware that some of the longer routes in the game just don’t have enough happening on them, but the tools simply stopped him from being able to add new things.
“These issues ended up doubling the development time, and probably made a poorer version of the game I could have made,” he says. “If it was working freely, I can imagine I’d still be working on it, still in Early Access, adding more features. But it’s the path I chose.”
Perhaps Jalopy would also feature Poland and Russia and other countries which players have enthusiastically requested. But it probably won’t feature multiplayer, another thing players often ask for. “I did ask somebody what that’s about, and they said it’d just be nice to sit next to their friend,” Pryjmachuk says. “I started off explaining why it won’t have multiplayer, but people don’t read previous threads, so then it became just saying no, and then I couldn’t be bothered to reply. I’m doing this all myself and there are only so many hours in the day.”
Dealing with Jalopy’s players has been both rewarding and challenging, often at the same time. There was the time during Early Access when they were frustrated with not being able to place items on the back seat, a decision Pryjmachuk made because it would make the game too easy. His response was to place something covered with a blanket to demonstrate that there’s no space to store anything else. But because the change in which the blanket was added came in the same update that temporarily removed the uncle from the game (because he was causing bugs), players joked that he was under the blanket, dead.
Pryjmachuk also learned that he had to be clear with players as to what they could expect. He knew that if he added Poland it’d only increase pressure to add other countries. “Those are the players you love, because they love the game so much, and you’ve got to kill them with kindness. You’ve got to be really apologetic and upfront about why something might not be in the game, because as soon as they get a hint that it might in the game, they’ll lambast you.
“As far as I know, everything I’ve promised from the beginning is in the game: the uncle, all the countries, the components. They’re always expecting more. The trouble with Early Access is releasing, and yet if you’re not releasing then you’re DayZ and what are you doing?”
But Early Access has also been fundamental to Jalopy’s development, giving Pryjmachuk ideas for what it should grow into and providing feedback on his successes and failures. As he faces insults and continues to fix bugs at his game’s journey’s end, he remains positive. “Even with the emotional toll it takes on you and how draining it is dealing with the community, I still think Early Access is the best process for this. You get an expectation for sales and you can plan your game. I want to still be doing this in 25 years, and it’s still the best job I’ve ever had.”