Game jams are a true source of creative energy – something the Pixel Maniacs from Nuremberg can tell a thing or two about. After all, their multiplayer fun racer »Can’t Drive This!« is a result of such a game jam.
We’re the Pixel Maniacs, a small indie development studio from Nuremberg. Originally named »Benjamin Lochmann New Media GmbH«, we’ve been developing mobile apps since 2011, and we are proud to say that we have over 150 apps in the App Store and on Google Play. The apps which were originally characterized by their style and their quick development time, were often available for download in the store after only a few days. Over the years, the apps grew in size until we eventually focused on developing multiplayer games like chess, nine men’s morris or battleships, and were nominated for the German Design Award with »Sudoku Champions«. But being a company consisting of gamers, we’ve been itching for a long time to go beyond the scope of mere app development. So, last year we joined the club of desktop and console developers, and on February 16, 2016 we celebrated our debut with the release of our first PC game »ChromaGun« on Steam. Today, almost a full year later, our second game is about to be completed. »Can’t Drive This«, a crazy party multiplayer racing game, also resulted from a game jam and is currently in Early Access on Steam.
In Can’t Drive This, two players compete against each other. One player drives a car, while the other one builds a race track – at the same time! It’s hard to assign the game to a certain genre. It’s probably best described as a sort of asymmetric »split-screen co-op arcade-building-racing editor« game. Each match starts with a road tile of just about 20 x 20 meters (approx. 65 x 65 ft) in size, which the driver is placed upon; the »builder«, on the other hand, now needs to build a race track for the driver. It’s not that easy though, since each additional 20 x 20 meter tile which the builder can place is selected randomly – similar to Tetris.
It may be a straight tile, a 90-degree curve or a miniature golf-like windmill which makes the driver’s life hell. Now, the driver could just drive really slowly in order to keep control of the track, but obviously, the game is hardest – and most fun – at high speed! That’s why we based the game on the movie Speed, featuring Keanu Reeves and Sandra Bullock, and make the car blow up, if the driver is too slow. The driver is now faster, leaving the builder less time to place the tiles. As a consequence, the track isn’t optimized, which makes it harder for the driver to keep control. The driver who now loses more and more control of his vehicle, now makes it harder for the builder to assess where to best place the tiles. Thanks to carefully balanced parameters, the game dynamics resulting from this so-called »positive feedback loop« guarantee a series of short, challenging and scream-filled rounds and – for our benefit – an enormous »just one more round!« effect. In order to increase the replayability, the driver can choose among a number of different and customizable vehicles, e.g. a monster truck, a stroller or an ice cream truck. The builders, too, can customize their tracks and adjust the colors and patterns to their liking. In online matches, the driver drives the car on the track of the builder.
Customization Techniques & Artwork
Customizing vehicles with fun accessories like spoilers or hats is no problem at all from a technical point of view: A new object is added to the vehicle object – done. Adapting the color of a vehicle or track tile is a different story though. Traditionally, 3D models get their look using just one material. Materials usually consist of a shader and several textures which, e.g., describe the color or plasticity of the model. Since we wanted to use different colors for different parts of a model, we couldn’t use Unity’s default solutions.
We had two options: One would have been to write a shader which would get information from several textures and colors and offset them against each other in a certain way. This would be repeated for each frame and could potentially kill the performance of the game. A fast-paced game like this needs a frame rate as high as possible, so we decided against this method and instead went with procedural materials, so-called substances. Substances are materials which, similar to a shader, offset several inputs – like colors or textures – against each other. Unlike a shader, substances produce textures though which are saved as a file. Although it takes longer to produce such a texture file than to just render the end result of the calculation onto a model, it only has to be done once. This means: Every time a player colors their street or their car, a new texture is being generated, saved and can then be used without any major performance issues without having to calculate each frame individually. In order to generate this procedural material, we used the »Allegorithmic Substance Designer«. The Substance Designer uses a node-based system to generate and display the mathematical operations between textures, parameters, colors, etc.
The original car from the game jam version was sluggish and slow because the driving physics were set up physically correct. For the later game, we tried and tested several driving physics and combined the best of all of them to create an arcade behavior similar to games like »Mario Kart«. The new car physics as they exist in the current state of the game, have little to do with actual physics. Physically speaking, the tires are balls, the colliders of the vehicles are simple blocks, and the only reason why the car can’t accelerate in the air, too, is an IF in the code. Sometimes realism just needs to step aside and let the fun prevail.
Being a small indie studio, our marketing budget is tight, which is why we try to generate the biggest impact possible with minimal resources. Hence, we focus our marketing mainly on social media campaigns and influencer marketing; here are a few examples:
Ludum Dare – for all those who haven’t heard of it – is a regularly held game jam which we participated in three times so far and gained extremely positive experience from every single one of them. At the event, thousands of developers around the globe, both pros and amateurs alike, develop a game within 72 hours.
At the start of Ludum Dare, a topic is announced which is usually a bit vague – »Shape Shifting«, for example, or »An Unconventional Weapon«. The last two times we participated, we streamed the entire process live on Twitch – from the brainstorming sessions to the respective concept phase up to the actual development of the game. Not only did we have a lot of fun making the game, we also received direct, unfiltered input by the audience. The game jam was also followed by journalists from a number of gaming magazines: Within those 72 hours, an article on Kotaku was published, which also gave Can’t Drive This a lot of attention. Friends on Twitch drew attention to our game jam participation in their streams, providing us with another platform for even more fan contact. When the time is up, the winners of the game jam are selected. For this procedure, all participants evaluate the submissions by other participants. In order to be able to win the Ludum Dare at all, a participant must have evaluated at least 15 other titles. Only then their title will be presented to other participants for evaluation. This system opens the door to a massive community of enthusiastic developers who often become good friends later.
We took advantage of the game jam’s marketing boost by submitting our game to Steam Greenlight while Ludum Dare was still running. The resulting article on Kotaku was so popular that Can’t Drive this passed the Greenlight phase within just one week. We also regard Greenlight as an important marketing factor since it creates a discussion, stimulates input from outsiders and generates significant hype early in the development phase of a game.
Our loyal local gaming colleague, Christian Dickert, gave us the advice to use Early Access, not only as a platform for early user feedback, but also as a marketing tool. Gamers who are interested in Early Access titles often differ from gamers who prefer to wait for the finished product. Due to these slightly different target groups, we saw the potential to reach more people and thus take advantage of the obvious benefits of Early Access:
- faster monetization of the project (at least to some extent)
- fast evaluation of user feedback (does the concept have potential at all?)
- detailed user feedback and the foundation of a solid fan base, provided the proposals by the community are consequently realized and implemented
The marketing experience we had made in the apps department so far (more than 150 launched apps) were limited to mere performance marketing campaigns. We usually tried to buy as many installs as possible in the shortest possible time to conquer the respective platform charts on iOS or Google Play. We took the exact same approach with our first game ChromaGun and failed miserably. None of our performance campaigns generated a positive ROI; in most cases, we even missed it by several hundred percent, although the target group apparently couldn’t have been more fitting (e.g. Google Adwords for keyword »Puzzle Game Steam Linux« or similar). In the following weeks, we talked a lot to our gaming colleagues who were much more experienced in this area, and we learned that in order to promote a game, unlike a small free app, it’s important to have as many »brand touchpoints« as possible. Essentially, a potential customer must have heard about a product a number of times first until he eventually decides to buy it. Other factors besides the actual product also play a role, like the game studio or a positive reference to the game from a respected authority. This authority doesn’t necessarily have to be a big (print) gaming magazine; a popular streamer or YouTuber may also be an authority for their target group. So, in order to create as many of such »brand touchpoints« as possible for our rather low budget, we moved our focus to viral campaigns. We tried to make up for the money we were lacking through creativity. Two of these campaigns were:
Save the Penguins!
For the launch of the Linux version of Can’t Drive This we kicked off a campaign in cooperation with a penguin rescue center in South Africa and invested 100 percent of the revenues from the Linux version of Can’t Drive This in the adoption of penguins. In addition to articles in a South African magazine, we also received prominent rankings in the /r/linux Subreddit and a lot of fun tweets. The penguins themselves were named after the best players of the game – we’re really looking forward to meeting our little TheRealHellcat and the agile Ponypunch in the Arctic Ocean.
Like a Wrecking Ball
During the first streams of Can’t Drive This we realized that a lot of streamers associated the wrecking ball-style tile in the game with singer Miley Cyrus. The video of her song »Wrecking Ball«, where she’s swinging back and forth on a wrecking ball naked was a huge success. We took advantage of that and implemented a small server-side switch to spawn a naked woman on our wrecking ball. The feature lay dormant in the code for weeks until we were live during a bigger stream where the (female) streamer was also singing the chorus of the song – »I Came In Like A Wrecking Ball«. In the next round, Miley spawned, and the streamer completely freaked out. We were perfectly able to use this part as a snippet on Reddit, Twitter and the likes, which brought us an incredible amount of impressions and thus further brand touchpoints.
Our Own Twitch Stream
A few weeks ago, we started to expand our own Twitch stream on twitch.tv/pixel_maniacs. Every Tuesday at 9am and every Thursday from 6pm we offer a behind-the-scenes of game development. This offers a number of benefits for us: We keep in touch with the players and get direct feedback, and also a lot of good suggestions for improvement. We use the Thursday stream to try out games which every game dev should know. We try to analyze these games from a developer’s point of view and to learn what’s been implemented well and not so well. For us, the partnership with Twitch generates additional revenue (if not much) since the viewers have the chance to subscribe to our channel for a fee.
Make Contact with Other Developers
Our most important advice for everyone: Get in touch with other developers. While we’re not profitable with our games yet (we’re cross-financed through our previously created apps), our gaming revenue is growing, and a relevant part of this growth is owed to valuable tips from the developer community. Hence, we’re happy about any form of exchange and any cross-promotion!
We actually don’t want to talk too much about Unity itself since the readers of Making Games are probably familiar with the benefits and disadvantages. We noticed that we can create fast-working prototypes with Unity, which are also playable without download thanks to the WebGL export – perfect for a small game that’s to be created during a game jam. After Ludum Dare was finished and we had only received positive feedback to the »innovative game idea«, we wanted to go ahead and publish the game. Strictly speaking, we basically started from scratch and revised and scrutinized every single component.
One of the significantly bigger challenges was the fiercely requested online multiplayer mode. A multiplayer game consists of finding a fellow player (matchmaking) and connecting the game to exchange game data. For the matchmaking in the lobby we use the eco-system each game is started in. In the current case, for example, we use Steam and its infrastructure. This way, the game can be played with both invited friends and opponents filtered by region. The code is abstract, so that it’s possible to quickly use other eco-systems, like that of PlayStation instead of Steam Matchmaking. In the game itself, data is exchanged via the Unity Relay Servers. Since a game round is played by two players, we decided against dedicated servers. It’s a classic host-client system where one player acts as the host and both players are clients, too. Due to latency issues, in Can’t Drive This the driver is always the host of the game, while the builder is always the client. Since version 5.4, Unity offers its own multiplayer stack with its own Relay Servers, which is paid for based on traffic used. Our first step was to keep the costs at a minimum by trying to create a direct connection between the two players and use the Unity Relay Servers solely as a backup. With techniques like NAT punch-through and specifically hosted Relay Servers, this procedure worked quite well; however, there were constant problems with some internet providers and the connection between IPv6 and IPv4. In the end, we decided to go with just the Unity-hosted UNET solution.
Our friends at Klonk Games who developed the award-winning »Shift Happens«, among other games, recommended Rewired to us for the gamer input. The library offers keymapping for all current controllers on almost all operating systems and consoles, and also deals with special cases like the de-/activation of controllers. Since the players are assigned different roles, it is possible to switch the keymapping between driver and track builder during runtime, without having to use a large number of IF statements.
Data Bind for Unity
During development, we wanted to establish a kind of design pattern in Unity for the user interface, and while doing so, we came across Data Bind for Unity, an excellent asset to counter the UI chaos and to use the MVVM pattern. After a familiarization period, everyone on the team was thrilled – it’s the perfect interface between code and UI design.
Temporal Reprojection Antialiasing
Unity itself offers a lot of post-processing shaders, most of which cause considerable performance losses though. An article about Playdead’s indie hit »Inside« made us aware of their antialiasing shader which boasts an excellent performance. The method behind it is called temporal reprojection. Simply put, with this kind of antialiasing, the camera makes each frame shake very slightly, and several of these slightly blurred images are then aggregated to find edges in the image and blur them. This creates a pleasant and unique antialiasing.
We’re constantly working to improve our workflow in Unity and are writing our own editor scripts to test the start of the game, to better manage assets or prefabs and also to develop interfaces with our online tools. In order to receive a homogenous build and avoid using a work computer, we use a computer which analyzes, builds, tests and uploads the current project with Jenkins. We wouldn’t want to live without it any more.
About the Authors
is CEO at Pixel Maniacs
Benjamin is in charge of tiresome office chores, marketing and making sure that things run smoothly and on time.
is Programmer at Pixel Maniacs
Johann is one of the programmers, and he makes sure that the games are bug-free and run with good performance.
is Programmer at Pixel Maniacs
Together with Johann, he’s in charge of the programming and the quality of the games made by Pixel Maniacs.
is Creative Director at Pixel Maniacs
Steve’s job is to make sure that the Pixel games are fun to play and that they look the way they do.