Monday 11 November 2013

What next?

I have to choose what game to work on next. I want to work on all of them so I've decided to leave this up to the few people who see this. Please comment which one you prefer seeing.

ChromAssault(PC)

A fast paced game where you have to hold down keys to mix colours while shooting at targets. Survive wave after wave of enemies and choose the right weapon for the job.

This game already exists as a Game Maker Project on the Windows Store. What I am going to do is redo the game with 3D graphics, still keeping the top down view. I will also be adding more levels, more weapons, upgrades, and more enemy types.

Touch Swarm(Mobile)

A puzzle game where you have to direct a swarm of viruses around the defences of systems in order to steal, destroy, or alter files.

You use touch and drag to move a swarm of viruses, ordering them to merge with the defences of machines you break in to in order to turn them to your advantage. On a whole you will see a network map that lets you choose which machine to do next.

PANIC!(Mobile)

You grabbed the treasure, but now the tomb is crumbing and you need to get out FAST. This fast paced platformer will put your reflexes to the test!

Side scrolling platformer that requires you to be quick. It will feature a simplified input, where you just swipe once to keep running, then tap to stop, swipe up to jump, etc. The idea is to test out a effective method of input for mobile platform games that does not force you to hold the phone awkwardly or use your phone like a controller.

A House on Stilts(PC)

You are Eric Striker, and this is a nightmare. You have to confront your fears to escape this waking nightmare before you get trapped in the dream world forever.

This game will be heavy on creepy elements, and story. Eric is trapped in everwaking nightmare, you need to help him face his fears before the monsters in his dream can get to him.
Which Game?
  
pollcode.com free polls 

Thursday 18 July 2013

To work and back again

I have started working at a game development company in George very recently. Now for those of you who are not familiar with South Africa, George is the place you go to when the city life has gotten you down and you would like nothing more than to go fishing. Not the place I would have ever expected a pioneering game development company to be situated at.

Now I don't live in George, I live in a place called Herold's bay. You know the quiet town in the middle of a scenic route? Herold's bay is around the corner from that place. In fact, it may even be around several corners. The trip to work itself is only 18km on a very scenic route, which is welcome compared to the 29km in built up city. It is because of this that I've decided to document a trip in to work.

Where my car sleeps
The morning starts off by going down some stairs and then up some stairs to reach my car. You may notice that there's quite a hill for me to climb. I can assure you that coming down is harder.

Leaving Herold's Bay
Two streets after the steep incline of my driveway I reach the end of the town.
Notice how mountains replace skyscrapers
Don't get me wrong, the road to work isn't a short one. I drive by an airport and several farms. I even once saw a couple of cows next to the road, and I swear they were hitch-hiking. But the breathtaking mountains dominate my view for a majority of the trip. That is until I reach George itself.
Morning traffic in George is killer!
 There are some misconceptions that George has no traffic. There is, but it's not nearly as bad as Gauteng traffic. Keep in mind that I drive by a school, a big no-no in Gauteng is a very big meh here.

The offices where I work
Finally after a gruelling </sarcasm> 30 minutes of travel I reach my offices. Parking is hard to come by, and while the company is small, it is part of a large collection of companies. All in all it is a fantastic place to work.
A small forest. Probably larger than Herold's Bay
Eventually I head home, and the view is not so great for the most part. No big mountain looming over me, only farms, cows, and small forests. That is until I turn in to Herold's Bay...
Little hilltop
..and climb the hill...
...
.. and see the ocean.

That's the marvel of living in Herold's Bay.




Thursday 4 April 2013

