Monday, March 12, 2007

Gears of Awards

Microsoft’s 360 action romp Gears Of War has picked up three awards at the annual Game Developers Choice Awards. The title won trophies for Best Technology and Best Visual Art, as well as Best Game at the event, held as part of the Games Developers Conference in San Francisco.

Capcom’s Okami and Nintendo’s Wii Sports were the other big winners, with two awards each. Both titles collected a prize in the Innovation category, with Okami also picking up a gong for Character Design and Wii Sports triumphing the Game Design category.

Guitar Hero 2 picked up the trophy for best audio – following on from the original Guitar Hero's win in the category last year – and Legend of Zelda: Twilight Princess won for Best Writing.

Creator of THQ’s Titan Quest Iron Lore Entertainment was recognised as Best New Studio.

Nintendo’s Shigeru Miyamoto was singled out for a Lifetime Achievement award.

http://www.developmag.com/news/26059/GDC-Gears-of-Awards

Global multiplayer mobile games for j2me platforms using GPRS connection

Mobile phones are no more used for just making calls and sending messages. It has become a valuable source for entertainment on the move. Creating multiplayer games for mobile using Bluetooth has not created a big craze with mobile gamers, so moving to a global multiplayer game using GPRS which says play from anywhere and with anybody around the world, is going to hit a big market on entertainment industry soon. This idea has just been implemented by some big manufacturers. The idea of going with their option for most multiplayer mobile game developers is a bit unimaginable, because of the cost they charge for each game to interact with their server. This article explains about how to create a great multiplayer game for mobile platform using GPRS.

Requirements:

1. A good web hosting server with a strong database server.

2. A GPRS service that allow http connections.

3. A finished game ready to go globally multiplayer.

4. A bit Server side scripting knowledge. This is all that are required to develop a global multiplayer mobile game using GPRS connection.

The game server:

The total concept of the game server is to build it like a router which gets data from any client and redirects to the right destination client. Our game server is going to do the same work.

Server client architecture:

The client SDK, which we are going to develop later, should first post a login username details and wait for the response of the server. The server should add the client details to the queue table and should respond back with a game Id which is unique for each game played. Then the client should wait for the opponents. Till then the client should post for the game status. Whether the game has started or still has to wait for another opponent. Now when the other client logs in, the server responds with the same game id. And the status of the game is changed to “started". Now for reference the game id and the details of the game like who played when and who started will be stored in a different table.

Now both the clients should be removed from queue table and taken to the pairs table which holds the game id and client ids. Now the server allots ip address like on a network. Both the clients should then get their ips from the server. Mobile Game Developers should write a routine which creates ips randomly. Ip here we call is not the actual one which we use in networking. It is similar to a GUID (16 byte value) so that we don’t have to check for uniqueness in the game. Once all these transactions are over, the clients start to exchange there usernames and details to display with whom the player is playing with. These transactions are handled in a different table where each entry represents a data transfer between clients. The details “who has sent to whom" and “what" will be stored there.

Once all transaction has been taken before the game, both the clients transfer the game data to the other client. In SMNA we use acknowledgment make sure the other client has read the previous transaction. Unless a client acknowledges the message the other client will wait for the next transaction to take place. This is to avoid loss of data. To make it a complete featured game server we need to implement a high score list on the server. This is all what we do in SMNA. In this server script we have developed separate url script for every requests and posts, so that the load on the server gets spread during the game.

The Multiplayer game SDK development:

Coming to the development of SDK, the developer has almost completed most part of the project. Now having it as SDK will be more useful in the future, so that any game can be made multiplayer easily. The SDK should contain classes and functions like this, login(userdetails), checkForOpponent(), getGameID(), getOpponentName(), getIP(), sendData(), readData(). All these functions should use http post and read the server’s response back and feed the game routine with the information. Additional features like posting high scores and adding communities and rooms are very essential for the game server to reach the large market.

SMNA:

J2me developers, a custom mobile game development company with a passion on multiplayer SDK development has developed a game server. The game server and SDK both are for sale. The game server is coded in PHP and J2ME. This is a cross platform game server, where people from a website or PC connected to internet can compete with a person playing on mobile. It has a good high score database and a community management system to review on the game.

http://www.smackall.com/viewresource.php?resource=10

Philips to bring virtual world to Life

