Jenkins build with Unity3D

If you want to spend less time building and fixing bugs you want to setup a build/test pipeline for your Unity3D projects.

I did this with Jenkins because I like to start small. I know of services like Azure DevOps en Unity Cloud: they are fun to start with but very expensive if you continue using it. Azure is not suited for Unity3D because of the installation requirements, so Unity Cloud is the only go-to.

Or you use a local setup like I’m trying to create with Jenkins:

For more info on the Unity3D command line arguments: https://docs.unity3d.com/Manual/CommandLineArguments.html

This is the final build script I came up with:

// -------------------------------------------------------------------------------------------------
// Assets/Editor/JenkinsBuild.cs
// -------------------------------------------------------------------------------------------------
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using UnityEditor.Build.Reporting;
 
// ------------------------------------------------------------------------
// https://docs.unity3d.com/Manual/CommandLineArguments.html
// ------------------------------------------------------------------------
public class JenkinsBuild {
 
    static string[] EnabledScenes = FindEnabledEditorScenes();
 
    // ------------------------------------------------------------------------
    // called from Jenkins
    // ------------------------------------------------------------------------
    public static void BuildMacOS()
    {
        var args = FindArgs();

        string fullPathAndName = args.targetDir + args.appName + ".app";
        BuildProject(EnabledScenes, fullPathAndName, BuildTargetGroup.Standalone, BuildTarget.StandaloneOSX, BuildOptions.None);
    }

    // ------------------------------------------------------------------------
    // called from Jenkins
    // ------------------------------------------------------------------------
    public static void BuildWindows64()
    {
        var args = FindArgs();

        string fullPathAndName = args.targetDir + args.appName;
        BuildProject(EnabledScenes, fullPathAndName, BuildTargetGroup.Standalone, BuildTarget.StandaloneWindows64, BuildOptions.None);
    }

    // ------------------------------------------------------------------------
    // called from Jenkins
    // ------------------------------------------------------------------------
    public static void BuildLinux()
    {
        var args = FindArgs();

        string fullPathAndName = args.targetDir + args.appName;
        BuildProject(EnabledScenes, fullPathAndName, BuildTargetGroup.Standalone, BuildTarget.StandaloneLinux64, BuildOptions.None);
    }

    private static Args FindArgs()
    {
        var returnValue = new Args();

        // find: -executeMethod
        //   +1: JenkinsBuild.BuildMacOS
        //   +2: FindTheGnome
        //   +3: D:\Jenkins\Builds\Find the Gnome\47\output
        string[] args = System.Environment.GetCommandLineArgs();
        var execMethodArgPos = -1;
        bool allArgsFound = false;
        for (int i = 0; i < args.Length; i++)
        {
            if (args[i] == "-executeMethod")
            {
                execMethodArgPos = i;
            }
            var realPos = execMethodArgPos == -1 ? -1 : i - execMethodArgPos - 2;
            if (realPos < 0)
                continue;

            if (realPos == 0)
                returnValue.appName = args[i];
            if (realPos == 1)
            {
                returnValue.targetDir = args[i];
                if (!returnValue.targetDir.EndsWith(System.IO.Path.DirectorySeparatorChar + ""))
                    returnValue.targetDir += System.IO.Path.DirectorySeparatorChar;

                allArgsFound = true;
            }
        }

        if (!allArgsFound)
            System.Console.WriteLine("[JenkinsBuild] Incorrect Parameters for -executeMethod Format: -executeMethod JenkinsBuild.BuildWindows64 <app name> <output dir>");

        return returnValue;
    }


    // ------------------------------------------------------------------------
    // ------------------------------------------------------------------------
    private static string[] FindEnabledEditorScenes(){
 
        List<string> EditorScenes = new List<string>();
        foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
            if (scene.enabled)
                EditorScenes.Add(scene.path);

        return EditorScenes.ToArray();
    }
 
