"I'm a socially inept 10-year-old with a love for Star Trek... I'm gonna teach myself how to write computer programs... Oh cute! I've created an entire video game using ASCII characters to resemble ships, rooms, and people! But wait. Is that it? I want to do MORE!"
AND NOW...
*Sigh* I honestly felt that what I had created was pretty awesome for someone just finishing grade school, but my Star Trek game was still missing something. For months, I spent much of my time learning more functions, with the singular hope of figuring out how to make my programs DRAW on the screen. As it turned out, the concept itself eluded me during those first couple of programming years because of one problem: I had barely started learning about the Cartesian Plane in school, and therefore didn't quite grasp how to make use of it.

Immediately following this epiphany, I realized the next major hurdle: my complete and total lack of artistic talent. I couldn't draw if my life depended on it. Even my stick people looked weird. I needed another solution.
INTERMISSION: I feel it is once again necessary to point out that the Internet was still in diapers at this time. I couldn't simply go to Google Images or startrek.com to find and download pictures of ships, planets or the crew. As before, I had to use my imagination to make this work.

Once I had finalized my facsimile of NCC-1701-D, I could already envision the series of straight lines that would make it possible, so I drew dots all over it to make them easier to see. My next challenge was to translate those dots into coordinates on my screen. I placed the drawing on top of a sheet of graph paper, thus showing all of them on a grid. This led me to figure out a scale. Through trial and error, I determined that my monitor had 320 pixels across and 200 pixels up and down.
FYI: by comparison, that would take up less than 5% of today's 1600x900 monitors. It wasn't much to work with, but I was determined to make it happen!
My starship could not take up the entire 320 pixels across, otherwise there would be no room for anything to happen in the game, so I decided to make it about 1/4 the size of the screen. To accomplish this, I simply went to the top left of the graph paper and marked it as (0,0). I then marked the very next grid line to the RIGHT of the ship as 80, with the line at the BOTTOM of the ship being somewhere around 40. Based on that , I counted the number of grid lines between the far left and far right lines, and divided that into 80, which told me how many pixels would be between each grid line. I of course had to do the same for the lines between the top and bottom, dividing that number into 40. Then the REAL fun began. *SARCASM ALERT*
OK. This next part was extremely monotonous, and it took forever, but was still totally worth it. For each series of lines, I had to approximate where each dot was on the graph, and write down the pair, while noting which coordinates were the beginning of a line, and which were the end. I then began the data entry portion of the project. I had to enter all of these numbers into my program as pairs of numbers in an array. This part took me the longest, understandably, because I had less interest in actually doing it. I also wasn't the incredibly fast typist that I am today.

So once again, I went back to consult the programming guide. This time, I had no idea what I was even looking for. I just hoped that I would find a solution. I double and triple checked over any function that I hadn't really used or even tried thus far. The answer was found in two of them: PUT and GET. Yes, I actually know what they were called. I distinctly remember the descriptions of these two commands originally being very confusing. When I had first read these pages, I had no idea how I would ever use them, so I immediately ignored it all. This time, however, I had an "A-ha" moment. GET would store the contents of a rectangle that I would define myself, consisting of everything from its top-left to its bottom-right coordinates. PUT would INSTANTLY place that image anywhere on the screen. Yes, instantly. My ship could move!


All of this took me another year or so. I had a true passion for programming, and was rarely torn away from it by things like a pesky social life. But don't worry; I eventually broke out of my shell and shed my social awkwardness sometime in 1991.
In the meantime, however, my masterpiece was still evolving. When I hit grade 10, our school had a Computer Science class, which I OBVIOUSLY joined. EVERYTHING taught in that course was stuff I already knew, so naturally I spent the time tweaking my video game. The computers they provided contained 80386 processors. Despite their maximum speed being 40MHz (which is actually 1/256 the speed of my current PHONE), it was still 8 times faster than my old Tandy. So my next challenge was to slow the game down a bit, otherwise the asteroids would fly by so quickly, you would have no time to react, the ship would be destroyed, and you would immediately lose the game. This was a small price to pay, and I took the extra time to make it work on them, because these machines had (wait for it) COLOUR MONITORS! That's right folks. With a few edits, my phasers and torpedoes would be RED! My asteroids would be BROWN! I all of a sudden had 16 distinct colours in my arsenal, and I was determined to use them.

So in the end, I was quite impressed with myself. The game started with a scene on the Bridge, where the Captain gave his famous Captain's Log to describe how the mission would start in an asteroid field. Then Level 1 would load, and the player had to navigate past or shoot the asteroids without getting destroyed. The next scene indicated that you made it to a planet, where you had to beam up a Romulan defector/scientist, who would give you further instructions... AFTER you escaped through the asteroid field again, but this time with Romulan warbirds chasing and shooting at you. That's Level 2.The next scene involved the defector explaining that the Borg were nearby, and needed to be stopped... And only she knew how. So a course is set, and you encounter the Borg cube, to which Riker transports over in order to destroy it. The Borg drones resist, so Level 3 involves getting past them to blow up the critical console described by the defector. If you make it this far, and manage to destroy it, you are beamed away, the Cube blows up, and you win the game!
It was accomplishments like this that made me think I knew it all. But as computers continued to evolve, so did programming. Soon I would discover that BASIC was becoming an extinct language (it wouldn't be the first), and I would need to get with the times. I would also spend the next few years pining over my new obsession: writing computer programs that could control THINGS. I wanted to figure out how to use my knowledge of code to affect the real world, instead of just pixels on a screen.
Hmmm... I'm starting to think that the word "obsession" isn't strong enough...
This is great! So glad you started a blog!
ReplyDeleteThx ☺
DeleteThx ☺
Delete