Developing tools for your game – why this isn’t as straight forward as you thought

When developing a small project, the time cost of making an editor can become very significant, and only 6 months ago, I would have encouraged anyone to avoid it completely. I would have asked “is an editor absolutely crucial to the development of your game?”. If you can avoid the requirement for a custom editor, you can avoid a laborious process of content creation – go for procedural generation or a 3rd party editor. Look at Minecraft and Frozen Synapse – procedural programming generates the content for you. This doesn’t just remove the need for an editor, it removes the need for an artist, meaning you only need a single programmer to create the game. Awesome.

The use of an editor, its role in a pipeline, and how it integrates into the game itself are actually really important and complicated decisions. There is a huge effect on productivity, game design, and ability to make changes late on. The more complicated the software, the more essential and complicated the tool components.

Sure, some games can get away with out an editor, but at what cost? How can you tell when making tools will save you time or effect the quality of a game.

The more you look at the design problem, the deeper it gets. This article details my experience and opinions, but is really intended to highlight some things to think about. This topic is highly subjective so every point will have a counter point.

Procedural vs authored environments

Procedural environments are generated using algorthims, while authored environments are created by people.

My experience lends heavily to having authored levels. The first internal version of Terrorhedron had procedural generation, where you could generate a level based on a key, and it worked, but at a cost. The expense was the inability to fine tune levels – you just had to play a bunch of seeds until you found one that was good, and even then, the levels could only have a certain style. To take the game to the next level, the levels needed designing rather than generating.

Terrorhedron’s procedural based levels, while having 2^32 possible variants, looked visually repetitive and lacked identity

Designing a game using procedural generation is difficult as getting the environments generating how you want can take time, so there is an up front investment in time. This is expensive when you are still researching and experimenting. Artist authored environments also have an up front development time, and has its own design considerations.

Terrorhedrons final art was highly customizable and tweak-able, in terms of visuals and game-play

Why you shouldn’t use 3rd party editors

3rd party editors usually bear the limitation of not understanding or visualizing game logic. This is a big limitation where a designer needs to engineer actions, events, logic routes etc. into a scene or animation. Perhaps we can hack this in somehow? Also, probably going to have to write a custom exporter for the 3rd party editor. What would the additional effort be in making your own editor?

Terrorhedron ended up using google sketchup to develop and design the levels, 3dsmax to prepare and convert the data then export to game-loadable formats (.x for graphical assets, physx .xml for physics and logic data). This worked well as I was experienced in preparing models in 3dsmax, and had planned on using pre-baked ambient lighting which looked good in game. The down sides were converting z up to y up (see previous blog post), which was a confusing task and took a while, and the lengthy process involved in exporting the various layers and components and then recombining them in game.

By the time I had done the 6th level, I was getting fast at the process but was also fed up of  making the levels – the painful exporting process was taking the joy out of the creative process. The simple style of the maps begged for a simple editor that understood the art style. 3DSMax was completely overkill for this and the exporting process was completely unnecessary as the raw data being handled was so simple.

How much better would it have been if game included an editor and levels could be created by users? What if the level creation process was as simple as it could be, and took raw creative input and handled everything else?

Why you should create your editor in-engine

By creating the editor using the game engine, you get to see the content as it is created, how it will be experienced in game. You will only have one code base and a lot of the functionality will be tested twice – once with the editor, and again with the game. You can use a lot of the game framework to create the editor code.

Tool design and iterative development

When developing an editor, there is a fair amount you need to know about what the tool needs to be able to save out, as well as how it will be used. Changing this specification later is painful and time consuming, so where possible, develop a basic hard coded scene to test scene features and get to grips with the way the scene is organized and what data it contains. This will clarify the task and make it clear the task you are simplifying – probably replacing hard coding with a visual interface.

Conclusions

The tools used with a game engine to create a game are very subjective and must suit the work style and tastes of the developers. They are integral to the code architecture and require plenty of foresight and design. It is just one of those things you have to have done a couple of time already before you really know what suits you.

Tools take an investment of time, but can return that time back by improving productivity. They can have good and bad effects on the quality of a game. Weigh up these factors carefully when designing your tools.

Reddit discussion by Badsector, author of Runtime World

Interesting article. Since i have spent a great deal working on game tools, i want to comment on a few things.

3rd party editors usually bear the limitation of not understanding or visualizing game logic.

This is true, but this will not be the bulk of where the game’s logic will be spent and a world editor does not really need to provide this functionality, even if it is a custom editor for a custom engine for a specific game. This is part of the game’s scripting and can be done in a separate tool – you could even make a visual scripting tool that uses graphs and such if you feel your designers are incapable of writing code (if they’re worth their salt, they shouldn’t be – basic scripting skills are necessary for a good level designer).

