Focus for your Game Dev Career

 Unity's Survival Shooter tutorial.
Unity’s Survival Shooter tutorial.

Today I want to share some tips aimed to maybe help focus game developers (or those thinking of getting into it) on worthwhile goals for the various stages they might find themselves at in their careers (or non-careers).

I want to examine a few situations that the developer themselves may be in, rather than focus on game genres, just to be clear. At each stage I’ll look at some worthwhile goals, as well as your challenges, and unique freedoms that you may have.

Hopefully people will get something useful out of this. Setting goals and focusing is key to success in any aspect of your life, so let’s get started!

I’m a hobbyist

Let’s say, like a lot of modern musicians and indie developers, you have no intention of making game development your career. You finances are stable, and you do what you can in your free time purely for the love of it. You have a half dozen or more abandoned projects because as soon as something becomes boring you move on to the next fun idea. There’s nothing wrong with this – it’s your hobby! But let’s just say that you decide, maybe as a bucket list item, that you want to finish and release a game properly.

Example Goal: Release a finished game for sale to the world within the next 3 years.

Challenges: You have limited time to put into development, and this may be further hindered by life things like weddings, vacations, family events, etc. You also have limited expertise and (probably) an environment sparse of other experts to help you out or to playtest your game. You’re unlikely to dedicate a whole lot of time to marketing or community management, either.

Freedoms: You don’t need your game to make money (this one is huge). You can make anything you want that will keep you interested (though be careful of feature creep if you actually still want to finish the game). Your ‘deadlines’ can be moved (though this can be a disadvantage if you’re not disciplined enough to keep the game roughly on track). You may have the spare cash from your day job to pay contract artists, voice actors, modellers, etc, thus vastly upping the quality of your game for little time invested.

The best advice I think is to choose a game idea small-ish in scope that you can make, that you want to see the light of day, and that you want to give up your free time working on. These considerations are true for most of the people on this list, but especially so for hobbyists. Without peers around you, maybe try to find (or create) game dev meetups in your local area. An example would be The Games Co-Op that I organise each month in Dublin, Ireland. The goal is to give developers a regular date on the calendar that they know they can bring a game build to and get feedback on (a second goal is to network and find others to work with).

I’m a student

 Image from an original article on game student employment prospects. Click image to read.
Image from an original article on game student employment prospects. Click image to read.

Students are a funny breed. They often have the loftiest of goals, but are also probably enjoying their college years and don’t necessarily see these things as being at odds. I’m not for a second saying that they should not enjoy these years. On the contrary! They should make the most of them and cut down the expectations of what they’ll build in college during this time.

Students often underestimate just how much hard work goes into making a game and how hard it can be to work with other people, especially when it comes to their friends. They should plan their projects accordingly.

Example Goal: Finish your assignments and get a good grade for them (I wouldn’t go any further than this. Don’t think of your assignment as being Chapter 1 of your epic action-RPG).

Challenges: Your ambition can be your undoing. You have other assignments that need your attention but which might be less interesting. Give them all due time! Young students especially will likely have plenty of party nights not working and then plenty of crunch sessions where they’re doing inferior/buggy work. You are assigned to work in groups (this is a major one. It’s actually an advantage long term as it trains you for real life and work in companies, but for college projects you often can’t choose who you work with and necessary skills might be missing from the group. The group will need a leader or there’ll be a too-many-chefs situation.) The college probably technically owns anything you create, and if not then you’re still sharing ownership with your team mates and you likely haven’t signed any contracts, have you?

There are exceptions to this advice, like if you find yourself in a prodigious wunderkindgroup then maybe you should continue with them post-college, but generally the aim should be to get good grades on assignments, have a portfolio of finished or at least presentable projects, and to graduate as a strong individual. Presume to find some good collaborators and weed out some bad ones. After college maybe start something up with the good ones, but don’t presume to finish a particular project ‘after college’ with the same team. The members will disperse, get jobs, lose interest, or just not want to work with you again, but they’ll all own a piece of whatever you created together. Be prepared to let all those games go, but learn what your strengths were and prepare to build on them later. Remember that game mechanics can’t be copyrighted but the characters and assets you created do carry ownership, probably split between the group members. After college, rebuild the fun ideas if you must, but leave behind the names, models, and other assets.

