First of all, hello. My name is Jacob McCosh (omaha). I am an 18 year old computer science major at Virginia Tech. I have been toying with 3d applications for the past few years. It all started off as a fun little contest in my computer science class when we were given free reign over what program we would write for a final project. We were being taught pascal in a room full of x-80's. These things were ancient. I had recently stumbled upon the famous asphyxia tutorials. I decided that I would code up a simple fire algorithm. In short, IT WORKED!! Most of the rest of the class didn't even have a clue how to display colored text, much less "advanced" graphics such as what I had done. From that point on, I was hooked. I have had the occasional burnout on programming, but over time it has really been the only thing I have stuck with and enjoyed. I believe that that is because there is just so much information out there to consume, that you can always be learning new things. I am extremely adicted to information. I have missed so many classes because I hadn't finished reading articles related to computer graphics programming that to try to count them would quickly give me a headache. That aside, I, hunbly, would like to bestow some of the knowledge that I think I've obtained and mastered over these past few years to others. Also, because I know what it is like to start something new like 3d coding without any real guidance as to where to start, I would like to extend an offer to anyone interested to feel free to icq me at 32620688 or aim me at mccsha at anytime if you want to ask me a question or just simply chat about computer graphics. Now, enough random rambling, on to the main subject at hand.
Over the coming months, you are going to go on a magical ride through the strange and sometimes scary world that is my brain. I will attempt to give you some insight into some of the less well documented areas of game development as I work on my own game and 3d engine. Again please feel free to message or email be with any questions or suggestions/requests. I want to help.
Now, on to a quick and dirty little subject: the event model. After considering several varying design structures, I think I have decided to go with something similar to an event driven model. I was in class recently and my professor was explaining how object oriented originally was meant to change the way programs interact with their data. You see, programs were originally written so that data would be passed through THEM. With the increase of the amount of data to be computed in modern times, especially considering the massive amounts of data present in a modern game, it seemed in an abstract way something of a top-heavy design. Object oriented was meant to reverse the flow so that it would be as if code was being passed through a set of data. This in itself doesn't really have much to do with event driven design, it was just something that stimulated my brain, and hopefully it did the same for you. It got me thinking about different ways of deciding which objects in a game would be updated, and how the program should store that information in memory. I had heard many times that you could keep a frame counter and if a certain object needed to be updated/rendered then you could set some flag in the object's class to the value of the current frame. This design was meant to have to keep you from updating some update/render flag on every object. However, with this design you would still have to test every object for that value when it came to actually do the update or the render. I began to think of storing a single static array of pointers to the update functions of the objects that needed to be updated/rendered. This way you would neither have to update all of the update/render flags of each object every frame nor have to test each of those flags for the current frame counter. Using virtual functions and inheritance, you could simply pass the this pointer to the array, or maybe some derivation of that using linked lists, i'm not sure which would be more efficient, as the static array would only take up at max about 16k of memory.
Ok, I'm getting tired, and i'm sure than none of this is going to make any sense seeing as how much my mind has wandered while writing this little tech file, so let's just leave everything where it is right now and pick things back up in a day or two. Oh, and I will apoligize ahead of time for anything that doesn't make sense. I am really bad at critiquing my own work, much less correcting it, so feel free to yell at me if I've done nothing but confuse you ;->
TTYL - omaha