    // ------------------------------------------------------------------------
    // e.g. BuildTargetGroup.Standalone, BuildTarget.StandaloneOSX
    // ------------------------------------------------------------------------
    private static void BuildProject(string[] scenes, string targetDir, BuildTargetGroup buildTargetGroup, BuildTarget buildTarget, BuildOptions buildOptions)
    {
        System.Console.WriteLine("[JenkinsBuild] Building:" + targetDir + " buildTargetGroup:" + buildTargetGroup.ToString() + " buildTarget:" + buildTarget.ToString());
 
        // https://docs.unity3d.com/ScriptReference/EditorUserBuildSettings.SwitchActiveBuildTarget.html
        bool switchResult = EditorUserBuildSettings.SwitchActiveBuildTarget(buildTargetGroup, buildTarget);
        if (switchResult)
        {
            System.Console.WriteLine("[JenkinsBuild] Successfully changed Build Target to: " + buildTarget.ToString());
        }
        else
        {
            System.Console.WriteLine("[JenkinsBuild] Unable to change Build Target to: " + buildTarget.ToString() + " Exiting...");
            return;
        }
 
        // https://docs.unity3d.com/ScriptReference/BuildPipeline.BuildPlayer.html
        BuildReport buildReport = BuildPipeline.BuildPlayer(scenes, targetDir, buildTarget, buildOptions);
        BuildSummary buildSummary = buildReport.summary;
        if (buildSummary.result == BuildResult.Succeeded)
        {
            System.Console.WriteLine("[JenkinsBuild] Build Success: Time:" + buildSummary.totalTime + " Size:" + buildSummary.totalSize + " bytes");
        }
        else
        {
            System.Console.WriteLine("[JenkinsBuild] Build Failed: Time:" + buildSummary.totalTime + " Total Errors:" + buildSummary.totalErrors);
        }
    }

    private class Args
    {
        public string appName = "AppName";
        public string targetDir = "~/Desktop";
    }
}

I had a lot of help following the article from https://smashriot.com/unity-build-automation-with-jenkins/ but their instructions where a bit lacking for me. The Unity3D build script they provided was too hard-coded to be usable for me.

GlobalGameJam 2020

I attended the 2020 globalgamejam.org gamejam hosted by BUas in Breda, Netherlands. On our location over 200 jammers did a hackaton-alike attempt at creating novel games.

Together with two other jammers, Tom and Ben, I constructed the game ‘gearful’ during the 48 hours gamejam. Check out this brief video for the gameplay:

Gameplay of Gearful

The theme of the gamejam this year was ‘repair’. So our game is about repairing a machine. It is a puzzle game were you align gears and remove obstacles to rotate the ending gear.

The game features 9 levels with increasing difficulty. There are 3 gear sizes. Some puzzles require interaction from multiple angles to solve it. you can interact with gears or with sliding bars (that block the gears). And the whole game is physics based.
It is a 3D game. You can rotate freely around the puzzle. The games comes with a background music.
It is made using Unity and a lot of freeware assets.

We did have fun building the game, a good team interaction and accomplished quite well what we aimed for at the start. For me that’s all I wanted so I really enjoyed this jam.

For Tom you can find more of his works over at https://auroriax.com/ and https://auroriax.itch.io/.
The official Jam site with this submission is https://globalgamejam.org/2020/games/project-gearful-8.

The game felt like it is a promising prototype, so who knows what this game eventually will become…

Attending Amsterdam White Nights 2020

I am an Indie developer and I want to spend my resources wisely. I couldn’t find that much detail on what to expect on Amsterdam White Nights. So here is my 2020 take on the Amsterdam White Nights Conference.

TLDR: nice event, good talks, not that great for a starting or small Indie unless you are into mobile and have a released game already (or the talks feature subjects you are really interested in like I was).

White Nights

White Nights is a 2 days b2b event for game development related business to meet and do business. They are held throughout the year and settle down in Amsterdam, Barcelona and St. Petersburg.

If you look at their site you see it is a conference, a trade fair and a business network event. The normal entry fee is 350 euro’s, but if you are an Indie developer you can beg to get it down to 150, and that’s excluding traveling and stay costs (and the 2 days spend not earning money).

