Programming 3D Physics for Computer Games and Interactive Simulations
"Introduction"

This atom was added to the encyclopedia by gregsometimes
The implementation of physics in interactive software and entertainment has been maturing with the need for absolute realism in computer applications. Today's computers are capable of almost(more about this later) photo-realistic graphics. Let's go to the very beginning. In the ZX-Spectrum/Commodore days, due to limited memory capacity (Try designing a game in 48k, with music, sound effects and color graphics), the quality of a computer game has been mainly decided by its gameplay and user interactivity. We had computer game physics back then, but they were often limited to the 2D coordinate system (Pool, and other sports games with balls! so to speak), or basic "3D" physics approximations.

By the way, to give you an idea of the timeline, the ZX Spectrum is a home computer released in the United Kingdom in 1982 by Sinclair Research Ltd. Originally dubbed the ZX81 Colour and ZX82.

But that was then. What about now? If you want to design next-generation software, whether for entertainment or science, it is essential to understand how to implement physics in your application. This section of Authentic Society contains information on building building your own physics applications from scratch. We will start with 2D physics as an introduction to the physics basics. Then the articles will delve into advanced physics for 3D games. We will cover problems such as 3D object collision detection, advanced particle systems (fire, water, slime?), rag-doll physics and so forth.

The first few articles are meant for beginners (someone who is just starting to learn about math and physics for game development or other applications) gradually progressing toward more advanced stuff. The physics articles are meant to be read in the order they are written, but can also be used separately as a reference for a specific subject of interest. As far as the code goes, it is essential to know at least the basics of the C and C++ programming language as this is the author's language of preference.

The Authorative Guide to Physics Programming
Physics intro and human impatience - a few words on rushing to learn and depth of understanding a subject

I have a rather serious approach about studying 3D physics. Even though this is simply a website, these tutorials are written in the same way one would write a book. There are plenty of "copy and paste" tutorials out there that simply show you what needs to be done in order for certain physics mechanics to work, yet rarely do I see something that really (and I mean, really) digs into the subject. By the end of reading the physics tutorials located on Authentic Society, I want the reader to have an in-depth understanding of programming physics simulations for real-world applications. That's my goal for writing these tutorials. So take it slow, read, and understand. And if you have questions, you're welcome to contact me by messaging me on this site. You will find the link to my AS profile under every article I've written.

Speaking of rushing...

Before we begin, and if you have a minute (and I assure you, you should have more time than that if you decided to learn Physics Programming), I'd like to tell a story. About 3 years ago I had an idea to create an easy-to-use Instant Messenger program. Mind you, this had nothing to do with physics, it had to do with chat packets. But hear me out. Consequently, a rather cute name came up while discussing chat packets. When explaining how these "chat-packets" work, the phrase was misheard as "chatcake". Thus the trademark for the IM program was born. (And by the way, many software titles come up in random conversations, almost by accident.) It took a beta version to realize that in order for my chat IM to work, I had to have a dedicated server which I couldn't afford. At the time, almost reaching 1 million users, Myspace was just on the rise to popularity. It was the golden time to jump into developing an internet community website, so I developed interest in programming for the web in PHP. Chatcake turned into a community website project. After all, I didn't need a dedicated server to get it all started, I could get a domain name for $7 a year and a cheap hosting plan with at least one MySQL database to store user information in. I wanted to create the best community site there was. I was excited. The first few months, and as a big surprise, the site reached the maximum of 20 live users per day (logged in users at a given time). The site was growing. I was making up to $20 per day with Google AdSense running on the site's pages. Life was good. Until... I made the biggest mistake I've ever made with this project. I started adding new features to the site, thinking it would make the site more "complete". I changed the user profile layouts every couple of weeks, sometimes more frequently. Due to the enormous scope of the project, once I made a single change to the site layout, I had to change every other page of the site to accomodate for that (using templates was out of question, because I favor organic-looking sites). I rushed it. Things started to get out of control, the users were confused why every page of the site looked different from the other, it was like browsing different sites under the same domain name. Chatcake (http://www.chatcake.com/) was, and is, to this day, the most disorienting and over-designed web-site on the internet. "Then why are you talking about it?", I hear you ask. Well, this is exactly what gives me authority to talk about the trap of overdesigning and rushing a project many of us, as programmers, get stuck with and how important it is to avoid falling into it. What does this have to do with physics? Absolutely nothing!

Don't rush and, by any means, don't make the mistake of thinking that in 24 hours you will create a reminiscence of Half Life 2 physics-engine. If you're serious about learning Physics Programming, the following tutorials are for you. If you are looking for a copy and paste solution, sorry, it may not work as well. Take it slow, don't touch your IDE, Notepad, EditPad, Visual Studio (what ever...) before you understand what you are programming and how it works. In the end, you will see that it's more fun to learn and program this way.

So let's begin. Naturally, I will be adding new articles to the upper right part of this page, which is the table of contents area. You will spot new links appearing there soon as they are written and added to the site.

Please log in or register new account to post your opinion on this page


Other articles you might like:

First Windows Application (Win32)
Simple OpenGL Primitives: Drawing Points, Lines and Polygons with glVertex
PHP Reference Manual and Tutorials for beginners
Entry Point (Programming)
Thoughts on A.I.
The Genesis of 3D Graphics
Polygon vs. Rectangle Clipping Algorithm
How to Write Your Own Computer Games in C++

Please add "Programming 3D Physics for Computer Games and Interactive Simulations" to your favorite bookmark site!

Add to Digg Add to Reddit Add to Del.icio.us Add to StumbleUpon

© 2007-09 Authentic Society Only information matters. Page load time: 0.024ms