This is what I looked like on September 19, 2008 during a vacation. Duluth is in the background.


What is your history like?


Last updated: Dec 10, 2006 (first version)

What do you think of when you play a video game? Pushing buttons to jump around, attack enemies, and finish each level? There's more to a game than meets the eye. There's a lot of programming and level design details that need to be worked out, and there's also testing and bug fixing. Unlike the players where the face the challenges of the game, a game designer doesn't have this, but rather the challenges of finding and fixing bugs, testing, and optimizing the various aspects of the game. I've had a few projects, only one of which has been released thus far (as of Dec 8, 2006). I mainly focus on replicating my mind game.

1 History



1.1 The first method - on paper



1.1.1 That one sound effect - the first case



One of my first methods for making computer games was on paper. During 1994 or so, I was heavily involved with Zeliard. I once made it through the entire game with an amount of health equal to that of what you start with and one single increase. I did this because there was one sound effect I strongly enjoyed - move a platform down on top of an enemy and it occurred many times and the weaker you were, the more times it occurred. The squid-like enemy in the last caverns was of particular interest since it caused the sound to occur 100 times and other enemies here caused it to occur dozens of times (48 and 64). Wanting more of it, I wanted to get into making my own games, but little did I know at the time that you had to program it all. I made 8 basic levels to include a few new things. I had various themes as many other games had - prehistoric jungle (yes, dinosaurs), ocean (blue water, of which I tended to avoid, but made it so you had to go in it), and some others I don't recall. Details are otherwise vaguely recalled.

1.1.2 Bubsy remake



Even more vaguely recalled was the case where I tried to make a sequel of Bubsy. It featured 6 "worlds", one of which involved a game-like theme (with a slot machine or two) and another involved a forest. I drew up the various levels on paper, of which were much smaller than the typical levels of the games (even smaller than typical NES levels), and the backgrounds, of which had a 32-scale vertical, the typical scaling for the original Bubsy game for the first 12 levels. I don't recall anything further than this.

1.2 Full RPG project take 1 - Gamestudio A4 Standard



During Christmas of 2001 (or was it 2000?), I received the "Game design starter Kit 5.0" as one of the gifts. It included Gamestudio A4 Standard on it and it had 3 disks. The first disk had Visual C++ on it, the introductory edition, but I don't recall which version it was. The second disk had Microsoft DirectMusic Producer as a way to create music and sound effects. The third had Gamestudio on it. At first, I didn't want to get into programming as I found it too confusing since from what I saw, it looked like one big mess. I mainly just used WED, the world edittor. I've always liked getting up very high and looking at things below from a great height and even to today (Dec 8, 2006), this is still true. I began by building a basic city-like place. I had no worthy texture-making skills so my first textures were extremely simple. Considering I only had MSPaint as my graphics edittor, I couldn't do much in the way of advanced things. The project came along quite well but I lost interest after a while. There was quite a bit to it. The project, as of mid April of 2003, is shown in these screenshots (links open a new window). Do note that I originally saved them as GIF and I don't know where the originals are, but how it was back then is almost as they are shown without the color loss from GIF.

1 - School training area: The first thing you'll notice is the poor quality graphics, the lack of a sky, and the lack of lighting. At the time, I didn't know about building a level or even much about it. I just focused on designing the region. This was supposedly the area where you learned the general game controls. That bluish field is actually supposed to be water. This scene is as if you were standing on the roof of the school.

2 - Item shop front: This shows the front of the item shop and the general idea on how the other buildings are. I made many of those tiled floor patterns you see and many of which I liked. In the back of the shop, you can see a shelf full of potions and a sign showing prices and stuff to the right of it. There are stairs to get up to the upper floors. To the far right is the restaurant and behind it, a building under construction.

3 - Public swimming pool: This is the public swimming pool. The building a little to the left is the dressing room. The seat for the lifeguard is to the right.

4 - Castle interior: This is the lower floor of the castle. The castle actually had 3 floors. The floor above it is the game room and the one above is where the dancing and stuff tool place. I don't recall the precise details.

5 - Magic shop interior: If you want to buy some spells, the magic shop is the place to go. Shown here is what the signs were like. Note the floor pattern and how similar it is to the item shop's.

6 - Weapon and armor shop: Given that this is an RPG game, it's quite common you'll find a weapon and armor shop to aid in battle. This is what the area looks like. Note the floor again and how it seems different, but it strongly resembles the others in two ways. In the background, you can see shelves containing the various items and on the far right of the view, a sign welcoming customers.

7 - First grade of the school: Like a typical school, there are various classrooms for each grade level. This is what the interior looks like. The students get the desks and seats to the left and right sides and the teacher's desk is in the front.

8 - Bowling alley: Bowling is quite a bit of fun, but when the accuracy stat gets way up there, strikes are otherwise guarenteed. The numbered lanes are supposed to go through the continuous spectrum but I could only use 8-bit color, of which looked very bad.

9 - Baseball stadium: Playing baseball in my mind game has been a fun thing, and when the strength and speed get up a lot, that's when the opposing team would stand no chance against you. These kinds of things I find very entertaining and I wanted this in my game. I built this baseball stadium as a result. From this scene, you'd be standing on the top ledge of the stadium.

