20091130

Controlling the Finances...

                One of the biggest problems in today’s world is the general populations inability to maintain a budget.  While this blog doesn’t tend to shift into matters like this, learning to control your own budget will help you to control your companies budget no matter how big or small, and it will help you reduce your stress.

                To start off with, I’ll quote a line from The Richest Man in Babylon, “part of all I earn is mine to keep.”  If you haven’t read it, then I recommend doing it.  I will say though, that it is based off of Babylon, which has slavery, and several chapters get somewhat graphic.  I recommend at least the first 3 chapters, as the books starts off lighter.  (The book is short, and to the point, using stories/Babylonian parables to visually explain the idea, making it easy to follow, and see why it works)

                “Part of all I earn is mine to keep.”: seems a little off, isn’t ALL I earn mine to keep?  The answer is no, of course not.  Part of it belongs to the grocery store.  Part of it belongs to video rentals.  Part of it belongs to the gas station.  Part of it belongs to rent.  Etc…  The point is, is that you don’t keep what doesn’t come back to you.    Get away from the Monkey See, Monkey Buy stage.

                What is recommended in the book, is to take 10% of everything you make, as soon as you get paid, and put it aside.  Then, if you are in debt, take the next 20% and apply it only to pay off debt.  Then don’t let your living expenses exceed what is left.  It seems obvious enough yet difficult.  We each get the idea that we need to save, and not spend so much, but we still do.

                The problem is, that we do not do anything stable.  We tend to just eyeball our bank accounts, paychecks, and really important bills.  And then just pay out money as we make up off the top of our heads.   While 10%, as the book recommends, is not so important as a specific number, it is somewhere to start.  It gives you a very specific, very attainable goal.  The reason it works is because it requires you to limit yourself.  To pay more attention to your finances.

                But there is more.  That 10% you paid yourself with, you spend it only on things that will pay you back with interest.  Gambling is NOT a good place.  Your friends often are not either.  More often than not, the loaning of more than pocket change between friends is a cause of great stress, and will eventually separate, particularly if the friend who required the loan doesn’t have means to correct the situation that caused the need in the first place.

                What you need is to talk with people who have experience in investing.  People who have experience in making money become more money.  NO Get rich quick schemes.  You’ll find that the most successful people don’t use get rich quick schemes.  You want to find sources to pay out to that have a high probability of paying you back, with interest. 

                Then, all the money that the 10% budget spent on an investment, you put right back into that 10% budget.  Then, take 10% of the profit, and put it into your account, and 90% of the profit goes back into the 10% account.  This way, your money to make money keeps growing, and eventually will become quite large, and supply you with enough income to live off of, and eventually make you wealthy.  

                Imagine how your days will be when the stress of not having enough money are gone? 

                Now, back to your game.  You have a budget to spend.  Imagine everything you put into it, and ask yourself is it needed, and will it improve the rate of return on this investment?  Sometimes something isn’t needed at all, but by spending a little extra on it, it will improve chances of return.  In business, every dollar you spend is part of your investment on the product.

                Lets say you got money from an investor.  Angel or VC.  You should never look at finances in the sense of whether or not something will fit into your budget, but is it needed for the business, and why.  Depending on its effect on your budget, you should always look at alternatives.  If you’re going to rent space, then you should question if you really need retail space, and how much?  You should question how important the location is, because 2 miles away, you could get space for half the cost.

                If you want your game to succeed, you have to have a financially viable plan to get a return on it.  Learning to control your own finances is just a part of it.  Anything that doesn’t help you with your goals, only takes away from it.  How important are they to you?

20091123

