Monday, 31 March 2014

Dolmen

What its all about

After hitting a brick wall in the redesign of 60 seconds in Unity I decided take a break and ignore my own advice and start on a big project. Im calling it Dolmen for the moment.  I can always get a few months into this project and go back and finish 60 seconds when I'm in the right frame of mind.
I've had a rough idea floating around in my headbox for a while now. I want to build a game with discovery and utter isolation as the central ideas. The game will be first person so the recent popularity of the walk em up is good news for me. I have a rough direction for the game to take and an idea of how I want it to eventually look. I wont have any dialogue,text or tutorial in the game.There will be no combat and no other characters(maybe....). Ill be taking more than a few leaves from Journey's book methinks. The story itself is slowly taking shape and something Ill be keeping under wraps.
But I do think its important to start prototyping now to get a feel for what works and what doesn't. I'm very excited actually. This will be the first proper game I've worked on. Again the scale of this is very intimidating but I can always try and recruit some help at a later stage if I think the project is in any way viable.

A Starting Point

First off here are a couple of screenshots from two areas that I have started to block out. Please keep in mind that these are very rough block outs and virtually no texturing or effects applied.





I am looking to have a good variety in environments for the player to work through with environments ranging from very tight internal spaces to wide open landscapes.

Building A Level

The corridor in the screenshots above is assembled from four basic geometric shapes. I've decided to build my levels in a modular manner but with bespoke sections as needed. The advantage of building a level in this way is that I can change the layout relatively easily. I begin by modelling some shapes that I will construct my level from. I import those shapes to Unity and use the vertex snapping  to fit everything together. Vertex snapping can be a little fiddly but works just fine when you get used to it. To speed things up I assemble a section of corridor from the shapes, which I then child to an empty gameobject. I then copy and paste those objects to speed up level assembly. Its quite like Lego and very fast. I'm only scratching the surface but I've started to add some minor details to the few corridors I've built.







Designing A Level

I now have the basic tools to make the bare bones of a level. I have modular geometry, a control scheme and the means to trigger doors, moving platforms and so on. This is the scary bit. I can't hide behind learning the tech now to create my level. Its all me from here on in. My initial thoughts are to have a tower and have the player start at the top and have to work their way down. I did sit at the computer and try and design a level as I went but that didn't work out too well. I need to draw out a general floorplan first before sitting down at the computer. Its too easy to waste hours in front of a pc messing around doing nothing. The next image I hope to upload will be a sketch of a floorplan.


Wednesday, 12 March 2014

New Beginnings

Once I had transitioned to Unity I decided to make the leap to 3D games while I was at it. I followed some tutorials,coded an FPS control method and built a basic "danger room" level to move and shoot in. Wow this is so easy! I had a rough idea at the back of my mind for a game and the time was ripe to flesh it out. So  I put my farting jacket and thinking cap on and pondered. I started research in earnest and to my surprise first person exploration/puzzle games were far more common than I realised. I had read a lot about Journey and watched an entire play through on YouTube. I was enchanted.
The whole game was played without words leaving the player to interact with the environment and piece together a story and indeed gameplay mechanics. It looks like pure genius. Im ashamed to say I still haven't played it  as I don't have a PS3. Inspiration struck and a more solid design for my own game emerged. Im not going to lie and say its a massively original concept. Its more of a remix of elements but it was a direction to shoot in.


The Plan

My idea was taking a more solid shape. The central themes of my game concept are isolation and exploration. The likes of  Ico, Shadow of the Colossus,Enslaved and early Tomb Raiders really nailed those feelings for me. Now I want build my own world  that players can immerse themselves in. So I churned out a brief design document. I use workflowy by the way. I find it excellent for tracking ideas and designs, even to do lists. I would start my project and see what happens. I'm sick of making tiny scale mobile games that are ignored on the play store. This is the one. Ill make my mark with this.


Rabbit Holes

I wont go into too much detail yet, but my game would be set in a distant land. That means terrain. Fine so now Ill learn how to generate terrain in Unity. OK so terrain is like a large plane that has a height map applied to it. Fine that makes sense. Now I need to either make my own height map or find some freely available ones on-line.I lost entire days to the subject of height maps.
Finally I have a height map. I've applied it to my terrain.
Now I need to texture it. Oh there are specific shaders for terrain I can download and use. What is a shader? Oh and light. Now I need to sort out the light. You can probably see where this is going. 