A partnership between Philips and Rivers Run Red will enable virtual world Second Life to take advantage of its amBX ambient experience hardware. The amBX kit includes lights, rumble and fans all designed to add an extra dimension to on-screen action.

Philips has also been experimenting with Rivers Run Red itself to market the amBX products via virtual demonstrations in the world itself.

Most importantly now, however, Philips will be creating solutions for open source Second Life client software that will allow users, via an SDK, to create amBX experiences and scripts themselves.

"Second Life offers an entirely new market for amBX and we feel this is the start of a very special relationship," said Jo Cooke, chief marketing officer, Philips amBX.

“Second Life offers amBX an unparalleled opportunity to bring our revolutionary ambient intelligence technology to an expanding global market of many millions of tech and media savvy users who are not only hungry, but also open-minded for new online experiences."

http://www.developmag.com/news/26062/GDC-Philips-to-bring-virtual-world-to-Life

Anaglphs in Games / Automated Game Testing

HONOR AMONG THIEVES (released in 2004 for the PlayStation 2) included an innovative anaglyph 3D feature. With the red/cyan glasses included with the game, players could experience real-time stereographic visuals in most gameplay areas. Producing stereographic anaglyph images (AKA anaglyphs) is a fairly mature practice among photographers.

Even so, special problems arise when generating anaglyphs for consumer televisions, in real-time, and within a "free" camera system. This talk presents the pro forma methods for producing anaglyphs, as well as several tricks for producing effective stereographic effects within a video game.

Alexander Jihn:

Automated game play testing in casual games development, including research into operant conditioning and it's uses in the development of a released game title.

http://www.igda.org/seattle/reports/02_2007r.htm

Gears of War,' 'Okami' and 'Wii Sports' Lead the Recipients of the 7th Annual Game Developers Choice Awards

Epic Games and Microsoft Game Studios' Xbox 360 shooter Gears of War was the recipient of three honors including Best Game at the 7th annual Game Developers Choice Awards. The blockbuster hit game also received the awards for Technology and Visual Arts. Following close behind with two awards each were Clover Studios and Capcom Entertainment's Okami and Nintendo's Wii Sports. The ceremony, produced and hosted by the Game Developers Conference (GDC) and presented by the International Game Developers Association (IGDA), is the only peer-based, open nomination awards program in the industry where honors are bestowed to developers by developers. Recipients were announced tonight at the 2007 Game Developers Conference (GDC) in San Francisco.

"A Game Developers Choice Award is like no other award presented in our industry, as it is the only prize that gives the community the chance to appreciate and honor individual developers," said Jamil Moledina, Executive Director of the Game Developers Conference. "By celebrating our visionaries by name, we give the audience and the public at large a chance to give credit where credit is due."

Nominations were free of charge and open to all IGDA members, ensuring that the nominees reflect the international development community's opinions. The IGDA membership voted on the finalists.

The recipients for the 7th annual Game Developers Choice Awards are:

Best Game

Gears of War (Epic Games / Microsoft Game Studios)
- Cliff Bleszinski, Michael Capps, Rod Fergusson

Audio

Guitar Hero II (Harmonix Music Systems / RedOctane)
- Jeff Allen, Eric Brosius, Izzy Maxwell

Character Design

Okami (Clover Studio / Capcom Entertainment)
- Mari Shimazaki, Sawaki Takeyasu, Kenichirou Yoshimura

Game Design

Wii Sports (Nintendo)
- Keizo Ohta, Takayuki Shimamura, Yoshiaki Yamashita

Technology

Gears of War (Epic Games / Microsoft Game Studios)
- Michael Capps, Ray Davis, Tim Sweeney, Daniel Vogel

Visual Arts

Gears of War (Epic Games / Microsoft Game Studios)
- Jerry O'Flaherty, Chris Perna

Writing

The Legend of Zelda: Twilight Princess (Nintendo EAD / Nintendo)
- Kyogoku Aya, Nate Bihldorff, Mitsuhiro Takano

New Studio

Iron Lore Entertainment (Titan Quest)
- Paul Chieffo, Jeff Goodsill, Brian Sullivan

Recipients for the evening's special awards were:

Lifetime Achievement

Shigeru Miyamoto

First Penguin

Alexey Pajitnov

Maverick

Greg Costikyan

Community Contribution

George "The Fat Man" Sanger

