Pages

Monday, June 16, 2008

Mario

Mario (マリオ Mario?) is a fictional character in his eponymous video game series, created by Japanese video game designer Shigeru Miyamoto. Serving as Nintendo's mascot and the main protagonist of the series, Mario has appeared in over 200 video games since his creation. Though originally only appearing in platform games, starting with Donkey Kong, Mario currently appears in varied video game genres such as racing, puzzle, role-playing, fighting, and sports.
Mario is depicted as a short, pudgy, Italian American plumber who lives in the Mushroom Kingdom. He repeatedly stops the turtle-like villain Bowser's numerous plans to kidnap Princess Peach and subjugate the Mushroom Kingdom. He also has other enemies and rivals, including Donkey Kong and Wario. Since 1995, Mario has been voiced by Charles Martinet.
As Nintendo's mascot, Mario is arguably the most famous character in video game history, and his image is commonly associated with video games. Mario games, as a whole, have sold more than 210 million units, making the Mario series the best-selling video game series of all time. Outside platform games, he has appeared in video games of other genres, including the Mario Kart racing series, sports games, such as the Mario Tennis and Mario Golf series, and role-playing games such as Paper Mario and Super Mario RPG. He has also inspired television shows, film, comics, and a line of licensed merchandise.

Concept and creation
Mario was created by Shigeru Miyamoto in his attempts to produce a best-selling video game for Nintendo, after previous titles, such as Sheriff, had not achieved the same success as other titles such as Pac-Man. Originally, Miyamoto wanted to create a video game that used the characters Popeye, Bluto, and Olive Oyl. At the time, however, Miyamoto was unable to acquire a license to use the characters (and would not until 1982), and ended up making Jumpman (later known as Mario), Donkey Kong, and Pauline. In the early stages of the game, Mario was unable to jump, and the focus was to escape a maze. However, Miyamoto added in that ability, saying "If you had a barrel rolling towards you, what would you do?".
Mario's name was originally "Mr. Video", and he was to be used in every video game Miyamoto developed. This idea was inspired by manga artists such as Osamu Tezuka and Fujio Akatsuka, who feature several characters across multiple manga, as well as British director Alfred Hitchcock, who appears in most of his own films. During localization of the game for American audiences, Nintendo of America's warehouse landlord Mario Segale confronted its then-president Minoru Arakawa, demanding back rent. Following a heated argument in which the Nintendo employees eventually convinced Segale he would be paid, they opted to name the character in the game Mario after him. Miyamoto had commented that if he had named him Mr. Video, he likely would have "disappeared off the face of the Earth". By Miamoto's own account, Mario's profession was chosen to fit with the game design. Since the game was set on a construction site, Mario was made into a carpenter. When he appeared again in Mario Bros., it was decided he should be a plumber, since a lot of the game is played in underground settings. Mario's character design, particularly his large nose, draws on western influences; once he became a plumber, Miyamoto decided to "put him in New York" and make him Italian, lightheartedly attributing Mario's nationality to his mustache. Other sources have Mario's profession chosen to be carpenter in an effort to depict the character as an ordinary hard worker, and make it easier for players to identify with the him; after a colleague suggested that Mario more resembled a plumber, Miyamoto changed his profession accordingly and developed Mario Bros., featuring the character in the sewers of New York City.
Due to the graphical limitations of arcade hardware at the time, Miyamoto clothed the character in bright red overalls and a blue shirt to contrast against each other and the background. A cap was added to let Miyamoto avoid drawing the character's hairstyle, forehead, and eyebrows, as well as to circumvent the issue of animating his hair as he jumped. To make him appear human onscreen despite his small size, Mario was given distinct features, prominently a large nose and a mustache, which avoided the need to draw a mouth and facial expressions on the small onscreen character.
Miyamoto developed Mario with the idea of using him as a "go to" character that could be put in any title as needed, albeit in cameo appearances as at the time he was not expecting Mario to become popular. To this end he originally called the character "Mr. Video", comparing his intent to have Mario appear in later games to the cameos done by Alfred Hitchcock within his films. Over time, Mario's appearance has become more defined; both a red "M" in a white circle on the front of his hat and gold buttons on his overalls have been added. Miyamoto attributed this process to the different development teams and artists for each game as well as advances in technology as time has gone on. Nintendo has never revealed Mario's full name, stating only that it was not "Mario Mario" despite the implication of the Mario Bros. series' title, its use in the film, and information given in the Prima official Guidebook to Mario and Luigi: Superstar Saga.

