Monthly Archives: December 2006

Small Gestures Have Big Impact

Christmas time – as any other time – is fine time for charity and donations. I’d like to remind that even small sums can have big impact. Donating one million dollars is a tough job for average joe, but it’s quite easy for million Joes and Janes to donate one dollar.

How about donating one dollar – just one tiny buck – for somebody today? I’m sure one dollar won’t hurt your Christmas budget (you’ve spent way more than you first thought anyway ;) and when many people give one dollar, it will have a big impact. If you don’t have 1 dollar, consider giving 50 cents or 10 cents. If you have extra 10 or 20 bucks to spare, consider helping somebody out by spending that.

For example, open source and developers of free software are good target for donations. There are plenty of people with great software asking for donations, so why not remember them? How about considering donating small sum (or big if you want) to some people whose software you’ve been using and really appreciated their effort?

Small gestures have big impact.

Why Do You Make Games?

As the year is coming to end I think it’s good idea to remind yourself about why you are making games. I believe there are many reasons from passion, overcoming technical challenges to creative reasons, and my reason is this: I like doing games.

I like playing with the code and building stuff, and make things happen at screen. I simply like making games – it’s “something I’ve always wanted to do”, and that’s the reason I’m doing this.

While money is important, I don’t think there’s no point in making games only to make money. I believe there’s plenty of better paying jobs (especially for indies) so money cannot be the main motivator. I believe passion comes first, and profits after that.

What’s your reason for doing games?

Tilelander – Puzzling Action

I just played Tilelander game demo, which is a nice puzzle game, although it can be played in two modes: puzzle or action. I liked the action style more.

Tilelander’s opponents react to player actions in a “respectful” manner, only moving if the player does so: The player can thus set the pace, playing with careful thinking behind each move or in a furious spree. Tilelander includes over 70 puzzling levels combining a variety of gameplay, from peaceful tile filling and Gauntlet-style maze solving to involved shoot’em’up and end-of-level boss fighting.

Game screenshots and a demo version can be downloaded for free at Ludimate.com. Basically, if you are looking a fun little game, check out Tilelander.

3rd Party Tools Always Cause Minor Problems

Third party tools – all the stuff you get to your project that’s not made by your team – always cause some sort of problems. Sometimes the problems are very tiny (like stupid editor font) but sometimes they might cause bigger problems. Here’s some tools I like and really recommend for Blitz3D project. All these tools are good, but even they caused some problems.

Particle Candy. Inexpensive and really nice particle library that will save hours of work. This library contains a small problem: it’s not possible to pass a framerate parameter (“animation speed” parameter so to speak) that would tell how fast the particles should be simulated. The program does framerate speed testing automatically which is nice… unless you want to have “slow motion” in game. As I cannot pass “speed variable” for the library I cannot create slow-motion effects in game without touching the library code. This is not a big issue, but still – it’s an issue for some people.

JV-ODE. Effective, and inexpensive physics wrapper. One tiny problem (that maybe most physics systems will have): it’s not possible to “punch using draggable objects”. You cannot drag and simulate the physics same time – you need to play with applying forces. Besides this minor issue, a very decent work that I really recommend.

Devil Shadow System for Blitz3D (I’m not sure if they have an official site online, so you need to google for it). Free and really nice stencil shadow system library but had 2 minor problems when I tested it: (1) meshes with shadows are not camera pickable (programming issue that can be handled) and (2) many shadows will kill the framerate, which means it’s not possible to use this library in all type of games.

In summary, I’d say that 3rd party tools should be considered and many times they help in game production, but you have to remember that there’s almost always some problems with these tools. Not necessary big issues, but most likely something.

Refer to This Rule When You Are About to Reduce Your Product Price

Many developers think that reducing the game price will increase the sales. While this might be true sometimes, I generally believe that people won’t buy your game because it’s cheap – they are looking for fun, and when looking for something fun price is only one element. If people say that your product price is too high, do this.

There’s a rule I’d like you to ponder when you are thinking about reducing the price of your game: If people are pouring money into buying beer, they must have money to buy my game even if it costs bit more. Think about that. A bar night might cost $30-50 (or whatever) and with $20 you can get couple of cases of beer. People have no problem buying that stuff, so why would they have problems buying your $20 game if it really is a good one?

Think about it. How many beers is your game worth?

Marketing Research Defined

An earlier post defining word “marketing” might give the impression that marketing is some sort of external element that has nothing to do with game development. This wasn’t my intention and here I’m going to describe how companies can conduct a marketing research – and how it can help companies.