We've got plenty of resources, right?

                A common practice in modern development is the nature of how we develop.  We can usually only choose one of the following two choices when programming: Speed or Flexibility.  As programmers, we know that our systems, and our client systems are capable of billions of operations per second, have nearly unlimited hard drive space, and billions of bytes of ram available.  Hardware is cheap and easy to come by these days. 
                So our most natural choice is to select Flexibility for our systems.  As long as we are not ridiculously wasteful with our architecture, the modern machine should be able to handle it. 

                Think again…

                Show of hands, how many of us, on our super fast computers, with a plethora of available resources, have been slowed down by unresponsiveness; had to clear out applications from auto-loading and been disappointed with the overall performance of your entire operating system?  My hand is raised. 
                As amazing as our machines really are, it is more amazing that we are so polluting and wasteful as programmers, that we bring these work stations to their knees. 

                But my software won’t have that much impact, why should I be concerned?...

                Each other developer might say the same thing.  Let us take a look at Microsoft Word.  I just started a blank copy on my computer, started task manager and found it takes 40 megs of ram and 24 megs of virtual memory.  64 megs of ram…  Remember, the most common use of this is just a glorified Text Editor.  Given that Word took 8 megs of ram in 2000, lets consider that.  7 years, it went from 8 megs to 64 megs.  If I round this up to an even 8 years, and put a binary jump on it, (8, 16, 32, 64) that tells us that it doubles in ram size every 2 years on average.  Next, considering that Microsoft never rebuilds Word from scratch, let’s take a look at the next 8 years:  (128, 256, 512, 1024) It will take 1 gig for a single instance of word to be open.  1 gig. 

Naturally software will be limited by hardware, but let’s step back for a moment.  Is our software really limited by our hardware?  Or is it our bad coding practices?  What on earth is Microsoft word doing that requires 64 megs of ram?  Is it because it is so loaded with features that it needs to take up that much space?  No.  (I’m sure Microsoft would argue otherwise)

So what can be done to fix things?  How do we make it better?

1st thing I recommend is start programming with plug-in systems.  There is a plethora of free and commercial plug-in tools and source available on the internet.  A quick idea is that you split menus from the plug-ins they represent.  Once someone clicks on something, let that trigger the plug-in being loaded.  Then if different plug-ins work together, let the plug in system load any other plug-in on first request. 
If the system has a lot of resources available, have it load all the plug ins on another thread.  So they are all available.  If the system starts running low on resources, start killing unused ones.  This is something Microsoft should start pushing in .NET.  A plug-in and announcement system over the OS.  Then in the control panel, the users can set modes, like Always pre-load everything, pre-load as little as possible, or variances.  Of course that would mean Microsoft would have to start becoming an example of that, and I don’t really see them taking that path.  (although Server 2008 is a pleasant counter statement on their part, with its far lighter footprint).  Of course you can also include this part in your own settings/preferences area, and install software. 
2nd thing I would recommend is start considering better code practices.  Most of us don’t like repeating code.  In the past, I have created loops that did something to every element in an array, while identifying 1 that it finds with a particular value.  I did this with a single loop, and placed an if statement inside.  While that is effective, and won’t hurt much, I could have had that if statement surround a second loop doing everything the first did, excluding the if.  The result would have gotten rid of the if for every increment after it wasn’t needed.  While this is a limited example, it will hopefully open your eyes to possibility’s of how and where you can improve your code.  Loops are great places to start.
3rd, for Web or Network applications, consider using Cloud Architecture for supporting it.  Terra Cotta is a great farm method to get rid of the need for databases.
4th, Load test your applications.
5th, do several proof of concept tests, on areas that seem like they might be risk on resource usage.  Not complete applications, but minimal comparisons of different approaches to the same need.  Doing tests on each one. 
6th, If your system is complicated, and you are not sure how a user might use a section most commonly, consider putting in resource counters in a demo app, to count and report what areas, and focuses are most commonly used, then select the proof that most works with that, and change it out to improve the performance.
7th, Stop using windows registry.  There are simple ways to provide the same functionality, and the windows registry is getting huge.
8th, use Late binding in any code that might exit prematurely.
9th, Do code reviews, with others who can look at it with speed in mind.
10th, Re-consider the requirements.  If a small change to an obscure requirement could dramatically improve performance, bring it up.  Given knowledge of the impact it could have on the performance of the finished product, the deciding parties will most likely choose faster.
11th, if it is so complicated that you are barely getting through it, Once done, trash what you have and re-write the section.  You’ll know it better this time, it will make more sense, and you will most likely be able to see better methods now that you understand it better.

