Why Trosnoth?

Reminder: in October 2018, I’m pygame.org’s artist in residence. You can ask me questions about Trosnoth, support me in my Trosnoth development, join in online alpha testing, and follow this blog for articles about Trosnoth and what I’m working on.

What’s so special about Trosnoth?

There are so many video games out there—it’s easy to come by reasonably priced, high quality indie games in today’s market. Sure, there weren’t so many indie games back in 2006 when we started the Trosnoth project. But even so, why another game? In this article I’ll talk about why we started the Trosnoth project and a few of the things that make Trosnoth Trosnoth.

Grown in community

The Trosnoth project was dreamed up in a community. It was the spring of 20061 and a group of us had just finished running a fun but exhausting Christian technology camp. We were debriefing the events of camp and someone said, ‘We’ve played the same old video games on camp for years and years.’

Someone else replied, ‘Yes, but it’s really expensive to buy licenses for 60 people to all play a recent game.’

‘And we need a game that parents won’t object to their kids playing,’ interjected another person.

‘And we like our gaming sessions to teach people teamwork and strategy.’

It was at this point that I spoke up. ‘We have this argument every camp, and we still keep playing the same old games. But I’ve been thinking… since we have in this room people with many different skills in technology, couldn’t we make our own game?’

The idea intrigued everyone. A dozen people signed up to help in various ways. And so the Trosnoth project was born. We brainstormed ideas and game rules on a wiki, and finally nutted out the game in enough detail that we could start working on it.

Many of the original contributors are no longer regularly involved, because one can’t be a university student forever2. But the project continues to be integrally tied to community. When we’re considering big changes, past contributors still chip in with their ideas. And our release cycle includes getting user feedback by play-testing, sometimes online and sometimes on the very camp we originally created Trosnoth for.

Humans vs. Machines Trosnoth match, June 2018

Teamwork trumps skill

The fact that Trosnoth was grown in community has heavily influenced the game’s design. For instance, we encourage teamwork on camp, so we developed a game that would reward teamwork. When we made design decisions for Trosnoth we kept this in mind, and the result was a game in which communication and teamwork are essential. That’s not to say that skill means nothing in Trosnoth. It helps to be good at aiming, dodging bullets, and quickly getting around the map. But if you’re playing against a team which coordinates its attacks and communicates well, your individual skill will mean very little.

This need for teamwork is mostly enforced by one game mechanic: Trosnoth is a territory control game, but you cannot capture a region of the map unless your team has more living players in the region than the defending team3. In practice this means that an unskilled player can defend a region against one attacker by staying away from them and staying alive. I’ve seen this used to effectively remove the skilled attacker from the game for as long as that attacker spends unsuccessfully trying to kill the pesky defender. But if a team works together, all it takes is a second attacker and the region is captured.

(As a developer I often test features by playing Trosnoth on my own against bots. This has taught me the really bad habit of not communicating with my team. I’ve lost a number of matches with humans as a result.)

High pay-off risks

Because of our emphasis on teamwork, Trosnoth has a game mechanic where a team cannot control two completely separate areas of the game map. This means that if the opposing team somehow manages to split your team’s territory in half, your team only maintains ownership of the larger half. The smaller half becomes neutral.

As a result of this design decision, there is a huge pay-off in trying to split your enemy’s territory. Your enemy stands to lose up to half of the area they control. The trade-off is this: in order to split your enemy’s territory you always need to leave your team’s front line, which usually exposes your own territory to being split. There are times in any Trosnoth match where there’s only a very small chance of this actually paying off. But now and again there’s a better opportunity, and you have a fraction of a second to make a choice: is it worth the risk?

Situations like this often make Trosnoth matches very intense. When someone on your team takes a risk, things can turn around very quickly, for better or for worse.

Scrupulously fair

I often compare Trosnoth to a team sport. Like a sport, a Trosnoth match requires two teams of equal size, and teams have to work together in order to achieve their goal. But even in a physical sport, there are usually uncontrollable factors: the wind is blowing in a certain direction, and the sun is shining in one goalie’s eyes. We designed Trosnoth to avoid this kind of thing as much as possible. If a team wins, they can’t blame it on unfair conditions. To this end, Trosnoth generates maps which are perfectly symmetrical, and avoids randomness wherever possible.

You could think of Trosnoth as a team sport with a referee who is undeniably free of any bias.

Easy to edit

Trosnoth is open source. As a philosophy, this encourages innovation. People can pull apart the game and experiment with any modifications they can imagine.

We’ve used the game to teach Python programming on camps. We’ll set a challenge like adding an item to the game, or writing an algorithm for a computer-controlled player, then we’ll use the process to teach programming concepts.

Because of this, we strive to keep the Trosnoth source code readable and understandable. We’ve sometimes failed at this, but it’s still always our aim.

Where does that leave us?