Spacewar (Game)

Spacewar! is one of the earliest known digital computer games.
Steve "Slug" Russell, Martin "Shag" Graetz and Wayne Witaenem of the fictitious "Hingham Institute" conceived of the game in 1961, with the intent of implementing it on a DEC PDP-1 at the Massachusetts Institute of Technology. After Alan Kotok obtained some sine and cosine routines from DEC, Russell began coding, and by February 1962 had produced his first version. It took approximately 200 hours of work to create the initial version. Additional features were developed by Dan Edwards, Peter Samson and Graetz.

Gameplay
The basic gameplay of Spacewar! involves two armed spaceships called "the needle" and "the wedge" attempting to shoot one another while maneuvering in the gravity well of a star. The ships fired missiles that were unaffected by gravity (due to a lack of processing time). Each ship had a limited number of missiles and a limited supply of fuel. The hyperspace feature could be used as a last-ditch means to evade enemy missiles, but the reentry from hyperspace would occur at a random location and there was an increasing probability of the ship exploding with each use.
Each player controls one of the ships, and must attempt to simultaneously shoot at the other ship and avoid colliding with the star. Player controls included clockwise and counterclockwise rotation, thrust, fire, and hyperspace. Initially these were controlled using the front-panel test switches, with four switches for each player, but these proved to wear out very quickly under normal gameplay. Most sites used custom control boxes wired into the same switches, although joysticks and other inputs were also used.

Options and features
Early versions of the game contained a randomly generated background starfield. However, the inaccuracy and lack of verisimilitude annoyed Samson, so he wrote a program based on real star charts that scrolled slowly: at any one time, 45% of the night sky was visible, every star down to the fifth magnitude. The program was called "Expensive Planetarium" (referring to the price of the PDP-1 computer), and was quickly incorporated into the main code.
There were several optional features controlled by sense switches on the console:

  • no star (and thus no gravity)
  • enable angular momentum
  • disable background starfield
  • the "Winds of Space"- a warping factor on trajectories that required the pilot to make careful adjustments every time they moved

Spacewar! was a fairly good overall diagnostic of the PDP-1 computer and Type 30 Precision CRT Display, so DEC apparently used it for factory testing and shipped PDP-1 computers to customers with the Spacewar! program already loaded into the core memory; this enabled field testing as when the PDP was fully set up, the field representative could simultaneously relax and do a final test of the PDP.

Ports to other systems
Spacewar! was extremely popular in the 1960s, and was widely ported to other systems. As it required a graphical display, most of the early ports were to other DEC platforms like the PDP-10 or PDP-11, or various CDC machines.
Early microcomputer systems also supported Spacewar!. The Cromemco Dazzler had a version, as did the ECD Micromind. The Micromind did not have a high-resolution bitmap display, due to the high cost of memory at the time. This version rendered ships in portions of the computer's flexible character generator, which was dynamically generated to support rendering ships at different angles.

Spacewar! today
As of May 2006, there is only one working PDP-1 known to be in existence, at the Computer History Museum in Mountain View, California. The computer and display were completely restored after two years of work, and Spacewar! is operational. On May 15, 2006, the museum presented The Mouse That Roared: A PDP-1 Celebration Event. The PDP-1 was demonstrated running Spacewar! as well as other programs, and members of the public were able to play the game using makeshift controllers.
Most recently, Spacewar! code has been given out with Microsoft XNA Game Studio Express.

Sunday, June 15, 2008

History of Video Games

