Video Game Project
My first exposure to any kind of coding occurred in 2006 and 2007 when a friend of my dad’s visited us and wrote a simple visual basic program to show us the kind of thing that he worked on in his free time. I had no idea at the time, but I now recognize what he did back then to be a twist on the infamous beginner’s first program “Hello world!”, where he implemented a button press to display a message box with those words. I was quickly taken in by the amount that could be automated and controlled by the coding environment, particularly with Visual Basic’s influence on windows and objects placed within them. I thought that if I could learn to manipulate the language and its tricks, I could code up a video game on par with those found online at the time.
I began to spend all of my free time designing images, maps, buildings and characters for my game, which I thought would eventually become a multi-massive-online game if I dedicated all of my time to it. My image metadata from the remnants of my video game project tell me that some of the most recent modifications to the programs that I wrote, and the files meant to be used in them, were made in mid-2009, at about the halfway point of middle school for me. I believe that around then, I began to realize how outrageous my idea was, that I could singlehandedly code a game competitive with those built by well-funded companies and using only Visual Basic, which was far from the optimal programming environment through which to build a game.
Though the project did teach me the style of thinking necessary to navigate programming languages and gave me an introduction to the syntax used in many useful languages, it was put on a permanent hiatus so that I could spend my time on more realistic goals. My dad’s friend taught me how to code for file input and output, storing data in number arrays and character strings and calling it back, using timers to control events and if-then and logic statements to make the code work conditionally. This early education paved the way for me in my coding classes in high school and college, and in the work that I have done myself with C, C++, windows batch and script files, and Arduino, which I believe gave me a helpful leg up in learning those other languages.
I wanted to create something new in my game, but I was very much biased towards features drawn from my favorite online game at the time, Runescape. Many of my design choices were pulled almost directly from the game, including textures derived from screenshots, map structure, its general “adventurer in medieval times”-themed plot, and minigame ideas. It wasn’t really meant to be as original as I had hoped for it to be when I first came up with the idea to make it, but it still took plenty of work despite never being completed.
I spent the better part of a year designing the world map of the game, which I found to be the most exciting part of the process, then I attempted to convert that map into a much larger bitmap file representing the real game environment and add textures. Using nothing but MS Paint, I applied textures, shaped structures and eventually had my own building and character models to draw from, using a sprite-based method for character movement. One of my main trials was saving and importing images with transparent backgrounds, or alpha layers, which would allow me to superimpose objects and characters on top of the world image as it moved in the background, simulating character motion.
I was taught the importance of key-press, key-down and key-up events in my coding which I required for controlling the character and tying hotkeys to the activation of certain actions. I needed to form a database in order to store usernames and passwords of returning users of my game, so I was taught file IO, saving strings of characters to a text file to be drawn out later for checking against user-entered text. In order to check the passwords and usernames, I had to loop through every of the stored strings using for and while statements and check each character individually, looking for a whole string-match. While not the most secure method of logging in, it was definitely easier for me to understand than any attempts at encryption would have been, and any talk of servers would have been way over my head.
In order to teach me a broader range of the features in Visual Basic, my dad’s friend aided me in setting up a Visual Basic “form”, or window, which represented a bowling alley. The ball would bounce back and fourth on the bottom edge of the screen, then when the user pressed the space bar, the ball would roll towards the pins, keeping whatever x location that it was at when the key was pressed and “knock over” pins depending on where the ball was set to hit. It was a fun, simple game that gave me experience in performing certain actions dependent on the X and Y dimensions of objects on screen, as well as giving me insight into motion prediction based on x and y slopes with respect to time, or parametric equations.
I also had to learn how to change object properties in real time to make certain images of bowling pins hide and cause others to display and activate the sound file that played during a ball roll that would strike a pin versus one that would land in the gutter. I began learning to code in Visual Basic long before I had even taken an algebra class, so my ability to use adjustable variables for temporary data storage was not well developed, but it definitely made the concepts easier to grasp and manipulate when I learned other languages in high school and college. As this video game was truly never meant to be, requiring much more work than I ever imagined in my fifth-grade mind, I do not plan to continue working on it at any point. I had fun working with it in my childhood and will keep the files that I made for it forever as a reminder of that work.