10 - Hotel: For restoring HP (hit points) and SP (spell power), you normally would spend the night at an inn in an RPG game. In this game, it's a hotel instead and you can check out the various rooms. The pool is in the front, of which you could go swimming in, and the various rooms line the walls and center.

1.3 Full RPG project take 2



1.3.1 A year's pause and a disappointment



Having lost interest in it, an entire year went by without even touching Gamestudio. I did eventually return to using Gamestudio and by then, Gamestudio A6 was out and I was two full versions behind. I began working on my project again, the same one I did before, and I otherwise completely redone it. However, since I only had A4 Standard at the time, anything I did would otherwise be undone when the time came so I spent a few months saving up the $200 I needed for the edition I wanted.

1.3.2 Getting Gamestudio A6 Commercial



For a few months, I saved a small amount, but as time went on, I got more and more despirate for it and began saving larger amounts. By early July of 2005, I finally had enough saved up to get Gamestudio A6 Commercial. A few days prior to it, I downloaded the trial version and began making the second remake of the full RPG project I began in 2003. Once I got Gamestudio, I began to work on the project. I got quite far into it going much further than I did in my first attempt and with much better textures. Screenshots and details are posted in the "Game design" category on the main index (the links are shortcuts, opening in a new window). The project suffered one serious problem - rendering speed. Despite the huge simplicity, I should've expected to see it rendered in over 100 frames per second, even with the whole level in view, but I was barely managing 3.5 fps with whole level in view. Given the hardware I had back then and my knowledge today, 100 fps with the whole level in view is easily possible with this kind of simplicity. My previous attempt didn't have the event arena and the layout of the streets were otherwise random. This time, the streets were in a more grid-like fashion and I had the event arena completed in full short of the decals.

1.4 Use that law of experience, dummy



The RPG game I was making was far beyond my level with a complexity even beyond what I capable of at the end of 2006. As the law of experience goes, "you level up the fastest and easiest if you do things at your own level", because this is well beyond my level, it leads to great frustration. If I went with something too easy, it'd get boring and you wouldn't get experience as quickly. By doing it at my own level of skill, then I would be neither bored nor frustrated and I'd gain experience at the fastest and easiest. This is where the balance of difficulty and the rate of gaining experience occur. This project was found to be way too difficult for me to undertake so I wanted something simpler, much simpler, something more on my level. I soon stopped work after I began running into map compiler errors (light map space overrun being one such example) and I otherwise had to resort to map entities.

1.5 Simpler side projects - how background scaling works



Ulillillia's first program - screenshot of the interactive animation


Wanting to learn programming stuff, I began by making a simple program that demonstrated just how background scaling works. Earlier, I had an article on my website that explained how I make my complex animated GIFs as they had (and still do) strong, realistic-like 3D effects and other things. I first wanted a simple javascript to demonstrate this but found it too complex since I couldn't resolve 3 errors. I figured I should use Gamestudio for doing this since not only will I get more than 10 frames per second, but a higher resolution and stuff as well. I used this and soon formed my first program. I did much of it on my own but still needed assistance at times. The graphics quality was very simple at first but the complexity increased as time went on. Shown above is a screenshot from my first program. I could only use 16-bit color due to a limitation in Gamestudio at the time I released it. All you did was press a key to change a setting, enter a new value, and press enter to watch the change take effect. The scene only scrolled from right to left (as if moving to the right) and you otherwise couldn't really do much, but hey, for a first program, it was decent and it was to the point - explaining what effect background scaling has.

1.6 George Game 13



1.6.1 What game should I make?



After having lost interest in doing the RPG game due to its great complexity, I and to follow that law of experience, I needed to come up with something at my level. I came up with a few concepts. Being hooked with Bubsy 3D at the time where I was jumping around on the mountains/hills trying to get as high as I could, one game I thought of is where you reached a goal climbing up mountains or trying to reach the highest spot you could. Knowing copyright and patent stuff, this didn't seem a worthy idea for me to do. I had some other concepts that I don't recall as well, but, I soon thought of something.

1.6.2 The idea for George Game 13



Although I don't recall how the idea sparked, but I think, when I went to a store, I "turned the store into a game" where I jumped around on the various objects trying to get as high as possible. I recalled a game I played with my fingers during 1995 or so, where you jumped around on things to save someone named "George". There was often "blue water" below since I often liked having to avoid it, even though I knew it was "safe" to go in. I kept high to avoid going in it. I rescued George then set up another level where I did the same thing. Put these together and I came up with the new concept. George Game 13 was a lot more worthy of doing. Compared to my previous project, this table explains the reasoning:

FeatureRPG gameGeorge Game 13
Ease of making7.8 - extremely hard3.2 - easy-medium
Time to make*5 years2 years
Genre skill**2.1 - low7.2 - very high
Ease of programming7.8 - extremely hard3.9 - medium
Ease of making levels3 - easy-medium2.9 - easy-medium
Proximity to my mind game***90% - very close20% - substantial
Motive for making†-55-1.3
Base motive for making†28070
Fun factor (to me)‡7.3 - very high6.4 - high
FeatureRPG gameGeorge Game 13
FeatureRPG gameGeorge Game 13