Background
Explaining marketing research in one post is not possible without taking some shortcuts, but I try to give as much information about this as it’s possible with few hundred words. First I’d like to shed some light into definitions.

Marketing research versus market research
Some people might think market research that it means “asking people what they like or feel about some product or ad”. Consumer surveys are part of marketing research, but research involves much more than that. The basic idea of marketing research is to help managers to make better decisions.

Marketing research is sort of a communication link between company and customers, market and environment: marketing research generates and gives company information to help companies make better marketing strategies and plans.

This marketing intelligence might include issues other than simply product feedback. Research might deal with finding out legal constraints on advertising and promotion, brand imago, social values, policy studies and studies of business trends. Some research is used for planning, some for problem solving and some for control.

Market research (compared to marketing research) is the part of marketing research that is about researching the market place (customer needs, competition, opportunities, changes in the marketplace).

The goal of marketing research
The main goal of marketing research is to find out marketing information that helps companies to solve problems, help in decision making and reduce risks.

Why use marketing research?
Marketing research is much cheaper than game development, making a research before making a real product can tell whether product has chances to be successful. A very simplified example could be: instead of developing a new MMORPG game, marketing research could find out if there’s market for a new MMORPG game.

Stages of marketing research
I’m using Churchill’s book Marketing Research: Methodological Foundations to describe one way to create a marketing research. The framework for research is not always carried away in this manner, but it provides some insight on how to create the research. There are 6 stages in this research framework. I must say that these phases are described very briefly, and it would require more text to really give insight on these stages – I recommend reading the book for those who want more information on this.

  • Phase 1 – Formulate Problem: The first step is to find out what we really want to find out. This might sound bit stupid, but until we have a clear goal in mind about what we want to accomplish we cannot continue with the research.
  • Phase 2 – Determine research design: The next step is to determine what type of research design is going to be used: exploratory, descriptive or causal. Exploratory research is may involve reviewing published data, interviewing knowledgeable people, investigating trade literature and so on. When problem is more specific, we can use descriptive or causal research. In these research designs there could be data collection forms or test marketing.
  • Phase 3 – Design data collection method and forms: Sometimes we need to get specific information, and for this we need to find out data collection methods. For example: should there be open ended questions or fixed set of alternative answers? Should the purpose of research be clear to respondents? Are our questions really helping us to solve the problem? There’s more questions that needs to be answered, but these illustrate the problems in this stage.
  • Phase 4 – Design sample and collect data: Choosing the sample – the people who will respond to your survey – is important. There’s one example where marketing firm conducted a research where they checked demand for dog food, package size, design, advertising program and everything… but forgot the main concept: sample. They forgot to test the food with dogs – who wouldn’t touch it. The sample must be relevant and when collecting the data there must be some points taken into account like who is collecting the data and is the data collectors up to the job.
  • Phase 5 – Analyze and interpret the data: With great amound of data at hand does no good until it’s analyzed and interpreted in light of the problem. Data analyzing and interpreting might include analyzing by agre group, income level, and other characteristics.
  • Phase 6 – Prepare the research report: Not always necessary with great detail, but it must be taken into account to whom the report is written. There should be no jargon, or use of difficult words in the report – and it should be written for the readers, not just for those who did the marketing research and know fancy words.

Information sources to use in marketing research
There are lots of information available in the Internet, and here are some example sources:

And many other places – the Internet is filled with information.

Example usage of marketing researches
There’s plenty of situations where companies can use marketing research. Here are some examples.

  • Find out new opportunities in the game market (for example, would there be opportunities for online games, board games, different type of match-3 games and so on in the market)
  • Find out what your customers think about your game (or game prototype) – this could be done in gaming forums for example.
  • Find out what major changes has happened in the industry and how your company should respond to them (like “raise of casual gaming”, “wii console”, “XNA development kit”, “Launch of Windows Vista” etc.)
  • Find out what your current customers like about your game product and what would they want to see more.

And the list goes on to include everything that can help companies make better marketing decisions.

Summary
In summary it can be said that marketing research is very important part in game production – even people who haven’t heard words “marketing research” are probably using its methods in various manner (like asking feedback about their game demos). Marketing research’s major aim is to provide insight on strategic and tactical issues and help in decision making regarding various issues. The 6 stage research process provides a brief framework on how to conduct a marketing research.

2078 Spams

Spammers really start to get annoying: couple of days ago I received 2078 spam messages to my mailbox in just 3 hours. I hadn’t set up server mailing system properly – so every mail towards this domain got into my mailbox. I made some changes (set up proper forwarders etc.) and now things are back to normal.