It’s easy to go overboard in either direction, so all in all, keep a balance, and never forget that resources might not be as plentiful as you think.
               

20091116

Role of the Game Tester...

                The role of the game tester is arguably the most important role in the entire project, most often the most overlooked, seldom taken seriously and an overall misunderstood area of need in game creation.  Typically, we have 2 types of testers, Whitebox/Clearbox and Blackbox/Opaquebox.  Commonly referred to as black and white, it makes more sense to call them clear and opaque. 

                Opaquebox testing implies that the tester approaches testing similar to a user, installer and administrator.  They don’t know what is going on under the hood.  They don’t care about what language it was written in, and will typically test things in a similar fashion to how a user might use the application. 

                Clearbox testing implies that the tester can see inside.  They can look over the code for weaknesses and possible issues.  Often they write code that ties into this, and tests portions of the application that might not be perceivable to the outside world, but certainly points of problems.

                Often, “Real” developers (Please smell the snark) perceive Clearbox testers as beneath them, and that they are limited in understanding, and really are just glorified users who can do a little code.  The misperception is that an SDET, (Software Development Engineer in Test/Clearbox tester) knows only enough code to hook in and try to push buttons, but that they lack the ability to do anything themselves.  Otherwise we would become developers.

                This misperception needs to be stamped out fast.  It hinders companies left and right, damaging their names in ways they don’t know.  A professional SDET, should know everything it would take to build the application, and have at least 3 different approaches to duplicating it.  A professional SDET can usually look at code knowing they need to look for certain things, because it is easier to accidentally program those weaknesses into projects of the particular type.

                But opaque box testers also get a bad rap.  And this stems from a larger problem, money.  Somewhere in the company, an investor is authorizing resources in the form of money, time and people, to get a profitable application out the door.  Now, there is often very important time sensitive reasons, often tying to competitor releases, end of quarter publications on the company stock or even market trends and research indicating a particular optimal time frame. 

                What the company, as a whole, needs to recognize is that the testers are your last line of defense for keeping clients/customers.  Every time a client uses your application and it loses data, it crashes, it reacts in unexpected ways, or even just moves slowly, it makes them think negatively of you.  Your shaping their next purchase with every update, release and product that goes out the door. 

                Its entirely possible that the competitors products are worse, but they are usually a dime a dozen.  You are not the only company that offers your service.  With all the issues that happened with Windows Vista, even just from a job perspective, when a tester looks for a job, and on their resume it says they tested Windows Vista, the employer might review that and pull up everything bad they recall about the product.

                From both business and the tester’s perspectives, it is vital to consider the weight placed on the testers.  The responsibility they have to the products.    Everyone in the team needs to understand that a tester brings up the bugs because they should not be in the product.  These hurt the product, the company’s image, the chances of keeping clients, and more.

                Testers need to make sure that other people in the projects understand this.  How important your job is.  In relations to small teams creating games, testing is usually just considered beta testing.  Often, the start up teams view this as an opportunity to show off their game before they feel ready to charge for it, and neglect to leave means to be contacted about bugs.  Always keep that in mind, that a beta test is a group of dedicated users who are willing to try the game or application out in advance, even though it might still cause errors, in hopes that when it is released, it will work properly.

                Companies should start making a change.  Follow in Google’s footsteps here.  Announce a time that the beta should be available.  Base it on a month, not down to the day.  Next, push to have the beta ready the month prior, but with some slip time.  Next wait until you’ve gotten some feedback from the users before estimating the next release.  If there is a huge outcry for things to be fixed, you certainly can’t release it that way.

                The test role is a very serious role.  It can’t be taken lightly.  If anywhere in your company, this is the one place to give a lot of power to.

20091109

30 Seconds...

You have 30 seconds to convince me your game is good.

[Pausing 30 seconds…]

