My Experience of Building a Game Without Even Knowing How
Published: 2019-04-16 07:12:25

---
title: My Experience of Building a Game Without Even Knowing How 
published: true
description: 
tags: 
---

Last week, the Russian NGO _Komanda 29_ hosted a 3-day hackathon in St. Petersburg to make more socially-oriented, so-called "serious" games that would help solve civic problems. They invited civic activists and NGO employees, artists, storytellers, and, of course, us coders.

I responded to the call for participants reposted to our _PyLadies_ Telegram chat. Creating games was not the thing I was planning to do. I am currently transitioning careers, know a fair share of Python, and recently took up a DevOps course. But it turned out that the project was run by my childhood friend, so I went without hesitation. :)

I racked my brains a little on how to make a game with Python (since this is what I know best), watched a couple videos on the `pygame` module, and went off to the event even more puzzled.

![Photo by Komanda 29.](https://thepracticaldev.s3.amazonaws.com/i/9f8rlvmm2yggqqnof47v.jpg)

I would describe the event not as a hackathon but rather as a workshop. Two professional game designers were invited to give a talk on how to create a game from scratch, be it a video, tabletop, or LARP game. They mentored us during the process, overseeing the creation of our prototypes. There was also free pizza :)

There were four activists, each of whom proposed their game idea. One of the ideas dealt with increased loss of hearing, and it ultimately transformed into a prototype of a tactical RPG with an evil ear as the main character. Another project was an pixel art urban activism simulator where you attempt to save a park from housing development - and one of the endings is lethal. There was also a game to teach activists about new technologies. It involved decision-making in the style of _Reigns_ and had really funny texts.

I joined a project for the prevention of domestic violence, proposed by a psychotherapist. We decided to base the game on the questions in the chat bot that she had developed and used in her work. We were joined by an artist with a style that reminded me a bit of Soviet posters. We had to deliver the prototype in three days, and so we began working!

![Photo by Komanda 29.](https://thepracticaldev.s3.amazonaws.com/i/ndfvnnpxbqtdvs09qgeb.jpg)

We decided that our game would be a visual novel. The aim was to help the player connect verbal and emotional abuse with the physical abuse to come. Since we had little time, our prototype only featured a heterosexual relationship where you play for the female character.

First, we re-created three relationship scenes in which the character may understand that she is to face physical violence next. Here, she can choose answering options (like in your regular Witcher 3 dialogues) and see the consequences of her actions. We also decided to add the buttons "Help" and "Exit," but with unusual functions. Pressing "Help" would trigger a call from the protagonist's best friend, and "Exit" would mean "exit the relationship." Not every player would guess that! 

Second, we had to draw the block diagram of dialogues so as not to get confused in all the options. This was a major step that quickened our work and helped us achieve victory. Our game had three endings.

![Beware of the mighty diagram!](https://thepracticaldev.s3.amazonaws.com/i/8o3sq7916a93ro7eijlr.jpg)

Finally, to the most relevant part - the coding! In fact, our target audience required that we would make a phone app, because the computers of domestic violence victims are often supervised by their abusive partners (or get broken if they have passwords). But we only had to deliver a playable prototype to show to the jury. So I decided to use [Twine](https://twinery.org).

Twine is convenient for creating mindmaps. It seems to be a wrapper around Javascript. One of the markdown languages Twine uses is called Harlowe. Harlowe also allows adding HTML, CSS, and basic logic (I think I found a couple of bugs here). Twine can be also used with two other markdown languages, but they rely heavily on Javascript, and I know nothing of Javascript.

Twine/Harlowe is not very convenient for a large project. But, again, I have never really been interested in frontend web programming, knowing only a couple of tricks with HTML and CSS from my earlier years. And since we had to deliver something quick, we were kinda stuck with Twine. I had considered using `RenPy`, which is employed by some really nice visual novel games, and also looked at the library `pyjsdl`. However, after a discussion with the mentors and a sober estimate of our time and my knowledge, I decided that we threw together a simple prototype using Twine.

In the end, we presented our projects. The jury played our prototypes and reached their verdict. I am happy to say that our game won the grant from the organizers! In the next half year, we will have to revamp everything so the game would be playable on mobile phones and actually help people. We will expand on the story, too. And I will have to expand on my frontend skills. I view this as a great incentive to learn a lot of new stuff, and I am incredibly thankful for this opportunity to hang out with nice and thoughtful people!

Here's a funny picture how something is not working. I think we saw a bug:

![oops](https://thepracticaldev.s3.amazonaws.com/i/habuvwm27iyth5pseopa.jpg)