Also, probably going to have to write a custom exporter for the 3rd party editor. What would the additional effort be in making your own editor?

Tragically more effort. Runtime World in its current state took me ~2 years (and if i include the complete-from-scratch rewrites, that goes to ~5 years) and still only has the bare essentials for making game levels (essentials that were only available since the last version!).

I’m not spending all my time on the editor and it would be usable much faster if i was working on it full time every day, but still even a simple editor is much much harder to write than an exporter.

In fact, writing an editor is much harder than writing a 3D engine, especially if that editor has to be usable (Runtime World wasn’t the first editor i made and even that took me a few rewrites to get right). Want proof? Just go to DevMaster’s engine database and check how many engines have editors vs how many do not have. Even including those that have editors but are hard or unusable, the engines that have editors are vastly outnumbered by the engines that do not.

How much better would it have been if game included an editor and levels could be created by users?

While it depends on the game, i’d say that generally it would be much better. Custom user-made content, mods, etc add a lot of value to your game (well, ok, it depends on the game – an adventure game would hardly see more value there, at least beyond fan-made stories with the game’s characters).

However using a 3rd party editor doesn’t go in contradiction to that. You mentioned using Google Sketchup to make the levels – well, now your players can use that too since it is free. And while 3ds max is expensive, you can write an exporter for Blender which is free (writing Blender exporters is easy – personally i learned Python by writing an exporter for my own format some years ago). If you can use a common format (even as an intermediate format) it is much better – for example if your models are static then OBJ files are a standard format to use, supported by almost every 3d modelling package out there.
Hey you could even use Runtime World!

Why you should create your editor in-engine. By creating the editor using the game engine, you get to see the content as it is created, how it will be experienced in game.

This is something i am personally against – and not because it sounds like a bad idea (actually it doesn’t, almost everyone would agree that the idea sounds good), but because i have actually tried it for years and experienced first hand why it is a bad idea.

The major problem is that you try to make the same code do things with two opposite priorities (the editor’s priority is to do things easy for the designer while the game’s priority is to do thing fast and proper). Additionally you add a lot of extra unnecessary code to your game that is not needed by the game itself, but by the editor. You could try to keep them as separated as possible, but this makes the code be designed to be as “purpose agnostic” as possible (think classes and stuff), which complicates the overall architecture.

It is a much better idea to simply keep the codebases separate and make the editor’s output be close to the game’s output but have the game’s code be strictly about the game and the editor’s code be strictly about editing and all the diagnostics and stuff the editor needs.
This way you also get to minimize the game’s source code which is a good thing because there is less of a probability to create bugs. A bug in a tool isn’t as much of a deal as a bug in a game.

This topic is highly subjective so every point will have a counter point.

You didn’t added any counter point to the points you mentioned 😛

micromacro

Why indie games are not a scam, and how much indie developers really make

Perception of indie developers is mixed and dictated by what the media choses to cover. In this article I explain that you don’t ever hear about 99% of games, most games make between $300 and $2000, that only the top few percent of development is financially sustainable.

The word “indie” is becoming an ever more controversial term, with a meaning far more complex than it was a short while ago. Over the last year, the term has been embraced as a useful term for marketing, most noticeably in the news when EA made the mistake of releasing an “indie bundle”. This has had the effect of watering down the traditional meaning with some good old fashioned “money grabbing”.

The greatest thing about indie developers is how experimental and proprietary everything is, but you can also argue the worst thing about indie is the great successes. Nobody saw Minecraft or the Humble Indie Bundle coming. They are without doubt, moments of genius. I don’t think that even their creators saw such huge sales coming, yet the huge profits they have earned have attracted a lot of attention. This kind of news spreads fast, because everyone is interested when there is loads of money involved, and unfortunately this type of news has been the fuel that has brought the term “indie” to many ears.

The easiest way to craft cash is with akimbo pickaxes. Notch is a great ambassador for indie devs, but too many think his success is achievable.

This is bad news, because when people hear “indie” and “stupid amounts of cash” so often in the same sentence, they start to build the logical conclusion that the two must be related. Unfortunately, when an indie game sells a more normal amount, nobody cares, very few people write about it, fewer pass the news around.

This is a problem because a huge number of people think being an indie is an easy way to make money – make a mediocre game, get it on steam, add a Portal art styled DLC, add a Super Meat Boy character, and then sit back and watch the cash flow in. Get Markus Persson on the phone for advice on how to spend all this cash. Damn, why didn’t I think of that?