"Once again, the Game Developers Choice Awards have shown that gaming greatness can be found within every type of game -- from the most hardcore of experiences, to those that have brought all new audiences into our industry's fan base," said Jason Della Rocca, Executive Director, IGDA. "Each year, I am humbled by what our members can do with this great art form."

http://www.igda.org/newsroom/press_030707.php

Friday, February 23, 2007

Adding an Icon to your SDL application

One of the most frustrating things for me about creating games using SDL and JEDI-SDL is that they do not behave like standard Delphi windowed applications. While they are actual Windows applications, they are just not VCL applications. The window that SDL creates is a fully fledged Windows window, only a lot of it's internals/messages are hidden inside SDL's framework. This of course means that they are smaller in size than most Delphi application, but also they are developed in a non visual way and do not have icons to represent them.

Now users of programs always use the icon to recognise a program and if it just shows a blank white icon they need to actually read the text (when last did you read the description of any of the icons on your desktop?). So in a way this has become a big problem - especially as my biggest fans are my kids aged 4,7 and 9 - the smaller two just dont read english the way I do (They go to an Afrikaans school).

Now it is possible to set an icon to be displayed in the Task bar using:
Pascal Code:

SDL_WM_SetIcon( SDL_LoadBMP( 'Icon.bmp'),0);

And this should probably be done for all your applications as a matter of course, but this does not help a child find the game on the windows desktop as the icon is only set when the game is actually being run.

But it is possible to add an icon to your final distributable.

Using the delphi Image Editor create a new .res file. (A .res file is a resource file that can contain bitmaps, strings and icons). Add a new icon to the resource file. Name the icon the same as the executable to make it easier to remember. Draw a nice pretty piture for your icon. Save the .res file to the same directory as your project file.

In side the delphi project file add the following line
Pascal Code:

{$R .res}


And recompile your program. Suddenly your program will have an icon linked to it.

http://www.pascalgamedevelopment.com/viewarticle.php?a=58&p=1#article

Making 2D games with GLXtreem - Rendering

Introduction

The use of a Game Template is only of use once we start using it to create our games. This Tutorial is the first step toward the use of a template to create a game. The Game Template being used for this tutorial is my CairnsGames Game Template.

While this tutorial refers to GLXTreem used within Delphi, the basic structure and logic throughout the series of tutorials can be used for any language and any component set.

To use the source code in the Tutorial you will need to have the GLXTreem components set up and the template from ?_~Tutorial One: Writing 2D Games with GLXTreem?_T tutorial.

Deciding what is needed

Whenever a Development Template is used in a project, the items within the template that are required must be chosen. Any Development Template has functionality that isn?_Tt required by a specific project. At the start of the development process the various options must be made and the template needs to be modified enough to implement these options.

Some examples of decisions that need to be made are: do you need a high score system, will the game run in full screen or windowed mode.
Selecting your ?_~Story?_T
One of the greatest things about making a game is deciding why the game is happening. A story can be as simple as defining the rules of the game or as complex as a historical explanation for the game.

One game I made (Desperate Defence) had a long complex story but the game play was relatively simple.

In the peaceful Kingdom of Prokien life is sweet. The winters are mild and summers always bring bountiful harvests. But the neighbouring duke of Renkdass has sent his vicious armies to destroy the Kingdom.

The few soldiers of Prokien have defended the kingdom valiantly, but the enemy have relentlessly advanced razing town after town and pillaging each village as they passed. The King has retreated to his mountain fort with as many of his subjects as possible.

You have been left to defend the capital. A few loyal soldiers have been left with you. Daily you have had reports of the Duke?_Ts men advancing toward the capital. Your final line of defence is the meagre wall surrounding the King?_Ts Palace. The enemy have entered the capital and are surging toward the Palace.

You and the few men left must defend as long as possible!

The archers hiding behind the walls must shoot and kill as many enemy soldiers as possible before being killed. The Archers will shoot at wherever you click the mouse.

The story reads nicely but the actual game play of the game consisted of clicking on the screen where you wanted your archers to shoot.


Screen Drawing


So once you have your detailed story the first real rendering you?_Tll do to the screen is the introduction screen of the game.

In the Rendering function for the Introduction Game State the lines to draw the introduction is entered. If necessary a nice background picture can be included as well as any other images that you want to include to set the theme and feeling of the game. For Desperate Defence a nice grassy background with pretty trees surrounding the text box makes a nice introduction.