I’m a recent graduate

The logical next step. You’re probably looking for work, and finding it very hard to get some. What will help? Well, unless you have to, don’t necessarily go straight into a job at GameStop and spend all your free time spending your hard-earned money. That’s not the path to becoming a game developer (though it is fun for a bit in your early 20s if you must). Instead:

Example Goal:  Keep building projects. Release some solo mobile games (finished and shipped titles are the most impressive thing for your résumé).

Challenges: Basically life beginning, and all the demands you’ll feel on your time. Make sure to keep up your craft or your’ll lose it. I’m thinking of this period as somewhat transitional. Pay some attention to areas you need to improve (like modelling or pixel art for me) but also start moving into your speciality and building a portfolio that shows it off. This is the time where some recent graduates will go into paid work in other fields, never again to return to game development. Others will drift, doing a bit of game dev, a bit of other things, and in a year they’ll be competing with newer graduates without having gained a head start on them. The most driven ones will use this time to sharpen their skills, prove their worth, and either find good paid work, or find funding and start their own companies!

I want to make games on the side

 Now that is a nice home office!
Now that is a nice home office!

This is a bit like the hobbyist, but with more of a profit motive. It requires goals, discipline, market research, and a proper accountant (good thing you can afford one (also, if you’re making money in any of these categories I’ve mentioned you probably need to be filing tax returns – just my little disclaimer – I’m not giving financial advice here today)).

Example Goal: Release a mobile game every 6 months, waiting for a hit.

Challenges: Most of the same ones that the hobbyist faces, plus trying to compete on the App Store(s). Trying to make the game stand out.

Freedoms: Same as hobbyist. You don’t need to make money, but you are hoping to at least make development worth your time (Some of game dev is very enjoyable, but the hobbyist stops short of the gruelling testing, accounting, and legal hurdles that come towards the end of a game project. You’ll want to feel that this is worth doing.)

This is possibly the most/only sensible way to tackle the mobile games market without millions of dollars to spend on marketing. Examine the market, make something, hope for a hit, don’t get one, learn from it, make something else, and repeat. But don’t count your chickens before they hatch.

Personally I chose not to compete in mobile because I didn’t have an interest in mobile games that would sustain me through the hard parts, and I also didn’t think I had a reasonable chance to stand out and make money. For me, game dev wasn’t going to be ‘on the side’ (at least when I started out) so this isn’t a route I took, though I might do it in future.

The 6 month goal is achievable, and also gives you two chances at a hit each year. Not too bad..

I’m employed in the games industry

Congratulations, you’re living the dream!… maybe. In bigger studios you may feel like you have very little agency over what gets created, and in smaller ones you may fear more for job security long term (though you should always be concerned with this in the world today, especially in a games studio funded by profits). So what should you focus on?

Example Goals: Sharpen your expertise to the max, utilising the mentor-rich environment that you’re now in. Build your professional network. Get your name in the credits of some big titles.

Challenges: Depending on where you are, you may be experiencing horrible crunch conditions (Don’t allow this to destroy your quality of life. Stand up to this lose-lose practice). You may be working somewhere that forbids you from working on your own stuff on the side (for some terrible reason. So, know what you’re allowed do, and push for internal game jams if this is the case. Creative people need a break from working on just one thing). You may have low morale if you’re not making something that interests you, especially if you haven’t other creative outlets.

Freedoms: You’re being paid to make games and are surrounded by people who can make you even better! Many companies will pay for or subsidise a trip to games conferences for you. Absolutely take advantage of this!

This is one of the best places to be, but don’t assume that your job will last forever (it might, but studios suffer lay offs or close completely all the time). Use the time to become amazing at your craft, and network and go to conferences so you meet people that know you’re amazing. Your professional network of people you’ve met in person(!!) is the single best way to find work in the future. These may also be the people that you form an indie studio with, if that’s your goal.