Steams indie games sale. “Get in this and you will be sorted!!!!” – well, true, but it is like saying “get married to Halle Berry”, it is just a bit easier said than done.

The truth is, indie games make much less than you think. Dependant on platform, the average revenue for a one man project is in the region of $300 to $2000 dollars. Thats for the entire lifetime sales of a game, rather than per hour (as in Minecraft). For the vast majority of developers, being an indie game developer is not even close to sustainable.

David Galindo wrote up some interesting figures recently, detailing his first 2 games earning $300 a piece, his third doing better with $4500. He also details his media battle when being received as capitalizing from the Deep Blue disaster. In his own words, “I have to ask myself: given the time I put in to make that money, was it worth it?”.

Streaming Colour have a great survey on selling on the Apple Store, and although their data is starting to age, it gives a great insight into what you can expect. Median lifetime revenue for an app made by one person on the Apple Store – $519. 80% of developers share 3% of all revenue. Read this article right now, I cannot begin to summarize all the valuable insights in contains.

One of my personal heros, Joost Van Dongen is on the list of guity individuals who made a little too much money and started to lead people to believe you can actually make money from making indie games.

I will stop listing articles here as you get the idea, and Pixel Prospector already have a pretty good list.

If the impression that indie developers are money orientated isn’t enough, it doesn’t help when developers under the spot light such as Phil Fish, shortly after winning IGF goes on to insult all of Japans game industry. Then later on twitter, makes some poorly chosen remarks, which I won’t repeat on my blog for fear of destroying my page ranking. Admittedly, I haven’t seen his “Indie Game the Movie”, but the reviews I have heard suggests he victimizes himself, and in one review is to be believed, blames a lot of his problems on a perfectly decent guy.

There is some very discouraging content in this article for a lot of indie developers, but I still believe I (and plenty of others) can make a sustainable living from developing games. If you plan your projects well, don’t start a project that is too big, and test your game ideas and make sure they are good, you can make great products and succeed, just don’t expect to make the next Minecraft, get any response back from Steam or for the Humble Indie Bundle to even run the binary you sent them. It is unlikely anyone is going to do that much for you so be ready to promote and market yourself. micromacro

On living the dream and setting goals

The sun has woken me up again, and sooner than I would like. I haven’t openned my eyes yet but I can tell it is around 10am and  despite a long sleep, I can still feel last nights programming session – probably 1 or 2am. I know I won’t be able to get back to sleep but i try anyway, desperately trying to relax mind and body, clearing my thoughts, imagining my body sinking deeper and deeper into the matress, my field of view shrinking to a distant spec, far in the distance. Drift away. It doesn’t work.

I stagger downstairs into my makeshift studio space and power up my computer. Breakfast can wait … I have had an idea.

I don’t need to work these hours, the projects would still get done with sensible regular days, taking weekends off and giving myself holiday under the European working time directive. Maybe I should. But I am not an engineer or a programmer, nobody has given me a specification to implement or a repository to port. I am a designer, an artist, and the code I write makes specs of light dance, shapes shudder and slide, light pour from above and pool from below, creatures come alive and enjoy their world, my world.

I work because I want to. I work because if I don’t, the mood will be lost and I will lose this place where I feel like an impressionist painter, mid painting, instinctual. Being in the zone is a drug and I am trapped in a loop of work – reward – work. Each feature I add, little fix I implement, instantly returns a result, sharpening that blurry picture in my mind of the finished product. I can’t stop, always looking towards the next reward.

I am living the dream. Well, not really “the dream”. It is more like “my dream” or perhaps, if you have read this far, “our dream”. I didn’t realize this myself, I needed some guy called ‘ezabeza’  to tell me in the comments on one of my youtube videos. Whatever.

This brings me to the point. My goals are allowing me to “live my dream” because that is my goal – to be making games. The great thing about that goal is that it isn’t a place that you reach and then pass through, but rather a state. I can stay here for as long as I chose. It isn’t a complex goal, but it feels right and it works for me, at least for now. Only my bank balance could wake me up.

Setting goals for your game studio is a little more complex. I recently wrote a business plan for Micro Macro Games, it is full of holes and lacks essentials such as projections, but was an incredibly useful process to analyse  and shape where I am heading. I think it is really important to define why you are doing what you do.

Why are you doing what you do?

No, the correct answer isn’t to make money in order to buy food and pay rent. It isn’t to gain experience while you wait for your big break. It is because you feel some emotion about something. It is because you want to share something amazing with the world. It is because you can do something better or even just differently than everyone else. You need to know what this is and tell everyone, write it down everywhere and never forget. Always look back to this when making decisions, when drawing, designing or organizing your work space. Why is much more important than What.