The 30 Second Commercial is a way to define what you think will really sell your game.  These are the things that will stand out the most, and the users will recognize it easily.  What will your users see?  How will it connect with them?  Remember this when designing your game.  Keep your priorities on that commercial.
                So, does your game have a great plot?  How will that get shown?  What will you hint to entice the new players?  Does your game have great visual effects?  What in particular do you want to show?  Anything in specific, or is this game loaded with incredible amounts of effects to pick from at random?  Does your game pride itself on the vast worlds and/or rich graphics and detail?  What do you want them to see?  How will it look?
                There are many questions, and many possibilities.  For me, the 30 second commercial is the second most important thing, next to “fun”.  I remember countless times of starting to design a game, and constantly thinking, “It would be cool if…” or “Yah!  It’s got to do this too…”  But this can distract you from what is really important about your game.  What the players will really connect with. 
                The vast majority of the games on the market are not much more than the 30 second commercial, and they are really good at it.  If your game design is 600 pages of “wouldn’t that be nice”, what parts were you going to use to get the new players in and how are you going to find the time and resources to build it all?
                Games have only a short amount of time to get completed.  Even if you’re a group of kids in high school, of hobbyists after work, who are devoting all your spare time to this game, there’s only a small amount you’ll actually be able to accomplish.  Focus on it. 
                Let that 30 seconds guide you to getting the base of your game done, and then add more, once you are there.  You can pick more things of “wouldn’t that be nice”, but make sure your first goals are getting it ready to at least present that 30 second commercial.  I’m sure it’s a huge amount of work just to get you there. 
                If you are planning on pulling in investors, this 30 second commercial is vital, even while it is just a description.  It is animated, it is clear; it charismatically pulls them in, like a commercial should.  When you are bringing in new people, it is a quick way to get every fundamental feature across.  And finally, when the pieces are getting built up, you will start to see exactly how the pieces you are building is making that commercial come to life.
              

20091102

Game Design Roles

                In any game, there are different roles that people will need to take to ensure the success of the project.  While the roles themselves are only a way to organize responsibility and expertise over the different tasks, it is important for all members of the team to understand what the roles are, and how to best utilize them.
It should also be noted, that there is no requirement that the roles be assigned to individuals.  I would recommend that if you don’t have a person specifically assigned to a role, and those tasks are divided up to others, that someone be assigned to be the default of that role.  If a new task where to pop up, unless someone is covering that role, there won’t be anyone to assign it to immediately, which allows cracks for requirements to slip through.


Roles:

Producer
You will keep everyone on the team moving as best you can.  You will identify potential weaknesses and try to repair them.  Above anyone else, you should be working to make sure the team is communicating well, on the same page, and driven towards the same goal.  This role, above any other should understand the different roles, tasks and needs that the project has.

  • ·              Setting Goals:  Remember that goals should be attainable.  This could include goals directed at research and proofs.  Each goal should also have a time estimate, something to try to get people to work towards. (altered freely when needed, but have it set)
  • ·              Defining Responsibilities:  Who will fill the roles?  If someone has a question about something, this person should know who to ask.  If the team is missing someone who is prepared or interested in taking over a particular requirement, you need to find someone who can and will.
  • ·              Setting General Tasks:  You should work with other members to help them define several tasks they can work towards.  Always try to provide more than 1. 
  • ·              Setting Priorities:  It should be your job to try to identify what is really important, and what is not.
  • ·              Pursuing Fun:  The highest priority of your design, construction and release, should be things that will make people enjoy the game.  The game itself should be fun to make.  If your team is not having fun making the game, it’s a sign it might fall apart.
  • ·              You will be responsible for objectively looking at everything, working with people to improve their work, communicate their needs and to push to make the game as good as your team will allow.
  • ·              If there are agreements or understandings about ownership, % of the company, etc…  make sure this is clear, and update them as need be based on expansion/replacements