Again I had bitten off more than I can chew. Making a game of this scale for a lone gun part time indie cowboy is certainly possible but the odds are not favourable. There are plenty of success stories out there of small teams building incredible games. But considering the level I'm at right now it may be too ambitious or it could just be the case that I need to assemble a team.
Getting sucked into the graphics and tech side of things is far too easy. I should have just built a basic prototype. Get a game running and worry about graphics etc later.

Focus You Must

I do want to stress at this point that I am in no way complaining about my issues. In fact quite the opposite. These are happy problems. I'm at a point where I know that what I want to build is possible, I'm enjoying learning and creating. But I must remember my end goal. And that is to build and release a game. That isn't going to happen if I spend three months looking at water shaders and atmospheric scattering plug ins.

I've encountered two problems with designing games. I've described one above. Learning sink holes. Sliding down a tangent on a topic is so easily done, you can spend days on a topic  before you know it.

The other problem is a little more nefarious. Its to do with the actual design itself. In unity when beginning a new project the editor presents you with an infinite(ahem very large at least),empty worldspace. You can do anything within that space. Therein lies the problem for me at least. 
Having such a broad canvas can be quite intimidating. For example my big first person mystery project I mentioned. I started with what I thought was a decent direction to start building a level. But when I actually started in Unity I soon discovered how woolly and undefined my design was. So I allowed myself to be distracted by concentrating on graphics, tree placement and getting a decent looking skybox. After a week or two of this I stopped. I wasnt getting anywhere. I put the project on hold and decided to make a 3D version of 60seconds. But that's another story.

The Importance of Planning

My experiences may be typical I dont really know. But what I do know is that planning and time management are key for free time Notch wannabees. What I did after squandering weeks on yet a another overly ambitious project was to sit back and evaluate my reasons for wanting to make games. I want to make games that people can immerse themselves in. I don't want to make a COD clone, a beat em up or a shooter. I want to create new worlds for players to explore. Down the line it would be great to get some financial kickback to enable me to dedicate more time to making games. I'm not looking to be the next Peter Molyneux or Guybrush Threepwood. Clichéd though it may be, I want to make something that means something to people. If the games don't take off then worst case is I have new skills to add to my CV.


Plan your project in detail

Reading other indie blogs and articles more or less confirmed that I wasn't alone with the problems I have experienced. So my advice is to draw up a design document for your game. There are lots of resources out there on the interweb to aid you in this and pick an approach that suits. Or just use your own. Detail the game loop, screen layout,control schemes,art style, delivery platforms and so on. Don't code anything until you have a clear project outline. Now I'm not very strict with mine. I don't create UML diagrams or anything like that, to each his own.I do like to break down my project into stages though. For example stage one might be getting a basic gameloop running, stage two might be adding menu screens,stage three adding sound etc. A real game designer might look at this at say HA! What pish! That guy is so wrong! But it works for me. It helps me focus on the task at hand and breaking a big problem(the game project) into smaller chunks is much more achievable.

Start small

When starting out frustrating as it might be, the best thing to do is to make smaller more manageable projects. Release them, gather feedback and maybe dip your toe into marketing. Actually finishing a project is a big achievement for free time devs and a great learning experience. Like I mentioned earlier, getting a few little projects to market and you will see your skills improve. 

Prototype

Graphics are massively important to games. There I've said it. Call the graphics whore police. Especially in the games I'm looking to make. Im not talking about ultra 4k, 120fps ten hundred million gigaflanges per pixel graphics but having very specific lighting to create atmosphere, getting the colour palette bang on, that sort of thing. The hard part is that graphics can be intrinsically linked to the gameplay. The visuals of Journey and Naissance really pull you into their world and make you want continue exploring. Ignore that for now though. Block out your game and get it running.Nail the gameplay and then purty up the game. 



Tuesday, 11 March 2014

Goodbye libgdx......Hello Unity

Parting is such sweet sorrow