Table footnotes:
* Estimated values based on my average rate before the snags, of which significantly reduced it.
** I almost never played RPGs at the time I made the game and nearly every game I play is either a classic-style game, an arcade-style game, or a platform game. I have far more knowledge and skill with these types of games than with RPG games.
*** Because replicating my mind game is my main intent, this plays an important role. My mind game is very complex and my RPG game will come very close to it. Do note that changes in plans will affect these but these are just general approximations.
† The difference between these two is that the base motive is where the obstacles are factored out. For my RPG game, it's the sheer difficulty of programming and the vast complexity, adding a -45 affector. For both games, it's the case with UV map scaling which, alone, adds a -100 affector to the motive, an extremely powerful effect. Without the obstacles, I'm over 15,000 times more motivated to working on my RPG game and nearly 100 times more motivated to working on George Game 13. Motive has a 10% logarithmic margin of error* at best and is explained here.
‡ Since the game is not even playable or working, this value is not yet known. From the many photo-like visions of the games in my mind I can get a rough idea on this.

1.6.3 Designing George Game 13



1.6.3.1 The start



One of the first versions of the game was where I had the platforms as nearly textureless. I did have water using the same concepts I had from the RPG project, but it rendered very slowly. I soon got to adding buildings, but the level's frame rate really dropped. The reason was that Gamestudio couldn't handle much more than 400 entities on screen (with at least 60 fps) and each floor of the buildings used 2 entities. As I gained experience with the modeller, I made many fixes and updates to the level and redone the buildings. I've made 5 revisions of the buildings and a few other revisions of the water, but, with the whole level in view without using LOD (level of detail), I was only getting about 20 fps or so. It was until I done numerous experiments that the real potential was found.

1.6.3.2 Experiments give valuable clues



What effect does a high entity count have on the frame rate? What effect does a high polygon count or vertex count have on the frame rate? What effect do textures have, polygon size, and various other things have? The only way to actually answer these questions was to do experiments and I found a lot of details. I began developing a "points" system. The higher the score, the lower the frame rate. Each entity counts as about 3600 points, duplicates at 3200. Each new texture on an entity counts as 2200 points (1000 for duplicated entities). Each triangle in the mesh counts as one point and each vertex counts as two points. Texture size and format as well as polygon size have a miniscule effect that I'm not able to pick out. Video cards like Nvidia's GeForce 7600 GT can process about 800,000 points and ATI's Radeon 9600 XT can process about 600,000 points and get 60 fps. From my experiments, I found that entities with 4000 triangles (2000 vertices) have the fastest rendering rate of all. Although I never redesigned the level, it is, in theory, possible to have 200 fps on the older Radeon 9600 XT with this screenshot and this doesn't use LOD at all. With LOD, I can have 20 times the detail and still get above 60 fps with the GeForce 7600 GT. All these experiments came in very handy, but, without an essential feature, I had negative motive for working on the project.

1.6.3.3 The long wait for the update



By around September 2005, I lost motive for development as the update had a feature I needed. When I was doing the beach umbrellas, I had a 1024x1024 texture and because of the design at the time, the textures were duplicated in video memory, essentially wasting it. The feature would share the video memory. With the beach umbrellas, I calculated I needed over 100 MB of video memory for that alone due to this faulty design which prevented me from doing much with it. The update took so long to be released, over a year, that I eventually lost interest in it quite well and even when it was released, I ran into 3 issues - scaling UV maps, a crash when more than 16 groups were created, and that you can't build faces (triangles) when the vertices are in different groups. The crash was eventually resolved... 3 months later after having mentioned it nearly 20 times on the Gamestudio forums and the company not admitting the bug even though other users were getting it as well. Now it's just the UV map scaling issue and the building faces issue that remain, the UV map scaling issue being a monster adding a -100 affector to the motive (the building faces one is just -1.8, tiny in comparison it takes nearly 8 of these to make the -100). Without this feature, I've otherwise stopped development for George Game 13 and no measureable progress has been made since September of 2005 (as of Dec 9, 2006).

1.7 My first game for sale - The Supernatural Olympics



The Supernatural Olympics - a scenic view


1.7.1 A Google Image search sparked the idea



As yet another side project, I began "The Supernatural Olympics" which soon became my first game for sale. It all started when I did a search on Google images during June of 2005 for "ulillillia". In the search results, I saw the screenshot from the old interactive animation I released in January of that year. I wanted to expand on it. I first wanted the scenery to go in all directions, not just scroll right to left. I also thought of adding the special abilities commonly depicted in my mind game and I soon got to adding that. Although the scenery was still low-grade at the time, I didn't have the limits of animated GIFs. As time went on, I made discoveries of new formulas to use for the artwork (since I use math to do art, my only reliable way of doing it), and refined some of my techniques.

1.7.2 Intense involvements and long pauses



Quite randomly, I had several very intense involvements with working on the game, even 80 hours in a single week, but at other times, not one bit of progress for a few weeks or even months. At one time, I had a dream featuring my sister playing my 2D game that featured clouds in a mist-like form. I liked the way it looked and began to implement this into my 2D game. The clouds and the hills were the two trouble-some spots. I didn't know how to do the clouds, but once the dream occurred, I got intently involved with making them and I made all 27 layers. The two closest layers were troublesome as they would've taken a long time to make using the method I had before. I had to refine my method and once I did, I finished the clouds in full. The hills were troublesome only because I couldn't decide just how I wanted them to be. I wanted them to be tall in the distance but short up close. I also wanted a J-curve pattern for the heights of the hills where the distant ones' height decreased slowly at first (smaller gap between heights) but sped up and when near the shortest, would have height decreases the same. Once I established the plan, I got heavily involved with making them. During some of the times, I lost motive for developing the game, and a few weeks or months would pass before motive went back into positive territory where I got involved with it again.

