github linkedin email rss

Games made me the programmer I am today

Oct 2, 2019

A little bit ago, Prince Harry made the following condemnation of the exasperatingly popular game Fortnite:

That game shouldn’t be allowed. What is the benefit of having that game in your household, no matter what age you are. It’s created as an addiction to keep you in front of a computer as long as possible.

What a shame.

In my most charitable explanation of Prince Harry’s motivation, it’s sad to watch anybody, especially children, neglect important aspects of their life because of an obsession. And many video games today do dance a little too close to hedonistic mechanics to keep a player playing versus relying on good gameplay. However, a video game is not a vice by nature, and trying to dismiss Fortnite as a zero benefits addiction will only polarize communities instead of moving well meaning intentions forward. I say this with conviction, because when I watch popular games like Fortnite, I see so many of the positives which made me the person and programmer I am today[1].

A Fortnite player quickly architecting a structure to gain a tactical advantage over their opponent. This might look like chaos to the uninitiated, but there is a lot of well rehearsed problem-solving in this moment.

Gaming got a hold of me early. One of my very first childhood memories has me watching my neighbor play Ghostbusters on his computer. I could not have been older than 4. I’m also not so sure he let me play. I was captivated none the less.

My parents cemented gaming as a part of my life during Christmas of 1988 by generously gifting “the family” a Nintendo. For many of the years to follow, I sat uncomfortably close to the television, stereotypical neck angle and all, while indulging in the critically panned but notoriously difficult Top Gun. I crashed jet after jet trying to master landing my F-16 on an aircraft carrier after a successful mission. Despite my best efforts at following the rapidly changing instructions from the command tower, I never got there. But I’d like to think the perseverance amounted to something[2].

While jubilantly holding up my precious new Nintendo, I shouted out "It's an Atari!". Close enough, kid.

Moving on from the Nintendo a few years later, I acquired a Sega Genesis[3]. I played a lot of Madden ‘92 football on the Sega. So much so, I grew unsatisfied with the endless repetition of meaningless exhibition games. I wanted a full season with standings! I wanted to win a Super Bowl!! I wanted to reign as a dynasty!!! None of these features would exist in Madden for many years. I decided the only logical path to this outrageous deficiency was to run a league myself.

Using paper and pencil, I put all the teams in divisions and drafted a full 16 game schedule for each team. To make this a true fight for myself, I chose to represent my hometown and play as the Cleveland Browns[4]. For each week in the schedule, I would play my game as the Browns against the scheduled CPU opponent. I would then watch a CPU vs CPU match-up for every other game on the schedule as the ability to simulate a game was also still years away[5]. The score of every game was diligently recorded and the standings updated manually by me. After the completion of the regular season, an 8 team playoff took place and culminated in my own version of a Super Bowl. I always accepted the results despite not managing to take the Cleveland Browns to the Super Bowl every year, which I like to think is a testament to the league’s immense integrity.

There were 28 teams in the NFL in 1992. 14 games a week x a 16 week schedule x 5 minute Madden quarters x 4 quarters in a game meant Madden ‘92 ran on my Sega for at least 75 hours to rip through just one regular season. Madden ‘92 unlocked something inside of me. Here I am, all of 12 years old, spending an outrageous amount of time bookkeeping a full virtual football league. For fun.

A key Madden '92 feature was sending the ambulance out when a player was injured. I appreciate the ambulance being given collision detection with the players. Note the lack of player names as EA did not yet have the rights from the NFL.

My first hint games were something people made, and maybe that’s something I could do too, came about when my parent brought home our first computer. I immediately opened every program at least once scouring for any sign of a game[6]. When exploring the blandly named QBasic, I had my curiosity rewarded with a game of two gorillas standing on a city landscape throwing bananas at one another. While I was focused on finding games, the real discovery was opening the source code in order to run the game. This was my first exposure to the idea that a combination of words and numbers, some of which I even understood, were behind the scenes of my favorite hobby. I did not quite make the leap to programming just yet, but I was now merely a small nudge away.

My math classes put a TI-83 calculator in my hands meant to help us visualize more advanced algebra and graphing. In a time before more powerful cell phones, these calculators really served as a way to play pretty decent games during class. Just like QBasic, the calculators exposed the BASIC-like source code to many of the games. Inspired by some of my peers programs and a desire to do anything but pay attention in class, I learned to program.

I started by creating choose your own adventures. The programming required nothing more than GOTO statements, a few conditionals, and a lot of patience typing text on the tiny TI-83 keyboard. My first text drama put you in the cockpit of a fighter jet locked in the middle of an intense dogfight. When an enemy fighter locked on your location and fired a missile, a prompt of “Roll Left” or “Roll Right” awaited your perilous decision. Prior knowledge of my left-handedness might have helped navigate an otherwise dreadful choice.

A roughly accurate graphical representation of my first game.

After exhausting myself of text adventures, I learned a few more programming primitives and how to draw simple graphics to attempt a much wider breadth of games during my now favorite class time activity. My calculator creation of a casino with a blackjack, slots, and roulette suite represented a sort of crowning achievement for me on the TI-83. After my grandmother had already spent hours acquiring virtual currency a previous afternoon, I still feel the pride of her asking to play my game again the next time she saw me. I had made something somebody genuinely wanted to play.

As my ambitions grew, I soon hit a performance wall trying to push more complicated graphics on the calculator. A BASIC program on the TI-83 runs through an interpreter which significantly dogs performance. The language also only exposes a small number of functions which locks away some of the more esoteric capabilities relevant to games. I had some basic awareness the much cooler games on the calculator used some language called “assembly” to achieve their speediness and advanced graphics, but a lack of guidance on where to start squashed my dreams of greater games for the time being[7].