Of course there’s much more to Trosnoth than just these five factors. But I think these five things paint a good picture of what Trosnoth’s about. It’s fast-paced and risk-filled, but also fair and team-driven. And it’s all built in community.

Watch out for more Trosnoth-related blog articles throughout this month.


1 Spring runs from September to November of course.

2 I have met people, as I’m sure you have, who try to disprove the idea that one can’t be a university student forever. None of them have yet succeeded in arriving at the ‘forever’ part.

3 There’s an upper limit to the number of players you need, but it very rarely comes into play.

Posted in long | Tagged , , , , , , , , , , | Comments Off on Why Trosnoth?

Pygame Artist in Residence

What’s all this?

This month, I’m pygame.org’s inaugural artist in residence! The pygame.org artist residency was created to celebrate the Python arts community. It’s a small grant to support me in my art practice.

In residence where?

On the internet. It’s a virtual artist residency, so throughout the month of October I’ll be residing on the internet.

What art practice?

Game development. I regularly spend time developing Trosnoth (using pygame and Python). Throughout the month of October I’ll be continuing to work on Trosnoth, but I’ll be updating you as I go.

How can I follow along?

This blog is the main place where I’ll post my updates. You can expect:

  • four blog articles about Trosnoth as previously announced
  • a few special updates on what I’m working on
  • you can ask me questions about Trosnoth and I’ll devote some time this month to answering them
  • maybe some online alpha testing of the next Trosnoth release — fill out this form if you’d like to join in
  • some kind of concluding ‘artist’s exhibition’ at the end of the month — exactly what form this takes is yet to be decided
Posted in midlength | Tagged , , , , , | 4 Comments

Coming soon: 4 Trosnoth articles

What’s this? An update on a dormant blog? I started this blog in 2010, but haven’t written anything recently. I wrote three articles in 2015, one in 2016, and none in 2017. Well that trend has just turned around!

Throughout the month of October 2018, I plan to publish four articles about Trosnoth on this blog. I haven’t made up my mind exactly what I’ll write, but I expect there will be something about what makes Trosnoth unique, something about the underlying technologies and why we chose them, and something about some of the more interesting technical challenges we’ve had to solve. Stay tuned…

If you’ve followed this blog for a long time you’ll have seen me write about Trosnoth many times before. But for any newcomers: Trosnoth is an open source game. It’s a fast-paced territory control shooter. Intrigued? Look out for my upcoming articles to find out more.

(Or you could just browse the source code or download an installer. It’s open source after all!)

Posted in short | Tagged , | 1 Comment

Jesus and the Rich Young Man (One Size Fits All)

Jesus treated people as individuals. He responded differently to different people. But what would have happened if Jesus had tried to use a one-size-fits-all approach to ministry? Here’s how I imagine Mark 10:17-22 (the Rich Young Man) might have turned out. [ NOTE: if you don’t know the original story please read it first ]

As Jesus was starting out on his way to Jerusalem, a rich young man came running up to him, knelt down, and asked, “Good Teacher, what must I do to inherit eternal life?”

“Why do you call me good?” Jesus asked. “Only God is truly good. But to answer your question, you know the commandments. ‘You must not murder. You must not commit adultery. You must not steal. You must not testify falsely. You must not cheat anyone. Honour your father and mother.'”

“Teacher,” the man replied, “I’ve obeyed all these commandments since I was young.”

Jesus looked at the man, and rose to the challenge. “Really. You’ve kept all of them?”

“Yes Teacher. My parents taught me to follow the laws of Moses.”

“Ok, well how about this? Have you ever been angry with anyone?” asked Jesus.

“No Teacher,” he replied. “To be perfectly honest, my life has been fairly easy. I’ve never had any reason to be angry.”

“What about lust then?” asked Jesus. “You must have looked lustfully at a woman at least once?”

“Well,” said the man, “I’ve felt temptations from time to time, but my parents always taught me that temptation was not the same as sin.”

Jesus frowned. “Ok, I’ll give you that one. But all have sinned and fall short of God’s glorious standard, so I know you’re a sinner.” Jesus paused for a moment, then he smiled at the man. “I bet you’re pretty pleased with yourself for keeping all those commandments?”

“Well I do try to honour God.”

“There, see? Pride! The scriptures say, ‘God opposes the proud but gives grace to the humble.’ So you’re a sinner then! See?”

“Um, I guess so.”

“Good. Well the good news is that I’m going to save you from your sin, so all you have to do is accept, believe and confess. Here, read this prayer.”

“So… if I say this prayer I’ll inherit eternal life?”


“And that’s all there is to it? No hidden clauses or small print? Can I keep my possessions? Do I have to change anything else?”

“What have possessions got to do with eternal life? No it’s all on the inside. You just need to believe in me.”

At this the man’s face lit up, and he went away happy, for he had many possessions.

Posted in midlength | Tagged , , , , | Comments Off on Jesus and the Rich Young Man (One Size Fits All)

Ubuntu on a ThinkPad Helix (x86 Tablet/Convertible)

