Software design
This article is about the activity between requirements and programming. For the broader meaning, see software development. Software design usually involves problem solving and planning a software solution. Overview[edit] Software design can be considered as creating a solution to a problem in hand with available capabilities. When designing software, two important factors to consider are its security and usability. Software Design[edit] Design Principles[edit] Software design is both a process and a model. The design process should not suffer from “tunnel vision.” Design Concepts[edit] The design concepts provide the software designer with a foundation from which more sophisticated methods can be applied. Design considerations[edit] There are many aspects to consider in the design of a piece of software. Compatibility - The software is able to operate with other products that are designed for interoperability with another product. Modeling language[edit] Design patterns[edit] Usage[edit]
Game programming
This article is about the specifics of the programming aspect of video game development, for a broader overview see video game development. Development process[edit] Prototyping[edit] Programmers are often required to produce prototypes of gameplay ideas and features. A great deal of prototyping may take place during pre-production, before the design document is complete, and may help determine what features the design specifies. Prototypes are developed quickly with very little time for up-front design and mostly act as a proof of concept or to test ideas. Game design[edit] Main article: Game design Though the programmer's main job is not to develop the game design, the programmers often contribute to the design, as do game artists. Programmers often closely follow the game design document. Production[edit] During production, programmers may create a great deal of source code to create the game described in the game's design document. Testing[edit] Main article: Game testing Maintenance[edit]
Physics engine
A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics (including collision detection), soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film. Their main uses are in video games (typically as middleware), in which case the simulations are in real-time. The term is sometimes used more generally to describe any software system for simulating physical phenomena, such as high-performance scientific simulation. Description[edit] There are generally two classes of physics engines: real-time and high-precision. Scientific engines[edit] One of the first general purpose computers, ENIAC, was used as a very simple type of physics engine. Physics engines have been commonly used on supercomputers since the 1980s to perform computational fluid dynamics modeling, where particles are assigned force vectors that are combined to show circulation. Game engines[edit]
Video game development
Video game development is the process of creating a video game. Development is undertaken by a game developer, which may range from a single person to a large business. Traditional commercial PC and console games are normally funded by a publisher and take several years to develop. Indie games can take less time and can be produced cheaply by individuals and small developers. The indie game industry has seen a rise in recent years with the growth of new online distribution systems and the mobile game market. The first video games were developed in the 1960s, but required mainframe computers and were not available to the general public. Mainstream PC and console games are generally developed in phases. Mobile games are, in general, much quicker to develop than the mainstream PC and console games. Overview[edit] Game development is the software development process by which a video game is produced. All but the smallest developer companies work on several titles at once. History[edit]
deWiTTERS Game Loop – Koonsolo Games
The game loop is the heartbeat of every game, no game can run without it. But unfortunately for every new game programmer, there aren’t any good articles on the internet who provide the proper information on this topic. But fear not, because you have just stumbled upon the one and only article that gives the game loop the attention it deserves. Thanks to my job as a game programmer, I come into contact with a lot of code for small mobile games. (Thanks to Kao Cardoso Félix this article is also available in Brazilian Portuguese, and thanks to Damian/MORT in Polish) The Game Loop Every game consists of a sequence of getting user input, updating the game state, handling AI, playing music and sound effects, and displaying the game. bool game_is_running = true; while( game_is_running ) { update_game(); display_game(); } The problem with this simple loop is that it doesn’t handle time, the game just runs. FPS is an abbreviation for Frames Per Second. Game Speed Implementation Slow hardware
Fix Your Timestep!
Introduction Hello, I’m Glenn Fiedler and welcome to the second article in my series on Game Physics. In the previous article we discussed how to integrate the equations of motion using an RK4 integrator. But how to choose this delta time value? Fixed delta time The simplest way to step forward is with a fixed delta time, like 1/60th of a second: double t = 0.0; double dt = 1.0 / 60.0; while ( ! In many ways this code is ideal. But in the real world you may not know the display refresh rate ahead of time, VSYNC could be turned off, or perhaps you could be running on a slow computer which cannot update and render your frame fast enough to present it at 60fps. In these cases your simulation will run faster or slower than you intended. Variable delta time Fixing this *seems* simple. double t = 0.0; double currentTime = hires_time_in_seconds(); while ( ! But there is a huge problem with this approach which I will now explain. Semi-fixed timestep What exactly is this spiral of death? Free the physics
Features - Multithreaded Game Engine Architectures
Even though multicore processors have been available for the PC for well over a year, and the Xbox 360 has already sold millions, there is still a lack of knowledge regarding the development of game engines for multicore platforms. This article will attempt to provide a view to game engine parallelism on an architecture level. As shown by Gabb and Lake[1], instead of looking at multithreading on the level of individual components, we can find better performance by looking for ways to add parallelism to the whole game loop. There are two main ways to break down a program to concurrent parts: function parallelism, which divides the program to concurrent tasks, and data parallelism, which tries to find some set of data for which to perform the same tasks in parallel. One way to include parallelism to a game loop is to find parallel tasks from an existing loop. Figure 1. Costa[2] presents a way to automate the scaling of this kind of an architecture.
Multi-core Processors
This article originally appeared in the "Inner Product" column in Game Developer Magazine, February 2006 Next generation game platforms are increasingly making use of multiple processors to deliver more computing power. The Xbox 360 has three symmetrical CPUs running two hardware thread each. The PS3 has one master CPU with seven separate "SPE" processors. The Nintendo Revolution is probably dual threaded. Programmers who were used to programming for a single core are now increasing faced with the challenge of translating their programming skills to a multi-core system. The simplest option is to just ignore the additional CPU resources, and run all your code from a single thread on a single CPU. All the examples will use this simplified version of the systems in a game engine. Here the flow of execution is very straightforward. While this option is obviously not going to take advantage of any of the additional processing power, it does greatly simplify the task of programming the game.