Spamming sure starts to become ridiculous.

Planning is Essential in Writing Multiplayer Network Code

I must say that proper planning is crucial when it comes to programming multiplayer games. Our Edoiki game network code is much simpler now compared to what it was in the beginning of the project – and I’m polishing the code even more.

I’ll give an example.

First I used multiplayer code where client would ask server “if he can do things”. If client needed to pick object, there would be separate code for “pick object”. If client needed to move somewhere, there was a separate code for “move”. Almost every action had separate packet building codes, ACKing (acknowledging – or basically saying “I received your packet”) codes and so on.

Now things are designed much simpler: clients only send input commands (like “clicked certain mouse button” or “certain object in screen”) – there’s no separate code for different actions: there’s only code for sending inputs, and that’s it. This has made things much easier in the client end, and also in the server end. Now server checks received input commands, ACKs them, and sends “what happened” information to all clients. There’s a class (or class like way as Blitz3D is not object oriented) for network objects, and server changes the states of these objects, and tells clients what updates have happened. In all simplicity, there’s just two main elements that need to be taken care of “client input commands” and “server’s network object state updates”. Use of bit masks has given me way to use the same functions for state updates: now there’s no need to create separate code for moves, attacks, health changes, etc. – I simply use the server to update object states (in one piece of code) and magic happens.

I believe that reading high level information about how to create network code is important if you want to make efficient network code. My first pieces of multiplayer code are awful to watch today, but I’m extremely pleased with what I have now.

Here’s some articles I’ve found very useful:

And here’s some more links where you can find lists of more articles:

From that list I’d say the Quake 3 networking model really hit me: their way to deal with things in all simplicity is brilliant. They decided to use quite pure server client system and there’s one major idea: there are no reliable or unreliable messages. The concept of “sending only non-ACKed changes” is – in my opinion – simple and efficient.

I will write more helpful articles about what I’ve learned and give better insight in the future, but for now I suggest taking a look at some of those articles.

3 Practical Tips For Better Leadership

Be fair. I believe every game producer and team leader out there should be fair towards every team member. This means that everybody is treated the same way. If you let some people behave the way the want, you need to give this privilege to everybody in the team. If one guy can be late from meetings, then everybody can be late from meetings. If nobody is allowed to be late – that means nobody. If you require lots of work from team members, be sure that you don’t require more than you are willing to do. Being fair includes you and everybody else.

Show leadership using stick and carrot. Even though I really haven’t met one, I’ve heard that there are bosses that are concentrating on the stick part, and forgetting carrot: they only “punish” and never reward. Then there might be leaders who use only carrot – rewards – and never use any ways to punish people. They say that “stick is demotivating” or say that “using carrot is the best way to act”.

While I agree that rewards are the things that motivate, but that doesn’t mean there wouldn’t be consequences for critical parts in the project. For example, if some team member constantly mocks everybody else and disagrees with everything (just for sake of disagreeing) I would seriously consider dropping that team member out. Naturally every situation must be acted fairly, take into account what’s important and what damage this team member does and discuss things openly with him before taking any action – but leaving somebody out is sometimes the right thing to do.

Other forms of “punishment” could be that “those who are late from meetings buy donuts to whole team”. If some guy has been late several times, you might be surprised how miracleously there’s no more reasons like “traffic jams”, “alarm clock didn’t work” or “had to take children to school” – even the “laziest” guys get to meetings on time when they know they will get consequences. And it’s extremely important to be consistent with this: if you put the late-donut-policy in action, you must be 100% sure that this policy is followed – it’s your job to make that happen, every time.

Say what you think, honestly and intelligently. It’s good to express your thoughts and say what you really think. Some people go into extent that they bash anything that comes to their mouth and validate their actions by saying “it’s good to say honestly what you think”. I agree that it’s good to say honestly what you think, but there’s no reason to bash others. If somebody has done a poor job, it’s right – and producer’s responsibility – to say that. The way you say it is what matters. If you say “You did a shitty job, fix it” it has a quite different attitude that expressing “Your work has always been great quality, but this time I think this work could need some improvement. Overall the job is well done, but requires some improvement here and here – what do you think?”. I don’t mean that you should say “you’ve always done great job” if the guy really isn’t. There’s no need to lie about the work, but if the guy’s work has good parts you can mention that you like about those, and then you can express what needs improvement.

Being fair, use of rewards and consequences and communicating well are tools that can help you leading your team.