The main event is 2 days from 10:00 to 18:00, and there is a pre party (mainly networking), after party (mainly networking) and on the 2 main event days you can attend to an evening networking event. Depending on your ticket you can or cannot attend certain parties.

During the day the trade fair is situated on the main floor. In and around the main floor are meeting spots, and they have a website facilitating you getting in touch with others in those meeting spots. Also during the day there is food and there are drinks, and they organize events all-day so you have another opportunity to meet.

On my visit of 2020 in Amsterdam they had a lot of talks prepared during the 2 day main event, divided over 3 rooms. Most of the talks were 30 minute talks and some 60 minutes. And they were tightly scheduled, most of the talks being in parallel in the 3 rooms.

During the day and evening there were a lot of moments especially designed to get to talk to other attendees.
A major percentage of those attendees had titles that hinted on being developers in their daily work, followed by salesmen of all kinds. Only a few press like people. And definitely no consumers (as this is a b2b event).

What’s for sale?

This was the first time I attended, so I didn’t know what to expect. It is also the first b2b game dev event I ever attended to. I did read a few reviews on forehand of people mentioning ‘it is a real b2b event and one of the best in the Eurasia region’.
Well, I don’t have that much to compare to. The stand floor was roughly 50% game devs showing their games (mainly Indie), 10% game devs showing their b2b production capabilities, and 40% publishers. And the attendees were definitely all into game dev in some ways, as I could read from their job titles on their cards.

I don’t know if this conference is a good representation of the Eurasia game dev industry. But what I do know is that it is organized by a Russian company and a lot of the business on display looks to be of Russian and Asian origin. Further more, it is heavily mobile focused.

And there were talks. The main reason I attended this conference.
The talks I attended to where of good quality. The audience was a bit dull on questions (that includes me :P), but that didn’t withhold the speakers to deliver refreshing insights.

One thing I did skip was the possibility to get to meet other parties. During the day and evening there were a lot of moments especially designed to get to talk to other attendees. From what I heard of the people I spoke to, the conference was effective in facilitating talks and doing business (If the kind of people you seek was on display or attending the event).

So?

So, it is a real b2b event. And a big one, no doubt about that.

Worth your time? I don’t know… If you are in Europe, are into mobile and seeking for investments to accelerate the growth of your mobile audiences… then yes you have to be here.
From what I heard a lot of the businesses on display this year only wanted to invest in published games with (a bit of) track-record. So definitely no seed funding…

And the event isn’t that focused on the Indie side. Yes a lot of developers are showcasing their games. But you don’t get b2c exposure here (duh!), and not that much press neither. To me it seems events like this are worthwhile for the long run because you can connect here with people that can make things possible down the road sometime.
So keep this in mind when you want to determine if it is worthwhile going to this event…

Was it worth my own time? I enjoyed being there. Nice food, nice people, good talks. And it was definitely worth my time because of the many insightful talks I attended to.

GameFeelings is official now

As of 1 January 2020 GameFeelings is an official Dutch registered company. I, Erik de Roos, have quite my job to give GameFeelings dedicated time.

This website has had an overhaul to support the new course for GameFeelings. The main products are: experiments/academic research, games (from experiments), blog posts (about the experiments/research)

The main product is ‘game production’ and I want to continue doing experiments with games like Find the Gnome. But I want to focus more on the ‘helping others find efficient game production techniques’ so I am going to add joined academic research on ‘game production’ to the list of products.

If you are wondering, GameFeelings is part of my brand ‘Erik de Roos Software‘. That is because I can’t make a living of GameFeelings alone. Currently most of my time goes to freelance work in business software development.

Time flies, how to sustain the fun

I am planning on adding a big update to Find the Gnome for over a year now. But life isn’t letting me, so I’m going to cheat.

The promise

The idea was simple: bring out Find the Gnome, and then add continues updates to it. Increasing (or maintaining) it’s value.

