gamedesignteam

MOBILE GAMES, IPHONE APPLICATIONS, COMPUTER GAMES, GAME DEVELOPMENT TRAINING , http://www.gamedesignteam.com

  • game design team

    We have emerged as the leading online community for game development of all levels. Our expertise encases all facets for writing PC , Mobile and Online of 2D and 3D Gaming programming and applications development, for instance by using the latest 3D engines, scripting languages and animation techniques, our experienced and qualified team deals with all kind of requirements, whether it be a beginner's choice or an expert gaming action. Most importantly, we endeavor to offer compelling solution and eminent support to our growing community of prospective players and customers.



how to design a good game : gamedesignteam

Posted by virtualinfocom On 1:24 AM 0 comments

What is a Game?
Before talking about good games we should decide what a game is in the first place. There  a surprising amount of discussion about this issue and there are many different definitions. It is easier to say what is not a game. This A movie is not a game

This is rather obvious, but why? What elements of games are missing in movies? The main difference is that there is no active participation of the viewer in a movie. The viewer does not control the movie and cannot make decisions that influence the outcome of the movie. The same is true for stories and plays in a theater. Also the final outcome of the movie is fixed (even though the viewer might not know it). This is a crucial aspect of movies and plays. People in general don’t like plays in which the outcome is not predetermined. In games the opposite is true. People do not like it when the outcome of a game it fixed.

They want influence on that outcome. They want to be in control. A toy is not a game You play with a toy
but you do not play with a game. You play the game.With a toy there are no predefined goals although
during play you tend to set such goals yourself. A number of computer games actually are close to being
toys. For example, in SimCity or The Sims there are no clearly defined goals. You can build your own city
or family and most likely set your own goals (like creating the biggest city) but there is not really a notion of winning the game. One could add this (e.g. you could add that the game is won when your city has reached a particular population) but this can be frustrating because it is not a natural ending. This being said, there is nothing wrong with creating a nice interactive computer toy.A drawing program is not a game A drawing program is fun to play with and encourages creativity, but again it has no clear set goals. The user defines the
goals and it is the user who decides whether the goals are reached. A puzzle is not a game This is a more
difficult one. Clearly many games contain puzzle elements. But a puzzle is static, while a game is dynamic and changes in the course of playing it. A satisfying game can be played over and over again and there are different strategies that lead to success.

So what is a (computer) game then? Here is a possible definition: A computer game is a software program in
which one or more players make decisions through the control of game objects and resources, in pursuit of a
goal. Note that the definition does not talk about graphics, or sound effect, or in-game movies. Such
aspects obviously do play a role in making nice,appealing games, but they are not the essential aspects of games. Let us look at the different ingredients of the definition in some more detail. A computer game is a software program This makes it rather different from for example board games or sport games. It takes away some of the fun of games.
There are no pieces to move around and there is no physical satisfaction (although some recent games,
like Dance Dance Revolution or the games for the new Nintendo Wii console involve physical exercise). Also
the social aspects are less prominent, although online multiplayer games add a new form of social interaction. But we get quite a bit in return. A software program can much better react to and adapt to the players. Most computer games have a real-time element that is not present in board games.
The game continues even when the players do nothing.
This can lead to enhanced excitement and a better feeling of presence in the game world. Also computer games can adapt to the players making it satisfying for largely different players, both beginners and
advanced. The possibility of having computer-controlled opponents adds many new challenges. Computer games can also be more complex because the game itself can help the players understand the different aspects and teach the player how to play. Finally, computer games can create a more immersive environment by adding wonderful graphics, music and cut-scenes. A computer game involves players This is rather obvious. A game is not something to watch. You should be involved in a game. Don’t underestimate the importance of the player. Beginning game designers often forget that you make the game not for yourself but for the people that are going to play it. So you always have to think about who they are. A game for children should
be rather different than a game for adults. And a game for hard-core gamers should be rather different from a game for less experienced players. You need to pick the correct audience. Bad games are often written for the wrong audience. For example, a very experience flight simulator freak wants to be able tocontrol every aspect of the plane and wants things to be as realistic as possible. For a player that just wants a bit of quick flying fun this is frustrating and boring and such a player will most likely never get the plane to take off, let alone to get it to land.

Playing a game is about making decisions The player makes decisions that influence the rest of the game.
In fast paced action games such decision typically involve in which direction to move and which weapon to
choose for shooting. In complicated strategy games the decisions involve were to build your settlements,
which units to train, when and where to attack, etcetera. Of course decisions should have an effect.
Surprisingly, in many games the effect of decisions is only marginal. For example, often it does not really
matter which weapon to use. This often leads to frustration. Carefully balancing decisions and their effects is crucial for satisfying game play. Playing a game is about control The player should feel in control of the game. Not the other way round.

Uninterruptible sequences in which the control is taken out of the hands of the player still occur in
many games and often lead to frustration. The more freedom there is for the player, the better. There is
though a catch here. A game is also about surprises and dramatic effects. Such effects can be created
much better if the player is not in control. For example, in a movie, when the main character approaches a door you can let the music rise. The viewer knows that something is going to happen.

Together with zooming in on the door, this can create a great dramatic effect. But if the same happen in a
game and at the last instance the player decides not to open the door, most of the effect is gone and even
becomes absurd. Careful balance of freedom of control and dramatic effect is difficult. (There is another less valid reason for not allowing too much control. More freedom and control for the player makes it more work to create the game.) Whenever you need to constrain the user, try to do this in a natural way. For example, in Riven the player moves between different parts of the game world. By letting the user use some kind of train system it is natural that this motion goes automatic and cannot be controlled by the player. Game objects and resources In a game you normally control certain game objects, like the main character, units, a car, etc. In some games you can control just one object while in other games, for example strategy games, you can control many different objects. Besides the game objects that the player controls, there are normally many
other objects that are controlled by the computer. The game objects the player controls play a certain
role in the game. This is an important property. In other programs you also control certain objects, like
buttons, but these do not play a role in the program.
They are only meant to give certain commands to the program. Besides controlling game objects you must
often also manage certain resources. This is most evident in strategy games and simulation games in which you must manage the amount of food, wood, stone, gold, etc. But also in many other games there are resources to manage, like ammunition for your weapons, a shield that can be used a limited amount of time, etc. Careful planning of resources and their use can addmany nice aspects to the game play. The game designer must balance the availability of resource with their need, to achieve interesting game play. A game needs a goal This is a crucial ingredient in a game. People want to win a game and, hence, there must be a goal to reach. For long games there should also be sub-goals, like finishing a particular level, defeating a certain monster, or acquiring a new spell. Reaching a goal or sub-goal should result in a reward. Such a reward can consist of a score or some nice movie, but it is better if the reward is actually part of the game play itself, for example a new weapon, some additional useful information, etc. We will talk more about goals and rewards in a moment.

What is a Good Game? So now we know what a computer game is. But is does not say much about
when a game is good. Think about the following computer game: You have to rescue the princess who is held in a fortress. On the screen you are shown two roads, one leading to a fortress and the other leading to a cave. You have to decide which road to take. You choose the road to the fortress? Congratulations. You rescued the princess and won the game. You choose the other road? Bad luck. You are eaten by the cave monster and die. If you verify it, this game has all the ingredients described above. There is a player, there
is a decision to make, the player controls what is happening, there are game objects (the prince, the cave monster, etc.) and there is a clear goal. But it is obviously a rather boring game. There is no challenge.

The game is too easy. So clearly we have to do a better job to make an interesting game. Reaching
goals An important part of a game is that there is a goal and the game challenges the player to try and
achieve this goal. Actually, there are often many different sub-goals. Goals come in all sorts and shapes. A goal can be to try and shoot an enemy plane, or to finish a level by collecting all diamonds, or to reach the highest score or to finish the game.

Clearly some of these goals are short-term goals while others are long-term goals that can only be
reached by playing the game for weeks. A good game is filled with these goals and the player should be
rewarded when he reaches one of the goals. Rewards give an important additional motivation to try and
reach the goals. Goals should not be too easy to achieve. There must be a challenge. And when the
game progresses the goals should become harder to reach and the player has to become better at the
game to achieve them. This learning curve is very important. In the beginning the player needs to
understand the controls and the mechanisms in the game. This is best done by letting him achieve some
simple goals. Later on, the player understands the game better and will be ready for bigger challenges.

Obviously, when goals are hard to achieve, there is a big chance of failure. You have to be careful with
failure though. It can easily put the player off,making him stop playing. And that is definitely not what you want to happen. To avoid this it is crucial that, in the case of failure, the player always has the feeling he made a mistake that he could have avoided.

It should not be the game’s fault that the player lost, but his own. It is one of the aspects that distinguish
games like PacMan and Tetris from other games. You always have the feeling you did something stupid. You
can be pretty angry with yourself when it goes wrong and you are determined to avoid this mistake the
next time. This feeling keeps you playing the game. On the other hand, consider a maze game in which
from time to time at a random spot a flash of lighting occurs, killing you if you happen to be in the neighborhood. In such a game you, as a player, did nothing wrong. You just had bad luck to be at the wrong spot. This is very frustrating. You are not angry with yourself but with the game. And you probably soon stop playing it. Don't think that commercial games are perfect in this matter. Quite some games for example produce enemies at random locations and random moments in time. If you have bad luck they appear at the wrong moment right next to you and kill you. You should learn from this that you have to be careful with "luck" in your games. Whether the player can achieve a goal should not depend on good or bad luck. Bad luck is of course very frustrating for a player but also good luck does not give the player satisfaction. Imagine that you can be lucky and find a super bomb just before facing the main enemy. Having the super bomb make the fight very simple while not having it makes it a major challenge. With the super bomb the player will not
have the feeling he conquered the enemy himself. It would have been much better if the super bomb was
always there but the player had to make a difficult move to get it, for example, jumping over a dangerous
pit. Now the player has an interesting decision: performing the dangerous jump to make the fight easy, or not risking the fall and fighting the enemy with lesser weapons. Decisions As we saw in the last example, creating an interesting decision enhances the game play considerably. In general, decisions are a crucial ingredient of games. The more interesting the decisions, the more interesting the game is. There can be very simple low-level decisions or very high-level strategic decisions. Let us look at the well-known PacMan game. It is packed with decisions. The most important decision that you constantly have to take is which direction to move in. Are you trying to stay as far as possible away from the monsters or are you going after the dots, even if the monsters stay close-by? And will you go to a corner, where you might be caught or will you stay in the center where you can move in more directions but can also be attacked from multiple sides? A second type of decisions lies with the pills you can eat to chase the monsters.

When are you going to use them? Do you leave them to the end and only use them to get to the final dots
or do you use them early on to clear most of the maze? And if you eat them, are you going to hunt for the monsters to get extra points or are you going to use the safe time to eat more dots and try to finish the level? And finally there is the bonus item that appears from time to time. You can try to get it for extra points, but you will run the risk of being eaten by a monster. When there are many decisions to make, like in PacMan, the player will make mistakes.

