Game Programming
(Selling)
Selling Your Game
If you have created a game that you feel could be sold, you really have two options: Trying to find a publisher, or publishing the game yourself.
There are a number of independent game publishers out there on the internet. Some of them will require that you sign an exclusive contract with them, which means that they will be the sole distributors of your game. Other publishers may give you the option of signing a non-exclusive agreement, although for a lower rate of pay.
Self-publishing will ensure that a greater percentage of the total earnings will go into your pockets, but the twin burdens of marketing and sales will then fall squarely upon your shoulders.
Some truly excellent articles for independent game developers can be found on Dexterity Software's website.
Of course, if you're programming games for the joy of it, or you feel that it would be best for the future of the game and its players, it's always possible you'd like to release the games as Free Software/Open Source Software (FOSS). If so, it's advantageous to decide this early; A number of sites such as Sourceforge give free web-hosting to FOSS projects, and using a FOSS license allows you to reuse code from existing FOSS games with a compatible license. However, while it's theoretically possible to make money selling FOSS, it is not currently a good choice if you hope to be paid for developing your game.
Tuesday, May 27, 2008
Wednesday, May 21, 2008
Game Programming (Coding)
Game Programming
(Coding)
Coding Your Game
Code flexibly. Changes happen, no matter how well you plan. If your game's structure is too rigid, you may find that a single oversight in the design phase could necessitate a re-write of some of your game's engine.
Prototype. Try to get your game to a quick-and-dirty playable state as soon as possible. The graphics need not be complete, and the bells-and-whistles need not be implemented, but it is important to get an early idea of how your game will play. It's possible that you'll try it and say, "Wow, this is no fun at all." Thankfully, if you've made this discovery early enough, you'll be able to re-work the gameplay and try again without much trouble. Seeing your game in action, even if in a rudimentary state, could also motivate you very effectively.
Don't optimize early. Spending your time optimizing code before you even know how the game as a whole will perform is pointless. Code flexibly, yes, such that future optimization will be possible, but early optimization can be a big time waster. You won't know where your bottlenecks will be until the game approaches its final state. If you spend days honing your blitting routines, only to find out later that your pathfinding routines are the bottleneck, you've wasted your time! (In the words of Donald Knuth, "Premature optimization is the root of all evil.")
Try not to throw away well tested code. The principle of code reuse is very important for large projects. You may think throwing away all of your code and starting from scratch is a good idea, but it may not be. Think of the weeks, months, and even years you have spent writing and testing that code. Read more on this philosophy at Joel On Software.
Deploying Your Game
So, your game is complete and ready for the masses, but how do you get it to them? That's where deployment comes in. Be sure to read our deployment page for a full description of the options you have.
Next : Selling
Coding Your Game
Code flexibly. Changes happen, no matter how well you plan. If your game's structure is too rigid, you may find that a single oversight in the design phase could necessitate a re-write of some of your game's engine.
Prototype. Try to get your game to a quick-and-dirty playable state as soon as possible. The graphics need not be complete, and the bells-and-whistles need not be implemented, but it is important to get an early idea of how your game will play. It's possible that you'll try it and say, "Wow, this is no fun at all." Thankfully, if you've made this discovery early enough, you'll be able to re-work the gameplay and try again without much trouble. Seeing your game in action, even if in a rudimentary state, could also motivate you very effectively.
Don't optimize early. Spending your time optimizing code before you even know how the game as a whole will perform is pointless. Code flexibly, yes, such that future optimization will be possible, but early optimization can be a big time waster. You won't know where your bottlenecks will be until the game approaches its final state. If you spend days honing your blitting routines, only to find out later that your pathfinding routines are the bottleneck, you've wasted your time! (In the words of Donald Knuth, "Premature optimization is the root of all evil.")
Try not to throw away well tested code. The principle of code reuse is very important for large projects. You may think throwing away all of your code and starting from scratch is a good idea, but it may not be. Think of the weeks, months, and even years you have spent writing and testing that code. Read more on this philosophy at Joel On Software.
Deploying Your Game
So, your game is complete and ready for the masses, but how do you get it to them? That's where deployment comes in. Be sure to read our deployment page for a full description of the options you have.
Next : Selling
Sunday, May 18, 2008
Game Programming (Designing)
Game Programming
(Designing)
Gathering Your Tools
The Programming Tools page has a list of tutorials, with appropriate media development tools that can be found over on the content tools page. This should be useful for you.
Designing Your Game
Caution! Yes, caution is definitely called for when designing a game. Avoid newbie mistakes! Follow this advice:
Start small. Most newbie game programmers dream of making the next hit game. If you're just starting out, this is an impossible goal! It will only lead to frustration and defeat. You must start small; the only way to learn game programming is to be a game programmer. Try making a simple Tetris-style game, a breakout clone, or something of that nature. You'll run into enough trouble with Tetris if you're just starting out. If you have a little more experience you may wish to visit the game genres page to help decide on a game type.
Plan. If you have nothing more than some vague notion of making a "really cool RTS game" you are likely going to run into trouble about halfway through your project, when you realize that your initial assumptions were incorrect. Try to be as thorough as possible in the designing phase; it'll save you countless hours in the end. Create a design document for your game, and include a structured version of all of your gameplay and technical design notes. Think through your game from beginning to end, and document every gameplay feature, and how you plan to implement it technically. Having said that, I'll now suggest that no design document is perfect. Something unanticipated will always come up, no matter how thorough you've been. Just do your best!
Wait. I've always found that my ideas seem brilliant to me when I first come up with them, but a few weeks down the road they don't always seem quite so interesting. Be sure that you've given yourself ample time to mull an idea over, before committing yourself to it. You don't want to get bored with your game after investing hours in its development!
Get feedback. Find a group of gamers and pitch your idea to them. If they're not excited and interested by your idea when you're enthusiastically describing it to them, they'll surely not be excited and interested by the end result. Get feedback, and re-work your idea.
Creating Game Media
For many game developers, this is the hardest part! After perusing the content tools page and deciding on a set of tools, it's time to get down to the business of creating your game's media. If you aren't an artist, you may need to search around for partners who are skilled in this area. For beginner games, there isn't anything at all wrong with so-called "programmer art," however. You can also try some of the freely available art resources that can be found on the Internet.
Next : Coding
(Designing)
Gathering Your Tools
The Programming Tools page has a list of tutorials, with appropriate media development tools that can be found over on the content tools page. This should be useful for you.
Designing Your Game
Caution! Yes, caution is definitely called for when designing a game. Avoid newbie mistakes! Follow this advice:
Start small. Most newbie game programmers dream of making the next hit game. If you're just starting out, this is an impossible goal! It will only lead to frustration and defeat. You must start small; the only way to learn game programming is to be a game programmer. Try making a simple Tetris-style game, a breakout clone, or something of that nature. You'll run into enough trouble with Tetris if you're just starting out. If you have a little more experience you may wish to visit the game genres page to help decide on a game type.
Plan. If you have nothing more than some vague notion of making a "really cool RTS game" you are likely going to run into trouble about halfway through your project, when you realize that your initial assumptions were incorrect. Try to be as thorough as possible in the designing phase; it'll save you countless hours in the end. Create a design document for your game, and include a structured version of all of your gameplay and technical design notes. Think through your game from beginning to end, and document every gameplay feature, and how you plan to implement it technically. Having said that, I'll now suggest that no design document is perfect. Something unanticipated will always come up, no matter how thorough you've been. Just do your best!
Wait. I've always found that my ideas seem brilliant to me when I first come up with them, but a few weeks down the road they don't always seem quite so interesting. Be sure that you've given yourself ample time to mull an idea over, before committing yourself to it. You don't want to get bored with your game after investing hours in its development!
Get feedback. Find a group of gamers and pitch your idea to them. If they're not excited and interested by your idea when you're enthusiastically describing it to them, they'll surely not be excited and interested by the end result. Get feedback, and re-work your idea.
Creating Game Media
For many game developers, this is the hardest part! After perusing the content tools page and deciding on a set of tools, it's time to get down to the business of creating your game's media. If you aren't an artist, you may need to search around for partners who are skilled in this area. For beginner games, there isn't anything at all wrong with so-called "programmer art," however. You can also try some of the freely available art resources that can be found on the Internet.
Next : Coding
Thursday, May 15, 2008
Game Programming (First Steps)
Game Programming
(First Steps)
The first thing to do is to decide which programming language or programming environment you would like to use.
You can go about this in several ways:
You can begin by choosing which language you wish to program in and then find a suitable development environment for that language.
You can begin by choosing a development environment and work with the language options your chosen development environment gives you.
If you are already proficient in a particular programming language, it is likely best to begin there since game programming is difficult enough on its own; learning a whole new language will only compound the difficulty.
If you are not familiar with any particular programming language, you'll need to decide which one you'd like to learn, but you are also in a unique and fortuitous scenario; you can pick the programming environment and language that is best for you.
When researching languages, you should consider:
How easy is the language to learn?
Is the language suitable for making games? (Is it fast and powerful enough?)
Does the language work with suitable game development libraries or APIs?
What platforms (Operating systems/processor architectures) will the language run on?
Will I be able to find support when I run in to problems? Is there adequate documentation available?
There is an entire tutorial devoted to picking a first language here.
Once you've decided on a language, you'll need to choose a game development library or API. Game libraries may provide you with functions for displaying graphics, playing sounds, getting input, and more. See the Wiki's Libraries for a list of libraries from which you can choose. This is another huge decision.
Consider the following:
Is the library compatible with my language?
Is the library suited to my skill level?
Will the library work with the kind of games I plan on making?
Is adequate documentation available so that I can learn the library?
Do I understand and agree to the library's license?
Now that you've got a language and library in mind, it's time to read tutorials! This is the most important step in the whole process. You now learn to use your selected language and library. Immerse yourself. Read everything you can. If you don't understand, ask for help. Above all, do not give up. The languages page will lead you to a number of game programming tutorials for your language of choice, and your library should have documentation for you to read. When you're ready to try writing some code of your own, you'll need an IDE, or "Integrated Development Environment," which is a program that supplies, among other advanced features, a place to write code and a way to compile it. With many languages, a full-blown IDE is not strictly necessary, but it still might be easier for a beginner to use one.
Next : Designing
The first thing to do is to decide which programming language or programming environment you would like to use.
You can go about this in several ways:
You can begin by choosing which language you wish to program in and then find a suitable development environment for that language.
You can begin by choosing a development environment and work with the language options your chosen development environment gives you.
If you are already proficient in a particular programming language, it is likely best to begin there since game programming is difficult enough on its own; learning a whole new language will only compound the difficulty.
If you are not familiar with any particular programming language, you'll need to decide which one you'd like to learn, but you are also in a unique and fortuitous scenario; you can pick the programming environment and language that is best for you.
When researching languages, you should consider:
How easy is the language to learn?
Is the language suitable for making games? (Is it fast and powerful enough?)
Does the language work with suitable game development libraries or APIs?
What platforms (Operating systems/processor architectures) will the language run on?
Will I be able to find support when I run in to problems? Is there adequate documentation available?
There is an entire tutorial devoted to picking a first language here.
Once you've decided on a language, you'll need to choose a game development library or API. Game libraries may provide you with functions for displaying graphics, playing sounds, getting input, and more. See the Wiki's Libraries for a list of libraries from which you can choose. This is another huge decision.
Consider the following:
Is the library compatible with my language?
Is the library suited to my skill level?
Will the library work with the kind of games I plan on making?
Is adequate documentation available so that I can learn the library?
Do I understand and agree to the library's license?
Now that you've got a language and library in mind, it's time to read tutorials! This is the most important step in the whole process. You now learn to use your selected language and library. Immerse yourself. Read everything you can. If you don't understand, ask for help. Above all, do not give up. The languages page will lead you to a number of game programming tutorials for your language of choice, and your library should have documentation for you to read. When you're ready to try writing some code of your own, you'll need an IDE, or "Integrated Development Environment," which is a program that supplies, among other advanced features, a place to write code and a way to compile it. With many languages, a full-blown IDE is not strictly necessary, but it still might be easier for a beginner to use one.
Next : Designing
Sunday, May 11, 2008
Game Programming (Started)
Game Programming
(Started)
How do I get Started
When beginning to learn about game programming, finding a place to start can be intimidating and difficult. This article aims to help point you in the right direction, by giving you the tips and resources you need.
The Approach: How do I get started?
The answer to this question can depend on many things, one of them being your personality.
Are you the type of self-motivated person that can flow through difficult and even frustrating puzzles and problems to reach a goal? If so and you have a game idea that you dream about every night, then it would be wise (and you probably have the determination) to begin with the information given in the following sections.
Or are you the type of person that would like to see results quickly and are perhaps interested in avoiding as many complicated and frustrating scenarios as possible (they will always be there) at least for now? If so it could be ideal for you to take up programming by working with a pre-made game engine, as you would likely get faster results that way than you would with a traditional programming language/gaming library combination.
Perhaps it would be best to find a development environment and begin programming as many small games (Pong, Tetris, Breakout, etc...) as you can just to get a feel for how they are done. Perhaps pick your favorite and really flesh it out with all the bells and whistles and fantastic features you can think of.
This page is to help you determine the best approach for you. This page even gets you thinking about distributing or releasing your game to the public, which is admittedly beyond a 'Getting Started' issue for a beginning programmer, but could be considered a 'Getting Started' issue for a programmer who is just beginning game development.
Whatever you do, don't get overwhelmed, or frustrated. Scope out some of this information, then roll up your sleeves and try some of it out, there's certainly something here that will fit your needs and your personality.
Next : First Steps
(Started)
How do I get Started
When beginning to learn about game programming, finding a place to start can be intimidating and difficult. This article aims to help point you in the right direction, by giving you the tips and resources you need.
The Approach: How do I get started?
The answer to this question can depend on many things, one of them being your personality.
Are you the type of self-motivated person that can flow through difficult and even frustrating puzzles and problems to reach a goal? If so and you have a game idea that you dream about every night, then it would be wise (and you probably have the determination) to begin with the information given in the following sections.
Or are you the type of person that would like to see results quickly and are perhaps interested in avoiding as many complicated and frustrating scenarios as possible (they will always be there) at least for now? If so it could be ideal for you to take up programming by working with a pre-made game engine, as you would likely get faster results that way than you would with a traditional programming language/gaming library combination.
Perhaps it would be best to find a development environment and begin programming as many small games (Pong, Tetris, Breakout, etc...) as you can just to get a feel for how they are done. Perhaps pick your favorite and really flesh it out with all the bells and whistles and fantastic features you can think of.
This page is to help you determine the best approach for you. This page even gets you thinking about distributing or releasing your game to the public, which is admittedly beyond a 'Getting Started' issue for a beginning programmer, but could be considered a 'Getting Started' issue for a programmer who is just beginning game development.
Whatever you do, don't get overwhelmed, or frustrated. Scope out some of this information, then roll up your sleeves and try some of it out, there's certainly something here that will fit your needs and your personality.
Next : First Steps
Saturday, May 10, 2008
What is Game Programming
What is Game Programming
Playing a computer game is one thing, but how are these games produced? Could I make my own computer game? How do companies bring together the art, music and story and meld it together to form an interactive experience? To some, this process seems like a voodoo; a complex dark art that they neither understand, or feel that only large companies with millions of funding and masses of staff are capable of doing.
'Programming' is the act of instructing a computer to do your bidding. Computer games are made up of millions of individual instructions that tell the computer what to draw where, how to make the characters act, what to show on screen and so on. These instructions are what bring together the art, sound and story, much like a film director calls out, "Lights, Camera, Action!". (Although Programming is not quite that simple, yet!)
Game programming is an endless supply of coffee. It is sitting in your room listening to music on your headphones because it's 01:00 and everyone else is sleeping. Game programming is collision detection, vectors, mathematics, and in some cases, frustration. Game programming is NOT sleeping and definitely NOT profitable (for most) but game programming is FUN and we love game programming! Game programming all the way!
Nonetheless, it's possible to get a job in the game industry! Imagine working with other creative, like-minded individuals to develop games that millions of people will potentially play! Game programmers work with other passionate artists, game designers, and production managers to take an idea to reality. Many companies such as Microsoft Games Studios, Rare, and Bungie offer internships to students who have an interest in video game programming. So, keep reading to discover how you can develop the game of your dreams.
Game Programming is your school level studies combined with your state of the art computer programming skills. If you know C/C++ perfectly, that doesn't assure that you'd be a perfect game programmer because game programming requires knowledge of 3D mathematics clubbed with AI and physics skills. Game Programming is fun but the most challenging form of programming as there are not much possibilities of work arounds in this domain, there's just one way and that is DO IT RIGHT IN THE MOST OPTIMIZED WAY.
Note: It is not a requirement of programming that you practice bad sleeping habits, nor is it recommended. Don't forget to take regular breaks, away from the computer, and sleep as needed. Some doctors recommend diverting your eyes every ten minutes or so for about one minute. Looking out the window, or at something that doesn't stress your eyes, is a good idea for long term "sessions."
Playing a computer game is one thing, but how are these games produced? Could I make my own computer game? How do companies bring together the art, music and story and meld it together to form an interactive experience? To some, this process seems like a voodoo; a complex dark art that they neither understand, or feel that only large companies with millions of funding and masses of staff are capable of doing.
'Programming' is the act of instructing a computer to do your bidding. Computer games are made up of millions of individual instructions that tell the computer what to draw where, how to make the characters act, what to show on screen and so on. These instructions are what bring together the art, sound and story, much like a film director calls out, "Lights, Camera, Action!". (Although Programming is not quite that simple, yet!)
Game programming is an endless supply of coffee. It is sitting in your room listening to music on your headphones because it's 01:00 and everyone else is sleeping. Game programming is collision detection, vectors, mathematics, and in some cases, frustration. Game programming is NOT sleeping and definitely NOT profitable (for most) but game programming is FUN and we love game programming! Game programming all the way!
Nonetheless, it's possible to get a job in the game industry! Imagine working with other creative, like-minded individuals to develop games that millions of people will potentially play! Game programmers work with other passionate artists, game designers, and production managers to take an idea to reality. Many companies such as Microsoft Games Studios, Rare, and Bungie offer internships to students who have an interest in video game programming. So, keep reading to discover how you can develop the game of your dreams.
Game Programming is your school level studies combined with your state of the art computer programming skills. If you know C/C++ perfectly, that doesn't assure that you'd be a perfect game programmer because game programming requires knowledge of 3D mathematics clubbed with AI and physics skills. Game Programming is fun but the most challenging form of programming as there are not much possibilities of work arounds in this domain, there's just one way and that is DO IT RIGHT IN THE MOST OPTIMIZED WAY.
Note: It is not a requirement of programming that you practice bad sleeping habits, nor is it recommended. Don't forget to take regular breaks, away from the computer, and sleep as needed. Some doctors recommend diverting your eyes every ten minutes or so for about one minute. Looking out the window, or at something that doesn't stress your eyes, is a good idea for long term "sessions."
Thursday, May 1, 2008
Game Programming
Game Programming
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby. Some software engineering students program games as exercises for learning a programming language or operating system.
Development process
Professional game development usually begins with a game design, which itself has several possible origins. Occasionally the game development process starts with no clear design in mind, but as a series of experimentations. For example, game designer Will Wright began development of The Sims – the best-selling PC game of all time – by getting programmers to experiment with several ideas.
Prototyping
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
Though the programmer's main job is not to develop the game design, the programmers often contribute to the design as do game artists. The game designer will solicit input from both the producer and the art and programming lead for ideas and strategies for the game design. Often individuals in non-lead positions also contribute, such as copywriters and other programmers and artists.
Programmers often closely follow the game design document. As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.
Production
During production, programmers churn out a great deal of source code to create the game described in the game's design document. Along the way, the design document is modified to meet limitations or expanded to exploit new features. The design document is very much a "living document" much of whose life is dictated by programmer's schedules, talent and resourcefulness.
While many programmers have some say in a game's content, most game producers solicit input from the lead programmer as to the status of a game programming development. The lead is responsible for knowing the status of all facets of the game's programming and for pointing out limitations. The lead programmer may also pass on suggestions from the programmers as to possible features they'd like to implement.
With today's visually rich content, the programmer must often interact with the art staff. This very much depends on the programmer's role, of course. For example, a 3D graphics programmer may need to work side by side with the game's 3D modelers discussing strategies and design considerations, while an AI programmer may need to interact very little, if at all, with the art staff. To help artists and level designers with their tasks, programmers may volunteer or be called upon to develop tools and utilities. Many of these may be ad-hoc and buggy due to time constraints (time for development of such tools is often not included in a game's schedule) as well as because they are only for in-house use anyway. Many game tools are developed in RAD languages for quicker development and may be discarded after the completion of the game.
Testing
The formal quality assurance testing process, performed by professional game testers, begins well into game development. High-budget titles may begin testing with the first playable alpha, while low-budget and casual games might not enter testing until a release candidate is ready. The programmers' task is to fix errors and bugs as such are discovered by the QA teams.
Game programming, a subset of game development, is the programming of computer, console or arcade games. Though often engaged in by professional game programmers, many novices may program games as a hobby. Some software engineering students program games as exercises for learning a programming language or operating system.
Development process
Professional game development usually begins with a game design, which itself has several possible origins. Occasionally the game development process starts with no clear design in mind, but as a series of experimentations. For example, game designer Will Wright began development of The Sims – the best-selling PC game of all time – by getting programmers to experiment with several ideas.
Prototyping
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
Though the programmer's main job is not to develop the game design, the programmers often contribute to the design as do game artists. The game designer will solicit input from both the producer and the art and programming lead for ideas and strategies for the game design. Often individuals in non-lead positions also contribute, such as copywriters and other programmers and artists.
Programmers often closely follow the game design document. As the game development progresses, the design document changes as programming limitations and new capabilities are discovered and exploited.
Production
During production, programmers churn out a great deal of source code to create the game described in the game's design document. Along the way, the design document is modified to meet limitations or expanded to exploit new features. The design document is very much a "living document" much of whose life is dictated by programmer's schedules, talent and resourcefulness.
While many programmers have some say in a game's content, most game producers solicit input from the lead programmer as to the status of a game programming development. The lead is responsible for knowing the status of all facets of the game's programming and for pointing out limitations. The lead programmer may also pass on suggestions from the programmers as to possible features they'd like to implement.
With today's visually rich content, the programmer must often interact with the art staff. This very much depends on the programmer's role, of course. For example, a 3D graphics programmer may need to work side by side with the game's 3D modelers discussing strategies and design considerations, while an AI programmer may need to interact very little, if at all, with the art staff. To help artists and level designers with their tasks, programmers may volunteer or be called upon to develop tools and utilities. Many of these may be ad-hoc and buggy due to time constraints (time for development of such tools is often not included in a game's schedule) as well as because they are only for in-house use anyway. Many game tools are developed in RAD languages for quicker development and may be discarded after the completion of the game.
Testing
The formal quality assurance testing process, performed by professional game testers, begins well into game development. High-budget titles may begin testing with the first playable alpha, while low-budget and casual games might not enter testing until a release candidate is ready. The programmers' task is to fix errors and bugs as such are discovered by the QA teams.