Programming an Indie-Game: Making of Cold Crash
Let’s start with a confession: Do not think an indie-game is easy to develop…
And now the confession: In the beginning, at the end of 2015, we made the same mistake as many motivated people who want to build an app or an indie-game or start a similar project: We thought we’d be done soon. We thought the project could be realized in half a year. Parallel to our full-time jobs.
No chance. I am writing this text on Friday, 27 October 2017 and Cold Crash is finished, but not yet published in the App Store, as we are still missing parts of the accompanying marketing and PR campaigns. Like this text.
How do I program an indie-game?
It all started with an idea: an interactive story similar to pen and paper role-playing games. The reader / player has influence on the outcome of the story. Depending on the player’s choice, he can reach one of eight different ends – whether tragedy or happy end, it’s up to the reader. A small, manageable project, an indie-game.
“Of course, as a programmer you immediately think in technical dimensions”, says Joachim Mertens, “and I immediately thought that the text should be interchangeable and should be able to work in several languages. All demands on the programmer.”
Joachim and I rarely met in person to realize Cold Crash. We have known each other since our school days, but we now live in different cities. And the Internet makes so many things easier, including cross-professional cooperation.
These points were important in the development of Cold Crash:
- An own, small scripting language, with which the author determines when e. g. which question is addressed to the player (and with which answer possibilities).
- The author can use the scripting language to determine when the screen “wobbles”, when there are transmission problems and when the player has a time limit for his or her decision.
- Cold Crash has almost 300 positions – text sections that the player can jump to – or not. This is a decision tree that I simply cannot keep completely in my mind, so I needed a tool to keep the tree in parallel: Mindomo.
Cold Crash – decision tree
Cold Crash – decision tree (detail)
It soon became clear to us that a Cold Crash player would need an “inventory” – i. e. he can collect items in the game or overlook them. Cold Crash stores this list of items, the “Inventory”, depending on each position: If the player jumps back in the story, the items that the player has with him also change.
Joachim went back to the Stack Overflow page for many of the program’s details: “Cold Crash is an app rather than a game in terms of structure, so I could get a lot of details on Stack Overflow. On the site, programmers exchange ideas, I can’t stress enough how valuable stack overflow is.”
The graphics of Cold Crash
The designer and draughtsman Grobi created the graphics for Cold Crash. Tiny Tap Gems put him in charge. Collaboration with graphic designers is always exciting for project developers, even in an indie-game, because it is a natural tension: the graphic designer is himself an expert and has the corresponding expertise, so he is supposed to contribute his expertise. On the other hand, he is not allowed to work “past the project”, he must meet the already existing specifications of the game designer. For example, if the game designer wants to convey a certain impression to the player, the communication via graphics must work.
Luckily, with Grobi we have gained a very competent, talented and open graphic designer with whom the collaboration was very easy and exemplary.
Graphic artist wanted for an indie-game….
Of course, we received several offers from various freelancers who work as graphic artists. There were some good things and some not so good. Grobi’s work convinced us.
We had the idea to show a scene: Ice and snow, glaciers, landscape, a burning plane wreck and a survivor freezing in the thin uniform of a flight attendant. Grobi then had a better idea: to show the survivor, Anna, as a portrait – so that the player could recognize the situation by her emotions. That was a very good idea, as it turned out, also for the app icon. And it was exactly what we wanted, the graphic designer should bring in himself and his own expertise.
Cold Crash: Origin of the graphics
This was the first draft that Grobi made for us. We were immediately fascinated by his style and idea. Originally we wanted to show a landscape: an airplane wreck, burning debris, everything in a scene of mountains, snow and ice, plus a seemingly lost survivor. Grobi was able to turn this idea around and reduce it to what is really interesting for people: other people.
Cold Crash: The cover?
Grobi’s second draft – the drawing is closer to the face of the main character Anna, waives the clear representation of the Messenger environment and replaces the mobile phone with artifacts. These artifacts are reminiscent of computer graphics that can be mirrored in a helmet or camera, which was intended as a reference to the Messenger environment. We didn’t like this design as much as the first one, especially because of the black eyes.
Cold Crash: Anna's taking shape
We are approaching the final design. Grobi takes small steps towards the final result and integrates us, his clients, asking for feedback. This was very important to us and we felt safe. This design is based on Grobi’s first idea of showing a face instead of a landscape, and at the same time becomes more detailed and accurate. Anna really takes shape for the first time.
Cold Crash: further Details
Here Grobi has added more details, making the whole face of the main character Anna more recognizable and with clearer contours. On the way to the final result, we were sure that we were almost there.
Turns out we were wrong…
Cold Crash: so close
This design accompanied us for a long time – until the testers came into play. We had finished the Alpha, the game worked, but we didn’t have a polished surface yet. The testers drew our attention to the depiction of the mouth, which for some went in the direction of “Japanese comic strip for adults”. We asked Grobi to defuse the representation. As the professional he is, he came to meet us there very much without having to give up his creativity.
Cold Crash: final version
The final result – a visibly distraught person in a life-threatening environment forced to fight for her survival. Of course, Cold Crash can’t compete with triple-A titles, so an indie-game will always have its own unique, less marketable style. We liked it very much – thanks again, Grobi! It was a fruitful and stimulating collaboration!
“Japanese Comic for Adults”?
Grobi’s first drafts looked very good, the next stages of development weren’t really our thing. So we asked him to develop the whole thing in a slightly different direction. When the cover picture was finished, we installed it – and promptly received criticism from the testers, who got the impression that the cover picture went in the wrong direction. The testers thought that the picture went too much into the direction of what we call “Japanese comic strip for adults”; additionally, it was seen as generally too gloomy.
It was a challenge to communicate this to Grobi. Not because the artist would not have been receptive to criticism, but because we wanted to package the message as sensitively as possible. Afterwards it turned out: Grobi is so easy-care, he would have forgiven us a more direct speech.
What we have learned from it: Criticize behavior, not the person when there’s something to criticize. Stay as objective as possible. And get in touch as soon as possible, don’t be afraid to communicate your own point of view. It was our project, our indie-game, so the graphics should satisfy us.
The music of Cold Crash
We quickly realized that we didn’t want any background music or noises. The content of Cold Crash is more like a book or a messenger app, and these rarely have background music.
However, we needed a piece of music for the trailer. And there came together several requirements:
- Affordable – Cold Crash has been a hobby project from the beginning, we don’t expect it to recoup the production costs including the programmer’s and author’s fees. This is not so much due to the quality of the app and the story as to our modest marketing opportunities.
- Activating – the music should suggest to the listener that the outcome of the story is up to him, that he is in control – in a good way, but also when things go wrong.
- Dramatically – an impression of urgency should emerge, because the storm is approaching and Anna doesn’t have much time left before she freezes over.
- Not generic – the clip should have a certain character of its own and not sound interchangeable, like many Hollywood soundtrack pieces today.
- Recognisable – we wanted the piece to have a recognizable character. No catchy tune, but still something to remember.
There are a lot of providers where you can buy music clips for apps or games, we ended up at Audiojungle – and spent about four hours looking for the track we finally took. It takes time to search through such a huge archive, if you have such precise ideas.
Cold Crash’s testers: The secret ingredient for the indie-game!
In order not to burden our budget even further, we searched among friends and acquaintances for testers and fortunately we found some. Hey, thanks to everyone who took part! You were the secret ingredient that made it possible for us to polish the thing to a high gloss!
Of course, some unpleasant findings have rammed us down: The dialogue was dull in many places. The user interface was too complicated. The design was annoying. And, absolute motivation killer: The app crashes – and the programmer doesn’t have the faintest idea what caused the crash. All testers have helped us discover bugs and errors in game design and the app itself.
Test, test, test, test….
Testing is one of the most important project phases, and we recommend that all those who are planning a similar project involve the testers as early as possible. Stable basic functionality was more important to us than an abundance of highly specialized features, which primarily satisfies the developers and with which the player may not be able to do so much.
The text of Cold Crash
As an author I have to say: I thought the text would only be as long as a short story.
Boy, was I wrong….
This is due to the idea that the story can develop in different directions, depending on the answer and the choice of the player. First decision: two branches. Second decision: Four branches. Third decision: Eight… and so on.
Of course, as an author you have to cut off one or the other branch and merge everything again. I must confess, I didn’t do this consistently enough. And so it took over a year to complete the text of Cold Crash in a first version (parallel to the full-time job). Actually, I had planned only three months – at the most.
Including several revisions, proofreading, massive cuts and a conceptual change in the middle of the text, it took about one and a half years to write the text. Personally, it’s far too long for me, if I do another project like this, it has to go faster.
The code for the Indie-Game Cold Crash
Joachim Mertens has written Cold Crash with Apple’s development environment “XCode”. This is an Integrated Development Environment (IDE). The environment is free of charge and, according to Joachim, is an “extremely powerful tool” to write apps and games for iOS, tvOS and MacOS. XCode brings together many of the tools a programmer needs: compiler, text editor, GUI editor, library management and more.
Cold Crash – The script
Cold Crash uses about 1% of the CPU
The hidden developer menu of Cold Crash. “Mountain of Madness” was the working title of the story.
With XCode, Apple has opted for its own further development of the programming language “C”. “C” was considered to be one of the first languages to become accepted across the board and was available above all on almost all computer systems. C was mainly developed between 1969 and 1973 by Dennis Ritchie, an American computer scientist who developed the first versions of Unix together with Ken Thompson – XCode’s roots go back that far!
Integrated Development Environment for coding an indie-game
XCode works with “Objective C”, the old Apple programming language. Mertens: “In the meantime, Objective C is considered outdated and Apple relies on SWIFT, which was introduced in 2014.” Why does Tiny Tap Gems stay with Objective C and not switch to the new language? “I skipped SWIFT”, says the passionate developer of indie-games, “and I just switched from Objective C to Unity. This is another development environment that works with C Sharp, another variant of C.”
The advantage of Unity is that it allows a developer to output software for many different platforms, such as iOS, Android, Microsoft’s Xbox, Nintendo or the Playstation. The disadvantage: the programs are very large and take up a lot of memory. This is the main reason why Cold Crash and other Tiny Tap Gems games and apps were developed with XCode. “Unity is something for developers who want to build a 3D environment for their game”, says Mertens, “when we started out with Cold Crash, Unity apps were still very large, which has become a bit more relative in the meantime. I wanted a small, slim app because it’s more likely to be downloaded.”