## The story of Rivalry – by Kew’s Dad (Post PAX 2015)

Kew was struggling at primary school. He was having a hard time keeping up with what he was being taught, especially maths and science; he was being left behind.

Now, he loved computer games.

He loved creating things in computer games. He was the kind of kid who would spend all of their time in the level editor of a game instead of playing the game itself. He especially loved Little Big Planet in which he built many amazing machines and circuits. I think Little Big Planet (and later on Minecraft) was to him what Lego was to me.

He also loved talking about games.

I started using ProcessingJS to help him visualise some of his maths and science homework. Like me, he’s a visual learner. Using ProcessingJS I could animate a number line, draw graphs, show relationships between things, simulate and draw a planet rotating around a star. Being a kid he wanted to look behind the curtain, play with the code, make it do crazy things so I would teach him little bits. I joke that I accidentally taught him JavaScript. Eventually, I got him an account on https://www.codecademy.com/, and he did their online JavaScript course at his own pace.

He really loved playing a physics game called ‘Dust’, I started designing a game based around hexagons and triangles, a kind of cellular automata physics simulation with a view to including him in the design process. Hexagons are made out of triangles and the game contained an analog of physics and chemistry, so there was room for lots of discussions relevant to his school science and maths The game was partially started as a platform to engage him in something he loved, during which I could craftily slip him some education.  We would discuss how we could work out how to draw the triangles. How gasses and liquids and solids would move through the world as well as concepts like points, vectors, collisions and volumes. It meant that I could ask about his homework and apply a lot of what he was learning at school to practical uses in the game, or at least explain it to him in the context of the game.

We started a rule in the house that Kew could do anything he wanted with the computer, or computer games until midday, but after midday he had to finish his homework and then if he wanted to use the computer he had to use it to create something.If the computer was involved, it had to be a creative task. My theory was that with YouTube and computer games, kids talk about them amongst themselves a lot, it’s a kind of social currency, if you deny them access or make the rules too complicated it turns into a constant negotiation and kids just become more obsessed.

We swim every Saturday, but on a Sunday or school holidays if he wants to get up early and watch YouTube or play games for 6 hours, I’m can cope with that, knowing he will then spend the next 6 hours creating something. We currently have a teen who does not sleep all day and does his homework. I’m calling that a success. This created a vacuum for creative activities after midday. I taught him how to edit video and he created a YouTube channel. It’s now the time he does most of his programming.

He got into Minecraft, like most kids do (only I was just as into as he was). When he was 10 he wanted to build a mod, so I walked him through creating a very simple one that was a cowbell block. I told him “What Minecraft really needs is more cowbell!”. I still don’t think he gets it 🙂  At first, it was mostly me typing and showing him the tools. Getting him used to the mechanics of programming. Source code, compiling. I would get him to point at different parts of the code and identify what it was. I started teaching him code from the inside out, literally. Lines and small sections of code first, later the larger structures holding the program together,  He came up with an idea for a Minecraft mod called ‘Excalibur’ which is a fun ‘capture the vorpal sword’ game mechanic and will probably surface in Rivalry when it gets online capabilities.

He turned one of the JavaScript CodeCademy tutorials into a name generator, and I showed him how to use an application called Appcelerator that would let you publish mobile phone apps from JavaScript. https://itunes.apple.com/au/app/awesome-name-generator/id918079114?mt=8

Kew was 12 when he came me up with the idea for Rivalry but it took him another year to get the skills together to be able to start it. He asked me if I thought it would work I said that part of creating something complex and interactive like a game is that you don’t know until you try.  I seem to remember quoting the old Sesame Street “That idea’s so crazy it might just work.” Secretly I just figured it would be a good learning experience for him and not go anywhere.

I helped him set up Unity, taught him the basics of C#.

We worked as senior/junior programmers with him as the game designer. He would explain what he wanted. I would suggest an architecture, and then he would wire it up and fill in much of the actual code. Rivalry is where he has really matured in thinking about the structure involved in programming. He constantly surprises me.

When I played what emerged I was like OMG!! it was fun and deep and silly and strategic all rolled into one.

Then Kew said he wanted to sell the game. He had said for a long that that we wanted to be a game developer so I figured “why not?”, its an amazingly fun game and he might as well try and take the whole “Indy” journey. It’s a bit like being in a garage band, you need to learn how to promote yourself.  All the research into what the successful Indy game devs were doing basically said “Crowdfund your marketing but then the best crowdfunding is sales”. Kew made the video, I was (and will be for at least the next few years) the responsible legal adult entity and after a lot of fun and hard work the \$2000 Kickstarter scraped through by the skin of its teeth. We are ever so grateful to all the backers. They were amazing.

Unfortunately the cheapest Indy stands at PAX we were aiming for were all gone by then but Guy ‘Yug’ Blomberg of PAX reached out to us and offered 3-day passes, which was amazingly generous. We asked if there was a cancellation queue and we were told we would have to wait for three people to cancel. We had low hopes and started planning for the next year but we were lucky and a stand came through. Then, a week before PAX we received the map of Indy stands and it looked like we were in a good position,

I was talking about how lucky we were with with Kew just before the doors opened to the first day of PAX and he asked me “Is all life luck?” and my reply was “you need to know enough and work hard enough to take advantage of the luck when it arrives.”

As an Indie, to sell a game on steam you need to go through the ‘Greenlight’ process where the game is judged by Steam members. I think some make a hobby out of it. The initial comments were, as you would expect from the Internet for a game that looks like his, rather brutal. Basically lots of “Beyond horrible.” and “Please just stop”. One guy just left a poop emotion. They were basically saying that they thought the game was not good enough for steam without playing the game.