For Micro Macro Games, why is because we believe games can be valuable culture and creative works. They demand interaction, connect with you, and surprise you. We can make the tiny but inventive edge-of-genre games that larger studios cannot, and we will craft and finish them better, because games are creative works, not formula-driven projects or advertising platforms. With intelligent design and well considered effort, you can create huge works while using up few resources.

This is a fairly protencious post. Be sure to check back in 6 months time to see how I ran out of money and got a job writing file importers for a large studio. It will be good for a chuckle. micromacro

Why you need a team mate for your solo project, and a hand drawn adventure

One person is rarely enough to make an entire game. I read an article a while ago (sorry, lost the link) on sales data for mobile games, comparing their revenue with various factors, one of which was no. of people on a development team vs revenue. There was a clear correlation – bigger teams returned larger revenue per team member, and more reliably returned a profit. While it may be counter productive to focus on monetization, this is a good measure on the success of a game and hopefully has some correlation on quality.

I am of mixed opinion on what lesson to learn from this – larger teams are probably more risk averse, less centralized leadership, and generally more traditional. But their strengths are obvious – diverse experience, skills, and strengths. But for me, something I have missed when developing alone is sharing conversations with other developers while creating games. I have had a bunch of friends giving up countless hours to discuss and test my work which has been invaluable (and Terrorhedron would never have happened without their help) but there is no replacement for frequent discussions with other developers with the same investment in a project that you have – it is a powerful motivator and accelerates problem solving. Another advantage is the formality it brings to a project. Design documents will be much better finished, and time will be prioritized really well – you will get more out of your time, even after you take away all the time you spend communicating ideas. The article above also suggested people working alone may be doing so because nobody would work with them…

Working with others is awesome. If you are thinking of working on a project on your own, please please consider finding a team mate. But beware of who you team up with! The biggest hurdle you will face is people dropping out which can be a huge waste of your time. Look to your friends who you trust, and obviously who share a passion with the type of project you are working on. Don’t constrain yourself to others in the game industry! Artists, writers, illustrators, so many people have skills that can be utilized in a game project.

Considering the above, I’m really pleased to announce that I have teamed up with friend, ex flatmate and fellow Cardiff graduate Ceri Williams to create a hidden object, hand drawn, animated game for tablet and desktop. He has come stay for a bit and we have set a work space up:

The project is focussed on creating a beautiful and absorbing world, and an emmotive experience for the player. The player journeys through a hand drawn world, travelling further and further from reality, each chapter more deeply abstracted than the last.

Before anyone asks what is happening with Terrorhedron, I cannot tell you! I should make it clear that support for Terrorhedron hasn’t ended. I have been very quiet recently, but this is purposeful, I have made some big updates to the game and there is some big news to come in the coming months. It goes without saying that any updates to Terrorhedron are free to anyone who has already bought the game, and another big thanks to you all for supporting me during a really important time. Thanks! micromacro

Transforming your position and rotation matrix from z-up to y-up

I recently face-palmed when realizing that once again, I had set my own application up with Y as the up axis, but was importing all my assets from 3dsmax where Z is the up axis. I am using the Physx exporter and importing using the PXU library. Rather than re-write large portions of my code, I decided to just iterate through imported matricies and convert them from Z up to Y up.

When you are no matricies expert, this can be tough, there are a lot of people asking how to do this and there isn’t a whole lot out there to help you, which is why I am writing this post.

Physx uses 4×3 matricies for transformation, being a 3×3 rotation matrix with a 1×3 translation vector.

Converting the position is easy, just swap the Y and Z values:

vector3 position;

float temp = position.y;

position.y = position.z;

position.z = temp;

But transforming the rotation vector is a whole lot harder. At first thought you may think “hey, just rotate 90 degrees on the X axis” but no, unfortunately this doesn’t work. The actual solution is just like fixing the position, swap the Y and Z values.

On a 3×3 matrix this is slightly more confusing. What are the Y and Z values? Well, I will assume that you realise a 3×3 matrix is a 3×3 grid of numbers. To swap the Y and Z values, you must swap the second and third columns AND the second and third rows:

matrix33 rotation;

vector3 temp;

temp = rotation.column2;

rotation.column2 = rotation.column3;

rotation.column3 = temp;

temp = rotation.row2;

rotation.row2 = rotation.row3;

rotation.row3 = temp;

If this helps, please give me some feedback in the comments and let me know how it went. micromacro