1.7.3 The 6.4 Gamestudio update - useless on my 2D game



Unlike with my 3D projects during this time where I couldn't due anything due to missing important features, my 2D game didn't have this and I could work on it quite well. When the 6.4 update was released after the year-long gap since the last update, I found that very weird things happened. The image of the player was being cut off with the flare effect, and some other things with dynamic images had this as well. Plus, SED, the script edittor, no longer remembered the cursor position which made it very annoying as it took 3 times longer to process some of the highly repetitive stuff I had. Not only that, but, with the engine being a DLL, and that Molebox Standard wouldn't include the DLL. With 6.4 having nothing but disadvantages to my 2D game, I reinstalled the older 6.31 update. When I did things involving 3D, I swapped to the 6.4 update and when I needed the script edittor for anything but small changes or to work on my 2D game, I needed to swap back to the older 6.31 version. It was not uncommon to do 50 version swaps within a month or even 20 within a week. I made so many swaps, that I could do the entire update process (ignoring the time to take out Windows Explorer and browse to the directory containing the update) starting with the first click to open it, within just 4 seconds since I did it so many times. I continued development for a while.

1.7.4 The mad dash for the finish line



By around June of 2006, I began the dash to completing the game and making the first official release. It started with the hills. I soon added the menu system, a save/load system I had a lot of trouble with, the EULA (end user license agreement), and some other things. The save/load system was a problem due to Gamestudio's limitations and flaws. At first, I used the instruction file_var_write, but it only saved the first 3 decimal places when there are actually 10 and as a result, strange things occurred upon loading. I found file_asc_write and it looked promising, but I had to use an outrageously complex piece of code to get it to work properly and even then it still didn't work. It took me 2 weeks to resolve this bug, several test functions to test various things, even to generate thousands of random numbers to test save with and open and checking. Because of this bug, I was debating on whether or not I should include the save/load system. Not only that, but the complex algorithms required to work around limitations with Gamestudio caused even more problems. Because I was so close to finished, I was highly motivated to figuring all this out and I soon eventually resolved the issues. I did an extensive test spanning a few days, fixing any other bugs I encountered, then released the game for the first time. However, I couldn't sell the game due to issues with Regnow, the service used to sell my game with.

Shown above is a scenic view from my 2D game and my top favorite screenshot from about a week before its release. Shown in the screenshot, I'm zipping along at 800 mph with the flare effect clearly visible in a glide 14345 5/8 feet above the ground. The mountains and hills rise above the clouds with realistic fog effects and perspective; the 3D effects are very easy to see. Of the closest 12 layers of clouds, the furthest 10 need to be redone. There is one crucial mistake though with the lighting: the effect used the wrong formula**. Sure 2 1/4 hours of play time, over 3700 miles travelled, and 4/5 of a billion for the X position seems rather high, but this is nothing to what the game's maximums are.

1.8 Getting away from Gamestudio - C programming



1.8.1 Why get away from Gamestudio?



Gamestudio, though decent in many ways, is too full of limitations and annoyances. Between the var, unneccessary hardware requirements, the general design of it, and slow updates, Gamestudio isn't worth using for many of my games.

1.8.1.1 Gamestudio's var - frustrating to work with



Gamestudio, though decent in many ways, is too full of limitations and annoyances. Gamestudio's var has such limited range and accuracy that, even from the flat ground I've got, an object a mere 10 feet high, like a street light, is enough to cause variable overflow and when that happens, weird things occur. What weird things? For one, the height goes negative which causes the scene to be drawn as if you were 46,000-some feet below the ground with the fogging effects from the ground shown at the top with the sky clearly shown at the maximum brightness. The other objects are also displayed as well and man does it look weird. Next, Gamestudio's var has such low accuracy for fractional parts, I had to develop confusing, frustrating-to-work-with, complex algorithms to work around this. The effects can be seen as early as 2 minutes at normal time. Because of this, in order to get the time control feature to work, rather lengthy functions need to be called 64 times each frame if running at 64x time in order to achieve the effect. Normally, using the distance-acceleration formula is all that's needed, one mere line, rather than a few thousand from the functions being called, and ran through 63 more times (and despite that, only 2% of the CPU is used). Just compare C-script (used with Gamestudio) with C for the method to add pi to something:

// C-script method:

var somevar_fine; // declare the variables, a fine value for the fractional part
var somevar_course; // a course value for the integerical part
var somevar; // and the result which is rounded down to the preceeding multiple of 1/1024

function add_pi() // declare the function "add_pi" without any parameters used
{
   somevar_course += 3; // add the integer part
   somevar_fine += 141592.6535; // add the fractional part (round to nearest 1/1024)
   
   if (somevar_fine >= 1000000) // if the fractional part is over a million (or one whole)
   {
      somevar_course += 1; // add one to the course value, as done with the number system
      somevar_fine -= 1000000; // and subtract a million from the fine value
   }
   
   somevar = somevar_course + (somevar_fine/1000000); // compute the result
}