I had invested a lot of free time in Find the Gnome, so some other projects had to wait. Maintaining my house was one of the urgent projects that needed my time, so I made the promise to first fix my house and then continue on Find the Gnome.

Reality Kicking in

The reality is there are always things that need my time and attention. I don’t have that much spare time at hands because of other choices I made in life.

I’m a husband and father, and I want to dedicate a portion of my life to them. Plus I have to get a steady income for them and supply them with good housing and education. That’s already more that 40 hours/week of work and focus.

All my private and professional projects take way longer then anticipated, due to less focus and free time available than I foresaw. I hear from other fathers of young children that this is but a phase of life, and you have to accept it and just wait for better times to come.

For me another thing is on the line: I want to get into game development. I’m currently a software developer consultant in business software, so I need experience in the field of game development to be able to switch.
Combine all things said earlier, and you can imagine I’m having a hard time realizing my dreams.

Time well spend

So I’m currently looking for cheats, and this is what I did find already:

  • It is in our heads things get a meaning. This is and must be the fundamentals to build your business on. Sustainable business profit can’t be achieved without motivation. And in this self-motivation is the key, because all other forms of motivation are unstable to build reliable on.
    Why is this relevant? I came to realize my motivation is mostly based on what others think or what I ‘think’ other think. And those thoughts hunt me and deprive me of my joy in creating things. Like the thought that bringing out an update to Find the Gnome has a deadline. But goals like that don’t expire. You could argue that business wise it probably already expired 3 months after release, but lets be honest: a large portion of professional business objectives need passion and dedication and aren’t that profitable. Life has to be lived, and we need work to feel empowered and to have a meaning. Meaning is something we give to things, this is not something mathematically or scientifically connected to work. So when I think: ‘this update makes me proud’, it makes me proud. (It just isn’t a way to make money for a living though 😛 )
  • Experiences can be gathered from a lot more sources than ‘professionally building games’. That is because tasks have two types of experience in it: the most obvious is the act of executing the task, this will get better and easier over time. And if you don’t do the specific task, your at a standstill. But the other one is way more subtle, and often overlooked when talked about experience: thinking on the task at hand. That thinking is often called ‘seniority’, but I think that is too simplistic. And I like to add that different tasks seems to need different ‘thinking spaces‘.
    Improvements to these thinking spaces seem to be more time related than action related, hence the ‘seniority’ often attributed. But there is more to it: these thinking spaces are only improved by self-reflection in combination with peer pressure. You need time to give certain thoughts way, but you can speed up the process immensely by adding peer pressure that is regulated by a healthy doses of self esteem combined with self-reflection.
    Why is this relevant? I can’t make time to focus on designs for a big update. But I can spend a few minutes to make a custom map for my favorite game, and on the way I learn from the community to improve my level-building-think-space (probably faster then when developing own tools first and having a small audience). I can’t spend hours to design and decorate large systems, but I can spend minutes decorating my house in real life or combining new outfits and talk about it with my wife, improving my design-think-space (and learn to appreciate my wife more in the process :P).

Continues updates (or: after-launch support)

A big con against using Agile with Continues Deployment in gamedev is for me the question: ‘is it feasible as a business model’? Because at the end of the day the amount of work put into continues updates must be profitable to run a business.

This is an article in the ‘Research’ category where I dive into a subject on game production.

The case at hand

I am currently thinking a lot about how to continue in developing Find the Gnome, but a lot more ‘Agile’ and User-centered.

I am a professional software developer doing Agile/DevOps/Google design sprints/CI&CD/Metrics driven development/what-else, and I think this is one of my strong points that I should emphasis while developing games. (See my other blogs for more on these subjects)

Recently a Youtube of GDC 2019 caught my attention (thanks google suggestions!) It is a case study from Nick Popovich (Monomi Park), explaining his success. These are the points he made:

  • Keep your game essential (refine on it). And aim these essentials to provide an experience that is able to sell over time.
  • It is all about concurrent players (online, or offline) that are using your game. By using it they are advertising it (through conscious or unconscious updates to friends that they are liking this game)
  • It revolves around a continues game update cycle that keep the ‘concurrent users’ train going (and accelerating, if possible).