The origin of video games lies in early cathode ray tube-based missile defense systems in the late 1940s. These programs were later adapted into other simple games during the 1950s. By the late 1950s and through the 1960s, more computer games were developed (mostly on mainframe computers), gradually increasing in sophistication and complexity. Following this period, video games diverged into different platforms: arcade, mainframe, console, personal computer and later handheld games.
The first commercially viable video game was Computer Space in 1971, which laid the foundation for a new entertainment industry in the late 1970s within the United States, Japan, and Europe. The first major crash in 1977 occurred when companies were forced to sell their older obsolete systems flooding the market. Six years later a second, greater crash occurred. This crash—brought on largely by a flood of poor quality video games coming to the market—resulted in a total collapse of the console gaming industry in the United States, ultimately shifting dominance of the market from North America to Japan. While the crash killed the console gaming market, the computer gaming market was largely unaffected. Subsequent generations of console video games would continue to be dominated by Japanese corporations. Though several attempts would be made by North American and European companies, fourth generation of consoles, their ventures would ultimately fail. Not until the sixth generation of video game consoles would a non-Japanese company release a commercially successful console system. The handheld gaming market has followed a similar path with several unsuccessful attempts made by American companies all of which failed outside some limited successes in the handheld electronic games early on. Currently only Japanese companies have any major successful handheld gaming consoles, although in recent years handheld games have come to devices like cellphones and PDAs as technology continues to converge.

A device called the Cathode-Ray Tube Amusement Device was patented in the United States by Thomas T. Goldsmith, Jr. and Estle Ray Mann. The patent was filed on January 25, 1947, and issued on December 14, 1948. It is described using eight vacuum tubes to simulate a missile firing at a target and contains knobs to adjust the curve and speed of the missile. Because computer graphics could not be drawn electronically at the time, small targets were drawn on a simple overlay and placed on the screen.

Tennis for Two
In 1949-1950, Charley Adama created a "Bouncing Ball" program for MIT's Whirlwind computer. While the program was not yet interactive, it was a precursor to games soon to come.
In February 1951, Christopher Strachey tried to run a draughts program he had written for the NPL Pilot ACE. The program exceeded the memory capacity of the machine and Strachey recoded his program for a machine at Manchester with a larger memory capacity by October.
Also in 1951, while developing television technologies for New York based electronics company Loral, inventor Ralph Baer came up with the idea of using the lights and patterns he used in his work as more than just calibration equipment. He realized that by giving an audience the ability to manipulate what was projected on their television sets, their role changed from passive observing to interactive manipulation. When he took this idea to his supervisor, it was quickly squashed because the company was already behind schedule.
OXO, a graphical version tic-tac-toe, was created by A.S. Douglas in 1952 at the University of Cambridge, in order to demonstrate his thesis on human-computer interaction. It was developed on the EDSAC computer, which uses a cathode ray tube as a visual display to display memory contents. The player competes against the computer.
In 1958 William Higinbotham created a game using an oscilloscope and analog computer. Titled Tennis for Two, it was used to entertain visitors of the Brookhaven National Laboratory in New York. Tennis for Two showed a simplified tennis court from the side, featuring a gravity-controlled ball that needed to be played over the "net," unlike its successor—Pong. The game was played with two box-shaped controllers, both equipped with a knob for trajectory and a button for hitting the ball. Tennis for Two was exhibited for two seasons before its dismantlement in 1959.

Wednesday, June 11, 2008

Game Programmer

A game programmer is a software engineer and programmer who primarily develops codebase for video games or related software, such as game development tools. Game programming has many specialized disciplines each of which is regarded as "game programmers". A game programmer should not be confused with a game designer, who works on game design.

Disciplines
A contemporary computer game may include advanced physics, artificial intelligence, 3D graphics, digitized sound, an original musical score, complex strategy and may use several input devices (such as mice, keyboards, gamepads and joysticks) and may be playable against other people via the Internet or over a LAN. Each aspect of the game can consume all of one programmer's time and, in many cases, several programmers. Some programmers may specialize in one area of game programming, but many are familiar with several aspects. The number of programmers needed for each feature depends somewhat on programmers' skills, but mostly are dictated by the type of game being developed.

Game engine programmer
Game engine programmers create the base engine of the game, including the simulated physics and graphics disciplines.

Physics engine programmer
A game's physics programmer is dedicated to developing the physics a game will employ. Typically, a game will only simulate a few aspects of real-world physics. For example, a space game may need simulated gravity, but would not have any need for simulating water viscosity.
Since processing cycles are always at a premium, physics programmers may employ "shortcuts" that are computationally inexpensive, but look and act "good enough" for the game in question. Sometimes, a specific subset of situations is specified and the physical outcome of such situations are stored in a record of some sort and are never computed at runtime at all.
Some physics programmers may even delve into the difficult tasks of inverse kinematics and other motions attributed to game characters, but increasingly these motions are assigned via motion capture libraries so as not to overload the CPU with complex calculations.
For a role-playing game such as Might and Magic, only one physics programmer may be needed. For a complex combat game such as Battlefield 1942, teams of several physics programmers may be required. See also: dynamical simulation