// C method:

double somevar; // declare a single variable

void add_pi() // declare a function that doesn't return anything and doesn't use parameters
{
   somevar += 3.1415926535897932; // immediately add the value
}


Note the difference in complexity for the same task with about the same degree of accuracy. In fact, a function wouldn't even be needed so only two lines are, the variable declaration and the instruction to increase the value by pi. Although the double is more precise than the method needed for C-script, the method used with C is far faster due to the huge reduction in the number of instructions (and thus complexity). Using the system with C-script is very frustrating to work with and leads to lots of bugs and unexplained things. With C, none of these issues are present and it's much more friendly to work with. With this method, using complex functions like cosines, and fractional exponents are almost impossible but with C, it's quick and easy.

1.8.1.2 DirectX and 3D hardware required



One thing about Gamestudio is that it uses DirectX to render everything when it's not neccessary. Not only that, but 3D hardware is required even though I don't use it in my game. This increases system requirements causing a reduced availability. The game is so simple, it could work with any computer with at least the memory requirements of 32 MB. My 3GHz processor has 2% CPU usage with my game at 64x time (where lengthy functions are called 64 times each frame and there are 60 frames per second) so it could work with 200 MHz processors. The requirement for Windows, however, is still present since I've otherwise never seen any other operating system (as of Dec 9, 2006). Seeing that Windows 95 seems to be the minimum for almost every function I use in the games I make, I could probably even have my games available for Windows 95 users (even though I've never seen the operating system and how it compares with 3.1 and 98 SE), earlier than Gamestudio offers.

1.8.1.3 Publish just copies - Molebox adds defects



Gamestudio has other limitations and annoyances that make it not worth using. The big one is that, when you publish, the files are merely copied and the scripts are not compiled. Because anyone with Notepad or Wordpad (or any such text or hex edittor) could open the WDL file and see the code, I needed a file packer. I got Molebox and, for me, it works fine, but on other systems, strange things occur that aren't present on my system, even from the same source. To give you an idea, I burnt my 2D game's Moleboxed version onto a CD as well as the full version where all of the files are present as they are. I ran both versions on my computer and both ran just fine without any detectible problems. I then put the game on my dad's computer with close hardware configuration to that of mine, and ran it there. The Moleboxed version had one detectible difference. The closest lines on the road were not present and they were only present when you reached about 30 mph and they just quickly flashed on and off the screen. The full version didn't have any of this nor any defects that I could see. Then, others who have downloaded my game's free version sometimes couldn't run it saying that the WDL file couldn't be opened when saved to the desktop, and in one case, couldn't read the key file properly as there were obvious bit misplacements given the many powers of 2 (sometimes a combination of 2 or rarely 3 elements such as 262144 and a 32 being used showing a value of 262176 as the offset) that the values were off by.

1.8.1.4 Other limitations and annoyances



Furthermore, because a 3D level is needed in order to actually publish, this is an annoyance since I have to waste extra effort and time to build a one-block level then later delete these unneeded extra files. Also, script names (and thus program names) cannot be any more than 19 characters, something I find as nonsense. "The Supernatural Olympics V2_4.exe" is 30 characters (the extention is not included) and not acceptable with Gamestudio, even if I took the version details out and the word "the", but it works perfectly fine with C. Lastly, not being able to edit the program details (version info tab) would make it difficult to get accurate version details if the game does not run properly and having this could help troubleshoot issues for my customers. If I have version 2.7 out and someone was having difficulties with version 2.5 - couldn't run it due to hardware changes, then finding out what version he/she had is very difficult since they can change the file name and stuff, the manual could be outdated or newer than the current version, and, since they couldn't access the game itself, couldn't use the "about this game" section to see the version.

1.8.2 Learning C programming



1.8.2.1 Previous attempts



During 2003 or so, I tried learning C programming but I found it very complicated to work with and lost interest rather quickly. Around 2004, I tried getting a compiler to compile the code. It, however, never worked, although it was free. When Gamestudio came along, the scripting language is a lot like javascript and C put together and much easier to use. I gradually, through using my law of experience and other stuff, gained the skills and numerous tricks for things. I've mastered the fundamentals quite well. It was until October or November of 2006 (see my blog for an exact date) that I finally got into learning C. Because of Gamestudio's striking similarity to C (and a member of the HowWhatWhy forums saying that my script looked exactly like C - I posted it wondering if something involving trigonometry (using sines and cosines) could be made better since trig stuff was new to me at the time), I knew I stood a much better chance at learning C. From having a sudden addiction to video games, I finally broke the intense habit I had with visitting the forums quite a bit (of which posed a roadblock to learning and progress). The only thing I was short on was a compiler. I was referred to using Microsoft's Visual C++ 2005 Express and I downloaded it and the Windows Platform SDK along with it (a 450 MB download, truely massive taking a time amounting to what dial-up users normally experience with big 5 MB files). As of Jan 17, 2007, I'm about to the point where I can remake my first program and after that my 2D game.

1.8.2.2 Why not use Gamestudio's upcoming Lite-C feature?



