Thursday, October 29, 2009

Going forward

After having a meeting with the graduate students, and Dr. Xie. I need to write better PUTs since my skills on that area is lacking. I need to start out at unit testing and then from there do a PUT because without knowing how to write a correct PUT, I may never find anything of interest on how to test game applications using the XNA framework. I also need to get my research game Tears on graduate student computers so that I may get further feedback from them and continue to teach Khiry Object Oriented Programming. Above anything else, I need to find XNA specific research areas, so far I have been unproductive in finding anything of interest that is specific to the XNA framework, so that is my goal going forward.

Scurvy.Test and XNA

(August 2nd - August 15th)

Another part of the summer I worked with a Test Framework called Scurvy. It's an open source framework that lets you do unit tests specifically for the XNA framework. I was able to test that a loading function worked. The thing is that loading with XNA is different from different measures of loading because you have to use the XNA Content Pipeline. Well you don't necessarily have to use it but it would be in your best interest if you do to keep production of your game fast and easy and reliable. Here is a simple example:


Now it doesn't seem like much with this test but you will be able to get the correct result with this framework. I've tried other frameworks, including Pex, and .NET unit testing tools and they cannot get this simple test to work. I believe that with a little more digging around with Pex and Scurvy, I can find something that could be interesting with testing game applications using the XNA framework.

Pex and XNA cont'd

(July 19th - August 1st)

During the second half of my I started using Pex with Tears (my personal video game). Continuing from my last post on XNA and Pex, I discovered a problem with objects that are very complex (my MapEngine object) and testing my collision detection algorithm. In my game, which is a 2D platform game like Super Mario Bros. or Sonic the Hedgehog, collision detection and response is described as a way to keep all entities within a "world", to be able or not go through objects/areas that are labeled as such. So for the next couple of weeks I tried different possible ways in order to get Pex to work with this hardship and work with Scurvy.Test to test XNA specific objects.

*Update*
After meeting with Xusheng, I discovered that if you can make your PUTs smaller and constrain Pex a little, you may be able test these objects. Why do we have to constrain Pex in order to do this (and when is it necessary to do it), I don't know but that is another research topic.

Tuesday, October 20, 2009

Game Engine Demonstration and More C# Practice

After having made a request with my teacher, Dr. Michael Young, I was allowed to demonstrate the capabilities of one of my favorite non-program based engines, RPG Maker 2003. I was allowed to demonstrate the differences between it and Game Maker 7, by primarily comparing the organization of the sprites (charsets), variables, switches. I demonstrated the abilities which are intended for by the engine, (which is to create an RPG obviously), but also displayed a few of my games which were centered around Platforming and Third-Person Shooter styles.

Although it is often argued that non-code based Game Engines are detrimental to the growth of a game designer, I argue that these engines are in fact beneficial to a degree. I believe that they can lay the foundation for a smoother transition into programming, by introducing to the player the concepts which a game revolves around. It also allows an early programmer to experiment with their creativity and manipulate the various aspects of an engine (such as switches and variables in RPG Maker 2003) to create new methods of interaction. However, I will attest that a person who is seriously interested in becoming a Game Designer stray away from solely using these engines. The likelihood that they will create a mega-hit or controversial game is unlikely using an engine which anyone has the capabilities of using. Unless of course, you are Danny Ledonne.

I also began to differentiate between Console.Write() and Console.WriteLine with C#, and continued experimenting with the Console.ReadLine(). It can be used for entering text into the command line, and can also be used to separate lines.

Monday, October 19, 2009

Next Steps: JCute & Some Minor Adjustments

I met with Suresh and Kunal today, and we discussed the current implementation of the test driver, as well as the next steps. The concept of my test driver seemed to be mostly correct, and my next task involves incorporating JCute as per the sample code available on the website. After meeting with Dr. Xie, he exposed a problem in my implementation that pertained to inefficient code that would be costly in exhaustive situations. He proposed simply making the comparisons as the method sequences are generated and breaking out of the sequence once a failing test case has been encountered. For now, void methods have little impact on sequence but implementations using observer methods will be a future task.

Summarizing, my activities after the meetings are as follows:
1) Integrate JCute into the test driver, enabling it to choose all values, avoiding random testing
2) Converting test driver implementation to compare solutions during the method sequence generation, ending the sequence generation process when either a failing case or a completed sequence is encountered.

Outside of these tasks, I shall also begin the writing for this project.

Saturday, October 17, 2009

The Beginning of my C# Tutelage

As a first semester Freshman, I believe it is my responsibility to not only maintain high levels of academic performance, but also make preparations for my designated career choice. These preparations will be done by learning programming languages from skilled programmers. Charles Woelfel has begun assisting me with C# programming.

Yesterday, October 16, 2009, we began with the reintroduction of Classes, Objects, and Methods. From my learning, I reviewed that Classes are basically a set of instructions which hold any set of instructions. Methods are the processes which are to be carried out in the Class. Objects seem to be objects, or items, which basically are a duplicate of another class or method, but renamed. These seem to be used most frequently in other classes.

My task for today, October 17, is to read a few more tutorials regarding command-line input. I'll also make preparations for another upcoming lessons by reviewing the information which I've learned, and attempting to create a few C# Programs of my own.