In PacMan these mistakes are not immediately fatal, but it will require you to work harder to finish the
level or to get the highest score. This is important because everybody makes mistakes and you should not be punished too much for such mistakes. In the same way as a reward should be related to the achievement you made, a punishment should be related to the seriousness of your mistake. If the player looses the game, this should be the result of a grave mistake or a series of smaller ones. In such a case the player will definitely feel that he himself is to blame for the loss, and will continue playing to try to do better. Balance In a good game different game aspects are balanced. For example, the player should have the weapons with which he can fight the enemies. The weapons should not be too strong. That would make the game too easy. And they should not be too weak because then the player can only survive if he has a lot of luck, and remember what we said about luck before. Balance is difficult to achieve. And players are very clever in finding out where the game is unbalanced and exploit this unbalance, thereby often ruining the fun of the game. There are three
different aspects of balance: balance between players, balance between the player and the game
play, and balance between different features in the game. We will discuss each of these below. Balance
between players If you create a two-player game, you better make sure that the best player normally wins,
and not the most lucky one. Imagine a strategy game in which two players compete with each other. As in
most strategy games they have to build up a city and for this they need wood. Now imagine there is just
one forest in the world and one player starts very close to this forest and the other is far away from it.
This gives the first player an advantage that will most likely win him the game. So the game is highly unbalanced. A game of chess on the other hand is highly balanced. Each player has the same pieces and
can make the same move. The only problem is that one player can start and this is actually an advantage
in chess. But this is balanced out because in a match each player can start the same number of times.
Chess is a symmetric game. Symmetric games are well balanced. But symmetry is also a bit boring. Imagine
that in the strategy game I mentioned the world looks completely symmetrical and each player plays the same race with the same units. That would make the game less appealing. Still it is used rather often.

For example, the multiplayer maps in Red Alert II are very symmetrical. The real game design challenge is
to make a non-symmetrical game that is still rather balanced. One way of achieving this is to use fake asymmetry. Let me demonstrate this with an example. In our strategy game we let the first player start behind a mountain range while the second player has his city behind a river. The first player we give the ability to
create boats while the second player has equipment to drill tunnels. This looks very asymmetric but the
tunnels can be used to pass the mountain range and in a similar way the boats can pass the river. So balance
is restored again. Many strategy games use some type of fake asymmetry. Races might look rather different but in the end the possibilities are very similar. Balance between the player and the game play The game play is there to help the player, not to fight the player. As was said before, the player should lose because he made a mistake, not because he for example forgot the key combination to fire the canon. Careful design of the interaction (the use of the keyboard, mouse, joystick, etc.) is important to avoid this type of problems. Also you need to strike a good balance between what the player must do and what the game does for him. For example, in most games the player does not need to continuously push buttons to make a game character walk. The game does this automatically for him. But the player must press a button to make the character shoot. In many strategy games, soldiers automatically start attacking enemies that come in close range rather
than requesting the player to constantly check on all the units. But the player must decide when to start
an invasion into foreign territory. But also well-known games make the wrong decisions here. For example,
they force the player to constantly bring food to the troops or they force you to manually withdraw
wounded soldiers from the battle. For example, one of the things many people complained about in Black
and White was that when your people were praying you had to bring them food all the time. Let us
consider another example. In the early adventure games one of the major challenges was to find out
where you should click on the picture to get certain things done. For example, to open a door you had to
find the secret button to press. Only after pressing on all the 100 stones in the wall you found the one
that opened the door. This adds no fun to the game.
In modern adventure games the mouse cursor changes whenever you move it over a place where you
can click and often a message appears indicating what there is to click on. Good visual cues are also given,
for example by giving one of the stone a slightly different color. This will improve the game play a lot.

The player still has to come up with the idea that there might be a secret button but once he has that
idea it is easy to find the place. The bottom line is that the player should spend his time and energy on the important aspects, and the game program should do the rest. The game should try to understand what the player wants and take action accordingly, rather than the other way round. The balance between game
features A game contains many different features: different weapons, different enemies, different units, different roads, all sorts of resources that can be use, and so on. These features result in decisions for the player: which weapon to use for what enemy, which road to take, how to use the resources, and so on. This makes the game interesting. But you better make sure there are some real decisions here. For example, when your game features four types of weapons, but one is superior to the others, the player will never use the other three weapons once he finds the best one. So there is no decision left anymore. To keep the decisions interesting you should balance the good aspects of the features with the bad ones. For example, the powerful weapon can fire only one shot per second, or the ammunition is more expensive, or it cannot be used in a cave, or one opponent is more sensitive to a particular weapon than another. Use your creativity. You have to balance the powers of the player with the power of the computer-controlled opponents. When new opponents appear during the game, you should give the player new powers to fight them. But be careful that you don't fall in a
well-known trap in which you simply increase the firepower of the player while the opponents get equally stronger. This does not lead to more interesting game play. There is not much difference in driving with a slow car against slow opponents or with a fast car against fast opponents (unless, of course, steering the fast car is more difficult). A key issue here is that the player should improve during the game, not the character he plays (or the car he drives). This is not to say that the character of car should not improve. But the improved character should reflect the improvements in the player. Don't forget that a player must learn to play the game.
That is, the game should start easy with easy decisions for the player to make. When the game progresses and the player becomes better at it, he should get more and more complicated decisions to make. This can be achieved by introducing new features gradually during the game. The features should match the players' abilities. Make sure that there are still new features appearing far into the game. Too many games show all the features in the first few levels after which the game becomes just more of the same. Good games come up with surprises, all the way till the end. Rewards You need to reward a player when he achieves a goal. A reward can take the form of a particular score, some nice graphical or musical feature, or items that can be
used in the game, like better weapons, power-ups, spells, or knowledge about the game world. The last
type of reward is definitely the most rewarding to the player and whenever possible you should try to create this type of rewards. The effect can be permanent or temporary. Temporary rewards are typically given when a player achieves minor goals. It makes the playing easier for a while. Examples of this type of reward are some extra ammunition, or temporary invisibility to opponents. Permanent rewards are given when bigger goals are achieved. For example, you get a new weapon or spell or car. This will change the game play from that moment on, hopefully extending the range of decisions the player can make. Giving the player the right type of rewards is actually an issue that is harder than you might think. People are picky about their rewards. If the rewards are too small they will not work hard to achieve them. If they are too large they get greedy
and want even bigger rewards. It is a well-known psychological phenomenon that players start expecting rewards and if you somewhere during the game you decide that a particular reward is no longer available they get angry. Let us consider an example of this. If in the first level of the game you give the player a bit of extra health for each opponent he kills, the player starts expecting this. If you decide in the second level that the player should now be more experienced and you stop giving this reward the player tends to be upset and might stop playing the game. It would be better to gradually increase the maximal player health and the damage opponents do, such that the increase in health is not significant anymore. The player still gets his reward but it has less influence on the game play. You also need to decide whether rewards are predictable or more random. For example, in your game you might give a bonus item for each 50 collected coins. Alternatively,with every coin you collect you have a 1/50th chance of getting the bonus. Even though mathematically equal, the effect of these two choices on the player is completely different. In the first situation, in the beginning the player is not very interested in collecting coins. It will take way too long before it will
result in a bonus. This will make the game play less intense so there should be other aspects that keep
the player interested, like exploring the environment. But when the number of collected coins approaches
the 50 the game plays starts becoming very intense and the player will work very hard in collecting opponents, even those at difficult spots. So there is a high variation in intensity, which is appealing to certain types of players. When the award is randomly there is always an interest in trying to collect coins because it might lead to a reward. So the average intensity of the game will be higher. But there will be no peaks in intensity, which can lead to a more dull game. Make sure the player notices the rewards he gets and starts understanding why he gets them. If the player does not know the relation between his actions and the rewards he gets this will be
frustrating and will lead to less focused game play.

So clearly indicate when points are scored or power-ups are obtained. For example, use some sound effect or some graphical effect. Flow A game gives challenges to the player and the player develops abilities to conquer these challenges. Challenges can take the form of monsters to beat, obstacles to avoid, puzzles to solve, bases to attack, and systems to master, for example a plane. The abilities a player must develop depend on the game and can for example be reaction speed, strategic thinking, or knowledge. A game is only fun to play when the challenges are in balance with the abilities of the player. While the game progresses the abilities of the player improve and, hence, the challenges should become more difficult. It is the task of the game designer to keep challenges and abilities in balance. This situation is called the Flow. When challenges are two hard the player gets frustrated, when they are too easy the player gets bored. There actually is a
band in which the game is still fun to play. If you get to the top of the flow you reach a state that is sometimes referred to as pleasurable frustration. It is good to let your game from time to time get to this top and then give some easier challenges again. This helps the player to improve his abilities. So the difficultly should zigzag through the flow. Presence and Immersion You might have wondered why we did not talk about graphics yet, or about sound and music. Many people consider them crucial ingredients of a game. New commercial games try to achieve great new graphical effects and hire famous musicians to create the music. So isn't this important? Well, yes and no. If you look at the games available on devices like the Nintendo Game Boy Advanced or mobile phones, they have rather poor graphics and the sound is also limited. Still they are great fun to play and many people are addicted to them. On the other hand, some of the best three-dimensional games create a special atmosphere using the right type of music and stunning graphics effects like dripping water, smoke, and flickering torch lights. The key issue here is immersion. Game play is largely enhanced if the player feels immersed in the game; if he feels that he is present in the game world and that his decisions and actions really matter; and if he becomes emotionally attached to the main characters in the game and really wants to help them. Important ingredients to achieve this immersion are the story in and behind the game, the surroundings in which the game takes place, the way the main characters in the game look and behave, the music, and the special effects. FLOW Challenge Abilities the story There is a lot of discussion about whether a game needs a story. Popular games, like PacMan or Tetris do not have a real story (although the designers still gave them some sort of story). And in many first person shooting games, the story is almost
always the same: rescue the world from some kind of evil. Most people never read the story and it seems
not to influence the way they experience the game. (You are not trying to save the world; you are simply
killing the monsters that attack you.) On the other hand, for adventure games the story is crucial. It forms the basis for the puzzles you need to solve, and the story actually helps you solve the puzzles; they often only make sense when being part of the story. Also other games can benefit from a good story; again because they give a meaning to the actions you are performing and deepen the satisfaction when reaching your goals. It leads to Meaningful Play. This can be achieved by making sure that the different tasks or levels in the game form a logical sequence and by putting cut-scenes or movies in between them to enhance this storyline. Designing a good storyline with movies, etc. is probably beyond the skills of most beginning game designers, but it is good practice to at least put some logic in the game you are creating and such logic normally comes from a story. The game world A game takes place in some world. This world can be presented in exact three-dimensional realistic detail but also in a more abstract or cartoon-like two-dimensional way. Some games just use text and some static images to represent their game world. Designing an interesting game world is an important part of game design. And picking the right type of representation is important too. For a first-person shooter a well-detailed three-dimensional game world with lights, shadows, and special features like mist and water is crucial to give the player the feeling of presence. He has to see what a real fighter would see, otherwise the game becomes artificial. For a flight simulator the world should also look as realistic as possible. For an adventure game a realistic three-dimensional world is not so important. Here it is the story that creates
the feeling of presence and this can also be accompanied by simple two-dimensional images. In puzzle games and many arcade games the game world is rather abstract and often two-dimensional. For example, in a scrolling shooter planes don't fly in natural ways nor do the bullets behave natural. And power-ups might float in the air. This is all perfectly acceptable for the player when the game world is rather abstract but would be out of place when the game world would look realistic. So it is really important to adapt the game world to the type of game you are creating.
A realistic three-dimensional world can also hamper game play. For example, many strategy games use a
form of overhead view of the game world in which you view it under a 45 degree angle (a isometric view).
This makes it easy to track your units and to quickly see what is happening. You can easily scroll over the
world to steer your units in doing the right things. Trying to do the same in a full three-dimensional world is a lot harder. You quickly lose your orientation, and have difficulty in keeping track of what is happening in the world. Moving around is more difficult. Again you must adapt the representation of the game world to the game play that is required. The main characters Many games have one or more main characters that the player controls or meets. Like in a movie it is important that the player becomes emotionally attached to these characters. He can hate them and try to kill them or like them and try to help them. So characters and their behavior need to be designed carefully. How again depends on the type of game. For example, in a first-person shooter the player himself is the character. He should fully identify himself with the character. In such a case it is advisable not to give the character a strong personality. This makes it more difficult to identify yourself with him. Or at least give the player the possibility to choose between different characters to pick one that suits him. For third-person games and adventures a strong personality is often important. If done right, the character can get some kind of hero status, like Lara Croft from Tomb Raider. Music Music and background sounds can play a very important role in immersible the player in the game. Even very soft background sounds can have a dramatic effect in games. For example, dripping water in a cave gives a creepy sound. Rolling thunder can raise the players fear, etc. Background sounds can also provide clues to the player about what is
going on. For example you can hear footsteps in the distance or a door that is slammed shut. Modern
games use positional sound such that the player also knows where things are happening. Picking the right
kind of music for your games is as important as picking the right kind of graphics. A cartoon style game should have cartoon style music. Creepy games should have creepy music, and funny games should have funny music. Better have no music than the wrong kind of music. Modern games nowadays use adaptive music that changes with the action that is happening. This can further increase the dramatic effect but is definitely beyond the possibilities for beginning game designers. Special effects Like in movies, special effects can have an important effect on the player. Some great explosions or sound effects can temporarily highly enhance the game experience. But be careful. The effect soon wears off. After 10 of such explosions you won't even notice them anymore. And they might even become annoying if they hamper the game play, e.g. by slowing  down the refresh rate, or distracting the player. For example, some puzzle games have beautiful color
changing or animated background. Soon these become very annoying and you really want to switch them off.