As explained quite well in sections 1.8.1.2 and 1.8.1.4 above, Gamestudio isn't really meant for the kinds of games I have as the hardware requirements just increase. Plus, knowing the very slow rate of updates, I figured that, by the time I get to the point where I can remake my 2D game as a C program, Lite-C may be released but knowing the past, it may be delayed even further where I'd have a strong start at it. As long as I follow the law of experience, I knew I could get there quite rapidly. It was just a matter of keeping the motive out of negative territory. It didn't take long before I made my first Windows program and with the documentation that came with the Windows Platform SDK download, almost everything I need for my 2D game is answered. With the Windows Platform SDK, I can even see how I could possibly do 3D stuff to write a 3D engine, even side programs to make levels in. This way, I could make George Game 13 as I envisioned it without having to deal with the limitations and annoyances of Gamestudio. My 3D stuff, however, will need DirectX and 3D hardware, but, as of Dec 9, 2006, is beyond my level and thus I won't do it until it gets to my level (or at least near it).

1.8.2.3 The road to learning C



I began by following a few tutorials. I got rather far with the tutorials and eventually made my first program. I began making functions on my own without having to reference the manuals or anything outside what I had in my own script. I already began to see the potential of C, adding positive affectors to my motive, when my second function was created. Due to using Gamestudio for so long, I needed to change some of my habits. Instead of using "function" to declare a function, you'd use an identifier (like "int main()" or "float CU_to_feet(value)" where these would both return the type given but something like "void jump()" wouldn't return anything). Unlike with Gamestudio where "else if" isn't directly available, I have it available, but still have the habit of using a long series of "if" statements instead of using "else if" (due to organizational reasons). Seeing the switch-case combo helps a lot as well with the menus, puff-creation, and other elements of my 2D game. By learning C, my 2D game would benefit in so many ways as this table shows:

