Sunday, November 11, 2007

Metroid Prime Hunters (Nintendo DS)

Metroid Prime Hunters
is clearly the best game which uses the most out of the DS hardware. The game is so fast and rendered up to the maximum the hardware can take. I wonder what techniques these guys have used to pump up so many cool features of this game. The rendering details in this game is just stunning. Each area of the levels are so detailed that my jaws just drop by watching them. The little details in rendering for each levels, characters, etc in this game is so well done. The sounds especially deserves a full 10 on 10 rating. I just get so much into the game with the sound effects and bg soundtrack. I never thought that sound effects could sound so great on the DS. But yes I do keep my headset on while playing any game on the DS.


One special mention is the WiFi Multiplayer Deathmatch mode in this game. I play everyday over the internet to enjoy the multiplayer experience. It just does not stop entertaining me everyday. At any point of time, on any day, anywhere between 20000 and 30000 players play this game online. This just shows how exciting the multiplayer experience will be over the internet on the DS. The only other game that I play a lot over the internet on my DS is Mario Kart. Mario Kart also clocks similar figures. It is very interesting that so many people play multiplayer over the internet on their DS. This game rocks on the mutiplayer mode. Be sure to check out the Youtube videos link on the top of this page.

Be sure to check out the below links to know more about this game:
http://en.wikipedia.org/wiki/Metroid_Prime_Hunters

Watch video below:
New Super Mario Bros.(Nintendo DS)

This game is my first Mario game! Yes, I wonder what took me so long to play Mario! In the earlier days I used to play the converted PC version of the game. Though Nintendo would never make games for the PC, the old classic Mario game was converted by hobbiest world wide to various platforms. That is how great the Mario franchise is. He has many games to his credit , thanks to Nintendo to making him so big. He enjoyes his games on all of Nintendo's platforms. This game for the DS is easily the best old school platform game for the DS. When I first bought the DS, I decided that this would be the first game I would play on it. I really enjoyed every bit of it. It is so bright and colourfull. The platforming element is really thrilling. I remember playing the Jak and Daxter series on the PS2, which was my first stint with platforming games. Man it was tough! Then I went on to play the Ratchet and Clank series on the PS2 which was a very easy and casual platforming game on the PS2. New Super Mario Bros is easily the best platforming game I have played on the DS so far. I just love the way the gameplay is set in this game.

The level design in this game is so well set. Even the more complicated multi-level levels aren't confusing at all. They very well guide the player to go from start to finish.

The music score for this game is easily one of the most memorable melodies I can remember. The suspense and action behind each momement of gameplay for this game has the highest level of music quality. I always play my DS games with my headset (the speakers are crap).

The entire game is set in this 3D landscape. It uses the 3D elements very well. Though the game is completely 2D based gameplay, the 3D elements are very well merged to give that cool effect.

The boss fights of this game are so simple yet enjoyable. Each boss is killed within 3 moves of attack. There is nothing special about the boss fights in this game. But some of the enemies are so well placed on the platforms that they look more threatening than the bosses itself.