Graphics engine programmer
Historically, this title usually belonged to a programmer who developed specialized blitter algorithms and clever optimizations for 2D graphics. Today, however, it is almost exclusively applied to programmers who specialize in developing and modifying complex 3D graphic renderers. Some 2D graphics skills have just recently become useful again, though, for developing games for the new generation of cell phones, PDAs and handheld game consoles.
A 3D graphics programmer must have a firm grasp of advanced mathematical concepts such as vector and matrix math, quaternions and linear algebra.
Programmers specializing in this area of game development can demand high wages and are usually a scarce commodity. Their skills can be used for computer games as well as games for game consoles such as the PlayStation 3, Nintendo DS, PSP, Wii and the Xbox 360.

Artificial intelligence programmer
An AI programmer develops the logic of the game to simulate intelligence in enemies and opponents. It has recently evolved into a specialized discipline, as these tasks used to be implemented by programmers who specialized in other areas. An AI programmer may program pathfinding, strategy and enemy tactic systems. This is one of the most challenging aspects of game programming and its sophistication is developing rapidly. Contemporary games dedicate approximately 10 to 20 percent of their programming staff to AI.
Some games, such as strategy games like Civilization III or role-playing games such as The Elder Scrolls IV: Oblivion, use AI heavily, while others, such as puzzle games, use it sparingly or not at all. Many game developers have created entire languages that can be used to program their own AI for games via scripts. These languages are typically less technical than the language used to implement the game, and will often be used by the game or level designers to implement the world of the game. Many studios also make their games' scripting available to players, and it is often used extensively by third party mod developers.
The AI technology used in games programming should not be confused with academic AI programming and research. Although both areas do borrow from each other, they are usually considered distinct disciplines. However this is not always true. For example, the 2001 game by Lionhead Studios Black & White features a unique AI approach to a user controlled creature who uses learning to model behaviours during game-play. In recent years, more effort has been directed towards intervening promising fields of AI research and game AI programming.

Sound programmer
Not always a separate discipline, sound programming has been a mainstay of game programming since the days of Pong. Most games make use of audio, and many have a full musical score. Computer audio games eschew graphics altogether and use sound as their primary feedback mechanism.
Many games use advanced techniques such as 3D positional sound, making audio programming a non-trivial matter. With these games, one or two programmers may dedicate all their time to building and refining the game's sound engine, and sound programmers may be trained or have a formal background in digital signal processing.
Scripting tools are often created and/or maintained by sound programmers for use by sound designers. These tools allow designers to associate sounds with characters, actions, objects and events while also assigning music or atmospheric sounds for game environments (levels or areas) and setting environmental variables such as reverberation.

Gameplay programmer
Though all programmers add to the content and experience that a game provides, a gameplay programmer focuses more on a game's strategy, implementation of the game's mechanics and logic, and the "feel" of a game. This is usually not a separate discipline, as what this programmer does usually differs from game to game, and they will inevitably be involved with more specialized areas of the game's development such as graphics or sound.
This programmer may implement strategy tables, tweak input code, or adjust other factors that alter the game. Many of these aspects may be altered by programmers who specialize in these areas, however (for example, strategy tables may be implemented by AI programmers).

Scripter
In early computer games, gameplay programmers would write code to create all the content in the game—if the player was supposed to shoot a particular enemy, and a red key was supposed to appear along with some text on the screen, then this functionality was all written as part of the core program in C or assembly language by a gameplay programmer.
More often today the core game engine is usually separated from gameplay programming. This has several development advantages. The game engine deals with graphics rendering, sound, physics and so on while a scripting language deals with things like cinematic events, enemy behavior and game objectives. Large game projects can have a team of scripters to implement these sorts of game content.
Scripters usually are also game designers. It is often easier to find a qualified game designer who can be taught a script language as opposed to finding a qualified game designer who has mastered C++.