AspectIf using GamestudioIf using C
SlopesThe var's range is too low to add without strange things occurringI can freely add them as I please, but need to work out how to do collision detection
ObjectsThe var's range is too low to add without strange things occurringI can freely add them as I please, but need to work out how to do collision detection
Time controlCall lengthy functions many times or reduce the frame rateConstant frame rate, full flexibility, one line of code, no frame rate reductions
Frame advance modeThe delay is in multiples of 1/60 second only at bestAny delay amount can be used, no matter how awkward.
Rendering smoothnessRandom frame rate fluctuations cause sudden skips and/or pauses**Fully syncronized with the monitor for pure smooth movements, and at any refresh rate
SpeedsSeveral thousand mph but other limitations prevent thisAlmost anything
AbilitiesOnly the bounce can be added, but not easilyPitched gliding, bounce, pinball effect, float-running up hills, precise speed blast usage, very realistic motion, flash attack at any angle, and several others
Special effectsOnly if dynamic images are usedCan save memory, things affecting the display (like the speed blast's distortions), the shockwave from any high speed impact (especially the pound stomp)
Sound effectsPossible, but never usedPossible but uncertain of what is offered
Scenery configurationLimited by the varSeemingly unlimited - change the fog color, scaling (and fog intensity with it), heights, and speeds with far more freedom
Scenery movementOne pixel at a timeCan be made ultra smooth using the full capabilities of 32-bit color, so smooth that you'd have to use frame advance mode, screenshots, and the color-picker tool within your graphics program to see the effects
InstallationMolebox is needed which adds extra defectsI can make my own installer making the game easily accessible from the Windows start menu the traditional way. Along with that, game save files can be associated with the program so a mere double-click can bring up the game and resume from your last save file.
Game save filesComplex, confusing algorithms needed and other complex, confusing algorithms to work around the limits of the var adds to the frustration and complexityJust use fwrite() in binary mode and everything is saved, no frustration and complex algorithms needed.
Unlocking the full editionUse of a key file is requiredRegistration details can be embedded and applied to within the program rather than using a separate file
Downloading updatesJust replace the old file in Windows ExplorerRerun the installer to install the updated components - much easier and friendlier to use
Hardware requirementsDirectX 9.0c-compatible 3D hardware, 32-bit color video card supporting 640x480 resolution, 500 MHz processor, 32 MB memoryNo 3D hardware required, 32-bit color video card running 640x480 resolution, 200 MHz processor, 32 MB memory (maybe even 16 if I can use things compressed but that would increase the CPU requirements)
Software requirementsWindows 98 and later, DirectX 9.0c and laterWindows 95 and later*, DirectX not required
Loading timeWait a while for the script to get compiled, usually about 15 seconds2 seconds, and even that seems rather long
LogosGamestudio logo required as well as my own logo meaning about 4 seconds to wait before playing (full edition - 10 for free edition)Only my logo is required since Gamestudio isn't involved at all (unless Microsoft has a requirement for it) meaning a 2-second wait (full edition - 5 for free edition)
To load the gameOpen Windows Explorer, browse to the directory you saved the game to, and double click it (or create a shortcut manually)If I use an installer, it's right there on the start menu like any other program (even the desktop if you prefer to have a desktop icon, but an open dialog defaulted to where you stashed your files, allowing for multiple save files).
TestingDo a test run using temporary test variables in a panelDo a test run using temporary test variables in a panel
FontsEither true type fonts or even-width bitmap fontsEither true type fonts or bitmap fonts using any widths.
Movement precisionAccurate to within one frameAccurate to within 1/16 frame or indefinite, depending on whether or not I can get a formula working for multiple slope changes.
Texture tilingTiling is very difficult and time consumingJust call the "DrawDibDraw" function as many times as neccessary with the spacing set as needed (and a loop) - quick and easy
Motive for using***-2.145
Overall2.3 - not really worth using7.7 - definitely worth using, and with little doubt


Table footnotes:
* This is based on from what I'm getting from within the Windows Platform SDK. Much of what I see has a minimum operating system version of Windows 95.
** The reason for this is because Gamestudio tends to run at 63 fps. The monitor refreshes 60 times a second (my typical setting). At the end of one monitor refresh, one whole frame is processed and 5% of the next frame is. By 19 frames, a sudden skip occurs because, since the last frame was 98% done, it is completed and since the next frame is processed in full as well leaving 3% of the next frame left over, a frame is essentially "skipped" because the frame rate is higher than that of the monitor. If your monitor's refresh rate was 75 Hz instead of 60, you'd get 4 frames displayed normally then a sudden stop occurring on the 5th. This causes a not-so-pleasent feel. By syncronizing the frame rate with the monitor, the motion is smooth regardless of monitor's refresh rate and without the limits of Gamestudio, adjustments can be made to allow the motion to be kept accurately.
*** Motive, explained in depth here, has a 10% logarithmic margin of error*. A difference of 82 between the two is very substantial.

As you can tell, the advantages for using C instead of Gamestudio are just overwhelming and you can see why the motive is so high in comparison.

1.8.2.4 A brighter future for my 3D games



I read in a few places that, with C programming, it is possible to get over 1 million polygons rendered at 60 frames per second. Gamestudio would only get 400,000 for the same thing. This means far more detail, but it would mean having to rerun many of my experiments to maximize it as much as possible. Yep, that means you can have the entire level (as big and detailed as I was planning them at the time) in view without LOD and still have decent frame rates on hardware as old as the Radeon 9600 XT card and would mean scenes detailed very richly. With LOD, that detail can be amplified much further still.

Not only that, but the game can have all the features I can dream of. With Gamestudio, I had to have a single block and to prevent from seeing this unneeded thing, I had to have the start platform over it. With C, I don't have that issue. Yet, I can use the full range of the double rather than being restricted to Gamestudio's var (and the creators of Gamestudio told me on the forums that special variables like that of the camera will still use the var - grr). With C, not only will you be able to get 100+ miles high and see the world below from some super massive bounce stomp (and reaching hypersonic speeds in a mad pound stomp creating a shockwave beyond comprehension), but the level creator (with George Game 13) and other things will have a much wider range of possibilities and instead of my planned 2000 objects (which is seemingly large enough as it is), it can be 10,000+ objects. There's more to it than this though. My RPG game could have HP going into the quintillions or even beyond and SP going into the same range (care to cast ultima6 a million times wiping out every monster in every battle you encounter along with tons of other things unthought of).

2 The present



As of Jan 17, 2007, I've only got a few things left to work out before I can start making my first game in C. At the moment, my 2D game is too complex for me with C so I've got intentions on doing something simpler, as per the law of experience. I first want to learn the last few things before I make my first game. I use straight forward programming. It may not be optimized for the fastest speed, but it's less prone to mistakes. I did make a program in C that does have use, but only for me. It automates the process I use to change the sample rates of WAV files to change the speed for use on my MP3 player. See the how I process my music article article for details about this and what the program does.

3 The future



After I learn the last few things needed, the first thing I'll make is the interactive animation, the first program I released on my website. Although it's no where near as entertaining as a game, it's a very good first step as I'll master a large chunk of what is needed for my 2D game. The next step after that is remaking my 2D game in C leaving out the slopes and obstacles features. Next would be creating the pinball game I thought of in 2002. This game works sort of like the Atari games - very simple game play, but addictive (and better graphics than the Atari). By doing this, I'll have my techniques for collision detection set and with that in mind, adding slopes and obstacles to my 2D game would be within reach meaning running down a mountain at 1200 mph will be entirely possible as well as using the slopes to get up 30+ miles high. Later on, new worlds would be added to my 2D game such as the endless mud lake dream scene and another one featuring water.

Having mastered my 2D game in C, I'd then move on to 3D starting with something very simple and easy to do, simple enough to get a good start, but a way of getting a taste of what George Game 13 would be like. This would introduce me to the important things with 3D: rendering 3D scenes, lighting, collision detection, building a 3D modeller and/or level designer, as well as other things in 3D. Something simple and addictive would be my first concept, much like the pinball game would be for 2D. Accomplish this, and it's on to working on my ultimate goals: George Game 13 and even my RPG game I had started in 2002. George Game 13 may have huge worlds at 30+ square miles, but my RPG game will have a fully explorable region of 2000+ square miles of land where you can do absolutely anything. See the overview pages of these for a more in-depth description on them. Yet, even that is small compared to my ultimate goal of all - reproducing my mind game. In the distant future would be a near-full (about 98%) reproduction of my mind game that spans the entire planet Earth. With that, go ahead and glide from my home town to Hawaii then float run around the big volcano (Mount Kiloaya (sp.?)), hop deep under the ocean, glide at mach 2 over your own home town, pitch up, and drop in a massive fall seeing how small your city really is from 5 miles up. The possibilities are endless in my game design's far future. As long as I follow along with the law of experience, I should do just fine.

4.1 About me home - General overview and background
4.1-1 What this is
4.1-2 My current life
4.1-3 The future
4.2 Dream journal - My dreams I get while sleeping - contains over 500 dreams and grows rapidly
4.2-1 Introduction
4.2-2 Special notes
4.2-3 Dream stat descriptions
4.2-4 Dream statistics
4.2-5 The categories
4.3 Favorites - What I like and dislike most
4.4 Imaginary friends - Learn what my imaginary friends were like and their special abilities
4.4-1 History
4.4-2 In depth descriptions
4.4-3 The future
4.5 Video games - My history with video games and the many bad things they caused
4.5-1 The beginning
4.5-2 Too much video game playing
4.5-3 Making my own games
4.5-4 The future
4.6 School - Learn what school was like for me, how the classes went, and other events related to school
4.6-1 Elementary school
4.6-2 Middle school
4.6-3 High school
4.6-4 Filling my need for education
4.6-5 My education future
4.7 Special events - Learn about how YMCA camp, tours, and other special events went for me
4.7-1 Triangle YMCA camp
4.7-2 Touring my home state with my friend
4.7-3 Shakespearian play
4.7-4 The state fair
4.7-5 The antique car club
4.7-6 Trip into Canada
4.8 Math skills - I can work wonders with numbers and perform calculations in my head at a blazing fast speed
4.8-1 Well beyond most everyone else
4.8-2 I became unforunate
4.8-3 Super fast mental math
4.8-4 If object gets numbers, I get a formula
4.8-5 The future
4.9 Special abilities - The special capabilities I have outside mathematics
4.9-1 General
4.9-2 Hypercount
4.9-3 High-speed, high-accuracy mental math
4.9-4 High-res vision
4.10 Developed systems - Status System, Spell System and other systems I've developed
4.10-1 My Status System
4.10-2 My Spell System
4.10-3 Color system
4.11 Stories - The birth of my story-writing efforts
4.11-1 The "Wonderful Adventure" days
4.11-2 The "Rise of Atlantis" days
4.11-3 One other story
4.11-4 No more story writing
4.11-5 My sources of ideas
4.11-6 The future (general)
4.12 Online activities - The history of my website and the usage of online forums
4.12-1 Online forums
4.12-2 My website
4.13 Music - My history with music - learn the origins to why I listen to songs at different speeds for thousands of loops at a time
4.13-1 History
4.13-2 The present
4.13-3 The future
4.13-4 Music FAQs
4.14 Major fears - My list of fears, problems, and obsessions, both past and present
4.14-1 Introduction
4.14-2 Current fears
4.14-3 Old fears that have been overcome
4.14-4 Current problems
4.14-5 Old problems that have been overcome
4.14-6 Current obsessions
4.14-7 Old obsessions
4.15 Major issues - Major issues I have in my life at the moment
4.15-1 Fears, problems, and obsessions
4.15-2 Sleep-wake cycle
4.15-3 No transportation
4.15-4 Showers are rare
4.15-5 My annoying nose
4.15-6 Limited choice of foods
4.15-7 Getting a job
4.16 TV and movies - How I am with watching TV and movies, both past and present
4.16-1 History
4.16-2 The present
4.16-3 The future
4.16-4 FAQ
4.17 Food and drink - My history with food and drink, including past meals I made, as well as the present and future
4.17-1 History
4.17-2 The present
4.17-3 The future
4.18 Travel and vacations - Past vacations and travel, as well as the current case of 6+ years without a vacation, including places of interest
4.18-1 History
4.18-2 The present
4.18-3 The future
4.18-4 FAQ
4.19 My senses - Things involving my 5 main senses - strong, high-res vision, but very weak smell to name some
4.19- [document yet to be created]
4.20 Doctors and meds - My past involving doctor visits and meds to fixing my issues as well as the present
4.20- [document yet to be created]
4.21 Hobbies - My hobbies, including things I was involved with in the past not in any other category
4.21-1 History
4.21-2 Computer
4.21-3 Sports
4.21-4 Collecting
4.21-5 Television
4.21-6 The present
4.21-7 The future
4.22 Game design - My history of game design as well as the present and possible future
4.22-1 History
4.22-2 The present
4.22-3 The future
4.23 Noncomputer games - Backgrounds on various noncomputer games, such as throwing cards to play Hit-a-bump and other things, including past games not listed on my website, as well as general evolvements and what caused me to create them.
4.23- [document yet to be created]
4.24 Other memorable events - General events I recall unusually well, but not anything special
4.24- [document yet to be created]
4.25 Other things - Dates, marriage, having kids, friends, religion, holidays, and various other things
4.25- [document yet to be created]
4.26 Myself in the year 2050 - How I envision myself and a day in the year 2050
4.26- [document yet to be created]
4.27 My greatest wishes - Activities I would love to do

Footnotes:
* Logarithmic margin of error means, if 25% and the value given is 100, the actual value is from 80 to 125 rather than 75 to 125. See the website FAQ for more details.
** The formula is basically the cosine of the difference with the sun's direct angle and the surface with the ambient value filled in. The formula used is otherwise the same but with one small difference. The value for the angle difference is half of what it should've been (as if I divided it by 2). The far left would be the full ambient (about 25 to 40% seems to be normal from what I can tell, and a transparent black color) with the far right at full brightness.