Sunday, January 30, 2011

Weekly Progress Report


***********************
* Objective Grade *
***********************
* SMS Font B *
* SMS Code C *
* SMS Graphics B *
* SMS Combos A *
***********************


   I like it when I am able to say I made a lot of progress throughout the week. I did have some late nights as well as the usual early mornings; however, to make even minimal progress is worth the loss of sleep. Programming is fun, but being wet behind the ears and on my own, every bit of experience gained is a learning experience in its own. Small successes can take many hours when you are still figuring out the work flow. As you gain experience, you know better, but for now, I am still finding my way.
   One thing I talked about needing to do this week was divorcing the DirectX font object. This went fairly well. I had to make my own sprite sheet for letters, numbers, and other characters I am using. I also had to make some different images for most of the informational visuals in Swap Meet Server. I still have a little bit of the swap out to complete, but so far I would say I have about 80% of it swapped. This was great experience. I started the sprite sheet for the font by using only the letters, numbers, and characters I thought I would need for the game. After expanding the sheet a few times to include additions I had not though of, I had the brilliant thought of how stupid I am for not just drawing the entire alphabet, all numbers from 0 to 9, and many characters. I drew the whole sheet. It took several more tries to get it exactly how I wanted it, but this will pay off in the long run. One, now I know for future projects just to start with the full range of characters. Two, I could use this sheet for other projects if I wanted.

   I really wanted to make more progress with the code in general this week. All work includes the code, so I did definitely jam in some respects. The font object could only properly be implemented by making it its own object. It has its own functioning class which defines each characters and handles the draw. This cut down code in many places. However, I am not completely satisfied. I am going to end up changing this to implement an algorithm which would take a string (a word) for input, break it down, then draw each character by finding the associated index for the array of images that represents the font. This would be much more effective than calling each letter by index in the calling code.
   I also completely recoded the order class to incorporate this new font object. That is where most of the font was used, because it handles basically all of the on screen information in the game. In it, in order to split down large numbers to draw correctly, I wrote an algorithm the takes an integer with more than one digit and splits it up into single-digit integers. In this case, 1,234 would read like 4 individual numbers, 1 2 3 4. This allows me to more easily call the correct characters in the font. Because it actually belongs as part of the font object, I will be moving it over so that I am able to use the algorithm for everywhere I use the font object. This will also be the basis for the algorithm the will split up words and find those characters in the index. This is excellent work, because this font object will be a highly reusable module.
   Where I did not make progress on the code is from divorcing more of the DirectX API. I am using Direct Input to handle some of my mouse as well as some keyboard functions; however, for now, I am completely removing the keyboard functions. Because I already run my own code for tracking the screen position of the mouse cursor, the only thing I am using Direct Input for is the mouse click. This can be done by myself in about 10 lines of code, so I really wanted to take out the unnecessary mess of a control object. The text swap took so long, I simply never got this far. It probably will not take me too long to write the replacement code in my own mouse object, but there are several places where I need to make adjustments to control function calls. This is pushed to next week.
   I made some progress with graphics this week. The font was one of the graphics issues I was having. That is mostly out of the way now. Thanks to this progress, I am now competently able to release my game to people knowing that they will be to view the game information the way they should be able to. I also make some text appear when the order is correct. This took some magnification and translation techniques, which is basically fun with matrices. Due to time, I used the DirectX methods for this, but will be needing to make my own math library to handle this stuff myself.
   I am still working out some graphics issues though. I have not worked on the character sprites at all this week. That is the most of where I need changes made. I also need to make some adjustments to the game menus as well as the way instructions are presented in the game. These things are also pushed to next week.
   The combos was probably the easiest part of my week. I implemented
them using a basic multiplier. If you get two or more orders in a row correct, your earnings are multiplied by up to 20. This does add a bit of fun factor to the game, because you start to earn money more rapidly.

   While I have made lots of progress, I still have lots to do next week. I really want to get the game on lock-down as far as all looks and functionality that are there goes. After that, I will spend a week or hopefully less generating and implementing some basic sounds, another week to implement a high-score interface, then one more week for code cleanup, packaging, and release. I think three more weeks to completely finish Swap Meet Server is a pretty good estimate at this time. After that, onto mobile, Baby.

****************************************
* Random Week-Long Personal Stats *
****************************************
* Description Stat *
****************************************
* Plants watered 3 Times *
* Toilet flushes about 55 *
* Chicken Enchiladas? Damned right *
* Programming hours 30 *
* Awake? Hardly *
****************************************

No comments:

Post a Comment