Supporting Clients (A Bugfixer/Programmer's guide)

As a programmer you may find yourself in the position of supporting a live project. This may require you to be in contact with some clients, who have completely different expectations from you than your superiors. If your primary task is to support clients, this guide offers some advice. Keep in mind, you may only see positive results in a couple of months.

Your superiors should want to keep the client happy. But they may have strange ideas of what would make and keep a client happy. Here are some common misconceptions.


  • Don't tell the client the system has a bug unless the report it or fix it without them knowing. In an ideal world this will make the application seem infallible. But there will be bugs, and your client may not be as ignorant as you think. All this will do is make you seem untrustworthy when they find a bug, and then you have to deal with a client who thinks the software is buggy and the developers/support is untrustworthy.
  • Fix only bugs reported. If they don't report it as a bug, they do not use that feature or encounter that bug. It is more likely that they have found a way to work around the bug, and the people actually using the system are too busy or can't be bothered to report it. Eventually they will run into a problem and you will be frustrated at how they are misusing the system.
  • Clients always blame the software and never get along with support. Clients who always blame the software are unhappy, frustrated, and don't get along with support. If your client trusts you as support, they will believe you when you tell them the problem is elsewhere.

There is a simple way to keep clients happy. Live up to their expectations. A client wants three things from you:
  • They want you to be helpful
  • They want you to be reliable and honest
  • They want you to be on their side


These three things will often come into conflict with what your superiors' expectations, here are some tips to keep a client happy and build a good support relationship, while not causing you too much trouble with your superiors.


  • Keep the contacts to a minimum: Try and get a single person of contact per client. Each additional person makes keeping the client happy exponentially harder. You ideally want to deal with only one person on the client's side.
  • Never EVER shift the blame, even when it is justified: Even if it's not your fault. You are the face of your company and the software, they will feel justified in blaming you. First apologize to show them you do not shirk responsibility. Then offer a solution, which is exactly what they expect from support.
  • Be concise and truthful in your explanations: If the client asks why a problem occurred, tell the truth as simply as possible in a language they understand. Be mindful that you will still have to accept the blame even if the problem is because of a third party. Saying that the third party library you use has some issues you have not worked around yet is fine. Saying the third party library is buggy is not.
  • If you find an issue they don't know about, tell them as soon as possible: While fixing one bug, you find another, you may be inclined to silently fix it and just send it to them with the next release. They may know about it and have a way of working around it, in which case you are messing with their process, or they may not and never test that the fix actually solves the problem in their environment. Telling a client you have found a bug and you are fixing also improves relations with them in the long run. 
  • Reply personally as soon as possible: You may have an automated ticketing system that sends an auto-reply when they submit a bug, but you should yourself send them a reply as soon as you've read the bug, even if it's just to say "I have read your bug report and will get to it as soon as possible."
  • Avoid telling them you are working on someone else's problem: This one can be tricky as you should never lie to your clients. Simply don't volunteer information unless they ask directly, and when they do, try and phrase it in a way that they will see advantage in it. If you have to tell them you are working on someone else's problem, never reveal whose problem you are working on.
  • Do favours: Your contact may need something from time to time that is outside of your job description, if time permits, help them. Let them know it is not really your job, and don't be afraid to refuse if it happens too often. Your superiors are likely to not agree with this as they cannot always bill for it, but it goes a long way to establishing a good relationship with your contact.
  • Stand up for your client: Simply be the clients voice when changes would affect them. You do not need to get into long debates or fights, just voice the concerns you think your clients may have. Be careful, you will have to gauge how this will be tolerated in your company yourself.
  • Establish a personal rapport with your client's contact person: If your client contact person accepts non-formal emails, send them an update of what is going on with the problems they have reported and perhaps even a rough idea of when you will look at their issues. Don't include anyone else in the email, this is just between you and the contact person. You may find that they are more willing to surrender information to you personally rather than in an email that includes their bosses and yours. In return you will eventually be able to ask them for favours, which may come in handy when the bugs you have to fix only occur in the live system.
  • Never let them see you angry: Even if they are frustrating to work with, never let them see you angry. They will likely get defensive and protect themselves, even if it means blaming you.
  • Be very careful what you promise: You should not promise something you are not sure you can deliver. Don't promise to have a fix for something unless you are sure of it. The fix may be impossible, it may be a feature they are not willing to pay for, or it may be something that causes too many issues to implement.
  • Document all your support calls: Not just the problem, but how you solved it, especially if it was not solved with a bug fix. This will allow you to maintain a FAQ of common problems and how to solve them. A FAQ is an invaluable tool when dealing with inexperienced people or when you need to hand over the support to someone else. If you trust the abilities of your support contact, you can even keep them up to date with the FAQ, which would result in less calls, and more time to deal with real problems. Never give the FAQ to an inexperienced client contact.
  • Keep them informed: Keep your clients informed of progress made with bugs, especially if you run into a problem of some kind. Keep it concise and basic, you want them to understand when progress is made and why it is not made.


Even though you get difficult clients from time to time, they are not impossible if you know what their problem is and how to deal with it. Here are some problems they have and how to deal with them:

  • They are inexperienced or do no have the skills required: These people will violently shed blame, and they will usually shed the blame towards you. Whenever you ask these people to do something, keep a record of what you asked, and cc one of your superiors. Always make sure you are extremely unambiguous in what you ask. Never blame these people for anything in the presence of their superiors. If it becomes a big problem, talk to your superiors and have them handle it. They are very likely to be impressed by favours, but may end up asking for too many. Establishing a personal rapport with them is very advantageous. Outside the scrutiny of their superiors they are more likely to tell you the truth.
  • They are indifferent, slow or more likely to delegate than do: These people generally have someone they are afraid of, usually one of their superiors. If that is the case, include them in meetings and mails, as well as your own superiors. They likely feel no pressure to do something from you, even if it is something they must do, unless they also get pressure from above. If a task is not urgent, send them a mail without including their superiors, but still include yours. If they don't do it in a given time, send out a NEW mail with their superiors included. You do not want them to feel threatened, as they may become difficult to deal with then.


There are many benefits to keeping a client happy. It is easier to get meaningful bug reports from them. It is easier to suggest solutions that carry risk to them. They are less likely to blame you or your application for the faults they experience. And keeping clients happy on a difficult project is pretty good job security.