The final game I released using libgdx was 60 seconds. The free version has almost 4000 downloads. It's my first original game concept I've released. 60 Seconds is at heart a score chasing game so I introduced online leader boards and achievements using the Swarm api. Swarm was extremely easy to integrate with my game and libgdx. However a serious bug crept in. In certain situations when the game starts up the user is greeted by a blank screen. That, needless to say is a terrible user experience and has resulted in some one star reviews. Which is totally understandable. To my shame I've not fixed the bug. I started to investigate but it looked pretty darn messy to try and sort out and I just didn't have the time. I had a workaround and I posted that on the google play store page. Yup that is terrible user experience for those playing the game and those wonderful 19 people who actually spent money on it. I still intend to do a remake though!

The honeymoon is over

I tried to trace the cause of the bug between libgdx, swarm and my own game code but didnt get very far. Libgdx didn't have a massive amount of documentation behind it. Don't get me wrong there is a lot of support out there but getting what I needed would take a lot of effort. Google had just released their own game play services which I figured would be very useful and possibly have much wider appeal than Swarm.
I wanted to be spending my time on making games and not getting massively bogged down on technical issues. Of course you could argue that making a game IS a technical issue. But again I had a limited amount of time in which to pursue game making and difficult choices to make. Had I more time I would have persevered to fix the issue and probably learned a lot in the process. But I was hearing an awful lot about a new game engine gaining quiet a following. One that sounded like it would enable me to concentrate on game making more fully.

A younger, curvier model

I participated in the Edge get into games with Unity competition with a great group of guys from a game forum and they taught me a lot about getting up and running in Unity. The ease and speed of development really shocked me. With libgdx I needed to code everything from scratch on each project. Setting up the camera, the assets class and many more repetitive tasks were prerequisites to even starting the game design. I could have written a basic template that would have skipped over a lot of this housekeeping. Being so very time poor, I felt expending so much effort on non productive tasks was pointless. I also had some difficulty finding specific answers to issues I was having with libgdx. At the time there wasn't a huge amount of documentation out there which again slowed progress. Finally, libgdx contained no graphical editor interface. Everything was built in code. Making the smallest change required recompilation and deployment to either the connected android test device or the virtual device.

I was initially sniffy about Unity. I wrongly thought that it was a game making construction kit, that the user plugged in a prefab control scheme, plugged in a prefab menu etc etc without ever seeing a line of code, I thought it was the gaming equivalent of a WYSIWYG html website creation tool. I'm still not sure where this misapprehension came from but I was very wrong.

After actually working a little with Unity for the Edge competition I decided to make the move. I got to know the basics and developed a 3D version of my kids monster matching game in days. I started work on a 3D version of 60seconds and I had the basic game loop running in one day. I found there to be an absolute f...truckload of Unity help and training resources available. Chances are, for anything you want to do in Unity there is a YouTube video explaining it. For example this guy Quill18 does a very good series on getting a basic FPS up and running. The asset store is a big advantage also but for me the biggest boon is the price. Its free. I downloaded the free version of Unity and with that I can publish on IOS, Android as well as desktop etc. The pro license is also fairly within reach so all told Unity is a hugely attractive proposition.

I'm still glad I spent so much time with libgdx though. I think it was a massive help learning how to write a game from the ground up. The Getting Into Games book taught me some valuable fundamentals in game creation and I'm full sure my progress in Unity wouldn't be nearly as speedy had I not done the groundwork first.

Fun with Marketing

My game making skills are still in their infancy but already marketing has pulled up a chair alongside me and started gently rubbing my leg. Coming from a technical background, marketing to me is like an encrypted double Dutch wrapped in a +4 cloak of obscurity. Unfortunately it is an essential consideration.
Imagine you have released the next Flappy Bird. Its amazing, chock full of manatees, endlessly re playable and unique etc etc. Its getting maybe 1 or 2 downloads a day. If you get lucky the game can organically pull in some downloads through word of mouth and positive reviews. Its a bit of an anti climax after months of development,bug bashing and umpteen gallons of coffee.
Your game didn't gather momentum like its a boulder chasing Indy out of a hidden cave. You didn't become an overnight millionaire. Surprise, surprise this is where our delightful,mysterious friend marketing comes in useful.

The first game I released was Super Farting Jump Boy. Which was in essence a fairly generic procedurally generated infinite jumper game. I was concerned about the game disappearing in the flock of similar games. I have a childish sense of humour and came up with a silly theme for the game as a marketing tactic. I decided to target the game at boys(ie males of all ages). I figured boys of a certain age find farting funny and may search the play store for a fart based title. I would find a game where the main character farts to propel himself skyward worth a whirl. So I themed the game on this.

