So I did some more reading about game development this weekend. Its a pretty good book I’m reading which goes deep enough to provide sample c++ code to achieve some pretty advanced techniques.
The last concept I was learning was about Binary Spatial Partitions to identify which 3D objects are behind others to identify which objects can be removed from the 3D graphics to eliminate unnecessary processing. Pretty interesting algorithms that advanced with the very goal of doing what it does really fast so you can do the work in one game ‘tick’ – amazing really how performance the cornerstone of everything that we try to do in graphics. I never really appreciated how much one is expecting to do in such a limited time(a game tick). A month ago I’d have said that it could not be done – seriously.
Basically the book is about the size of my Xbox and its got a lot of content – My arm gets sore when reading it. I’m getting rather excited in how they described every thing or ‘primitives’ in terms of polygons or vertices or triangles. It takes a lot to store and describe an object in terms of triangles but it certainly is possible. Then there is drawing textures over the triangles - texture maps.
I also read a lot about how they animated old 2D games which was pretty cool – from manipulating the screen’s colour palate to make alternative colours flicker to produce effects like water flowing. I have also learned about how some games painted ‘scenes’ by manipulating sprites and painting them onto the background – stuff to do with alpha blending and such like. There was talk about parallax scrolling and such talk which I got but wasn’t too involved in – I breezed over the source code.
There was also a section on programming in Lua script as a means to abstract artificial logic in terms of rule systems and pass them into the game engine and have the game engine react & manipulate its internal state based on the Lua script. What was particular interesting was seeing how you could call C++ code/functions from inside the Lua script and generally how you could pass data back and forth between the calling c++ code and the Lua code. You can implement a script in Java too using the JNI (Java Native Interface) to achieve the same results – with arguably more of a first class citizen when it comes to object orientated programming, albeit slower alternative to Lua - which is fast.
I went to the library and took some books out about game development – one was about getting concept art into games. I’m no artist so I dont care about this quite yet but I was interested in how the concept art is converted into object models aka mesh models and how they are ‘rigged’ with internal skeletons. Wow.