I’m looking for a new tablet. Over the past few days I’ve had the chance to play around with a ThinkPad Helix. The Helix comes with Windows 8, but naturally, I installed Ubuntu to see how it works on a touch device. Here are my findings.

Ubuntu on a ThinkPad Helix

Ubuntu on a ThinkPad Helix

Ubuntu Desktop vs. Touch

First, a word about Ubuntu. Ubuntu Touch and Ubuntu Desktop are different beasts. Ubuntu Touch is designed for touch devices. It began life as an Android variant, but piece by piece Canonical replaced it with a Linux of their own making.

This article is not about Ubuntu Touch. I would have tried Ubuntu Touch on the Helix, but I couldn’t find any useful instructions about installing Ubuntu Touch on an x86 device. So I installed Ubuntu Desktop (version 15.04, the latest version at time of writing).

Hardware Support

Update 2015-10-09: After playing around a bit more, I have found that everything works fine when I boot up with the tablet plugged in to the keyboard unit, but when I resume from suspend in tablet mode and then reconnect the keyboard unit, the trackpoint works fine but the keyboard does not. It may be related to this bug.

Most of the Helix hardware worked straight out of the box. The track point, touch pad and touch screen all worked, as did the stylus pen, the volume buttons, and the special keys like the brightness adjustment controls. Ubuntu Unity captured the Windows button to bring up its applications menu, and pressing the power button brought up the power options (shut down, suspend, restart). That seemed reasonable, but I decided I wanted the power button to just suspend immediately, which involved using dconf-editor to set  button-power under org.gnome.settings-daemon.plugins.power to  suspend.

The only part of the hardware that did’t seem to do something useful straight off the bat was the internal sensors. In particular, it would be nice if the accelerometer could trigger automatic rotation of the screen when the tablet’s not docked to the keyboard. Based on a bit of poking around, it seems that the accelerometer is detected (the iio devices are visible in  udevadm info --export-db  and under  /sys/bus/iio/devices/), I could read from the accelerometer using commands like  /cat /sys/bus/iio/devices/iio\:device5/in_accel_x_raw, so in theory it should be possible to write a service which auto-rotates the screen. I did find this repo for the ThinkPad Yoga laptops, which had some programs for managing the iio sensors, but when I tried to use them they didn’t seem to notice changes in the orientation. I also found this old software that notices when the tablet is docked and undocked from the keyboard, and rotates the screen when that happens. It doesn’t look at the orientation, it just assumes that if you’re undocked you want portrait mode.


I’ve been using an Android tablet for years and when it comes to usability on a touch device, Ubuntu Desktop still has a long way to go to catch up with Android. Perhaps Ubuntu Touch is an improvement. Did I mention that I couldn’t find a straightforward way to install Ubuntu Touch?

To make Ubuntu Desktop more usable on a tablet, I did the following things:

1. Increase the scale for menu and title bars (System Settings > Screen Display > Built-in Display > Scale for menu and title bars).

2. Adjust launcher icon sizeon my desktop I usually make these as small as possible, but to press them with my fingers they need to be largish (System Settings > Appearance > Look > Launcher icon size).

3. Activate the on-screen keyboard, and configure it to dock to screen edge, auto-show when editing text, and hide when using a physical keyboard (System Settings > Universal Access > Typing to activate it, then to configure, click the notification icon and select Preferences).

4. Make long presses simulate right mouse button clicks, and adjust down the acceptance delay from the ridiculously long default (System Settings > Universal Access > Pointing and Clicking > Simulated Secondary Click).

The on-screen keyboard isn’t as nice as in Android. Sometimes it notices that you’re editing text, sometimes it doesn’t. I think GTK apps tell the system when your focus is in a text box, but most other applications don’t. But you can bring up the on-screen keyboard by clicking on the icon in the notification area.

5. In Firefox, install Grab and Drag, NoSquint, and perhaps Theme Font & Size Changer.

The first add-on, Grab and Drag, will allow you to scroll in Firefox by touching and swiping. Some Ubuntu apps do this automatically with a touch screen (again, I suspect this is GTK being a good citizen), but Firefox doesn’t without this extension. I couldn’t find a similar extension for Thunderbird, but I imagine writing one wouldn’t be difficult.


Out of the box, an Android tablet still feels much nicer than Ubuntu Desktop running on a Windows tablet. But truth be told, running Linux on a tablet wasn’t as painful as I’d imagined. It seems like there are ways to work around the minor annoyances. And I do like the idea of being able to use my tablet to do outrageous things like having two text documents open at the same time, or working on some of my Python projects.

So I haven’t yet decided whether I’ll get myself a Helix (or similar), or whether I’ll go for another Android tablet. But I certainly haven’t ruled out the possibility of Ubuntu.

Posted in long | Tagged , , , , , , | Comments Off on Ubuntu on a ThinkPad Helix (x86 Tablet/Convertible)