The response from the PAX crowd, who actually played the game was overwhelmingly positive.

The first day we were swamped with enthusiastic players. We had three machines going and there was rarely an empty line. Just before closing of that first day we were exhausted but feeding off the enthusiasm of the crowd. Such a fantastic day.”Two more days!?” Kew exclaimed, conflicted, but obviously overjoyed. He followed it up with “I can’t feel my feet!” and grinned widely.

The second day we were mobbed by people who had heard about it from friends and people who kept coming back and bringing friends.

We had an issue on the first two days with people not being able to see the game. I went dumpster diving with a friend to get parts to Macgyver a monitor stand to raise one of the screens up high so people at the back could see.

The third (and final) day the crowds snowballed through word of mouth, Kew was told that it was played at the various convention Halloween parties to roaring cheers.

Such crazy fun. So many business cards and kind words of support.

We are now sitting back and watching all the love for the game flow into the Steam Greenlight comments.

During this whole journey, Kew’s confidence as increased and he went from being near the bottom to near the top of his class in Maths and Science.

For me, that’s the best of the possible endings of this game.

PS: Rivalry was greenlit a month and a half after PAX and is available here http://store.steampowered.com/app/431770/

## The Game Progress Report #27

Still tinkering away on the idealised 1D CA physics engine before I expand it up to the two something dimensions of hexagonal space again.

Realised that I have not updated this in quite a few months, so here is quite a few months worth of updates.

If you follow me on Twitter then this is nothing new 🙂

## The Game Progress Report #26

More progress on the CA physics engine.

Collisions now seem to be working reliability with a conservation of momentum that is accurate (enough) and visually pleasing.

Now experimenting with dispersion and forces.

I have a basic orbit working and gas of sorts. Still trying to close the loop between mass causing gravity, at the moment with this latest version, gravity is hard coded in as I try and get dispersion, momentum and acceleration to not trip over each other.

## The Game Progress Report #25

I have been working on optimising the CA physics engine.

Also, my son has a Kickstarter to get his game to PAX Australia , please support it 🙂

## The Game Progress Report #24

I’m now starting the 4th and final version of the physics engine… getting the flow right.. The Venn diagram for Efficient, Fun and Realistic is harsh.

## The Game Progress Report #23

My son has ported his Awesome Name Generator Android app to iPhone and iPad and released it onto the iTunes Store.

Been back to The Game’s core engine for the last few months on and off.

The tutorial engine, which can be used to multimedia enable Twine stories, is now feature complete.

Slowly working towards a Kickstarter project with one story author to publish their game using just the tutorial engine.

I’m also considering Kickstarting the tutorial engine itself as a separate spin off. The aim being to fund it to get developed to the level of a stand-alone tool as well as a port to Unity.

As for The Game, at this point I’m working on the world physics.

In the last few months I have managed to make progress with….

• Visualisation of the World Hexagons.
• Navigation/Focus throughout the World Hexagons. (Mouse, keyboard and game controller).
• Basic Gas physics (with thermodynamics).

In the demo video below, I scroll around a bit while I simulate a 100kg ball of a 100K ideal gas being released in the vacuum of space. The gas expands until it reaches pressure equilibrium with a cohesive force holding the gas together.

I’m using a time scalable cellular automata send force messages between hexagons. That way I can build up force tensors slowly. I’m aiming at being able to round-robin timeslice the physics updates.

The colors I use don’t represent the relative temperature, more how temperature is changing over time.

Red = heating, Blue = cooling, and Green = stable.

So the core is blue, because it is very hot and losing heat 🙂

You will see it eventually turn green as it stabilises. What happens before that is rather hypnotic, particularly just before equilibrium where solitons seem to form.

Working on performance and basic data flow at the moment (because getting the data flow correct is really important).

Happy so far. The physics is running hundreds of times faster than I need.

Next steps are to tidy up some of the navigation and simulate gravity in some form. I’m thinking of extending the cellular automata approach to get the cells to explore and agree upon a stable curvature of space based on distribution of mass within it. This should create something very gravity like. Not totally realistic, but gamey enough for things to fall to planets.

Gas velocity will be tricky, but I wants it.

I’m experimenting with moving the physics between different levels of cellular detail based on how how uniform the force vectors are. This is similar to how I distributed detail in my hexagon image and video encoding.

I will be need to do a decent visualisation of this at some point.  It may be a dead end but it should allow the realism to naturally scale based on what is visible and where it is needed.

## The Game Progress Report #22

We are progressing with the game in our spare time, which has been very little but we are making progress.

My son has built an android game that we are publishing to test out all the commerce ‘stuff” we need to start selling games online through the many app stores that are now available.

I’ve been expanding the Twine interpreter which is going to be used as the games tutorial engine and I’m working with two writers and an artist to publish their interactive fiction/Otome games using the engine as it currently stands. Release early, release often. 🙂

Here is a video of a play-through of part of a story-board using some found images on the internet as place holders for actual art.

The engine so far runs under iOS, Android, OUYA, Xbox360, SonyVita, PC, Mac and I’m now working on a WebGL port that will allow it to run in a web browser.

My Twine engine adds a number of handy multimedia and dialogue macros. I can take an ‘twee’ file exported from Twine and have a running game in a few minutes.

It has tooling that enables a graphics production pipeline to be created automatically from the story file as well as testing tools that can validate the story code by exploring all the possible story paths.

I’m looking for other Twine writers and graphic artists who want to publish their stories to collaborate on publications.

These two stories are currently at the story boarding stage so the plan is to move back into the core ‘Hex’ game features soon.