I’m thinking of leaving my job and making a game full-time

 The day Retroneo Games was born. Click for link to that blog post.
The day Retroneo Games was born. Click for link to that blog post.

This is where things get serious and you have to really start thinking like a business. This is kind of what I did except that I didn’t get to choose to leave my previous job (just as well though – tax advising isn’t as fun as game dev).

Example Goal: Release a profitable game on Steam within 2 years. Maybe follow to consoles.

Challenges: Budgeting accurately/ not running out of money/savings. Keeping to a timetable (they say plan how long your game will take and double it. I did. Then I had to double that, then life happened and the original schedule is irrelevant now). Creating a game that will compete on Steam (easier than mobile, but still incredibly difficult). Targeting a market gap (eg. I picked single-player space games) that will still be a gap in 2 years (or so) when you finish the game.

Freedoms: Full time hours to dedicate to development (careful not to waste them by doing too much ‘research’ or adding unnecessary features). It’s possible to gain financial grants (varies from country to country) to support your game. Being full-time and putting your own savings in gives potential partners (profit-share artists, composers, or publishers) more confidence in your project and may help you build the team you need, even if you can’t afford to pay them directly.

A lot of PC indies are in this full time development/ full time panic state. Money is a stress, but with solid business plans and some game development experience, you can make an honest go of it. Most games lose money, but a long sales tail on a decently-made, worthwhile game can be a good foundation for a business. Watch this great GDC talk on the ‘No Hit Wonder’. You are also in with a real chance of making good money (odds are better than winning the lotto, and can be improved by having a streamer-friendly game that’s excellently polished and stands out from the crowd).

I’ve had a successful game and I’m growing my company

I can’t speak from experience with this one, but here is where many companies staff up and build a second game. Many build a game that has little or nothing to do with the first game, and maybe they don’t know how to manage larger groups of people, or budget at these higher levels, and it all falls apart. Others succeed beyond their wildest dreams! My advice would be:

Goal: Create a new game that builds upon either the IP, the mechanics, or the essence of the original (that’s what your fans want. Five Nights At Freddy’s is a great example of a developer maximising the value of the IP they’ve built).

Challenges: Usually you staff up, but hiring the wrong people can be a real challenge (remember: hire slow, fire fast!). Trying to keep fans happy – there are expectations now! Deciding what made the first game successful and building upon that without treading all over it (it’s a fine line to walk).

Freedoms: Your track record (and sales of the original) should make funding/raising new finance/finding a publisher easier. You should be able to hire and pay more staff directly, and also attract better staff because you’ve proven that you can successfully ship a profitable game. It will be easier to get console dev kits or get special access to exclusive launch deals, as well as press and streamer attention.

This is the position we probably all want to find ourselves in, yet none of us can start here. It requires mastering multiple (not all, but many) of the previous situations and also requires a powerful drive and resilience inside yourself. There will be many failures and many hard decisions to be made to get here, as well as sleepless nights and anxiety caused by having your work viewed, reviewed, and torn apart by the (voracious) gamer community. You might even get here and discover that it’s not what you wanted, but I think that for many of us, the financial freedom to spend our days doing what we love is the Holy Grail. For anyone reading this blog, what you likely love is making games. Best of luck to you! I hope that I’ve been able to help in some small way.

In Conclusion

I’ve recently begun moving into part-time business workshopping and coaching, aimed largely towards creatives, artists and game devs. I still make games, and Sons of Sol is still happening, but I ran into the budget problems mentioned in the ‘I’m thinking of leaving my job and making a game full-time’ section. So now I’m moving into the ‘games on the side’ section, but with finishing the PC game as my goal instead of the mobile games (for now, anyway).

Most of you will probably find yourselves hitting several of these stages over your careers. Personally, I kind of skipped the student one, but self-taught through 1GAM projects.

If this guide was helpful or if you’d like to ask me anything related to game dev business, do get in touch through the comments or the RetroNeo Games contact page.

Thanks for reading.

