Nicholas Cash

Language Arts Enrichment

Mrs. Timmins / Mr. McCrea

Personal Evaluation

This project was incredibly time consuming, difficult, and rewarding. I create a 2-D side game engine from scratch using the Win32 API (Application Programming Interface). My knowledge of C helped vastly, as I know many things my mentor did not and vice versa.

Back in the beginning I only planned on making a 2-D side scrolling game with a stickman named Bob for the main character. However, as I jumped into the project, I found that many sections of the game applied to nearly every game (such as bitmaps and sprites). If I could capture them and make them work independent of the hard coded game then I could use this code for every game. Thus, I decided to create a game engine.

My mentor, Brian Lewis, had made a 2-D side scrolling game (not a game engine, a game itself) with the Win32 API recently, so this project turned out well. With his help I was able to make progress quite quickly in the early days. He mainly helped by debugging things when I had to sleep or spotting errors I didn’t know of since I was new to the Win32 API. Brian’s experience differs from mine in some significant ways. However, like we usually both do, we tried to solve our own problems by ourselves first, as you tend to learn more. However, like with the bitmap fiasco, I really needed his help because loading a bitmap from a resource was a main part of the project. This was one of the biggest problems early on.

My project encountered a great many problems. From the bitmaps early on, to the transparent bitmap problem, and all the way to the falling/jumping through solid objects. However, this is all part of the coding process. Test and fix. After a point its about all you do.

I learned a great many things, all of which will be applicable to my career path of Software Engineer or related fields. First, I learned the workings of a Windows application. I now have experience with the design, options, functions, and parameters of a Windows application. Chances are Window’s isn’t going to disappear any time soon, so this is really good experience. What’s more is I did this all by myself with help from my mentor. Anything that I copied (such as the SMAUG 32-bit system) I knew already.

I was very happy to have this opportunity to receive school credit for something I enjoy doing. Those opportunities are few and far in between, so I decided to take advantage of this and choose something I personally considered challenging and spectacular. Programming has been a hobby of mine. When I was eight years old I made my first web page and I’ve been working and learning C/C++ since I was twelve (thus why my project was so different from Siddharth’s, who was just learning C). This experience will also be helpful next year when I go to take Computer Science classes at UNI. I am, according to Professor O’Kane, the first and only junior from Cedar Falls High School to attend Computer Science classes. If I somehow am able to get all of my UNI classes next year and the year after, plus my AP classes, I will have roughly 30 college credit hours. That’s nearly a year of college, or so I am told.

My level of satisfaction varies depending on what you are asking about. On a scale of 1 to 10 I would rate the overall project as a 9. The engine itself is quite stable and worthy, and includes a number of useful features. However, the game I tried to create at the end doesn’t include a lot of the features you would expect to see in a 2-D side scrolling game. Also, I did not have enough time to implement some things, believe it or not.

Overall, at the time of this writing, I have spent about 260 hours, though it is likely that is may be more. I was not terribly accurate and often underestimated the time, since I spent so much anyway. When you take a hobby and transform it into a school project you should expect to dump a lot of time into it.

Additionally, I have a few suggestions for future students. First, I highly doubt you will have a student ever again try to develop a 2-D side scrolling game engine using the Win32 API, but if you do, tell him/her this: You will need a lot of time and effort. It is not an easy project. I did not expect it to be. I knew exactly what I was getting myself into. Also, it is unlikely you will find many students with the amount of experience I have. If they have anything less then my experience I would highly suggest the do something along the lines of Siddharth’s project. That is, creating a command-line game. Graphics are not something to take lightly.

Any student learning C/C++ should not expect to make a graphical game. It takes a great deal of time and learning. If you ask Siddharth, he will probably tell you how difficult it was as he procrastinated a bit, and that is coming from a very smart kid who is taking Introduction to Programming and is in Pre-Calculus.

Also, you (the teachers) should be weary of people who do wish to make graphical games. If they are doing it themselves, make sure you see the code. There are programs out there that take care of that type of thing for you.

Finally, I had a great time doing this. Like I stated earlier, it is very rare to get a chance to get such a large amount of points for something I like to do. Challenging myself really paid off. I feel like I’m coming out of this project with new knowledge and a workable project to help me create games in the future.

I know it was a confusing path to read through in my log and what not, as programming can be complicated at times, but I hope you have had a good time seeing my project and the code grow. Mr. McCrea can expect a 3-D game next year in ALPHA!




Description
Satisfaction
Mentor and Time Spent
Personal Evaluation

Go Back
The Code