Platform Masters Title
Platform Masters - Will you be the world's next platform master?




Last updated: Jan 18, 2012 (first version)
Level 2 update on Feb 29, 2012 (section 1 explained, other minor changes)
Level 3 update on Mar 5, 2012 (section 8 added)



Platform Masters is a work in progress and thus, there will be some issues. As you watch my latest videos, you'll probably know some of these. Other issues are not obvious but known.

1 High CPU usage with drawing



Drawing is a GPU task, not a CPU task. This is an unexplained mystery I've had for years. When the draw count started getting above about 3200 draws per frame on my Core 2 Duo system that I started development with, I was starting to get frame rate problems. With the newer i7-2600K system, that cap is now 4800 draws per frame - exceed that and my frame rate drops considerably. The GeForce 7600 GT was still used at that time. Why does having a high number of draws per frame lead to a very high CPU usage? I'm talking small images too, like 5x9 such as from text. Full screen, large-sized images (like the rain and snow effects) used a lot of CPU with the GeForce 7600 GT but not as much with the newer GTX 460. I would have suspected that GPU usage would be high and CPU usage to be low for what I have.

The likely culprit that I can think of is AlphaBlend. This Windows GDI+ function is used for all drawing. I'm suspecting that the CPU has to send the bits to be drawn to the video card for drawing from which the video card draws. How to bypass the CPU-to-GPU passing, that I'm unsure of but I would likely lean toward using SDL for the drawing instead of AlphaBlend.

The execution of a draw itself is inherently CPU-demanding and thus, throughout development, I must keep the draw count below 2000 for optimum system compatibility.

2 Minimal game play



A common element you'll find missing in the YouTube videos is that of game play elements. This is expected as I haven't made much progress toward game play. Until the character's animation is redone, game play cannot be effectively done. This is because whatever progress I make that involved collision detection will only get undone since the shape of the character will also change once the animation is redone. Many other things I've done will also get undone as well.

Why don't I update the character? Low motive. I'm far more focused on the scenery right now and that's about half the total develop time right there alone. Without the scenery, I can't make levels or work on the terrain for that world.

I can, however, still get the drawing for enemies and hazards working, but I can't add full functionality until the character is redone. This is due to collision detection - change the character and the collision detection system changes with it.

3 Poorly detailed scenery



Worlds like Jeremy's House, the Sentus Mountains, and Nodera Ice Shelf are amazing for their level of detail. Yet, Keveran Desert and Keveran Forest are almost detailless. In addition, where are worlds 12-14? This is because I've only put in the bare essentials for those worlds or I have a problem that's preventing me from making further progress. In the case of other worlds not be present, that's because I haven't even started them yet.

The case for Keveran Desert, for example, is simply lack of focus toward it. I have nothing blocking me from completing it 100%.

The case for Keveran Forest is due to the lack of trees. I don't have any algorithms for making trees and thus I cannot complete that world. I can, however, still do the foggy hills and the ground decals (such as the Tegram River), but that's all I can do.

4 Collision detection doesn't behave properly



Until the character's animation is redone, of which will change the character's bounding box, the collision detection will remain partially flawed. It's mostly functional at the moment.

5 Only one level



The level seen right now is only my test level, used for testing various game functions. Until the character's animation is redone, all the enemies are added in and working, all the game objects are added in and working, and a few other things, I can begin programming the level creator I need and progress, from there, will really take off... provided I have the scenery done for that world. You can get a hint as to what levels might be like by looking into the background scenery of worlds 7 and 10 (the last version of world 10).

6 Copyright registration takes 9 months



Let's say I finish working on Platform Masters on January 1 of 2014 (there is no guaranteed or set release date). Once done, I submit the game for copyright registration. Trouble is, I won't know if the copyright registration is successful until September of October of 2014 because it takes so long to process. Without knowing if copyright is successful, I feel unsafe releasing the full product. I had this issue with my book and it took 9 months (8 months the previous time), seriously delaying the release.

7 Registration keys



Nowadays, whenever you buy a software program rather than get freeware GPL software, you have to input a registration key. These keys consist of a random mix of letters and numbers of typically 20 to 30 characters often with sections separated by hyphens. I have no idea how these keys are generated and especially validated. A single-file key file is not secure and doesn't help.

8 Infinite loop with text drawing upon loading scenery



This only recently started happening upon adding in the array overflow checks upon loading images. Randomly, with about a 5% chance, I'm getting the "infinite loop" error coming up involving stage 2 of my text drawing function that causes the game to crash. For some unknown reason, the string terminator, 0x00, is not being included with a %s like it should. I'm currently lacking details on this. The function is called over 100 times each second and even 30 minutes into the game, it never comes up with a problem during play. Only right after scenery has loaded does this happen, and only with a 5% chance. This makes this bug difficult to diagnose the cause of so, for now, I'm left to have to gather some clues. With the clues, I could hopefully increase the odds of this happening to fine-tune the code to fix the problem.

As of March 5, 2012, the only 2 clues I have is that involves the debug panel's standard column (the leftmost column), and the part where the block ID is doesn't have the string terminator present like it should be. Something else is taking its place and it's that that is causing the infinite loop to occur since my text drawing function requires the string terminator to be present in order to even work properly.



Footnotes:
None.