Until next time…

Unity WebGL for Dimwits (like me!)

Updated 26 Nov 16: Since originally posting this blog, Chrome has made more changes that now prevent my Dropbox/iFrame (last section of this blog) solution from working. All browsers are working together on the future of the WebGL format, and Unity continue to make their own changes, too. The landscape is constantly shifting and while everything in here was useful info at time of writing, that may change over time. At time of update, the rest of this blog should still help you out with many problem areas that you may be having, though.

Updated 1 Dec 16: Further viewing. There was a more up to date talk at Unite (Los Angeles) 2016 that’s a slight bit higher-level than this, but is also useful.

Fair warning, this post is targeted solely at Unity game developers. Normally I write posts targeted at gamers. Not this time. Today this is a public service for game devs 😛

If you’re reading this then hopefully you’re new to Unity. I say ‘hopefully’ because if you’re not then, as is the case with me, the chances are high that you’ve been trying and failing on and off for almost a year now to get Unity’s Web “this is the future, no really” GL builds to work for you. For me, at least, the problem was probably compounded by the fact that I am the ‘layman’. I know nothing about html, C++, how Unity works under the hood, what a NPAPI is or what Google’s problem with it is. Any material I did find explaining WebGL always seemed to be aimed at those with a slightly higher level of knowledge in these areas than I possess.

At the time of writing I was using Unity 5.3.1f1

EDIT: Do read into the comments. There has been some interesting news from Unity themselves and others. I’ll edit the article to include some of it.

The Background

In September 2015, Google Chrome stopped supporting NPAPI. All I knew is that now all my Unity Web Player builds of games on my site wouldn’t run in Chrome, and that 66% of my visitors were using it. I put in messages for people to please use Firefox or download the PC build, but people are lazy. Giving them an extra step or two to play my crappy game jam entries and prototypes is more than many of them were willing  to do. And that’s my problem, not theirs. It’s my responsibility to fix it. And fix it I… couldn’t!

I suffered all kinds of problems from builds simply failing (usually), to builds successfully loading an empty scene but failing on the 2nd one, to gamepad inputs being horribly messed up (mine still are, so if you’re expected a fix for that in this post, sorry) and builds running (for seconds) in one browser but not at all in another. Even when I got good builds more recently, I couldn’t get them onto my site for another while. There were also confusing messages about exceptions happening but exception handling not being enabled. I couldn’t see where to enable this (it’s not directly on the build screen) and didn’t really understand what it meant, or what the exception might have been.

I even met some Unity ‘evangelists’ (as they call them) from the company when they came to Ireland last year (sound folk!) and asked a few direct questions about my WebGL problems but got no immediately usable answers.

This was all extra frustrating because by now I was seeing plenty of other devs get working WebGL builds out into the world, and I was wondering what was so different about my projects that caused them to fail so completely!

Because there’s so little support out there so far and because I’ve made huge leaps in the last two weeks, I thought I’d write this up and share it. Big thanks to Chris Gregan from Fungus (a great Unity plugin. Check it out. It’s free!) for his help. He doesn’t know it, but playing (the fantastic) Snozbot’s Text Adventure, seeing another great game running in WebGL inspired me to finally brute force a solution to it for myself. Chris was also a big direct help several times during the last two weeks and made the first breakthrough suggestion.

EDIT: For the sake of completeness, I should also mention that when you download and install Unity you will want to ensure that “WebGL Build Support” is selected. If you installed Unity without this, just run the download assistant again and select only WebGL. You don’t have to completely reinstall Unity to get the support back.

Enough Background! Solve it, dimwit!

Okay. It turns out that my single biggest problem came from the fact that every game I tried to build in WebGL was one that I’d started under Unity 4, not 5. Naturally, this was because all my games on this site have stopped working in Chrome, and I wanted to fix it. Many of you are probably in the same boat. I’d upgraded all the projects to Unity 5 and made successful Web Player and PC builds, but never a working WebGL build. Even the simplest single-scene game jams here failed.

