In the second post in this series I talk about getting more attention on and around your stand at conferences, you can read it here. And if you have any experiences of particular games that you found particularly memorable when visiting a conference, or any other tips for showing your game at a conference, then please post them below!
At the last count there were about a billion* articles online with advice on how to be a better freelancer, and what I have learned from most of these articles is that yes, I could definitely be a better freelancer. I’ve also learned that the basics – like the importance of networking, making sure you have a contract sorted before you start work and the like – have been quite capably covered many, many times before (check the end of this post for a few articles I’d recommend). Still, there’s a few things I’ve experienced that I haven’t seen so commonly talked about, so I thought it would be good to highlight a few of them here.
Thing 1: Most projects never happen, but you’ll expend a lot of effort talking about them anyway
At a guess, I’d say somewhere around one percent of the projects I’ve ever talked to potential clients about have ended up being a thing I actually got paid for. Maybe I’m just unlucky (or rubbish at negotiating), but comparing my experiences with fellow freelancers, this doesn’t seem to be an uncommon state of affairs.
Don’t get me wrong, talking about projects before starting work is really important – you need to understand and clearly define the scope of the work you’re taking on before you sign a contract, let alone before you start work. But it can be frustrating when you’ve spent hours, days and weeks talking about projects, and sometimes writing up schedules and task backlogs, only for that project to not go ahead. There’s a healthy lesson in this though – don’t become dependent on a single project going ahead, because there’s always a chance that it won’t.
Thing 2: You don’t have to take work just because it’s the only thing available
It’s a hard thing to turn down work when you have nothing else available but if you’re not comfortable with a contract – say the price is a little lower than you’re comfortable working for, or the timeline too aggressive – those problems aren’t going to go away just because it’s the only thing on offer.
Yes, it’s a risk to turn down paying work but then it’s also a risk to take on work you’re not happy with. In the best case scenario you’ll probably feel a bit robbed, in the worst case you could end up locked into a contract you’re unhappy with just as the perfect opportunity presents itself.
Of course, sometimes when you turn down a contract nothing else comes along, so it’s good to be honest with yourself about your likelihood of finding something better. And sometimes, you just need the cash, even if it isn’t what you would ideally have wanted. But either way, it’s always good to remember that you have a choice.
Thing 3: Quality feedback is hard to come by
My erstwhile colleague Rob Yescombe (whom I had the pleasure of working with at Free Radical Design and Crytek UK) ranks as one of the most simultaneously annoying and yet invaluable people I’ve ever worked with, mainly owing to his uncanny knack for cutting right to the heart of something I’d totally overlooked in my work. It’s fair to say I didn’t always appreciate it at the time (because, well, I definitely had phases of being an idiot earlier in my career) but in retrospect I’m certain that that honest, direct feedback has been a vital part of all my best work.
This free flow of feedback is one of the main things that differentiates established teams from temporary ones brought together for a single project, which as a freelancer is where you’ll often find yourself, and it’s definitely the thing I miss the most. As a result it’s good to regularly invite honest feedback from your client, and where NDAs permit, to take your work along to a meetup such as the excellent monthly East Midlands Indies gatherings, where fellow developers will often be happy to offer their own opinions and suggestions.
Thing 4: Money moves slowly
You may have heard the advice that maintaining cash flow is the single most important thing for a small business. This might seem self-evident but it’s harder than you might expect because the way you get paid is a world away from the nice steady monthly paycheque you’ll get in a permanent job.
Let’s say you take on a month’s worth of work. You complete it on time and invoice your client, giving them thirty days to make payment (thirty days isn’t mandatory but it is pretty common). They then make payment towards the end of that thirty days, meaning that you’re finally getting paid for your work some two months after starting it. Now imagine what happens if the work is delayed, takes longer than you expect, or the client is late making payment. And if any of those things coincide, you could be waiting three or more months after starting that work until you get paid.
So whilst having a thick slab of cash dropping into your bank account all at once is lovely, you need to ensure it’s going to last you well beyond the point when you next hope to get paid. Oh, and for UK folks at least, don’t forget you’ll be paying your tax at the end of the year so make sure you have the money put aside for that too.
Thing 5: The relationship with the client is as important as the contract itself
Contracts are great. They are really useful documents and should provide you and your clients with a solid framework so you know what each is expected to deliver and under what terms. But it’s worth remembering that a contract alone enforces nothing – you need legal help to do that, and, well, that can get expensive really quickly.
I’ve been fortunate in that I’ve rarely experienced problems with clients simply not paying invoices. Late payment though is something I have encountered, and when that happens, whilst having a contract to back you up is essential, ultimately the most important thing is the relationship you have with the client. Positive, friendly relations make it far easier to resolve issues than a more acrimonious relationship, with the added benefit that clients you get on well with are far more likely to want to work with you again too.
* – Value may be approximate
How about you? Do you have any advice for freelancers that you don’t see so commonly talked about? Feel free to post that any other comments below.
Finally, as promised, here’s some recommended links to other articles giving tips on freelancing:
‘Shark’ is a game I’m prototyping all about roving (or whatever it is sharks do) the seas, hunting your prey and staying alive. It’s being built in Unity3D and you can read my first post about it right here.
On my mind this past couple of weeks has been locating your prey. Now, in my case this normally involves going downstairs and rummaging around in the cupboard until something sufficiently tasty appears, but it turns out sharks are a little more evolved than all that. Which is fortunate as I’m not sure they’re able to order their groceries online anyway.
Rather than simply meandering around hoping to find something to eat, sharks have evolved the ability to precisely locate their target from afar, saving precious energy in the process. Helping them do this are a couple of extra senses (beyond the five they share with us) – electroreception (detecting electrical fields) and the lateral line (detection of pressure changes), both of which help the shark to locate prey from a distance.
Although I don’t want to precisely simulate these senses, this ability to locate prey from afar is a good fit for the game, which I want to keep focused on hunting down your prey rather than trying to find it in the first place. So my next step was to consider how this ability – which for now I’m calling ‘Shark Sense’, although is does sounds a little like an underwater self-help group – would be represented visually. There were a few options for this, from a simple screen-edge indicator, to a map/radar system. But I wanted something that felt a bit more organic, and a little more alien, so I’ve gone with a simple circular waveform instead:
Each creature in the game triggers signals that get picked up by the shark sense, and these signals appear as displacements in the wave form, which essentially means it points back towards the signal location. As seen in the video, players can also enter a ‘sensing’ mode where they move more slowly but the range of the shark sense is amplified, allowing them to detect movement from further away.
(For those interested in such things, the ring is a Unity LineRenderer, which stores a set of recent signals from other creatures and distorts parts of the ring based on the direction, distance and magnitude of the signal. A couple of passes of perlin noise across all the points of the ring gives an illusion of ‘background noise’.)
Does it work? Broadly speaking, yes – it brings more of a defined rhythm to play, as you hunt, sense, then hunt again, and you don’t waste time meandering around looking for the next target. One thing I would like to do is to extend the code to allow it to display more complex signal patterns, with each creature having a distinct ‘signature’. The idea behind this is that you can learn to distinguish different fish based on their signature, and use that to decide which you would prefer to go and hunt first.
But that’s an idea for the future – for now I’m fairly happy with the functionality as it is. I’m now moving on to experimenting with some simple shoaling algorithms for the fish, so hopefully (other work permitting) I’ll be able to update about that at some point in the next few weeks.
‘In the Details’ is a series about small but effective moments in game design. You can find all of the posts in the series so far here.
This is a somewhat bold statement coming from someone whose last attempt at AI coding resulted in a recalcitrant hunchback who loved nothing more than taking occasional potshots at you whilst your back was turned, but the real challenge when designing and implementing an AI system isn’t how to make it smart but how to make it appear smart. Particularly in games where players cannot see or hear AI characters for long periods of time, intelligent behaviour can easily become indistinguishable from randomness, unless the game can convince players otherwise.
Fortunately, player perceptions of AI tend to carry a lot of inertia – show them a character is capable of doing smart things and they’ll continue to credit them with all sorts of intelligent behaviours even when they’re doing nothing of the sort. Thus a few moments of the AI being noticeably smart can go a long way.
Take the Byelomorye Dam level of Rare’s N64 masterpiece, GoldenEye 007. Early in the first level, you emerge from behind a security gate to spot a solitary guard standing in the open. There’s nowhere to hide, and so the guard quickly spots you. But rather than stand his ground, he immediately turns and sprints towards a squat concrete building in the distance. If this run is left unchecked, he soon reaches the building and his goal becomes clear – a button that triggers an alarm. The subsequent shrieking alerts the entire base to your presence and floods the area with guards.
This moment transforms the way you see soldiers in the game. Suddenly, each of them holds the potential to do more than just stand there and get shot, to instead work intelligently as part of a coordinated group. And yet, the reality is that this is one of just a couple of places in the game where you’ll actually see a guard triggering the alarm; it is in fact far more common to see them ignoring alarm buttons completely (alarms continue to be a major feature of the game, but they’re almost always triggered off-screen).
So the reality of what the AI can and can’t do is much less important that what the player thinks they can and can’t do. It doesn’t matter whether each and every character is capable of independently deciding to head off and trigger and alarm themselves or not. What matters is that the player thinks that they can, thanks to this early sequence, and GoldenEye is all the more engrossing as a result.
GoldenEye 007 (Rare Ltd./Nintendo) – https://en.wikipedia.org/wiki/GoldenEye_007_(1997_video_game)