Lastly, the game is very enjoyable and packs in many hours of gameplay (I've spent more than 30 hours on this game). The game is long and packs in many memorable moments. I've thoroughly enjoyed playing this game.

Some links about this game:
http://en.wikipedia.org/wiki/New_Super_Mario_Bros.


Watch video below:
Children of Mana (Nintendo DS)



Children of Mana (for Nintendo DS) is easily one of the most enjoyable RPG game I've played after a long time. The last rpg game that I had played was Suikoden 5 for PS2. Children of Mana is a very simple rpg game with very limited rpg features. It has a very basic set of weaponary and character upgradation system. This is easily a very pick-up and play kind of rpg game. Though it was criticised for this very easy aand not very in-depth rpg element gameplay, but I really enjoyed the game. I think the DS is made to enjoy a very casual and easy pick-em-up and play kind of games. Especially RPG games can be very engrossing and might require a lot of attension and dedication to play through the entire game. Children of Mana easily accomplishes this by having the correct balance of rpg elements and casual appeal.


Some links about this game:
http://www.seikens.com/children-of-mana.html
http://en.wikipedia.org/wiki/Children_of_Mana

Friday, November 09, 2007

Nintendo DS programming

I got my DS a couple of months back. It is a cool looking black DS. The first thing I did with the DS was to try my hands on programming on the DS. Programming on the DS is very simple not like other handhelds like the PSP. There is a huge community support out there on the internet to help you get started with DS programming. Devkitpro is a free homebrew sdk provided by the community to start programming on the DS. Once you install this SDK, the environment on your machine is set to compile and execute programs directly onto the DS. You could download the DevkitPro SDK here:



Please download the latest version of the SDK. The installation process is very simple and it will guide you through the entire process. Once this SDK is setup, you could browse through the SDK examples on nds programming. There are tons of tutorials to choose from starting from 2D graphics programming, 3D programming, sound programming on the DS, etc. You will have access to all tutorials to start writing your first game on the DS.


But hold on! When you compile the program on your PC, a single file output is created with a .nds extension. What to do with this file? Well in order to run this on the DS, you will need to first buy a R4 memory card which can be used as a regular DS cartridge.
So where can I buy this R4 memory card? Well you will have to purchase this online and get it shipped to you. One of the places where you can buy this from is http://www.gadget-asia.com/. The best deal on this website is the R4 card with a 1GB micro SD card. Also it comes with free shipping to India!

Below is the direct link to buy this:

Once you have this memory card you should be able to transfer your programs onto the DS and check out the output. DevkitPro allows you to fully access the hardware of the DS. So this is the closest a homebrew programmer will get towards programming on a real console. I have programmed on the PS2 Linux kit provided by Sony but it is a real pain in the ass to program on that kit as very little support or documentation is available to program on the PS2. Though I managed to write some code on it but it is not worth the effort. I strongly recommend programming on the NDS as it is the closest you will get to real programming on the console. Of course you do have XBOX 360 programming by using XNA, I still have to try it out!
So go ahead and get you hands dirty on the NDS!


Saturday, July 21, 2007

The technology behind MMOGs (Massively Multiplayer Online Games)
I'm very excited with the MMOG scene that is happening around the world. The technology behind this fascinating experience is just mind blowing. Just imagine millions of people connected through hundreds of servers and playing in a persistant world. Isn't it fascinating to think what kind of technology must be behind such a system? Well some may say such technologies have been existing since a very long time when hundred of computers were connected to each other and the crazy world of "downloading" used to happen. About a decade ago, before a similar situation existed with hundreds and thousands of internet users connected to each other and shared their files on the net. Well the technology might not be the same as an MMOG but I'm sure the experience would have been similar. The fascination of connecting and sharing information with hundreds and thousands of internet junkies just makes the entire social experience exciting.

Figure: a in-game shot from World of Warcraft, a popular MMOG game.
Well now the famous question....how do I start writing the system behind a MMOG game? Well the answer is complex as an MMOG game involves both writing a game as well as the networking system behind this game. So I would broadly classify writing 2 systems for an MMOG game.

  1. Firstly the networking system which would drive the technology behind the game, and
  2. Secondly the game itself which would offer that unique MMOG experience.

I'm more interested in exploring the technology behind the MMOG networking component. Before you start writing any components for an MMOG system, you would have to be familiar with basic networking concepts like client, servers, TCP/IP, sockets, etc. I would suggest you starting with reading about Winsock 2.0 which basically helps you with creating sockets and networking different computers and setting up a client-server architecture. Instead of going through books, I would suggest first reading trough the below article on Winsock programming. It is fairly simple to understand and I hope you would find it easy too just the way I did it.

WinSock2 for Games by Stefan Hajnoczi

Once you are clear with the concepts of Winsock, you can then explore the architecture behind some famous MMOG engines like BigWorld, Multiverse, etc. I shall be writing some more theory behind these architectures a little later. Till then expore the world of MMOG!


Sunday, June 17, 2007

Just finished playing: God of War 2
what a game!! i thouroughly enjoyed playing this game. I was waiting for this game ever since it was announced last year after the release of god of war 1. But the ending has left me wanting for more. God of War 3 will hit the next gen systems next year and I do hope they bring it to the PS2 too. Cmon Sony, there are more than 100 million PS2 out there...do not dissappoint the fans of this system...get it on the PS2 too....

My favorite boss fight of this game was the lakhesis boss fight with the sisters of fate. A good lenghty boss fight. Not that it was tough, I just loved the constant tension this boss fight maintained. This would easily be one of my best boss fight for a long long time. This even beats my previous best boss fight in Shadow of Collossus (anyone remembers the dog boss).

I must say the story of God of War 2 was very good and always kept me going to know how the story unravels itself. God of War 2 is easily one of my best games I have played this year.

Sunday, April 29, 2007

Software Rendering
In the good old days where to render a pixel on the screen one did not have to use a graphics card but rather only a CPU. 3D graphics rendering was born on the screen using Software Rendering, a term associated with rendering pixels on the screen using only the CPU for its processing power. Popular 3D engines like Duke Nukem 3D, DOOM, Quake, Half Like, etc used this technique of rendering. It is every graphics programmer dream to build one and to understand the complexities behind building such a system. A good place to start would be http://www.devmaster.net/articles/s...ering/part1.php

To know more about software rendering check out wikipedia:
http://en.wikipedia.org/wiki/Software_rendering

Some technology behind some popular games:

Dukem Nukem 3D

Duke Nukem 3D's graphic engine was an evolutionary step forward from the Doom engine. While the levels were still defined as 2D maps, the capabilities of Ken Silverman's Build engine allowed more complex levels than Doom and Dark Forces. Most notably, the game supports diagonal slopes in the floors, which was not possible with the entirely "top-down" level design of other contemporary shooters. It also supports mouse aiming (though aiming up and down distorts the graphics due to a lack of perspective correction), which would become the norm for many future FPS's. Since Duke Nukem 3D was still not a fully 3D engine, it was considered to be a 2.5D game. Although the era of true 3D games had begun with Descent in 1995, it would not be until Quake was released later in 1996 that a true 3D engine would be used for an FPS.

DOOM

Doom's primary distinguishing feature at the time of its release was its realistic 3D graphics, then unparalleled by other real-time-rendered games running on consumer-level hardware. The advance from id Software's previous game Wolfenstein 3D was enabled by several new features in the Doom engine:

1. Height differences (all rooms in Wolfenstein 3D have the same height);
2. Non-perpendicular walls (all walls in Wolfenstein 3D run along a rectangular grid);
Swaying of the weapon (in Wolfenstein 3D the arms stay fixed in front in the screen no matter what the character does), this gives the impression of fluidity while walking or running;
3. Full texture mapping of all surfaces (in Wolfenstein 3D, floors and ceilings are not texture mapped);
4. Varying light levels (all areas in Wolfenstein 3D are fully lit at the same brightness). While contributing to the game's visual authenticity by allowing effects such as highlights and shadows, this perhaps most importantly added to the game's atmosphere and even gameplay; the use of darkness as a means of frightening or confusing the player was an unseen element in games.
In contrast to the static levels of Wolfenstein 3D, those in Doom are highly interactive: platforms can lower and rise, floors can rise sequentially to form staircases, and bridges can rise and descend. The life-like feeling of the environment was enhanced further by the stereo sound system, which made it possible to roughly tell the direction and distance of a sound's origin. The player is kept on guard by the grunts and growls of monsters, and receives occasional clues to finding secret areas in the form of sounds of hidden doors opening remotely. Monsters can also become aware of the player's presence by hearing distant gunshots.
Carmack had to make use of several tricks for these features to run smoothly on home computers of 1993. Most significantly, Doom levels are not truly three-dimensional; they are internally represented on a plane, with height differences added separately (a similar trick is still used by many games to create huge outdoor environments). This leads to several limitations: it is, for example, not possible for a Doom level to have one room over another. This two-dimensional representation does, however, have the benefit that rendering can be done very quickly, using a binary space partitioning method. Another benefit was the clarity of the automap because it could be displayed with 2D vectors without the risk of overlapping.
Another important feature of the Doom engine is a modular approach that allows the game content to be replaced by loading custom WAD files. Wolfenstein 3D was not designed to be expandable, but fans had nevertheless figured out how to create their own levels for it, and Doom was designed to take the phenomenon further. The ability to create custom scenarios contributed significantly to the game's popularity (see the section on WADs below).

Wolfenstein 3D

To render the walls in pseudo-3D, the game used ray casting, a special case of ray tracing. This technique sent out one ray for each column of pixels, checked if it intersected a wall, and drew textures on the screen accordingly, creating a one dimensional depth buffer against which to clip the scaled sprites that represented enemies, powerups, and props.
Before Wolfenstein 3D, the technology had already been used by id Software in 1991 to create Hovertank 3D and Catacomb 3D for Softdisk, albeit using only EGA 16-color graphics (which the game was designed to use, early in development). Other games using the Wolfenstein 3D game engine or developments of it were also produced, including, Blake Stone, Corridor 7, Operation Body Count, Super Noah's Ark 3D, Rise of the Triad, Shadowcaster, and Hellraiser.
According to id Software programmer John Carmack, the game's engine was inspired by a technology demo of Looking Glass Studios'/Origin's first-person CRPG, Ultima Underworld: The Stygian Abyss from 1991. Carmack claimed he could make a faster renderer. In this he was successful. The Wolfenstein engine lacks many features present in the Underworld engine, such as height changes, sloped floors and lighting, but it runs well on relatively weak hardware.
"Holo-walls" are walls created by mapmakers using a glitch in the PC version's engine. They are walls that the player can walk through, and are used in some total conversions to simulate windows that players can climb through, and hedges that players can walk through. One way of creating holo-walls is to place a dead guard in a wall.

Descent

The original Descent runs under DOS and is (with some tweaking) playable on 386-based PCs at 33 MHz. With the release of the Pentium, the performance requirements were no longer an issue. Descent was ported to Apple's Power Macintosh in 1996 and both versions support multiplayer network play over a variety of protocols. A console port of Descent was created for the Sony PlayStation.

Rendering
Descent was released in 1995, one year after id Software's Doom. As was typical with those releases, Descent uses a software renderer due to the fact that affordable 3D graphics accelerator cards (referred to as add-on videocards) were not mainstream as yet. While Doom uses sprites to render enemies, Descent features fully-3D-polygonal enemies. Quake followed in the footsteps of Descent by displaying its enemies in 3D. Unlike Doom and its successor Quake, Descent does not use BSP trees to speed up rendering, but a system of connected cubes forming bigger rooms and tunnels connecting them. This geometry allowed for very efficient visibility culling, and one of the first true three dimensional rendering environments of its time. On lower-end systems, detail levels could be reduced to cut out some of the smaller polygons on robots and render solid color blocks on distant textures instead of mapping the entire texture.
The original Descent uses indexed 8-bit color in DOS's display mode 13h, using 320 × 200 resolution. Unlike its sequel, it uses only one 256-color set during gameplay, rather than a unique set for each level set; these colors tinge red during damage and purple during fusion charging. The Macintosh and later PC versions allow higher resolutions, such as 640 × 480. The default engine uses a software renderer in which the perspective transformation for texture mapping is only performed once every 32 pixels, causing textures to appear to pop or shift when viewed from certain angles. The software renderer also uses nearest-neighbor texture filtering, as opposed to bilinear filtering or trilinear filtering used by modern video cards. Nearest-neighbor texture filtering causes aliasing artifacts, such as blocky or swimming textures.
The engine for Descent is a portal rendering engine, operating on the premise of interconnected cube-shaped sectors. Sides of cubes can be attached to other cubes, or display up to two texture maps. Cubes can be deformed so long as they remain convex. To create effects like doors and see-through grating, walls could be placed at the connected sides of two cubes. Descent introduced an elaborate static lighting scheme as well as simple dynamic lighting, where the environment could be lit with flares - another advancement compared to Doom.

Audio
The game uses 8-bit, 11 kHz sound effects, including some vocals. On slower computers, the sound settings could be reduced to allow only one door sound, only one laser sound, only a few enemy sounds, and other simplifications. (It also would make only one sound play per frame, which would potentially slow down things more than it could help them.) The PC version's soundtrack is a MIDI score, but the Macintosh and Playstation versions use a Redbook audio soundtrack.

Quake


Main article: Quake engine
Quake popularized several major advances in the 3D game genre: it uses 3-dimensional models for players and monsters instead of 2-dimensional sprites; and the world in which play takes place is created as a true 3-dimensional space, rather than a 2-dimensional map with height information which is then rendered to 3D. Previous 3D games such as Duke Nukem 3D, Doom and Wolfenstein 3D (sometimes called 2.5D games) used a restricted-view mathematical trick when rendering their 3-dimensional view. This allowed a true 3D view, but only when looking straight-ahead (you can tell the difference by tilting up and down in those games, which is really just a distortion trick of the straight-ahead view rather than a true rotated rendering.)
Quake also incorporated the use of lightmaps and 3D light sources, as opposed to the sector-based static lighting used in games of the past. id Software's innovation has been used for many 3D games released since, particularly first-person shooters, though id Software switched to a Unified lighting and shadowing model for Doom 3.
Quake by default used the keyboard to turn left and right and move forward and backward, using the mouse, like Doom, to do the same movements. This produced awkward movements, and required settings like "auto-level" that would move the viewpoint back to straight forward as you moved and "auto vertical aim" that would automatically shoot things above and below you. Probably because of this the level design in Quake was more suited to the 2.5D environment of Doom. Only in a few spots in the game was the monster that was shooting you above or below you. Quake did have the option of using the mouse to look/aim/orient ("mouselook") and the keyboard to move forward, backward and sideways, but it was not the default until Quake III was released. However, nearly all skilled players in single-player and deathmatch alike utilized the mouselook option, which granted a greater degree of control, allowing for a variable turn rate. In fact, it was common for the more advanced players to openly mock beginners for not using the mouselook option, and the mouse and keyboard combination has since become a de facto standard in many PC shooters.
Quake was also one of the first games to support 3d hardware acceleration. While initially released with only software rendering, John Carmack created a version of the Quake executable that took advantage of Rendition's Vérité 1000 graphics chip (see VQuake below). OpenGL support was soon added in the form of the GLQuake executable for Windows 95 and higher. Many believe that this kick-started the independent 3D graphics card revolution, "GLQuake" being the first application to truly demonstrate the capabilities of the 3dfx "Voodoo" chipset at the time. The only two other cards capable of rendering GLQuake were a professional (very expensive) Integraph 3D OpenGL card, and, later, the PowerVR cards.

Unreal

Unreal is known for boosting the expectations of 3D graphics considerably. Compared to its peers in the genre, such as Quake II, Unreal brought to life not only highly-detailed indoor environments, but also easily the most impressive outdoor landscapes ever seen.[1] This graphical splendor brought with it the side effect of requiring powerful hardware to run the game fast enough to enjoy. The minimum requirements stated that a Pentium 166 MHz with a mere 16 MB RAM and no 3D accelerator would be capable of running the game. This was not realistic, however, and many gamers were very disappointed when they tried to play the game with such a system.[2]

The Unreal engine brought a host of graphical improvements, including colored lighting. Although Unreal is not the first major release with colored lighting (see Quake II), it is the first to have a software renderer as feature rich as the hardware renderers of the time, including colored lighting and even a limited form of texture filtering referred to by programmer Tim Sweeney as an ordered "texture coordinate space" dither.[3] Early pre-release versions of Unreal were based entirely around software rendering. SIMD technology is integral to allowing the software audio and 3D graphics engines to perform as well as they do. Unreal uses several SIMD technologies, including AMD's 3DNow! along with Intel's MMX and SSE (known as "KNI" within Unreal).

Unreal was one of the first games to utilize detail texturing. This type of multiple texturing enhances the surfaces of objects with a second texture that shows material detail. When the player stands within a small distance from most surfaces, the detail texture will fade in and make the surface appear much more complex (high-resolution) instead of becoming increasingly blurry.[4] Notable surfaces with these special detail textures included computer monitors and pitted metal surfaces aboard the prison ship, and golden metal doors and stone surfaces within Nali temples. This extra texture layer was not applied to character models. The resulting simulation of material detail on game objects was intended to aid the player's suspension of disbelief. For many years after Unreal's release (and Unreal Tournament's release), detail texturing only worked well with the Glide renderer. It was, in fact, disabled in the Direct3D renderer by default (but could be re-enabled in the Unreal.ini file) due to performance and quality issues caused by the driver and present even on hardware many times more powerful than the original 3Dfx Voodoo Graphics.
Because of Unreal's long development time, the course of development occurred during the emergence and rapid progression of hardware 3D accelerators. So, along with the advanced software 3D renderer, Unreal was built to take advantage of the 3Dfx Glide API, which emerged as the dominant interface towards the end of the game's development. When Unreal was finally released, Microsoft's Direct3D API was growing almost exponentially in popularity and Epic was fairly quick to develop a renderer for their game engine. However, the Direct3D renderer, released initially to support the new Matrox G200, was less capable and slower than the Glide support, especially in the beginning when it was unstable, slow, and had many graphics quality issues.[5] The Glide renderer's superiority can be seen in a review of the 3dfx Voodoo 5, where it outperformed every other card in Unreal Tournament (same engine as Unreal), due to its native Glide support. Even video cards which consistently defeated the Voodoo 5 5500 in other games could not win against Glide's greater efficiency.[6] Unreal also had limited official OpenGL support, but its compatibility was very limited, due to poor OpenGL client drivers from most hardware vendors at the time and Epic's resulting disinterest in furthering development. OpenGL could perform better in some rare situations, but Glide and Direct3D were usually the APIs of choice.
Later in 2004 and onward, OpenGL drivers developed by independent programmers and offered for free online began to supersede the official drivers for speed and quality. Perhaps the best of these releases was Chris Donhal's enhanced OpenGL renderer for Unreal Tournament, available for Unreal at OldUnreal.Com, which enabled native support for anti-aliasing, advanced multi-texturing including single-pass detail texturing, and hardware T&L, amongst a selection of other advanced and experimental features.