As indicated in ?_~Tutorial Two: Design of a Game Template?_T each Game State has its own Rendering Function. The introductions screen drawing then goes into the RenderIntro procedure.

Pascal Code:

Procedure Tform1.RenderInto(Sender : TObject; var Done: Boolean);
Begin
GLXDraw1.Clear;

// Instructions to display the Introduction of the Game
GLXDraw1.Begin2D;
GLXImageList1.Items[2].TileDraw(0,0,12,7,0);
// Do displays
WriteText('Header',130,10,GameTitle,0,1,0);
WriteText('Standard',100,60, 'In the peaceful Kingdom of Prokien life is sweet. The winters are',0.8,0.8,0.8);
WriteText('Standard',100,75, 'mild and summers always bring bountiful harvests. But the');
WriteText('Standard',100,90, 'neighbouring duke of Renkdass has sent his vicious armies to');
WriteText('Standard',100,105, 'destroy the Kingdom.');

WriteText('Standard',100,130, 'The few soldiers of Prokien have defended the kingdom valiantly,');
WriteText('Standard',100,145, 'but the enemy have relentlessly advanced razing town after town');
WriteText('Standard',100,160, 'and pillaging each village as they passed. The King has retreated');
WriteText('Standard',100,175, 'to his mountain fort with as many of his subjects as possible.');

WriteText('Standard',100,200, 'You have been left to defend the capital. A few loyal soldiers have');
WriteText('Standard',100,215, 'been left with you. Daily you have had reports of the Duke''s men');
WriteText('Standard',100,230, 'advancing toward the capital. Your final line of defence is the');
WriteText('Standard',100,245, 'meagre wall surrounding the King''s Palace. The enemy have entered');
WriteText('Standard',100,260, 'the capital and are surging toward the Palace.');

WriteText('Standard',100,285, 'You and the few men left must defend as long as possible!',1,1,0);

WriteText('Standard',100,310, 'The archers hiding behind the walls must shoot and kill as many');
WriteText('Standard',100,325, 'enemy soldiers as possible before being killed. The Archers will');
WriteText('Standard',100,340, 'shoot at wherever you click the mouse.');
// Add some pretty trees to make it look nice
GLXImageList1.Items[1].Draw(-10,10,0);
GLXImageList1.Items[1].Draw(-40,80,3);
GLXImageList1.Items[1].Draw(600,30,1);
GLXImageList1.Items[1].Draw(580,90,2);
GLXImageList1.Items[1].Draw(-30,140,3);
GLXImageList1.Items[1].Draw(-10,220,1);
GLXImageList1.Items[1].Draw(-20,310,2);
GLXImageList1.Items[1].Draw(550,140,0);
GLXImageList1.Items[1].Draw(570,200,1);
GLXImageList1.Items[1].Draw(560,270,1);
GLXDraw1.End2D;

GLXDraw1.Flip;
End;


Note that a second font is being used ?_" it was loaded into the GLXFont component in the LoadFonts procedure. Also some new images have been added to the Images.WGL file.

Fading an Image

Various special effects can be used to make a game look more professional. One of these is the fading in an out of an image. With GLXTreem its very easy to fade an image. The GLXDraw object has a property called UseColor. This property affects everything that is drawn to the GLXDraw screen. By changing the values sent to the UseColor procedure the screen can be faded in or out. By increasing the values toward 1 the image fades into view and by decreasing the values the image fades out.

Pascal Code:

GLXDraw1.UseColor(TC,TC,TC);
IntroImage.Draw(0,0,0);
GLXDraw1.UseColor(1,1,1);


Note that the WriteText method described in the previous tutorial defines its own Colours and will therefore overwrite the settings in UseColor.

Adding the Game Logic

By now the usefulness of a template can hopefully be seen. Each step of the way we have defined a set of default behaviour for the template and then we have added specific game functionality into the base.

Hopefully you can now take this base and add your own game logic. While this tutorial only covered the rendering of an introduction screen the same process can be used to render the game screen, the game over screen and the options screens.

This is the last in my series of making games with GLXTreem. From next month I will start a series of articles on using SDL and specifically my S2DL libraries in FreePascal and Delphi.

http://www.pascalgamedevelopment.com/viewarticle.php?a=38&p=3#article