Designer
                You will be responsible for shaping the plot, game play style, handling, characters, level creation, shaping the journey and so much more.  In major game development, blockbuster games often had Hollywood screen writers handling parts of this. 

  • ·              Writing the Key plot, and several other interwoven plots that the game will follow
  • ·              Deciding on the medium that it will be displayed, such as 2D Side Scroller, 3D MMO, etc…
  • ·              Creating Levels that help the user move along in the plot, comfortably attain and learn to use skills, and setting up the flow and obstacles in their journey.
  • ·              Characters/Persona’s: Who are the characters, what is their story, why do we like/dislike them, how do they act, etc…
  • ·              What are the goals the protagonist will need to achieve, and how do they go about it.
  • ·              Defining what the most important needs are in the engines capabilities to support the story, characters and goals.







Developer
                You will build the technology required to make this game function.  You will be responsible for providing the User with the ability to comfortably and enjoyable control the game. 

  • ·              You will need to build or select an existing engine to work for the game.
  • ·              You will need to educate the other roles as to what your capabilities and limitations are.  They will need to know how best to work with you, and what they can expect right off the bat. 
  • ·              You will need to develop proofs, or examples to demonstrate functionality for any part the game needs that you don’t already have comfortable experience in.
  • ·              You will need to define the Architecture for the program.  You will find that with less experience, like 1-5 years, you will be constantly redefining the architecture as you go.  The least number of changes you make will usually help prevent more bugs.
  • ·         You will be responsible for writing brief unit tests, or methods of testing portions of your code to make sure it works right.






Media
                You will handle the UI Design, the mockups for possible game graphics, creating 3D models, sound effects, background music, voice acting and more.  It is important to note that it can take a long time for graphics to be created, and the more resources you can get, the better.

  • ·         You will Design the user interface, and shape how the user visualizes the game, receives the information needed and the overall graphical feel of the game.
  • ·         It is important that you have mockups, and try creating a couple sample characters, backgrounds, Items and UI early in the design, for others to work with.
  • ·         You need to determine the time it takes you to create sprites, graphics, mockups, backgrounds, 3D models, and anything else your project needs.  Time yourself when creating them, and what it takes to tweak it as well.  You’ll often be surprised at how long it really takes to make these
  • ·         You will be responsible for making everyone aware of your abilities, which is best done through mockups, and your initial samples.  When creating the samples, determine your time to build them.  As you get better, you can reduce the time estimate over all, but use real numbers, even if it pushes the game out for years.  Everyone needs to understand how much time and work can go into this.
  • ·         You will need to define the music, and how it makes the user feel in particular areas.  Should the person be alert, emotionally attached, hopeful, curious, scared, depressed, etc…  Is the mood chaotic, rhythmical, and why.  You define the artistry on how the finaly material will look and feel.






Tester
                 You will need to test the product.  Look at what was wanted, what goals where set, and look for areas that are not fun, or particularly are.

  • ·         You will need to identify key areas to test.  Take a look at the goals the game is trying to produce, and how they are trying to make it fun.  If this doesn’t exist, bug it.
  • ·         You will be responsible for making sure people understand the impact that a bug might have on the users as a whole.  If you find it annoying, so will the users. 
  • ·         You will be checking the game to make sure the feel and story flow well, and that it doesn’t stop or get significantly slowed down.
  • ·         You should create a check list of things to check for, and regularly check through them.
  • ·         You should enjoy the style of game, and make sure that things seem easy/obvious enough to pick up.






Public Relations
                You are responsible for the marketing of the game, what demo groups are involved, defining a good plan for proceeding, and provide public outputs for the game as it moves along.

  • ·         Define a marketing plan, What advertising paths do similar games take?  Are the games successful?  What does it cost, and how long will we need to do it.  What other avenues might work?  Is word of mouth alone realistic?
  • ·         Setting up, updating and monitoring public forums or a blog about the game.  Keeping outsiders as well as your team posted to constant updates and changes makes the game feel more alive, more attainable, and keeps people driven to complete it.
  • ·         Finding Investors, when the time is right, to help pay for marketing, servers, licensing, and other various expenses.





Most of all have fun, whatever you do.