If you’ve no Unity 4 projects then you’re probably not experiencing this problem so skip this and the next section.

I was in the middle of taking Teluma and rebuilding the level generation line by line, taking 5 minutes every time I changed a line to test a new build (infuriatingly, the exact same code would fail sometimes and pass others) when Chris suggested the following.

Export a Unity 4 project as an asset pack into a clean Unity 5 project

This may sound painful, and let me assure you, it is, but it’s also the only solution I’ve seen to date since waiting and waiting for Unity updates to fix the problem hasn’t worked. Something deep in a project’s files is incompatible. Deleting the Library or meta files won’t help you (well, it didn’t help me anyway). If this is a project that you really want working in WebGL, then rip off the bandaid. If it’s not, maybe consider if the project is worth your time. At the time of writing this, Teluma is the only project on this site that’s been updated for WebGL.

Take literally everything in your project folder and select it (scenes, prefabs, materials, sounds, scripts) then right click and Export Package…

Select all dependencies. Select everything. Package it up into one little Unity package, open a new Unity 5 project, and import the package again.

Everything will be broken. To my knowledge, there’s no way to bring in the project settings like Input Controls, Physics collision matrices, Tags, Layers, Sorting Layers, and possibly lighting settings (I’m not sure because Teluma uses only unlit sprites and that’s the project I did this with). The more complicated your project is, the longer this will all take to fix and test. Them’s the breaks.

EDIT: Chris has suggested a way to do the export with your project settings intact. Check out the docs here. I haven’t tested this at time of writing.

FURTHER EDIT: Tested now. While this works to export your project settings, it seems to be those very settings (something within them) that causes Unity 4 projects to break in WebGL. The painful way is still the only way I know of to go. 
I’ve packaged up a handy script based on that link to export your settings anyway if you want to. It adds a command to the Editor’s Menu Bar (Tools > Export Project Settings).

For me, it took a few hours to connect everything up again and test. Top Tip: If you put your Layers back into the exact same spelling and order as they were in before, then most of your prefabs and scene objects should fix themselves. I think this didn’t work for nested prefabs though. I can almost guarantee you’ll be fixing bugs for a while.

Once you’re sure everything is working as it should be (the confidence won’t return for a while) then you can make a build.

Exception Handling

After the last step, I tried builds and I wasn’t really getting the exceptions error too often any more. However, it’s worth knowing where to turn these on and off if you don’t already.

 Click Player Settings... futher options appear in the Inspector, including Exception Handling.
Click Player Settings… futher options appear in the Inspector, including Exception Handling.

I don’t know much about these save for the fact that you don’t really want them on. If your game is running well, you don’t get exceptions. If it’s got some bugs in it you’d be better off finding and fixing them than just allowing the exceptions. 
I believe enabling them also makes your builds larger, and thus loading times are longer.

I’m a n00b in this field, though, so only listen to what I’m saying there if you know next-to-nothing on the subject yourself.

You can also set things like the company and game name from here, as well as put in a logo.

DataCaching is probably worth turning on for performance’s sake on subsequent visits by players, but you are telling their browsers to download game data, probably filling up their temp folders… as I understand it… which I’ve already admitted that I don’t. 

Unity Docs has this to say on the subject: “The Data caching checkbox in Publishing Settings lets you enable automatic local caching of your player data. If this is enabled, your assets will be stored to a local cached in the browsers IndexedDB database, so that they won’t have to be re-downloaded in subsequent runs of your content. Note that different browsers have different rules on allowing IndexedDB storage, and may ask the user for permission to store the data if this is enabled, and your build exceeds some size limit defined by the browser.”

Gamepad Support

EDIT: Apparently this issue has been fixed in 5.4 so we have that to look forward to!

This still is totally broken for me and I’ve nothing to offer you here. I’m asking for your help if you have gotten a controller working correctly in WebGL. 

For me the left stick works fine, but the game thinks that the Right Trigger is the Start button, and several other buttons are similarly remapped with no rhyme or reason behind it.