So don't spend too much time and effort on special effects. Better concentrate on good game play. Game
 genres Games come in many different types. Over the years a number of different genres have been created. If you are very creative you can try to make a game that is completely new, but if you want to be on the safe side you better pick a particular genre and make a game that fits in this genre. The following are some of the most important game genres:
 Arcade games Here reaction speed is the most important aspect of the game. Typical examples are scrolling
shooters, maze games like Pacman, breakout type of games, various platform games, etc. These games are
relatively easy to make and normally 2-dimensional graphics is good enough for them. These are definitely the type of games you should first start creating. A particular type of arcade games is the pinball game. These are a bit harder to create because you need natural ball movement.

Puzzle games Here clever thinking is the most important aspect. Many maze games are actually more based on puzzle solving rather than on reaction speed. Other examples include board games and sliding puzzles.
These games are also normally 2-dimensional and are relatively easy to create, unless the game has to be played against a computer opponent in which case it might be difficult to program the way the computer plays the game. (Think about trying to program the computer to play chess.)

 Role playing games (RPG) Here you steer a character through a dangerous world. Typical examples are Diablo and Baldur's Gate, Oblivian, and Fable. The most important part of such a game is the development of the character you control. The character must learn new skills, become more powerful, and find additional and better weapons. At the same moment the opponents become more powerful as well. Sometimes there is also a strong storyline and the player must discover what is going on in  the world. RPG games are often isometric or fully 3D, but this is not crucial. You can also create 2-dimensional RPG games. RPG games are harder to make because you must create the mechanism of character development. Also the games normally need to be large because otherwise they are soon finished. Good level design is crucial.

 Strategy games These can be either real-time (RTS) or turn-based. Here the player normally only indirectly controls the character in the game but he does set out the strategies that the characters need to follow. Examples include Age of Empires,Mahabharata, Caesar, Command and Conquer, etc. Strategy games often use an isometric view. They take a lot of time to create because they require many different game objects, like characters and buildings, that all need their own animated images and specific behavior. Moreover, they require some careful artificial intelligence for the computer opponent.

Management games Here you must build up an empire. In these games the player manages for example a city, factory, railroad company, park, etc. Examples are SimCity, Theme Park, Railroad Tycoon and in some sense also games like The Sims. Views are often isometric for a good overview. Managing resources is a crucial ingredient. These games are difficult to make because there must be an underlying system that simulates the world, for example the behavior of the visitors of your theme park. Many GOD games can be considered as a combination of management and strategy games.

Adventure games Here the storyline is rather crucial. Adventure games can be 2-dimensional or 3-dimensional. They typically use the well-known point-and-click interface. The difficulty in creating an adventure game does not lie in the actions but in creating an interesting, funny, and surprising story line and in creating the corresponding artwork. You really need to be an artist for this.

First-person shooters These can be seen as the 3-dimensional version of the old arcade games. Here the emphasis is on fast-paced action and reaction speed, not on cleverness and puzzle solving. Famous examples are obviously the Doom and Quake series but huge numbers have been created. First person shooters need a 3-dimensional world to create the feeling of presence. Third-person shooters Here the player directly controls a game character through a hostile world. A clear example is Tomb Raider. The main difference with role playing games is that there is not much emphasis on character development. It is more a matter of fast action and discovering the game world. Many third-person shooters also have a storyline and borrow aspects from adventure games.

Third-person shooters do not need to be 3-dimensional (think for example of the early GTA games) and can be created with relative ease.

Sport games Here an existing sport, like soccer or baseball is simulated. Many such games exist and they
are very popular. Creating a convincing and fun-to-play sport game is though a big challenge. It might work
better if you give it a cartoon flavor because then the action does not need to be realistic.

Racing games These are in some sense a special type of sport game. Because there are so many of them they deserve a category of their own. Some racing games, like for example many Formula-1 games, try to model the driving of a car as realistic as possible.
Other games are more arcade style and make racing very easy. Racing games can be 2-dimensional or 3-dimensional. One of the major challenges when making a racing game is to create convincing racing behavior of the computer controlled opponents.

Simulators For example flight simulators. Such games try to realistically simulate some mechanism, like a plane. They are popular because people like to understand how such systems work and like to be able to control them. Creating simulators is rather difficult because you must implement the internal working of the
system you are simulating, e.g. the flying of a plane.

Clearly we did not cover all types of games in this list but it at least gives you some indication of the various
genres. You can of course produce a game that has aspects of different genres, but you should be careful with this. The player picks a game from a particular genre because he likes that genre. For example, assume that you, as a designer, decided to create an adventure game with some added action.

Somewhere in the game the main character has to move to a different city and for this he has to steal a car. Chased by the police the player has to race to the next city, avoiding being caught. This may sound like fun, but be careful. A player that chooses an adventure game likes the story aspect, the fact that he has to solve complicated puzzles, and the fact that he can take his time and is not hurried. The racing part suddenly requires him to play a completely different type of game in which reaction speed counts much more than clever thinking. Probably this is not his type of game and he might be unable to finish the race and will stop playing the game. Similar problems occur for example when combining strategy games with first person shooting action. So best pick your genre and stick to it for the whole game.

Halo: Reach Review (X360)

Posted by virtualinfocom On 12:09 AM 0 comments

I'll come right out and say it. Halo: Reach is easily the best Halo game yet. From the campaign to the muultiplayer to the Forge editor to Firefight, everything in Halo: Reach is uniformly polished and excellent. The gameplay is sharp and precise. The presentation is stunning. The wealth of content is impressive. You'll be playing this for months to come. There is no question that Bungie is going out on top with its final Halo game.

Halo: Reach Review (X360)

Play Station2 Lunched

Posted by virtualinfocom On 12:02 AM 0 comments

Heck, if people buy the Wii to virtually bowl, one can't imagine that a PS3 Move version of "High Velocity Bowling" won't succeed.  Racing and classic Dreamcast Sonic action await.
PlayStation 3 New Releases:
  • 9/22/10 - F1 2010 - Compare Prices
  • 9/22/10 - Sonic Adventure - PSN Download
  • 9/22/10 - High Velocity Bowling (Move Edition) - PSN Download
  • 9/22/10 - DeathSpank: Thongs of Virtue - PSN Download
  • 9/22/10 - Planet Minigolf: Stronghold Island - PSN Download
PlayStation 2 New Releases:
  • None

PS3 Move Has Launched

Posted by virtualinfocom On 12:00 AM 0 comments


How in the world the US got it before Japan (October) is beyond me, but the PS3 Move has launched on today, Sept. 17th 2010.
I must say, I'm a bit surprised as the rush. I originally thought the Move would be huge, but when Sony claimed they expected a soft launch I thought my enthusiasm had been misplaced.
Though I would have liked to have seen some of the more interesting titles like, "The Fight: Lights Out" and "TV Superstars" available at launch, it certainly hasn't seemed to slow down interest in the PS3 Move at all. Of course, much like the Nintendo Wii, I expect many are just buying it for the bundled game "Sports Champion." And after all, who could resist playing Bocce ball or Disc Golf (do folks still call it "Folf" or "Frisbee Golf?") indoors.
Well move, here's to a happier than expected launch, and I can't wait to get the party started.

desire

Posted by virtualinfocom On 1:28 AM 0 comments

Desire is the key to motivation, but it's the determination and commitment to an unrelenting pursuit of your goal - a commitment to excellence - that will enable you to attain the success you seek.

Intro




In this tut we'll be covering 4 things. Rotations, Comments, Saving and running scripts and making macroscripts.
Hopefully you still have your max file with the randomised fence posts from tut 3. Open it up.


Maxscript Editor



From now on, we won't be running our main scripts from the listener. The listener is still useful for testing snippets of code before you incorporate it into your main script. Also you'll need to look at the listener to see stuff returned from the maxscript parser.



Click Maxscript>New Maxscript



Hopefully a blank page should present itself. We will work in here from now on.
Save your script. I suggest making two folders in your scripts folder. One for your random snippets of code that you've written for one-off tasks and the other for finished release quality scripts with proper error checking, documentation and interfaces etc.

Last time we finished with a script to randomly set the positions of the fenceposts. Now we want to modify the script so that we can randomly set their rotations.


Rotations

Rotations are slightly odd in Max in that we need to first create a "rotation object" that we will store as a variable. Then we apply our rotation object to our object (a fencepost in this case!)

As you possibly already know, in Max, there are 3 different types of rotations that you can use. Euler angles, Quaternions and Angleaxis. As you get more advanced, you will want to work with the different types in different scenarios but for now, we will use euler angles.

Eulerangles are defined in the following way: rot_obj = eulerangles x y z
create a cube somewhere in your scene and type the following into the listener:

cubeRotationObject = eulerangles 0 20 0


Maxscript should return: (eulerAngles 0 20 0)