The classic TI-83 platformer Penguins. How could I top this?!?

I kept creating games throughout middle and high school while also starting to dabble with “real” programming languages like Pascal and C. However, things really started to click in my sophomore year of college when Georgia Tech’s college of computing introduced students to object oriented programming with a new trendy language called Java. Not only did object oriented programming give me a strong model for thinking about larger programming problems, Java also had a very extensive standard library, great documentation, and many Internet based communities ripe with helpful tips. With all of this newly acquired knowledge and ability, I of course wanted to make bigger and better games.

Despite the rapidly modernization of games, I often found myself playing a MS-DOS game called Scorched Earth. Much like the earlier discussed QBasic game, Scorched Earth essentially boiled down to gorillas throwing bananas at one another but tanks instead of gorillas and weapons of mass destruction instead of bananas. Seemingly, throwing projectiles at things is a sure-fire way to hold my attention. With rather achievable 2D graphics and simple gameplay, this childhood staple seemed at just the right level of complexity for me to attempt a remake.

My inspiration

On June 12th, 2002, I set off on my Scorched Earth adventure. I know the exact date because I kept a log with miniature status reports in a Word document. Each status report list off some accomplishments, some ambitions, some concerns, and sometimes a progress screenshot[8]!

I worked on my version of Scorched Earth intensely throughout the summer of 2002. I often consider working on this game the most engaged in programming I have ever been. My current abilities, the scope of the project, and the amount I had to learn intersected at just the right place. Every day I was easily able to slide into the addicting process of iteration and small reward.

In the end, a total of 20 status updates found their way to the log. As with most my side projects, the comments and status reveal even greater ambitions than would ever see the light of day. But for the first time in my life, I created a non-trivial and quite playable game with real graphics. You can also see the foundations of concepts I would continuously use and vastly improve in my later projects.

And just like the pride I experienced when my grandmother asked to play my silly casino game again, I’ll never forget the night when I showed a few friends what I made and we then spent a couple hours playing round after round of my Scorched Earth.

An early shot of my Scorched Earth remake with an explosion randomly in the middle of the terrain and barrels missing from the tanks. Soon this would be fixed and there would be a fully deformable landscape, an array of weapons, and most importantly weather effects like wind, rain, and snow!

So back to Prince Harry.

If not for video games, I’m not so sure I would be a programmer today. I am positive I would not be nearly as capable. Video games were a constant inspiration fueling an insatiable drive to learn and create at a rate a traditional education could never touch. And thanks to programming, I now have a significant leg up in my understanding of today’s technology as well as holding a career in one of the most in-demand and lucrative fields in the world.

I continue to play and deeply appreciate games of all types, whether video, table top, sports, or poker. This post directly focused on one benefit, but hopefully implied many others. If when looking at a game like Fortnite all you see is addiction, I implore you to look harder. I suspect you’ll find many players just like me with their own ambitious pursuits and stories rooted in gaming.

So yeah, it’s safe to say games like Fortnite will always have a place in my household.


[1] And I turned out pretty OK…I think.[/f]

[2] As a testament to the difficulty of landing in Top Gun, I’ll leave you two choice quotes from fellow gamers:

“I remember when I landed the plane once. All of the sudden everything impossible to me became possible. I remember looking out the window and thinking I could become the next president. I could be an Astronaut. I could win the Tour de France on a tricycle. I never landed the plane again. Ever.”

“I used to do this successfully all the time when I was a kid of 8 or so. There’s a little trick though that’s not discussed in the game manual.The secret I always used was, ‘Hand the controller to Dad.’”[/f]

[3] I struck a deal with my Mom to go 5050 with me on paying for the console while selling the Nintendo to purchase a few games. My parents were always great at using moments like this to teach financial responsibility.[/f]

[4] Some things never change. The Browns were terrible then. The Browns are terrible now. The easy choice would have been picking the Kansas City Chiefs and running an option with #23 each and every play. Think the Family Guy’s Peter playing as Bo Jackson in Tecmo.[/f]

[5] Though heaven forbid you missed the end of the game as Madden had a “feature” to just keeping rolling and start another simulated game. Often I would walk away from a game, forget to come back in time, and then have to setup the whole thing again. I’m not going to lie, a few of the results were fudged when I couldn’t be bothered. Not my proudest moments as commissioner of the league.[/f]

[6] One of my other early computer hobbies was exploring the MS-DOS command line. It took a couple of trips to the repair shop before my parents made the connection between me experimenting with “rm -fr” from the root directory and our computer no longer working.[/f]

[7] I had fairly regular access to the Internet at this point, but the Internet was still a bit too new. Neither my family or friends knew anything more about the Internet than I did, so in my young brain the Internet meant instant messenger, email, and chat rooms. The concept of “let’s just look up how to do that” with a few keystrokes and a button press was not there yet. It’s really mind-blowing how much that has changed in the past couple decades and how accessible every part of programming is today.[/f]

[8] Today, this document totally would have been a blog instead of a Word document. But I’m very grateful the document never found it’s way on to the Internet. One of my first entries showed the promising start of the project:

“First build of the engine and its first rendering test sprite, and boy can you tell its my first 2d engine…how discouraging…totally busted.”

The status reports were not the only source of hilariously angsty comments. The source code also reveals the gems below:

“Implements the 2d graphics engine of the game, how revolutionary this is…cough”

Because if you aren’t doing something unique, it must not be worth doing at all!

“Handles the events from the standings screens…what an exciting job this class has”

I may have had empathy for code before I developed empathy for people.

“Generates the Landscape and controls the changes made to it (deformable terrain…oh yeah…i’ll end up regretting that one)”

To my credit, I did pull off deformable terrain. Take that 19 year old self. [/f]

Back to posts