This was one of the things I asked the Unity evangelists about last Summer and they basically said that they’re aware of it and it’s on the list. I’m surprised that it’s still as broken several months later. For me, anyway.

Audio

According to Chris Gregan, audio is one of the bigger problems they’ve faced with WebGL. It uses WebAudio, while the other builds use FMOD. So there’s literally different rules and operations going on.

I experienced no problems but Chris said they had problems playing shorter sound clips in close succession. My gunshots in Teluma seem to be going okay, so your mileage may vary. 

Third Party Assets

Given how much stuff there could be in your project that comes from the Asset Store and isn’t an officially supported Unity asset, the best thing I can say here is ‘be careful’. If you’re using assets or custom shaders that were written under Unity 4 and haven’t been updated, then they may be a source of trouble for you. Try building without them if you’re unsure, check out the forums, or email the developers.

In the case of Aron Granberg’s quite popular A* Pathfinding Project, I’m using it in Teluma and initially suspected it of causing trouble. Aron is still supporting it and he suggested one or two fixes on his forum. I had no trouble with it after doing the package export I mentioned above, though.

Other Issues

Application.runInBackground

I like to use this so that the game keeps playing if I switch away from the screen. This keeps it going in the editor or in a build, except it doesn’t seem to work in WebGL and I haven’t gotten around it yet.

Cursor Behaviour

In other build types I can set the cursor lock mode but it doesn’t seem to work the same with WebGL. I attempted the solutions set out by Unity Docs but was unsuccessful. Now, that’s the official docs so I’m sure it’s correct and that my first attempt just got something wrong. Copying the First Person character controller script may be a good way to go. It corresponds to what the docs say about the events happening on button UP events.

Finally, deploying to Web

After all of that, my builds would run locally but I still couldn’t run them on the RetroNeo Games website. I opened this Unity Answers thread that was watched by 42 people but answered by nobody. The lack of response is what encouraged me to write this. Clearly it’s an issue people are having and there’s very little support for it.

 A failed attempt at integrating WebGL onto the site. It also didn't execute.
A failed attempt at integrating WebGL onto the site. It also didn’t execute.

If you know what an iframe is and this is painful to listen to, skip ahead. If not, then like me you may have attempted what worked with the old Web Player builds. That is to put the game in a public Dropbox folder (or similar) then edit the output html file of the game to reference the web link of the game’s .unity3d file, then copy all that new html into a code block on the site.

While this was how I handled the old Web Player builds, this totally failed for me with WebGL. There are several links which need referencing in the html file. Unity’s docs (bottom of the page) mention linking only 4 files. There are more like 8 in the index.html file. I tried linking 4 and I tried linking all, but both ways failed.

That’s when I learned about iframes (this guide is “for dimwits” remember).

Solution

So much simpler! I uploaded the build file to my Dropbox/Public folder, right clicked on the index.html file and got the public link.
On my web page I added a code block of html and said:

<iframe src=”myPublicLink.html” width = 860 height = 700></iframe>

Obviously, replace ‘myPublicLink.html’ with your own, and set the resolution to whatever you want it to be.

That’s it! Results can be seen here.

In Conclusion

After that, the game finally ran. Two weeks of brute forcing the problem had (mostly) paid off. 

Controller support and cursor locking are still hurdles to overcome, but they feel much more manageable now.

Unity’s WebGL builds are no longer in preview mode. They’re now considered the way you’re meant to do business. There’s been a shocking lack of guides like this one (only, you know, smarter and more coherent) from Unity themselves or from the normally extremely active YouTube community who are forever making tutorials on this, that or the other for Unity.

Hopefully this will be of some help to people. And it will only get easier as Unity iron out the remaining kinks. I’m sure they’ll do a tutorial or live session on building and hosting WebGL at some stage, but for now, this is actually the most comprehensive guide I can find to Unity WebGL anywhere online. I figured out surprisingly little for myself but instead gathered (or discarded) information from dozens of sources, (and of course, from Chris Gregan) and I can only claim credit for writing down the most useful of that information in one place.

Good luck fellow game devs. Game on!

Kevin