UI programmer
This programmer specializes in programming user interfaces (UIs) for games.[14] Though some games have custom user interfaces, this programmer is more likely to develop a library that can be used across multiple projects. Most UIs look 2D, though contemporary UIs usually use the same 3D technology as the rest of the game so some knowledge of 3D math and systems is helpful for this role. Advanced UI systems may allow scripting and special effects, such as transparency, animation or particle effects for the controls.

Input programmer
The joystick was the primary input device for 1980s era games. Now game programmers must account for a wide range of input devices, but the joystick today is supported in relatively few games, though still dominant for flight simulators.
Input programming, while usually not a job title, or even a full-time position on a particular game project, is still an important task. This programmer writes the code specifying how input devices such as a keyboard, mouse or joystick affect the game. These routines are typically developed early in production and are continually tweaked during development. Normally, one programmer does not need to dedicate his entire time to developing these systems. A first person shooter such as Quake may need a very complex and low latency input system, while the needs of a turn-based strategy game such as Heroes of Might and Magic are much lower.

Network programmer
This programmer writes code that allows players to compete against each other (or play together) connected via a LAN or the Internet (or in rarer cases, directly connected via modem). Programmers implementing this feature of a game can spend all their time on this one task. Network programming is one of the most challenging game programming roles. These programmers have to deal with network latency, packet compression, and dropped or interrupted connections. Though this type of programming can consume the entire development process, network programming is often put off until the last few months of development, adding additional difficulties to this role.

Game tools programmer
The tools programmer can make game development heaven or unbearably difficult. Tools are used on almost every game for tasks such as scripting, importing or converting art, modifying behaviors or building levels. Some tools, such as an IDE, 3D graphics modelling software and Photoshop are COTS products, but many tools are specific to the game and are custom programmed.
It is the tools programmer's job to write the tools that handle these game-specific tasks. Some tools will be included with the game, but most will not. Most tools evolve with the game and can easily consume all of several programmers' time. Well written and fairly bug-free tools make everyone's development tasks easier. Poorly written or poorly documented ones can seriously hamper development and jeopardize the project. Due to time constraints, however, many tools are not carefully implemented.

Porting programmer
Porting a game from one platform to another has always been an important activity for game developers. Some programmers specialize in this activity, converting code from one operating system to work on another. Sometimes, the programmer is responsible for making the application work not for just one operating system, but on a variety of devices, such as mobile phones. Often, however, "porting" can involve re-writing the entire game from scratch as proprietary languages, tools or hardware make converting source code a fruitless endeavour.
This programmer must be familiar with both the original and target operating systems and languages (for example, converting a game originally written in C++ to Java), convert assets, such as artwork and sounds or rewrite code for low memory phones. This programmer may also have to side-step buggy language implementations, some with little documentation, refactor code, oversee multiple branches of code, rewrite code to scale for wide variety of screen sizes and implement special operator guidelines. They may also have to fix bugs that were not discovered in the original release of a game.

Technology programmer
The technology programmer is more likely to be found in larger development studios with specific departments dedicated solely to R&D. Unlike other members of the programming team, the technology programmer usually isn't tied to a specific project or type of development for an extended length of time, and they will typically report directly to a CTO or department head rather than a game producer. As the job title implies, this position is extremely demanding from a technical perspective and requires intimate knowledge of the target platform hardware. Tasks cover a broad range of subjects including the practical implementation of algorithms described in research papers, very low-level assembly optimization and the ability to solve challenging issues pertaining to memory requirements and caching issues during the latter stages of a project. There is considerable amount of cross-over between this position and some of the others, particularly the graphics programmer.

Generalist
In smaller teams, one or more programmers will often be described as 'Generalists' who will take on the various other roles as needed. Generalists are often engaged in the task of tracking down bugs and determining which subsystem expertise is required to fix them.

Lead game programmer
The lead programmer is ultimately in charge of all programming for the game. It is their job to make sure the various submodules of the game are being implemented properly and to keep track of development from a programming standpoint. A person in this role usually transitions from other aspects of game programming to this role after several years of experience. Despite the title, this person usually has less time for writing code than other programmers on the project as they are required to attend meetings and interface with the client or other leads on the game. However, the lead programmer is still expected to program at least some of the time and is also expected to be knowledgeable in most technical areas of the game. There is often considerable common ground in the role of technical director and lead programmer, such that the jobs are often covered by one person.