Now we have our rotation object stored in our variable; cubeRotationObject.
All we need to do now is apply the rotation object to our object. Select the cube and type


the following:

rotate $ cubeRotationObject



The cube should rotate 20 degrees around the Y axis.
Back to our script. Hopefully you should be ahead of me now with a clear idea how to modify the script to randomly rotate the posts. In case you're lost, here is the code:

(this time, type it into our blank new maxscript file)



for obj in $ do

(

randXrot = random -3.0 3.0

randYrot = random -3.0 3.0

randZrot = random -3.0 3.0

rot_obj = eulerangles randXrot randYrot randZrot

rotate obj rot_obj

)



Select all the fence posts (or if you don't have the file from tut3, create an array of fence posts and select them all) and run the maxscript by hitting CTRL+E (evaluate) All the posts should now have random heights, positions and rotations giving a much more organic look than what we started with.


Comments



Once your scripts grow beyond a few lines long, comments start to get really important so that you don't forget what parts of your code do what. Also if you need to give your code to anyone else, good comments will make things much easier for them. A comment is text notes inside your script that the Maxscript parser knows to ignore. You can make a comment by typing "--" Anything after the -- will be interpreted as a comment and is not executed.


If you need to write more than one line, you'll need to put -- at the beginning of each line. Now go through and comment your random rotation script. You'll notice that the comments show as green.



for obj in $ do -- Loop over currently selected objects

(

randXrot = random -3.0 3.0 -- create a random X rotation value and store as a variable

randYrot = random -3.0 3.0 -- create a random Y rotation value and store as a variable

randZrot = random -3.0 3.0 -- create a random Z rotation value and store as a variable

rot_obj = eulerangles randXrot randYrot randZrot -- Build our rotation object and store

rotate obj rot_obj -- Apply the rotation to the current obj

)



Macroscripts



I'm now going to show you how to make your script into a macroscript that you can bind to a shortcutkey or set as a menu option or button inside max.



There is a function that we will be using strangely enough called macroscript. Here is a


template:



MacroScript Script_Name category:"Category Name" buttonText:"Name of Button or Menu Item"


tooltip:"Tooltip Name"

(

your script code goes here

)



Obviously you will need to substitute names of your choosing into it.

Here is what my final script looks like:



MacroScript Random_Rotate category:"Rhys Tools" buttonText:"Random Rotate" tooltip:"Random


Rotate"

(

for obj in $ do -- Loop over currently selected objects

(

randXrot = random -3.0 3.0 -- create a random X rotation value and store as a variable

randYrot = random -3.0 3.0 -- create a random Y rotation value and store as a variable

randZrot = random -3.0 3.0 -- create a random Z rotation value and store as a variable

rot_obj = eulerangles randXrot randYrot randZrot -- Build our rotation object and store

rotate obj rot_obj -- Apply the rotation to the current obj

)

)

Save it and evaluate it (CTRL+E)



Maxscript will appear to do nothing and a number will be returned in the listener. This is good.

Now open Customize>Customize User Interface and under the category dropdown, there should be one labeled "Rhys Tools" (or whatever you decided to call yours) You can now make this a button or as I usually do, create a "Rhys Tools" menu bar item and add it there.

now whenever you click the item, it will randomise the rotations of whatever objects you


have selected within +/- 3 degrees.

3D Max Variables Tutorial

Posted by virtualinfocom On 12:32 AM 0 comments

We're going to step it up a level in this tutorialThis one should take about 10 mins to complete.


Intro



We will be covering four main areas.



1: Variables and data types

2: Loops

3: Comparison Operators

4: If statements



Variables



You can think of variables in MXS (maxscript) as a temporary named storage place for an "object" of some sort. think of them like lockers at the swimming pool. there are a huge number of them available (unlimited) and they all have nothing in them and are unnamed.

Once you put something in a locker (variable) - it might be a number, a piece of text or even a modifier - and give it a name it will always be in there until you replace it with something else.

To set a variable in maxscript you simply type the following:



variableName = variableValue



The variable name can be anything you like and the value can be almost anything as well.


For now we will use a float which is a number with a decimal place ourVariable = 34.5

if you enter that into the listener and execute it, it will return 34.5 now if you type an expression such as:



2 * ourVariable



Maxscript will return 69.0



The main data types in maxscript are the following:



Float - these are numbers will a decimal component to them ie 234.643

Integer - These numbers are whole numbers only ie 5 or 200

Boolean - true or false

String - this is a piece of text. To set a string you need to enclose it in quote marks


ie:



myStringVariable = "Maxscript sure is handy"One last thing. You can convert different data


types from one to another like this:



"35" as integer



the 35 is a string (because it has quote marks around it) but the "as integer" after it,


turns it into an integer. Obviously "as string" and "as float" do as you would expect.



Loops



Loops are where maxscript becomes really powerful and useful. They enable maxscript to do


repetitive tasks rather than you and the mouse.



Imagine you have built a scene with many objects. You have added a turbosmooth modifier to


all the objects with an iteration value of 2. This is now causing you problems because the


scene is too slow to navigate and you wish you had set the iterations to 1 with a


rendertime setting of 2.



Here is the code:



for obj in $ do

(

obj.modifiers[#turbosmooth].iterations = 1

obj.modifiers[#turbosmooth].useRenderIterations = true

obj.modifiers[#turbosmooth].renderIterations = 2

)



We will now look at it line by line.



for obj in $ do - Our for loop is saying in plain English: "For the objects in our current


selection, do the commands inside the following brackets."



( - We open the brackets

obj.modifiers[#turbosmooth].iterations = 1 - we set the iterations to 1



obj.modifiers[#turbosmooth].useRenderIterations = true

obj.modifiers[#turbosmooth].renderIterations = 2 - these lines should be obvious to you by


now.



) - We close the brackets to end the for loop.



Max will keep looping through the code on every object in the selection until it has done


them all.



You can test the code by making a bunch of objects all with turbosmooth on them. THEY MUST


ALL HAVE A TURBOSMOOTH MODIFIER. if one object doesn't have a turbosmooth modifier, when


MXS tries to talk to it, it won't find it and your script will fail with an error. This


obviously isn't very satisfactory.



Comparison operators



We can solve this problem by adding an "If" statement to the code



But first of all we'll look at some comparison operators. if we have two items such as the


numbers 5 and 2, we can compare them in different ways try typing the following into the


listener:



5 == 2

-Is 5 equal to 2? -This returns False



5 != 2

-Is 5 NOT equal to 2? -This returns True



5 < 2

-Is 5 less than 2 -This returns False



5 > 2

-Is 5 greater than 2 -This returns True



There are more as well which you'll find useful in due course.



If Statements



The way if works is like this:



if (expression resulting in true or false) do

(

code goes here

)



Here is a sample which you should be able to read easily by now:



if (obj.modifiers[#turbosmooth] != undefined) do

(

obj.modifiers[#turbosmooth].iterations = 1

obj.modifiers[#turbosmooth].useRenderIterations = true

obj.modifiers[#turbosmooth].renderIterations = 2

)



That will check an object to make sure it has a turbosmooth modifier and then if it does,


run through the code in the following brackets



Conclusion



Now when we put it all together, we get the following script:



for obj in $ do

(

if (obj.modifiers[#turbosmooth] != undefined) do

(

obj.modifiers[#turbosmooth].iterations = 1

obj.modifiers[#turbosmooth].useRenderIterations = true

obj.modifiers[#turbosmooth].renderIterations = 2

)

)



It should happily run through every object in your current selection and if it has a turbosmooth modifier, set it to the values we specified.

3D max Script tutorial

Posted by virtualinfocom On 12:26 AM 1 comments

I'll hopefully do a few of these over the next while. I'll start off really really basic for those who have always wanted to learn maxscript but haven't been able to get started. (that was me for a long time!)



The best way to learn maxscript is to learn a few basic tricks that you can use in your everyday work. You can then extend your knowledge as you come across tasks that you can *almost do with your current knowledge.



Intro



Ok, first of all I'll go over a few basics.



To follow allong with these tuts, open the maxscript listener by


hitting F11.



The pink area up the top is the listener where if you enable the


macrorecorder, it will tell you what max is doing in maxscript


terms as you do regular tasks in max. We won't pay attention to


this area in this tut.



The white area is where everything will be happening. Delete the


"Welcome to maxscript" message so we have a blank slate to start


with.



The Basics



Create a sphere in the scene so we have an object to talk to.



There are two simple ways to refer to an existing scene object in


max. You can select it and refer to the selection or you can refer


to it by name. The way maxscript refers to objects is by their


name with a $ in front. So to refer to the sphere you just


created, type:



$Sphere01



Now, with the cursor at the end of that, hit the enter on the


numeric keypad. That will execute the current line. If you want to


execute more than one line, select them all and hit numeric enter.



once you hit enter, maxscript will return the following in blue:

$Sphere:Sphere01 @ [10,-5,0]



The last numbers will vary depending on where you created the


sphere in the scene.

This is confirmation that you are talking about the sphere and


that your syntax is correct.



Object Attributes



Now lets try something slightly more useful. Type:



$Sphere01.radius



and hit numeric enter to execute. maxscript will return the radius


of the sphere!

Notice how there is a hierarchy to the command. You started with


the object itself then a period (.) then the parameter belonging


to the object. You can refer to other parameters the same way. ie;



$Sphere01.segments will return the segments value.



Setting attribute values



Now what we want to do is change the values not just look at them.



Simply type:



$Sphere01.segments = 35



You'll notice as soon as you execute the line, the sphere changes


it's segments to 35!

Well you could have done that faster with the GUI right? What if


you have 25 spheres all with different radii and you want to just


change their segment count? (a common problem)



Working on selections of many objects



I referred earlier to the fact we can refer to objects by


referring to the current selection. In maxscript the shortcut to


this is to simply select an object (select your sphere) and type:



$



When you execute this, you'll get the same result as if you had


typed $Sphere01

Now we are going to exploit the power of "mapped functions"



Create 10 spheres of random radii and position. Select them all.


Now type the following and execute it:



$.segments = 10



All the spheres will retain all their setting except the segments


on all of them will be set to 10.



Thats it for now!



Conclusion



Play around with other objects and other attributes.

if you want to know what parameters are availiable to you on a


given object, type:



showproperties $



For the sphere, that will return the following list:



.smooth : boolean

.radius : float

.segs : integer

.mapcoords : boolean

.slice : boolean

.hemisphere : float

.sliceFrom : angle

.sliceTo : angle

.chop : integer

.recenter : boolean

.realWorldMapSize : boolean

false

virtualinfocom

game design game demo

Posted by virtualinfocom On 1:04 AM 0 comments

Firefox speed up

Posted by virtualinfocom On 6:23 AM 0 comments

Yes, firefox is already pretty damn fast but did you know that you can tweak it and improve the speed even more?

That's the beauty of this program being open source.
Here's what you do:
In the URL bar, type “about:config” and press enter. This will bring up the configuration “menu” where you can change the parameters of Firefox.

Note that these are what I’ve found to REALLY speed up my Firefox significantly - and these settings seem to be common among everybody else as well. But these settings are optimized for broadband connections - I mean with as much concurrent requests we’re going to open up with pipelining… lol… you’d better have a big connection.

Double Click on the following settins and put in the numbers below - for the true / false booleans - they’ll change when you double click.

Code:
browser.tabs.showSingleWindowModePrefs – true
network.http.max-connections – 48
network.http.max-connections-per-server – 16
network.http.max-persistent-connections-per-proxy – 8
network.http.max-persistent-connections-per-server – 4
network.http.pipelining – true
network.http.pipelining.maxrequests – 100
network.http.proxy.pipelining – true
network.http.request.timeout – 300


One more thing… Right-click somewhere on that screen and add a NEW -> Integer. Name it “nglayout.initialpaint.delay” and set its value to “0”. This value is the amount of time the browser waits before it acts on information it receives. Since you’re broadband - it shouldn’t have to wait.

Now you should notice you’re loading pages MUCH faster now!

Doom 3 Tips to speed up

Posted by virtualinfocom On 6:18 AM 0 comments

First, open your doom3\base folder. Doubleclick on the pak000.pk4 file. In the "window can't open this file .. .bla bla" dialog, go on and associate the file with an app like WinRar. With this file open in WinRar, go to the glprogs directory in the file. In there you'll find the shaders. The interaction.vfp file seems to be the main rendering shader. Altering this shader to output a constant color turns most objects into that constant color, except for stuff like computer screens etc.

So doubleclick the interaction.vfp file to open it (you may have to associate the .vfp extension with a text editor like notepad or wordpad first since we're going to edit the file). Scroll down to the fragment shader. You'll find these rows:

Code:

PARAM subOne = { -1, -1, -1, -1 };
PARAM scaleTwo = { 2, 2, 2, 2 };


Add this right below them:

Code:

PARAM specExp = { 16, 0, 0, 0 };


Now scroll down to this:

Code:

# perform a dependent table read for the specular falloff
TEX R1, specular, texture[6], 2D;


Comment out that line by adding a "#" to it, and add another line that will do the same thing with math instead, so it should look like this:

Code:

# perform a dependent table read for the specular falloff
# TEX R1, specular, texture[6], 2D;
POW R1, specular.x, specExp.x;


Save the file and close your text editor. WinRar will ask if you want to update the file in the archive, select yes. Close WinRar and enjoy about 40% higher performance in Doom3.

superman and batman wallpapers for free

Posted by virtualinfocom On 5:05 AM 0 comments

source code keyboard navigation using C++

Posted by virtualinfocom On 12:40 AM 0 comments

 Source Code
 keyboard navigation using C++

#include
#include
#include
#include


void main()
{

int d=DETECT,m;
initgraph(&d,&m,"");

union REGS ii,oo;

int x,y;
x=getmaxx()/2;
y=getmaxy()/2;

while(1)
{

    if(kbhit()) //scanning the keyboard hit
    {
        //interrupt issue to scan the ascii ans scan codes of the key hit
        ii.h.ah=0;
        int86(22,&ii,&oo);
        //if esc key has been pressed
        if(oo.h.ah==1)
        {
        }
        //if right key has been pressed
        if(oo.h.ah==77)
        {
        }
        //if left key has been pressed
        if(oo.h.ah==75)
        {
        }
        //if upper key has been pressed
        if(oo.h.ah==72)
        {
        }
        //if lower key has been pressed
        if(oo.h.ah==80)
        {
        }
    }//kbhit

}//while 1

}

gaming arts

Posted by virtualinfocom On 2:10 AM 0 comments

game development using JAVA

Posted by virtualinfocom On 7:43 AM 0 comments

A New Era of Gaming
Ah, games.
Games have almost a religious, ritual aspect to them. They allow people to enter together into a higher state of being, pushing skills to new limits and experiences to new heights. They allow ordinary people to experience extraordinary emotions—the emotions of the warrior, the king, the spy, and the lover—while remaining protected in a safe environment.
Now all this might sound like a bit of a heavy-handed way to describe Frogger, but it's fair to say that games transport us and amuse us in ways that no other form of entertainment can.

A Brief History of Games
Games have been with humanity since the beginning. A 5000-year-old Mancala-like game board, carved from stone, was recently unearthed in the Sahara. The game of Go, popular in Oriental countries, has reportedly been around since 2000 B.C. Backgammon-like games such as Tabula and Nard are talked about in ancient Roman scripts, and even in the Bible. And Tarot decks, initially used to help predict the future, evolved into today's Bicycle playing cards.
A decade or two ago, the only games that people spent much time with were professional sports, board games like Monopoly and Chess, paper and dice games such as Dungeons and Dragons, and card games like Poker or Hearts. Some games were for heavy money, some were bone-jarringly competitive, but most were just about good clean fun.
With the advent of computers, games entered a new era. Games became one of the main reasons many people brought these strange beige boxes called computers into their homes. Whether battling through a simple graphical tennis game such as Pong, or a rich, text-only world such as Zork, these were wholly new types of games that could be played anytime against a most formidable opponent: a game designer who had programmed your computer, long ago, showing it how to defeat you.
The arcade wave of the '70s and '80s, led by hits such as Pac-Man, captured the hearts and ate the quarters of millions of youths. Console systems such as the Magnavox Odyssey, the Atari 2600, Mattel Intellivision, and ColecoVision brought the fun of the arcade to the players' own living rooms. Then, in 1985, a box known as the Nintendo Entertainment System blew people away with stunning graphics and intricate gameworlds, typified by such hits as Super Mario Brothers.
2
Computer gaming entered a whole new stratum of mass popularity and acceptance with bestsellers such as Doom, followed by Quake, and later Tomb Raider. Clearly, ultra-realistic 3D worlds were a hit. The more a game made a player feel as if she were actually inside another reality, the better. Graphics became richer and richer as 3D cards and engines doubled in speed and performance with each passing year. Super Nintendo gave way to the Sony PlayStation, and currently the Nintendo GameCube faces off against the PlayStation 2, not to mention Microsoft's daunting new Xbox.
Multiplayer Mania
A funny thing happened on the way to virtual reality-ville. In the late '90s and early 2000s, with games like Ultima Online, Everquest, and Age of Empires II, not to mention the spread of casual game Web sites such as Pogo, Yahoo Games, and Microsoft's MSN Gaming Zone, it became clear that what mattered to a whole slew of gamers wasn't only the richness of graphics or the detail of blood and gore—but the presence of other, real people. Multiplayer gaming, long popular with the geek crowd, had entered the mainstream.
In a way, games had come full circle. Once again, games were serving a social purpose, becoming a way for two or more people to enter new worlds and test new skills together, relating to each other in entirely new ways.
Micro Devices, Micro Lifestyles
While multiplayer gaming continues to grow in popularity, another big paradigm shift is happening.
It's becoming harder and harder to find people who don't carry network-enabled embedded devices with them wherever they go. Whether it's a PDA such as a Palm device or iPaq, or a mobile phone such as those crafted by companies like Nokia or Motorola, people are getting used to connecting and communicating with each other anytime, anyplace, and anywhere.
Today, there are more than 600 million mobile-phone users worldwide. In the United States and Europe, mobile phone users generally tend to be affluent, educated, and they often have lots of time on their hands. The picture is different on different continents. In Africa, Asia, and South America the masses have flocked to mobile phones because land-line access and Internet service are too expensive.
According to the Yankee Group, people in the United States spend 50% more time commuting than in any other country. This is the perfect time to pull out a mobile phone and play some quick games.
Additionally, Datamonitor has researched people's game-playing behaviors in Asia, Europe, and the United States, and has concluded that most people like to play wireless games on evenings and weekends.
In the near future, we will likely see micro devices become even smaller and more specialized. Phones the size of earplugs, voice-activated assistants on wristwatches, and smart chips on credit cards are all becoming a reality.
This is a continuation of the paradigm shift that began in the 1970s, with microcomputers taking the power away from huge, monolithic mainframes. Clearly, millions of small devices working together yields much more distributed power than one big, central device.
3
Unsurprisingly, games are keeping up and even helping to lead this paradigm. While it might seem silly to try to achieve a rich, meaningful immersion on a tiny 100x100 pixel screen, there's one thing mobile phone games give you that even the best consoles can't provide: They're always with you, and can be played anywhere you go. This not only means that games can now be more convenient, but wholly new types of games can be designed that take advantage of new lifestyles.
Enter Micro Java
The Java language, created by Sun Microsystems, is another example of a paradigm shift. As a language that had no pointers or complicated memory operations, was object-oriented, secure, and could run on most any browser or platform, application development suddenly opened up to the masses in a way that never seemed possible before. Java made it possible for millions of programmers to create quality applications in record time and quantities.
The Java 2 Micro Edition (J2ME), or Micro Java, as we'll call it in this book, is an attempt to take the best aspects of Java and pare them down for smaller devices such as mobile phones; set-top boxes that add interactivity to television, pagers, handheld organizers and personal data assistants (PDAs); as well as embedded chips that you find in devices such as refrigerators, microwaves, "smart" credit cards, and automobiles.
Most every major mobile phone and handheld device manufacturer immediately realized the potential of J2ME: If Java were to be placed on the gadget, hundreds of thousands of developers would immediately be able to create applications and add value. Furthermore, because it's Java, a program written for one device would be able to run on another device with little or no modifications. That certainly makes more sense than trying to force developers to learn a native language and API in order to create programs for your phone.

Before, Between, and Beyond J2ME
In many cases, handheld games will not be written in Java alone. Rather, games will be built atop older mobile phone technologies. In the second section of this book we'll look at the technologies that surround and support J2ME gaming, such as the Wireless Application Protocol (WAP) and Standard Messaging System (SMS). Furthermore, we'll cover specific enhancements to the current nes from brands such as Nokia, Siemens, Motorola, Ericsson, and NTT DoCoMo, allowing you to take games to a new level no matter what your target platform happens to be.
For example, some carriers provide location-based information. This is an extremely exciting and relevant tie-in to gaming. This will allow people to literally use their mobile phones to hunt down or otherwise play with each other through the physical, bricks-and-mortar world.

 Let the Games Begin!
This is where things start getting deep. We'll thoroughly cover the nooks and crannies of J2ME, along with in-depth discussions on graphics, sounds, animation, multiplayer networking, and other game-related topics.
Additionally, one of the most important things this book will show you are the limitations of Micro Java and, in certain cases, how to get around them. Each section will include lots of source code, so that you can immediately begin compiling,tweaking, and testing things out.

 J2ME Extensions
J2ME is a cross-platform standard. Any program you write in J2ME should work, more or less, on any other mobile phone or handheld device. However, every device has its own specialties and intricacies.

Application Programming Interfaces (APIs) from the world's largest handheld hardware platforms.
Finally, this section will show you the best ways to take game elements from one platform and
port them to others.
Micro Racer
Every good thing must reach its end. But rather than just stuff you full of knowledge and then leave you alone in the vast, dry desert to figure everything out, this book includes the full code to a superior Micro Java game that we call Micro Racer.
Micro Racer is a fast moving, multiplayer experience. The game pushes the enveloper on Micro Java's graphical, sound, and networking abilities. You begin the game with a simple racecar. You can race around all you want, picking up bonus points, avoiding crashes, and exploring new tracks.
Over time, however, your car will experience wear and tear and might even break down. You will need to log into The Garage to fix up your car.

A Bit About Game Design
Before you can begin the fun/tedious/interminable process of actually typing Java code, compiling it, testing it, debugging it, and so on, you'll actually need to design the game you're interested in. If you already have a game design written, or are working based on somebody else's game design, you can skip this section.
But if you're interested in a brief discussion of how the heck people think up new types of games, you've come to the right place.
Game design is always hard. Designing for a medium as new as mobile phones is even harder. But it is the best of worlds, as well as the worst of worlds. Although the devices you'll be designing for are limited compared to game consoles or PCs, they are also an entirely new phenomenon being used in entirely new ways.
If you can understand the way mobile phone users really think and act, you might be able to create a type of game that nobody has ever thought of before.
The Game Design Process
Every game designer develops his or her game using a different process. Some people like to jump in and begin coding straight away; others like to create a monolithic 500-page design document outlining every last variable and button.
The type of process you use depends on the size and experience of the development team, as well as your personal philosophy on what makes a good game.
No matter what approach you choose, pretty much every game goes through the four P's:
1. Preproduction
2. Prototyping
3. Programming
4. Playtesting
Preproduction
Preproduction usually involves generating a whole lot of paperwork.
Different game designers work in different ways. Some are technically minded, and like to jump right into the thick of things and create use-case diagrams, specifications, and so on.
Others are more artistically minded, and enjoy storyboarding the graphics, letting somebody else worry about how to make nitty-gritty interactions happen.
But pretty much everybody, at some point, needs to use regular pen and paper and just spell out the story of the game—the feel, the depth, the breadth, and the intent.
Taking the time to write clear design documents and storyboards during preproduction will pay off later during development. The more you can describe every bit of art, sound, and interaction, the easier it will be to put all these pieces together during the frantic phase of actual development.
The bigger your design team, the more helpful a solid design document will be in keeping everyone speaking the same language, understanding the same goals, and working on the same product.

Answering Questions

• What is the game's genre?
• What are the limitations of the game?
• What is the game's central mission?
• What are the inputs, and what are the outputs?
• How will the game play out?
8
Picking a Game Genre
There are literally millions of games in the world, and tens of thousands of computer games. But
all these games can be broken down into genres.
A genre is more than a style of gameplay; it is also a mood. Different genres appeal to wholly
different audiences. Clearly, a gory first-person shooter is expected to have a different interface,
feel, sound effects, and speed than a long, drawn-out, and detailed military simulation game.
Genre will help define how the game looks, how it feels, how it plays, and who it is targeted to.
This section will briefly cover various genres, helping you to hone in on a gameplay experience.
Copying, Stealing, and Cloning
A sad fact of life is that most games on the market are basically clones of other, more successful
games.
When Java applets first came out, most of the games that people created were exact copies of old
hits from the Apple II, Atari 2600, or Commodore 64 era. Often, the only thing that a programmer
would change would be the name and a few graphics: Pac-Man might become something like
Pork Man.
Likewise, it is tempting to take existing games and create Micro Java versions of them.
Furthermore, there's nothing wrong with it. After all, classic games have been time-tested and
proven to be popular with the masses.
CAUTION
If you are creating games as a hobby, then there's no problem with taking your favorite arcade
games and squeezing them into a mobile phone so that you, and others, can enjoy them
portably.
However, if you are creating games commercially, not only is copying an existing game
illegal, but you'll likely find that there won't be a big market for it. As much as people like to
play their standard favorites, the world is thirsting for something new. History has shown us
that the company or person that uses Micro Java to design a game genre that nobody has ever
seen before will be the one that triumphs in the end.
All that being said, some of the best games ever created borrow familiar elements from one or
more forgotten genres and breath new life into them. For example, real-time strategy games—
games in which the player controls many discrete units, all at once—have existed for the past few
decades. But it took Westwood Studios to create a game in the genre with a strong story, wellbalanced
play, and distinctive military units. The game was Command and Conquer, and it
became an instant hit.
Because Micro Java game designers are stuck writing to such a limited platform, you are forced to
think about unique game design itself, and not rely on fancy graphics and sounds to make sales.
Some of the best games were black and white, 8-bit, and had less than 64K of memory. Try to
analyze those games and understand what made them great. Using classic games for inspiration is
not only acceptable, it is essential.
What Types of Games Are Possible?
9
Ultimately, the most successful games will combine genres in entirely new ways. For example, the
Tomb Raider series is so popular because it blends action, adventure, puzzles—and the shapely
Lara Croft.
The following list of genres is just a starting point to get you thinking. This list is in no way
complete.
• Action Games—These are games that involve fast reflexes. The graphics are generally as
realistic as possible, and the audio is usually rich and loud. The play is usually fast paced,
and multiplayer versions are usually very responsive. The audience consists generally of
adolescent males.
Because of the speed, responsiveness, and powerful graphics, action games are probably
the hardest genre to implement on mobile phones and other handheld devices. This book
will show you how to do it, anyway.
Examples of such games include first-person shooters such as Quake, space games such
as Defender or Missile Command, maze games such as Pac-Man, and paddle games such
as Pong.
• Combat Games—These games usually involve two characters facing off against each
other and trying to beat each other up. Often, the characters will have special powers.
Winning the game requires that the player have quick reflexes as well as memorize all the
possible "moves."
Examples include Virtua Fighter, Street Fighter, and Mortal Kombat.
• Adventure Games—These are games that involve a quest of discovery through new
worlds. These are usually structured similarly to a good movie or book, with a strong
sense of story, character, plot, and locations.
Originally, these games were wholly text-based, such as Zork; but more modern games
such as Monkey's Island and Riven use advanced 3D graphics, strong artificial
intelligence, and rich audio to flesh out the game worlds.
• Puzzle Games—These games require the player to use logic, and often involve the
arrangement or matching of symbols. Tetris is the king of all puzzle games.
The audience for puzzle games is usually made up of intelligent, crafty adults.
• Strategy Games—These games often involve lots of pieces, lots of possibilities, and
rewards for thinking ahead.
War games such as Panzer General are a popular type of strategy game in which you try
to recreate a famous battle and pit various armies against each other. The audience for
war games is very enthusiastic, but very small.
Real-time strategy games such as Command and Conquer and Warcraft are much more
popular with the masses. These games often involve more tactics than long-term strategy.
Players must manage resources such as electricity and money while assembling
specialized armies consisting of many different units. Quick reflexes are as important as
long-term planning.
10
Finally, classic two-player board games such as chess, Reversi, Connect Four, and
checkers are strategy games. The audience for this type of classic turn-based game is truly
mass market.
• Role Playing Games (RPG)—These games generally allow you to fill a role. Your
character has certain attributes such as Strength and Wisdom, and these attributes can
change over time as your character explores new dungeons and fights new monsters.
Paper and dice games such as Dungeons and Dragons invented this genre. The typical
audience for this type of game is similar to those who read science fiction—usually
intelligent, male adolescents.
With more graphical RPGs such as Diablo III, Everquest, and Ultima Online, the genre
has moved online as the basis for a rich, social, active community.
• Simulation Games—These games allow the player to control a character, a machine, or
system. Often, these games rely upon ultra-realistic graphics and control panels.
The more specialized the simulation, the smaller the audience. A very detailed flight
simulator may only appeal to real pilots. Real-life simulation games such as SimCity or
The Sims, however, are widely popular with males and females, children and adults.
• Trivia Games—These games are tests of (often useless) knowledge. Trivia games can be
played in a straightforward question-answer format, such as Who Wants to Be A
Millionaire? or You Don't Know Jack, or by using a more sophisticated game board, as
with Trivial Pursuit.
Most game shows are based on trivia. The audience for trivia games is the mass market.
• Word Games—These games involve the creation of words, based on specific rules. The
more words the player knows and is able to build, the better the player does. Examples of
this genre are word builders such as Scrabble or word searches such as Boggle.
Word games often appeal to an intelligent, middle-aged female audience.
• Card Games—Card games usually combine chance with skill. A player is dealt out a hand
and must play out the hand, given a set of rules.
A card game such as poker involves bluffing and betting, appealing to a much more hardcore
gaming crowd than social trick games such as Hearts or Spades.
Additionally, collectible card games such as Pokemon or Magic: The Gathering combine
elements of the RPG, allowing players to collect decks of cards, battle the decks against
other players, and combine cards to achieve unexpected results. This type of game usually
appeals to adolescents or hard-core RPG gamers.
• Games of Chance—Any game based upon random result. Most casino games are games
of chance, with a little skill thrown on top. Roulette, slot machines, or the card game War
are the most basic games of chance.
Games such as Backgammon involve chance, but also require a great amount of strategy.
• Sports Games—These games allow the player to experience physical sports such as
football, basketball, wrestling, or skateboarding. The games usually have excellent graphics and highly realistic physics. These games usually appeal to the same fans that enjoy the sport itself.

Some sports games are coaching or managing games, and allow the player to take a more strategic, top-down, and sideline approach to team building, player trading, or gameplaying. A special subset of sports games worth singling out is racing games. These games usually involve very detailed roads and landscapes, very specialized user input, and very responsive physics.
• Toys—This is the rarest category of games, but also one of the most interesting. These games generally have no winner or loser, but allow the player to build or play with virtual
pieces.
Virtual pets, virtual mousetraps, virtual robots, digital musical instruments, and other educational and kids games often fall into this category.
Know Thy Limits

Designing Within Restrictions
In this book we're focusing on handheld devices such as mobile phones. A mobile phone typically
has a tiny black and white screen, tiny bins of memory, ultra-slow screen refresh rates, turtle-like
processor speed, and painfully limited sound.
So a game with instant trigger finger reactions, endless 3D dynamically shaded passageways, a
massive multiplayer environment, and with a soundtrack by Green Day is not going to be possible
on mobile phones. Not today, at least. There will definitely be a day—even relatively in the near
future—when chipsets are fast enough and small screens are colorful enough for this to be
possible.
In a way, designing a game for a mobile phone is a blast back to the olden days of game design,
for platforms such as the Apple II and Commodore 64. You're now back in a world where every
bit counts, only worse: You now have to fit it all on a postage-stamp size screen.
There is another drastic difference: One thing most J2ME-equipped mobile phones enable is easy
interactivity with other mobile phones. For the first time, communication might become more
important than gameplay.
Designing Around Restrictions
It is useful to remember here that no matter how good a game's graphics are, the real action always
occurs inside the player's head.
A game's graphics and other elements are only useful if they transport a player to a different
mindset, and allow the player to experience a believable fantasy.
Your challenge, then, is to transport the player to a rich, believable, exciting, and emotional
fantasy world while using minimal graphics and audio. Sound hard? Not really. Novelists and
storytellers have been doing just that for centuries, using no graphics at all.

That is the first clue: Good writing in Micro Java games becomes more essential than ever. A good Micro Java game designer is also about turning lemons into lemonade. Good designers can actually take new devices such as mobile phones and use them in ways that nobody has ever imagined or expected, but that are wholly intuitive and logical.
For instance, one of the most ingenious mobile phone games out there is a Japanese game called Turibaka Kibun (which means Crazy for Fishing), created by Dwango. To go fishing, you pick your bait, choose a fishing hole, and then literally extend the antenna of your phone and hold it out. Eventually your phone will vibrate, which means you have a fish on the line. If you get lucky,you'll be able to reel in a nice trout or bass.

Another example of a game-like event that could only happen in today's mobile phone era is a performance called Dialtones. This is a symphony concert performed entirely though the ringing of the audience's mobile phones! Visit http://www.flong.com/telesymphony/ for more information and sample songs.



Inputs and Outputs
13
A game, at its core, consists of user input, followed by some sort of output. You should try to list
every type of input, and what the effect will be.
Some input occurs because the player does something. Other types of input occur just because the
game state has reached a specific point.
Typical input and other events to keep track of and define include the following:
• The keyboard: Which keys on the handset will be used, when, and for what?
• The mouse or joystick: Most handheld devices do not have a mouse, but some do have a
touch screen or stylus. How will this affect the input?
• Menus: What main and top menus will there be in your game?
• Buttons: What buttons will there be?
• Form widgets: How will elements such as pull-down menus, radio buttons, checkboxes,
and text fields work together?
• Time: Will there be any countdown timers? How does time play a role in the game?
• Collisions: What happens when graphical elements collide?
Next, you should try to create a list of every element that will actually be in the game. These
elements vary widely. Some will be visible on screen, and some will be hidden game state
variables that your program will need to juggle:
• Graphical elements: What will the user see? These are usually 3D models or sprites.
• Sound effects: What audio effects should play, and when?
• Background music: What music will be playing?
• Background art: What will the environment look like, and how should it be rendered?
• Levels: Will the game have multiple levels? If so, what will differentiate them?
• Interface: In order for input to happen, there will need to be an interface. How will this
interface look, roughly speaking? The interface also usually includes a readout of
variables such as score, number of lives remaining, amount of ammunition, and so on.
What information needs to be here?
• Artificial intelligence: Will there be any computer players? What will they look like?
• Global variables: Try to create a list of global variables that will change as the game is
played. This includes the score, the round number, and so on.
Often, a design document will list each input and output element in a table and explain how
different elements interact with each other. You should also try to explain the different classes and
subclasses of elements, and how they all relate.
This document can often be used to define exactly how the program should be structured in an
object-oriented manner. This will help the object-oriented Java programmer design the actual
software. For example, a typical unit in your game may be a DeathMosquito. This DeathMosquito
may be part of the FlyingUnit class, which may descend from the WarriorUnit class, which
will be derived from the generic Unit class, which in turn may be a child of the Sprite class.
Gameplay
The next step is to actually define the rules of the game. This is where you can begin to determine
all the variables, graphical elements, and other gameplay elements.
Ultimately, you should be able to create a game state—a list of variables, or perhaps just an array
of bytes, that defines the exact state of the game. Strip away the fancy graphics, graceful
animations, streaming TCP/IP sockets, and eardrum-beating sound effects, and you'll notice that
games—no matter their genre or complexity—amount to nothing more than a pile of bytes. Every
14
player's move and every artificial intelligence decision eventually expresses itself as a change to
this core game state data.
You should be able to stop the game at any time, restart it, plug in the game state, and be at the
exact same place you left off.
Java makes it quite easy to keep an abstract notion of game state. Just create a class with all the
data structures you need, tap in methods to access or change that data, and you're off and running.
By designing state as an object, various parts of the state can quickly be accessed and altered.
Multiplayer games often keep the main copy of the state on the server side, with additional copies
in each client. This permits the server to be the final judge of what the "game" actually is. The
client, meanwhile, can contain just enough information to be responsive. In other words, the client
should be able to tell whether a player's move is legal or illegal, but the server will actually
register the move and make changes to the game state accordingly.
The other important piece of this picture is how the game is won, and exactly how to determine
winners and losers. You should be able to analyze the game state variables and determine whether
the game has reached the winning condition.
For multiplayer games, it is usually useful to draw a client-server diagram and show which
messages will need to be sent over the network. This can help you create use-case scenarios to
take care of any eventuality.
Other Resources
There are many books, magazines, and Web sites that discuss game design. Some of the best
resources can be found online:
• http://www.gdse.com/
• http://www.gamasutra.com/
• http://www.gamedev.net/
Prototyping
The more original your game idea, the more important it is to prototype it. Until you and some
friends are actually playing the game, you will never have any idea how successful your genius
idea really is.
To prototype a game, one can commonly use a notepad, a few index cards, and some pencils. Each
index card can be a game output element. You can position these relative to each other, or move
them around accordingly.
Get a few friends together, explain the rules of the games, and "play it." You can act as the
computer and game master, keeping track of the score and making sure everybody is playing
correctly.
After a few minutes of play, it will become remarkably evident what the weaknesses and strengths
of your game design are. Continue redesigning the game and retesting it, until your friends get
sick of it or until you're happy with the results.
Additionally, you can easily prototype most games using Java Standard Edition (J2SE). This is
another joy of Java—it is extremely easy to create a simple application that takes in command line
input, processes some simple rules, and then spits out an output.
15
For example, if you are creating a new type of card game, you can have your Java prototype
shuffle the cards, deal them out, accept valid moves, and keep track of who has what.
Eventually, if you only use text for input and output, it will be easy to transport the prototype in
the Java 2 Micro Edition environment. The prototype can become the actual rules engine for your
final game.
Programming
This part of game development is similar to developing any other application. You've got a
specification and you've got to carry it out, on time and on budget.
You've got to create your Java classes, possibly create a server, create any artwork or audio assets,
and fold it all together.
Most games are basically an endless loop. Speaking in the most general terms, the loop works as
follows:
1. Paint the screen.
2. Get any user input.
3. Make any game state changes.
4. Redraw the graphics or sounds accordingly.
Most games also have engines for each major multimedia aspect. The advantage of having a
generalized engine is that it can be reused for future game products. Typical engines include some
of the following:
• Graphics engines are a quick way of drawing the graphics. 3D games will have a special
graphics 3D engine that knows how to take three-dimensional X, Y, and Z coordinates
and transform them onto a flat screen. Other games will have sprite engines that enable
you to take many graphical components and animate them and move them around the
screen relative to each other. Still other games will have isometric engines that draw 3Dlooking
graphics from a set perspective, actually using a series of two-dimensional
overlays.
• Audio engines will play the soundtrack or other audio effects. Often, the engine will mix
together different effects and be smart about fading music in or out depending on what is
currently happening in the game.
• Artificial intelligence (AI) engines act as a separate player in the game. The AI player is
able to compete in the game, often head-to-head against human players.
• Physics engines simulate real movement. Making a ball fall and then bounce
appropriately takes a very complicated series of equations. A physics engine can provide
this.
• Multiplayer engines will communicate with the network, often through a central server,
and enable game sessions to speak with each other.
Playtesting
After the entire game has been coded, debugged, and released, the development has just begun.
Because a game is not a cut-and-dry business application, there is usually no right or wrong. There
is only fun and not fun. You may think your game is highly entertaining, but you're biased—
you've been working on the sucker for the past few months. You also may not be representative of
the market you're trying to appeal to.
16
Big game companies often hire focus groups to playtest their game. They also might release the
game to a small group of beta testers. They'll try to get as much feedback as possible.
Many of the most popular games became huge successes because beta testers loved the game so
much they worked hard trying to communicate small requests that would make the game even
better. When the game company fulfilled these requests, beta testers felt a sense of ownership.
They told all their friends to buy the game, and the news spread like wildfire.
The first playtester should be you. Be honest with yourself. What improvements can be made?
What strategies are too hard, and why is it so easy to gain points if you know a certain trick?
Continue to tweak the game until you're absolutely certain there's nothing wrong with it. You
should then have some friends of yours play your game. This will be more useful if your friends
are avid gamers, and if they are game designers themselves. Watch them closely while they play,
and ask them many open-ended questions about their experience. Notice when they get frustrated
or bored. Notice when they get angry, or when they laugh.
In nearly every case, you will need to go back to redesign and reprogram your game. This might
be as simple as changing a few values, adding a few power-ups, or removing a few restrictions. Or
you might need to totally redo your graphics engine to make it animate more smoothly.
Often times, you'll need to drastically change your game design. And you will need to go through
the entire prototyping and programming process again before you can be absolutely sure your new
design idea works. Fun, huh?
As a rule of thumb, professional game companies often spend as much as a third of the game
development cycle on playtesting and redesign.
Show Me the Money: Micro Game Business Models
If you are a commercial game developer, then you are lucky indeed. You get to spend your days
hacking, designing, and creating objects of joy and entertainment. You get to be a kid for a living.
But if you want to stay in business, you'll need to make money. Clearly, the business model you
choose will differ depending on your end platform and upon your target audience.
Additionally, business models are strikingly different in the United States, Asia, and Europe. In
Europe and Asia, for example, carriers such as NTT DoCoMo offer a profit split with content
providers: The more a user chooses a particular piece of content, the more the content provider
gets paid. This model is exciting, because it encourages thousands of developers to take their best
shot at entertaining the masses.
To date, few North American carriers have been able to offer such a deal. Instead, most content
providers must approach specific carriers and strike specific content deals. This makes it difficult
for small developers to compete or earn any real revenues.
NOTE
United States carriers such as Cingular Wireless, Sprint PCS, and Nextel have expressed
interest in creating profit-splitting services within the next year.
The Business Outlook of gaming

Datamonitor predicts that the wireless gaming market in the United States will have grown to $3 billion in 2006, with 125 million players hungry for good new games.
Advertising and Sponsorships for your game
Advertising and sponsorships are probably the easiest business models to implement, but the most
difficult in which to achieve solid revenues. The idea is simple and well-known: Find a company that has a message, put that company's name, logo, or other creative elements within your game, and you've created a valuable vehicle for the company's message. In fact, many companies have opted to create their own mobile phone games in order to deliver their brand to a cutting-edge audience.
Often, advertisements change from day to day. Ads appear below or to the side of game content. Alternatively, a full screen ad "interstitial" can be shown to the player before or after the game session.
Some of the best advertisements don't even seem like ads at all. For example, many racing games include logos "painted" on the racecars, and football games often include ad banners on the side of the stadium. This touch of realism actually makes the game better, while providing a permanent and well-seen home for a lucky advertiser.
The problem with micro devices, of course, is that there is not a lot of room for ads. Company logos are often small and washed out, and it is often hard to track the number of times a given ad is seen. As screen resolutions improve, however, advertisements and sponsorships will likely become a smart choice. Top games will be able to charge hefty fees for ad placement. After all, if a mobile phone game really takes off, it has the potential to be experienced by more people, and more regularly, than any television, radio, or print ad campaign.
Content Deals
Wireless service providers, cable companies, and other companies that provide the infrastructure for small devices have a lot to gain if a popular game comes along.
Because most mobile phone providers charge their users per minute, the longer a user is connected
and playing a favorite game, the more minutes are being used up. In addition, games could come with incentives. For example, if you pass a certain level in a game, you could get a coupon for 50 free minutes of mobile airtime. Players would work on the game for hundreds of minutes trying to earn a slight discount.
WARNING
Because some carriers charge a flat monthly fee for Internet use, these carriers desire games that don't stay connected and waste precious bandwidth!
But the point remains that carriers have invested more than $100 billion to create a faster, nextgeneration
wireless infrastructure known as third-generation (3G). Current networks run 9.8 kilobits per second. A 3G network will run up to 50 kilobits per second—almost as fast as a computer's modem.

Clearly, carriers are counting on faster and richer applications, such as games, to attract new users and get a good return on their investment.
Currently, there are an estimated 16 million wireless game players in the United States alone. The ARC Group predicts that by 2006 there will be 280 million players. In Japan, NTT DoCoMo recently announced that 52% of wireless Internet revenues are due to games.
Several game companies have been able to strike content deals with major wireless carriers. If you have created a game that you believe will appeal to the masses, it's definitely worth talking with major carriers and figuring out a deal that makes sense for everyone. Pay-For-Play or Subscription
Charging players for a subscription to play a game is a clear path to revenues. For example, a player may be willing to pay $10 per month, $1 per game, or an additional 10 cents per minute.
However, most current users aren't willing to pay anything for mobile phone games. The main reason for this, of course, is that while there are many nice micro games out there, there are few that are so darn fun, so darn special, so darn enthralling, and so darn exciting that users would be willing to part with their cash.
This will change. Bigger and more colorful screens, better audio capabilities, quicker network access times, and faster processors will allow for better games.Additionally, carriers will begin to offer content providers more ways to bill users. Carriers and phone manufacturers are already beginning to create portals whereby users can use their credit cards to purchase and download Micro Java applications. Someday soon, a company will create a micro game so good and so addictive that people will have to play it. Paying a buck or two per game will become second nature. The company that does this will make a fortune, and the world of micro gaming will be changed forever. Perhaps that company will be yours.


The Micro Revolution BeginsWhen Sun Microsystems decided to create the Java 2 Micro Edition, many companies wanted to
be a part of it. These companies all wanted to be able to add J2ME capabilities to their products.
Java holds many advantages:
• Most phones come with a set bundle of applications such as silly games, organization
tools, and basic calculators. Mobile phone manufacturers realize that in order to stay
competitive, phones will need to become expandable, and be able to support tons of
different business and entertainment apps. Users will want to be able to download new
software on-the-fly and erase old or irrelevant programs. A fully functional programming
language such as Java makes that possible.
• It is estimated that 2.5 million developers around the world already know and love Java.
Release a J2ME product and people can start developing for it right away, with little or no
additional training.
• Lots of good stuff is already written in Java. There are already scads of cool Java
applications and applets out there, making it easy to convert the best apps to a micro
format.
• By supporting a de facto standard, hundreds of applications will be available for new
devices the moment they hit the market. For example, if somebody creates a kick-butt
shooter game in J2ME, then it will work on any current and future J2ME devices with
few or no changes.
• Java has a well-defined security model. This means that manufacturers don't have to
worry about a Melissa-like virus getting into a mobile phone's address book and
automatically calling everybody up and sending them the virus.
• Instead of developing and maintaining a proprietary programming language across
various devices, manufacturers would much rather license a stable, known language such
as Java. The same language can now work across various processors and operating
systems.
Wide Support
Just some of the companies that are developing J2ME products and services include the following:
• Far EasTone
• Fujitsu
• Matsushita/Panasonic
• Mitsubishi
• Motorola
• NEC
• Nokia
• One 2 One
• Philips
• Research In Motion (RIM)
• Siemens
• SmarTone
• Sony
• Symbian
• Telefonica
22
Micro Java is rapidly taking hold all over the world.
Asia
The first region of the world to adopt the Java 2 Micro Edition was Asia. In Japan especially, there
has been massive acceptance and penetration of Java phones. According to Nikkei BP, there were
4.65 million J2ME phones in Japan in the first quarter of 2001—out of a total of 14.8 million
mobile phones. That means that 31% of phones in Japan will be Java phones. As handsets become
more functional, it is expected that more than 40% of phones will support Java by the fourth
quarter of 2001. Many different manufacturers—Matsushita/Panasonic, NEC Corp., Mitsubishi,
Sony, and Fujitsu—are creating phones for Japan's NTT DoCoMo wireless service.
Other mobile network operators, such as Japan's J-PHONE GROUP, are unrolling thirdgeneration
wireless networks with Java-phones as the central component. In South Korea, LG
Telecom introduced Java with their i-Book mobile phone.
Europe
The European market was next to fall prey to the Java invasion. Many of the latest phones are
being built atop the Symbian EPOC platform, which supports Java technology. Various companies
will roll out anywhere from 40 to 60 million Java devices. Companies that have signed up to
license the Symbian platform include Ericsson, Motorola, Nokia, Philips, and Psion.
In addition, manufacturers such as Siemens, Nokia, and Motorola released J2ME phones during
the summer of 2001.
North America
The first mobile phone to support J2ME was released in the spring of 2001 by Motorola. The i85s
and i50sx phones, using the Nextel service and the Motorola iDen network, are predicted to be just
the beginning of Motorola's new product line. The Motorola Accompli 008, released in July of
2001, is the first J2ME mobile phone for GSM networks. To understand more about GSM
networks, check out Chapter 4.
Nokia has also recently announced that it will support Java technology in most of its future mobile
terminals, with plans to sell more than 50 million Java handsets in 2002 and 100 million Java
phones by the end of 2003. Nokia phones will support various flavors of Java, ranging from MIDP
to PersonalJava and JavaPhone.
In addition, many North American wireless services already support Java, or are planning to
support Java network traffic in the near future. These companies include Nextel, Cingular, and
Sprint PCS.
High-End Java Devices: Set-Top Boxes, Phones,
Consoles
Most high-end devices run a special version of J2ME known as PersonalJava. In addition, many
devices implement the JavaTV APIs.
Set-top box manufacturers that support J2ME include Motorola and Philips.
PersonalJava

PersonalJava is an application environment for network-connected, resource-limited devices.
Basically, it is a simplified, pared-down version of the Java 2 Standard Edition that everybody
knows and loves. The idea is to take the most popular features and libraries of Java and squeeze
them into a smaller footprint.
Some features of the latest PersonalJava 3.0 include the following:
• Java Native Interface (JNI) 1.2 support
• Java Virtual Machine Debugging Interface (JVMDI) 1.2 support
• Java Virtual Machine Profiler Interface (JVMPI) 1.2 support
• The Truffle Graphical Toolkit—This allows for platform-independent, customized look
and feel components. This includes the Touchable user interface, specially designed for
touch screen devices.



JavaTV
JavaTV is an Application Program Interface (API) specifically designed for a digital television
receiver. It sits atop PersonalJava and includes special functions for
• Streaming audio and video
24
• Accessing in-band and out-of-band data channels
• Changing channels
• On-screen graphical overlays
For more information on the Java TV API, visit http://java.sun.com/products/javatv/.
JavaPhone
The JavaPhone 1.0 specifications are a set of routines with access to typical phone capabilities
such as specific phone functionality, scheduling, contacts and phone books, power monitoring,
and serial communications.
PingTel xpressa Phone
This is not a mobile phone, but an actual digital desktop phone. All voice comes through over IP,
allowing for amazing versatility and functionality. For example, the phone supports up to 1,024
simultaneous calls and can easily perform multi-party conferencing, forwarding, call logging,
caller ID, and other advanced tasks.
The phone is entirely Java-based. It runs the PersonalJava environment, along with a host of other
APIs to control calls and audio systems. It comes with its own xpress Window Toolkit (xWT) for
user interface design, and supports Java Management Extensions (JMX), Java Naming and
Directory Interface (JNDI), Java Database Connector (JDBC), Remote Method Invocation (RMI),
Java Dynamic Management (JDMK), and Java Beans.
Display Size: 160x160
URL: http://www.pingtel.com/homepage.php3
Sharp NC-10 IP Phone
This multimedia voice-over-IP phone is more than a cordless phone. It has fax, Web browsing,
and e-mail services built in. All input occurs through the touch screen. It can also run Java applets.
URL: http://www.sharp.co.jp/sc/eihon/nc10/text/sys.html
Personal Digital Assistants (PDAs)
Personal Digital Assistants commonly focus on storing a database of contacts with phone numbers,
a calendar with schedules, a memo pad, and a to-do list. But PDAs such as the iPaq and Palm have
become more than fads—after you start to rely on them, carrying them becomes almost as
necessary as breathing.
In addition, most PDAs support third-party applications. This means that your PDA can have word
processors, image drawing tools, and spreadsheets. One of the most popular categories of PDA
apps is, of course, games.
J2ME PDA Profile
There is currently a specification being written using the Java Community Process to extend and
enhance the J2ME CLDC. The specification is called JSR-000030: The PDA Profile.

Companies working on the profile include Sun Microsystems, Palm Computing, Siemens,
Motorola, Nokia, Sharp, and Sony. After this specification is complete, we can likely expect to see
Java pre-installed on many more PDAs.
This profile will focus on handheld devices with the following attributes:
• No less than 512KB total memory (ROM and RAM combined) available for Java runtime
and libraries, and no more than 16MB.
• Limited power (typically battery operated).
• User interfaces having at least a total resolution of at least 20,000 pixels, a pointing
device, and character input.
The PDA profile adds a special display toolkit with special classes and objects for small screens.
This will be subset of Standard Java's Abstract Window Toolkit (AWT). More information about
the profile can be found at http://jcp.org/jsr/detail/75.jsp.
PalmOS
Many handheld devices support the Palm Operating System (PalmOS). Palm Computing has a whole line of different devices—Palm V, the wireless Palm VII, Palm Vx, Palm m500, and Palm m505. There are also numerous modems available for Palms, made by companies such as Minstrel.
Visit http://www.palm.com/ for more details. In addition, companies have licensed the PalmOS. Handspring, for example, created the Visor, the Prism, and the Visor Edge . Handspring specializes in an expansion slot
called the Springboard, which enables you to plug-in components such as digital cameras, global positioning systems (GPS), and more memory. Visit http://www.handspring.com/ for more info.
Sony also has a line of organizers using PalmOS. The Sony CLIE (pronounced klee-ay), for example, has a full color display, supports the Sony memory stick, and comes with a built-in MP3 player. Read more about the CLIE at http://www.sonystyle.com/micros/clie/.

Microsoft Windows CE
Microsoft's handheld operating system, formerly known as PocketPC, looks and acts similarly to desktop versions of Windows such as Windows 95 and Windows NT. Many devices, ranging from micro-notebook computers to small cell phones, run atop the Windows CE environment. Windows CE supports micro versions of popular Windows software such as Pocket Outlook 2000, Pocket Internet Explorer, and Microsoft Money for PocketPC.
Siemens SX45
This is a mobile phone with the capabilities of a full-blown Windows CE computer. Although Siemens plans to add Java functionary to the SX45, the current crop of devices will not have Java installed.
Symbian EPOC
Symbian's EPOC operating system is a popular operating system that supports full-featured applications that fit on small devices. Symbian OS Version 6.0 includes PersonalJava built in, and is the first commercial JavaPhone implementation on wireless devices. Future Symbian releases will support MIDP and CLDC, and be able to instantly run and deploy MIDlets.
Smartphones with Symbian will come with a MIDP and CLDC-capable KVM. Higher-end devices such as communicators and handheld computers will use a combination of PersonalJava and JavaPhone.