The game is free and there is just one advert. I included an advert to my paid Memory Monster game on the  main menu. Super Farting Jump Boy is by far my most popular game. Its been downloaded around 6 thousand times now. Which in android play store terms is an abject failure. But its a success for me. Imagine, six thousand people around the world have downloaded and played my game! I've had some lovely reviews from people and some not so nice reviews. All the work I put into making that game was worth it. I put the majority of the downloads down the theme of farting. Had the game been a generic jumping game I wouldn't have a fraction of that download number.

I wont go in depth on marketing simply because I haven't really done much.I didn't pimp out the game on facebook. I put a store link up on twitter and a few android forums here and there but nothing really worth mentioning. I haven't yet reached a stage where I'm happy enough with a game to write up a press pack or try and market in earnest but I do know that writing the game isn't even half the battle.  Here are a few places to get started with marketing : here,here or even here.



Monday, 10 March 2014

Coffee.....I need Coffee

Who I be and What I do

I've been into computer games ever since my early days on an Atari 2600 (not mine it belonged to a neighbour). But Monkey Island 2 on the Amiga was the game that really made me sit up and take notice. (Even though it did come on 12 floppy disks). For the past year or two I've been attempting to make games solo in my limited free time and consequently I spent more time reading about games and learning how to make them than actually playing them.

Why start a blog?

It seems like all the cool kids are writing blogs these days. So being a fat,middle aged game obsessed Irish dad its time I started mine. I've found game dev blogs to be a mine of great technical information and background info. It is very useful hearing about other indies and their experiences and so I want to share mine. I find writing about my game ideas helps to organise my thoughts and clear my head. Much like a less magical pensieve. I find sometimes as I'm writing about an idea I've had it allows me to evaluate it from a more detached perspective. For example it was only while writing about my commando cyborg unicorn (equipped with sunglasses and side mounted dual gauss cannons) idea that I realised that it probably.....needs some work!

Where to start?

First things first I needed to choose a game engine/framework to learn and develop with. I didn't want to start straight off with a 3D MMO space marine match three game. I thought it best to start in 2D and build something very straightforward. Plus my development pc isn't massively powerful. That lead me to look at the mobile platforms to develop on. Developing on IOS meant I would need to pay about 200 euro developer registration fee and I think I actually needed a mac to publish games from, plus Id want an IOS device to test on.
Android development seemed much more accessible. I just need a pc to develop on, an android device (of which I had two) and pay a 20 euro developer fee. The choice was clear. Android all the way. Now don't get me wrong, I'd love to develop for IOS. There are definite advantages: there are set screen sizes/density's,concrete hardware specs and consumers spend much more money on the appstore than on the play store. But I didn't want to outlay so much cash just on as a hobbyist.

First Steps

I came across a great book called Beginning Android Games by Mario Zechner. It walks through the creation of a basic game framework for android. From there I moved up to his libgdx engine. I built and released a basic jumping game and a kids memory matching game. I thought then that I was ready. I could write my own riff on an FTL style game for android, make a fortune and resign from my day job in the most disgustingly over the top way way imaginable. Needless to say that didn't happen.
The amount of work needed was not something I had expected. What might seem like a relatively simple game to create takes massive amounts of design,planning and assets not to mention learning all the systems required to actually implement the thing. I was quite disheartened and left the project gather dust on a shelf.

What I learned

That failed project taught me a valuable lesson about scope and what I could realistically do given my time constraints,learning requirements and artistic ability. Take for example an enemy in a 3D game. This might sound obvious but an enemy typically will have at a minimum a 3D model, textures,animations,sounds and artificial intelligence. That enemy will need to interact with the environment,player and other enemies etc in a meaningful fashion. Thats a helluva lot of work for one person. I would need to go and learn 3DS Max or Blender to create the model of the enemy, photoshop/GIMP for texturing and so on. That single element of a game isn't exactly a trivial task especially if you are making games while holding down a full time job/family life etc.
So the moral of the story is to start off building small, polished games. Don't attempt making a Mass Effect GTA hybrid as your first project. Keep building your smaller games, layering more complexity as you go.