His points align very well with my Agile approach to gamedev I want to take.

The cons

However, I spotted some flaws already on my experiment. For me these flaws aren’t that of an issue, but time will tell.

  • Nick Popovich is making money using this approach, but will others? Or was he just lucky?
  • You can’t just keep updating games, you will run out of money eventually. Or, on the contrary, you can’t just stop updating your game if you had just 1 bad month. In this talk the motivation behind the decisions sounds a lot like voodoo magic: the cause and causality of things aren’t analyzed well.
    A start could be in the Q&A part of the YouTube (https://youtu.be/DTvBgmNL-p0?t=3533) where Nick Popovich gives a rough guide on how he uses sales data to space out content updates. I think the ‘something’-like-a-service business model (through all kind of business) are in a maturing stage right now, and more guides on this subject are going to hit the markets in the coming years.

Next

Well, see it for yourself in this YouTube vid and decide if it is worth trying.

I keep thinking about Agile

How can I use Agile methodologies to deliver better and faster with my planned update on Find the Gnome?
It is a question that is bothering me for some time now.

This is an article in the ‘Research’ category where I dive into a subject on game production.

The things at hand

How is the industry currently using Agile methodologies? This questions could send me on the right path to find practices how to deliver better and faster with my planned updates on Find the Gnome.

When I look at developing games from a birds-eye perspective, I see the following area’s where Agile development could have its impacts:

  1. Business: Production methods, payment/evaluative structures
  2. Management: Delegating responsibilities, building on trust
  3. Daily work: Planning and executing on work
  4. Production: Executive team priviliges, Team-only driven improvements, Full-product deliveries after (a few) iterations, Course alignments on real consumer data only. (Inspect & Adapt)

Point 1 is a hard one. Companies are most of the time prohibited from sharing financial data, so finding info on this is hard. Production methods is a not-so-sexy part of game development so that’s another subject you don’t read that much on.
The funny part is, you can derive this information very easily from decisions made. Most companies in the industry are financially in business to business contracts with upfront payment structures and/or revenue shares. Production methods are most of the time ‘Pitch, pre-production, production, alpha/beta, release’.
There is very little Agile methodology here. But that isn’t that much different from other software industries, because it is very hard to steer on results and expenses with the current Agile practices.

Point 2 is a bit more difficult as it seems. This delegating/responsibility thing (and most of the times, combined with true multi-disciplinary teams) takes already place in the smaller game companies. For larger companies though it is really difficult to get away from the line thinking, because due to the scale of the organization the money and legal things tend to be too concerning to let them being handled by individual teams.
However, I’m seeing signs of change too. Due to the huge amount of pressure to innovate. But they are still doing it ‘differently’ from the small companies because in companies that large there are KPI’s, organizational guidelines and other steering tools that are introduced to keep things in line.

For point 3, I think everyone is already on board. Across all industries we know the iterative approach in daily work is a more manageable way to execute on work. I had trouble finding evidence that game studio’s are on-board too, but I recently saw this YouTube video from a big studio that confirms my thoughts on this (link below). Talking with game devvers on Dutch meetings further confirmed it, most studio’s are doing a form of Scrum.
I think there is something left to argue about: using Scrum can make you Agile but that isn’t a guarantee.

Point 4 is where the icing on the cake is. Because this is where currently companies are making the difference. In this area of Agile, the bosses aren’t the ones leading but facilitating (and don’t like being called ‘the boss’). It is this area where you aren’t an expert when you have idea’s but you are an expert only when you are able to execute on proven demands from consumers, or when you are data-proven able to forecast real consumer demands.
It is very hard to get this down in gaming, because production with the current practices of pipelines and content creation don’t facilitate easy/cheap changes down the road or facilitate working incremental product delivery to users.
Most of the companies doing this kind of (business) development are in mobile because the environment natively supports working like this.

Ok… so… how to do Agile on FtG?

To succeed on my own game development projects, I have to think big when maximizing benefits from my experience as software developer in business software.

So, I think I have to go with the maximal Agility on my own projects. Inspired by the Gram Games YouTube video I think it will look like this:

  • Keep releasing full products at Steam at low intervals
  • Release features stand-alone to mobile platforms
  • Move winning features from the mobile platforms to the full product release on Steam

The release-feature-to-mobile-first is the core idea, and here is some more depth to it:

  • 1-3 iterations
  • Real stand-alone gameplay
  • Full of metrics (but AVG compliant: I don’t need user specific data, only the global feeling)
  • No monitization
  • When 10 people use it 7+ days it is a win for me

The odds

Do I think I am right by choosing such a strange method?

Well, I can only think of 1 real cave-eat

  • It is really hard to separate features and prove their individual value

But other than that, I think It is worth the try.

The links

The video on a recent (2019) big company (Total War series, 550 people) that are doing some Agile form of planning and executing on work:

The video on a recent (2019) small company (Mobile games, 20 people) that are doing maximum Agile:

Update on January 2020: I was at the Amsterdam White Nights convention and attended to the talk ‘Defining the MVP’ from Tatiana at Etermax. They have this practice I propose and fine-tuned it. So it is definitely worth looking into.

To succeed, create something you love (it seems)

Well, you probably heard this saying. And it could be that you have positive feelings about this idea.
This article is my take on this saying, and how this saying send me off in the wrong direction.

This is an article in the ‘Research’ category where I dive into a subject on game production.

The start

It started with me wanting to make a game. At that time, I did already know it would be hard to keep focus on finishing the game, so I sought advice. The interwebs are full of advice, and the ‘create something you love’ is one of the advises you get for staying motivated.

So, I thought ‘what would be something I love?’
‘Well, me and my son (5 at the time) enjoying building the game together’
And, after some more thinking
‘Yeah, lets create game with a little bit more depth than the average child-focus game in a world child’s of 5 could love, and with mechanics they could understand’

That was my start of ‘Find the Gnome’.

The catch

Immediately I ran into problems. My son did like to draw monsters and play monster vs monster scenes with Lego. So I thought it would be a cool thing for my world to contain monsters. But to get it child-friendly, those monsters would need some ‘friendly-ness’ over them. This proved to be very hard. And on top of that, I personally don’t like games with monsters fighting monsters.

So I switched focus from ‘Lets build something I like‘ to ‘Lets try to squeeze in every possible goal I want to achieve in life’

That was the start of the 3D-ish puzzle-like game ‘Find the Gnome’ with Gnomes.

And I discovered I don’t like to create puzzle games…

The assumption of the phrase ‘create something you like’ is that you know what you will like, that things you like to play are the same as things you like to create, and that things you like will stay like-able until the end of times.

In hindsight

I do personally think it is hard to find something that you like to play and create, and continue to like to play and create.

And after a few months after releasing this game, I found out that there is something else. Creating games professionally (subconsciously my intention) require other parameters to be satisfied than games created for private use.

I am a professional software developer so each day I build software related things. Thankfully I find everyday something I like in the job I do, so everyday I do what I love to do.
But do I like the subject? Or the people I’m working with? The requirements? All the tasks I have to fulfill? (Answer: not always everyday, but enough to keep the fun in it)
It is this mentality that I had to translate to game dev to get things going again.

And at last, a youtube I did find about this subject. I think it is a bit harsh on personal projects, but on the other hand: developing professional is a whole different game. Thankfully. Because, if not, what would set me (professional business software developer) apart from all those guys crafting excel-sheet-tools in their office-basements?

Early access in gaming: Agile business development in AAA gone wrong

As a comment to the following video states:

‘I accidentally bought an Early Access movie at a Walmart a few months ago. The second act repeats seven times and half the dialogue is is unspoken text, but the story is basically alright. Maybe it’ll get better with future updates but I have no idea how to update dvds, please help.’

This is an article in the ‘Research’ category where I dive into a subject on game production.

In my opinion, Early access is just a reminiscent of a gone-by area of the style of funding in AAA, trying to get the pro’s of something new but not wanting to let the old go. And yes, the end product is even less desirable than doing it ‘the old ways’. As pointed out by the reviewer in the video above.

Into the deep

Let me break down what I see is happening.

Clinton Keith in ‘Agile Game Development with Scrum’ sums it up nicely. Game dev started in the 1970 with the arcade gaming. Games where very expensive to make back then due to the hardware. As a result, they adopted project management strategies. A much used one back then was line style projects like waterfall. The use of waterfall stayed mainstream until around 2008 (the year of Clinton Keith’s book). By 2008 project were enormous, especially the AAA games with hundreds of people working on a single game. But waterfall had the ‘issue’ of detecting failures a bit too late. So A lot of studio’s were looking into other project methodologies by then, reflected in a couple of good book publications on game development in those years.
Things started to change from the years 2010 and on. But a lot of the ‘old’ is still there. And a few problems aren’t just solved by using Agile or another project methodology.

Finding the ‘Fun’

Finding the ‘Fun’ is the main concert for a game dev project. And a hard to crack nut. Look at the following graph from the book from Clinton Keith:

The red line is about finding the fun in traditional waterfall projects. The blue line is the (optimal) curve when you use Agile project methodologies.

I personally don’t buy into this graph as that ‘Agile’ gives you this earlier and better understanding of ‘Fun’ no matter what. This graph is a good demonstration however about the problems game development is facing and the knowledge you only can acquire over time and when all game components come together.

From what I have seen in AAA gaming so far, game development is most of the time still executed as a line project. They describe a goal, get a few brilliant people to figure out how to get there so most things are accounted for (this is the important part of line thinking: smart work preparation, dumb work execution), create a few development teams to execute on the plan, and deliver all the goods at the set date.

The AAA game industry has a good reason to build games this way. From the business side the funding is coupled on hitting milestones. You can only account for milestones if you are detailed about the deliveries. As a result all experimentation and tuning is done in the design and pre-production phase. From then on most decisions are ‘locked’ and the production is scaled up.

When you are about to hit a milestone date but are not ready yet, you start to crunch. When even crunching doesn’t help, you start to drop non-essential functionality. And when even that doesn’t help, you either consider moving the deadline or start dropping essential functionality.

This hard-locked funding system seemed to work well in the past times. Although there were always signs that it wasn’t the best encouragement for good game development. But they did stick to it because… of the money and control.

So?

Well, it seems the factory floor working force of the Bioware studio’s are doing their work. They are delivering nice stories, worlds, assets, sounds and everything else.

But the project management… this is the most obvious: if you’re half-way into the project, big chance you don’t have anything working yet. (Working as in: it could sell for some money) Some less essential parts can be finished, but you need all parts together for it to be ‘the thing’ as specified at the start.

It is exactly this issue that early access has: it is a product that only functions as a whole, but someone decided to declare a few parts ‘optional’ and release it anyway.

But… planning is everything?!

Don’t get me wrong, I get it on the business side. You want to plan in advance to know how the whole game plays out. And that planning then gives you the (although false) hopes that you have something worthy to invest in.

From my combined thoughts of how things have worked out, I understand the early access move. If a game company had planned a big game IP, and suddenly sees diminished interests, they wanted to get a piece of the cake while they still can. So there is the early access release for said big game IP.

The early access move became relevant in the last years because there is an increasing pressure to deliver. Gaming has gained significantly increased exposure in the past 15 years. And I think most of the pressure on game studio’s is from the money-injecting side that want Return On Investment and low risks, and see a goldmine currently hitting the big veins they were after.

What do you oppose for AAA?

There are two things that needs to be addressed. One is already evolving, but the other isn’t.

  1. Better Agile by using working and fun sub-deliveries.
  2. Better game business development by using other systems to control the funding.

The number 1 is already being addressed by people like Clinton Keith. There is a whole movement of better use of the combined intelligence of high-performing teams even during production and beyond, and using iterative approaches to the daily work of game development. Even more, AAA studio can’t get the high-sought after people no more if they don’t provide an inspiring working place.

The number 2 is just not there for AAA. The industry is moving to more Agile business dev practices with mobile in the front lines. But the AAA on PC and console just cannot transpose those idea’s from the mobile productions to the large-scale AAA production.

Well, look to it from the other side, from the consumer perspective.

There is a world out here: people’s tastes changes over time. One year your game is the ultimate, next year no-one plays your genre anymore. And that’s a problem in an era where games take 3 to 5 years to develop.

I am thinking about these things for a while now. They are really hard to solve, because there are so many things involved.

But wouldn’t it be great if a game was able to evolve? That you could make a small game first with a small user base and small scope, and iterate on that? (but without calling it sequel x?) I think everything is in place in the current times we live in to make this happen:

  • Very good and easy update infrastructure everywhere (and that people nowadays are trained to accept updates as something good)
  • Much better access to information (and training, and resources, etc)
  • Multiple ways of monetizing (that people are accustomed to)
  • Dev teams are up to this task (and almost expecting to develop that way)

We could start with developing different than before. The planning-and-then-executing isn’t working any more, so get rid of it. Start experimenting with practices that enable continues releases to customers.

Starting a game company

As I see it now, there are 3 ways of starting a game company. They vary greatly in the change of success, but they all have their own dislikes.

  1. Find an investor, or
  2. Do it on your own, or
  3. Just do something

This is an article in the ‘Research’ category where I dive into a subject on game production.

I thought I did the ‘on your own’ kind of starting up a game company. But in reality it was more of the ‘just do something’. It did bring me a lot of experience, but the result wasn’t me being independent and having a job in my own game company.

Don’t get me wrong, I value the experience greatly, but if you (like me) want to get more out of it than experience alone… you have to do things differently.

Option 1: find an investor

  • Catch
    • Build on trust.
    • Money injections on various moments in the development cycle.
    • You need to invest your own money and love time, the investments acts as levers for more success.
    • Biggest change of success, if you know what you are doing.
  • Identifying characteristics
    • At least 1 dedicated core team, investors must be able to trust them in being able to deliver.
    • Your daily job.
    • Clear product goal and product vision (for this and future products).
    • You have ample and solid evidence you are making games for markets that want these game.
    • Investors have control over your company and products.
    • 1+ years of development per product.
    • Big budget for marketing.

Here are two video’s that inspired me on the investor subject:

Option 2: On your own

  • On your own
  • Catch
    • In theory fun, in practice not that good. You don’t know when you can support yourself or your family. Brings big issues with time management.
    • The invested time is not worth it (time vs gains) for a long time.
    • In the end you have very few financial means, change of a (even small) success is small.
    • If it works you have full control and are completely self sufficient.
  • Identifying characteristics
    • Part time (or dependent on cheap house holding services of others like relatives).
    • Many small games.
    • Max half a year dev time per product.
    • Becoming a master in a niche (genre/style).
    • Small but dedicated fanbase.

Here are two great video’s. The first one inspired me to give it a try, the second one is afterwards when I discovered this option isn’t that great nether.

One important thing on this 11 years thing, if you missed it: the person in the video above made his fame before and in the Indy Apocalypse. Things are different now. See the next one.

Option 3: Just do something

  • Just do something
  • Catch
    • Fiddling around.
    • Watch out with what you think what you are doing: it is very easy to get lost thinking that you are making something great.
    • Very very few people are able to make money this way. Although we know the examples (I look at you Flappybird) these are extremely rare compared to the amount of people that tried. Just buy a lottery ticket, you then at least know your chance.
  • Identifying characteristics
    • You are just doing something.

Here is the video I saw that opened up my eyes and made me think ‘Am I this developer he is talking about?’