Main
For Your Info
For Fun
Javascript   
PHP   
Real Time
SoftGeL
Java
Blackjack
OpenTama

Sections

SoftGeL - This section is dedicated to covering various aspects of rendering raster graphics using pure software rendering. Graphics APIs such as OpenGL and DirectX use hardware to render raster graphics. Like the other sections there is no real roadmap. Tutorials will simply progress through various concepts as I decide to cover them.

JavaScript 3D - This section covers some of the basic concepts of software rendering starting with simply pixels and working up to textured polygons and a wireframe rotating cube using quaterions. This section ends with a complete deobfuscation of Wolf5K which gets you aquainted with raycasting.

PHP 3D - Things get a little more advanced here, introducing you to the concept of lighting and ends with a simple ray tracer. The main purpose of using PHP was to get access to true color graphics and provide you with a direct example of just how applicable these lessons are to any language and any system.

Real Time 3D - PHP is fine for doing static images but the idea is to do real time software rendering and that is best done with C++. A language which allows us to get as low level as we want. These tutorials will show how to create a simple real time ray tracer as well as how to create a Wolfenstein 3D clone with true color graphics and high resolution renders. There really is no set stopping point for these tutorials. As many topics as I can come up with will be posted here. These tutorials are immediately applicable to any system that can plot a pixel but doesn't have a high powered graphics card. Porting the code simply requires translating the lesson code if needed and then supplying a core that can access the system's video memory to display the software render to the user.

Java 3D - The java tutorials will quickly move through simple to where Real Time 3D left off and then continue on to more advanced topics. The reason for using Java is quite simply that I need to learn Java and I find the best way to learn a language is by porting and enhancing complex projects from other languages. Java is also 100% free.

Blackjack - If you're new to programming or new to Object Oriented programming this is the series for you. These lessons will cover the process from creating a design document to creating a final product. Our final product will be a blackjack game that you can supply an infinite number of player types for and then have them compete against each other in a massive tournament. This will get you well aquainted to the concept of Artificial Intelligence (AI) and Non-Player Characters (NPCs) which will come in handy for every game you will every make.


The goal of this site is to start at the bottom with the basics of software rendering and work up to more advanced concepts. And, unlike most sites, at each step along the way there will be a ready to compile collection of code that applies the lesson. The lessons actually go over the key points of the code. Not everybody can just read a book and understand the theory so here we apply the theory into a practical application for you.

Many sites also make the mistake of being "Hard Core C++" which results in them using STL and Templates and beating into you that you must write the code a certain way. This is complete bull. This is also why the lessons in 3D start with JavaScript. JavaScript does not have the STL or Templates so you will get a variety of code writing "styles" which will allow you to see how the concepts work from a variety of perspectives. The idea is that you come away from these tutorials knowing how to implement the concepts in C++ but not being so hung up on the language and the style that you can't implement the concepts in another language. We'll cover more about this topic in future FYI's.

It's also important to note that graphics are a very small portion of any project. There is also input, sound, game logic, physics, networking, etc which we will also cover in some detail. Although the initial focus is on real time software rendering, the ultimate goal is to provide a site which has enough information that anyone just beginning programming can build complete games. You don't need to know JavaScript, PHP or C++ coming in. You can figure out what things do by tinkering with the code and we'll also cover the language on an as needed basis.


All Tutorials Copyright 2004-2007 Icarus Independent
View the License Agreement