All Original, All 80's, ALL QBASIC!


My 12-year old daughter, Maria, and I coded our own "Stranger Things" Puzzle-RPG game entirely from scratch. We started our project on old hardware running FreeDOS and Microsoft QuickBASIC 4.5. We wanted to create a "Stranger Things" game that could have run on 1980's tech -- the same tech the characters in the popular Netflix show would have used around the same time.

Please download our game and support Maria's goal for creating the game. But don't forget to read the "details" below and on other pages, that explain our inspiration and programming theories behind our gaming engine.

Written in BASIC in Honor of "Bob Newby"

We chose the BASIC language in honor of Sean Astin's character, Bob Newby: the hapless hero of Stranger Things Season 2, who uses his knowledge of BASIC to save the day. Our game consists of just under 2,500 lines of code. We started the first lines of code the day before Thanksgiving and finished just before Christmas, 2017 (about 4.5 weeks).

What's Different About Our Game?

Near the end of our project, it was brought to our attention that an official "Stranger Things" RPG-style game already exists. We were disappointed because we thought our ideas for the game were original. Most of them still are -- and it's a very different game than the one that was officially released. What's different about our game is that...

  1. It's completely original and amateur; we didn't have a professional team of programmers, graphic designers, or production staff at our disposal. Yep, it was coded by a dad and his 12-year old daughter.
  2. We painstakingly created every single sprite by hand, pixel-by-pixel, using our own sprite editor that we also coded ourselves.
  3. It's written in an 80's programming language, not a modern language. I hope that its constraints help create its charm. We chose not to employ any modern features such as more sophisticated graphics and animation or sound blaster support. It's "retro game" in the truest sense of the word.
  4. We folded a ton of 80's Easter eggs into the game, to the point that my daughter said, "Daddy, you're missing the point of Easter eggs. If you put too many in the game, they're not Easter eggs anymore." Oh well. I hope everyone enjoys them anyway!

A Game Made to Run on an '80's PC

As I kid, I learned programming on QBASIC for MS-DOS on an IBM PS/2 Model 30. This computer had an 8086 processor and I was fortunate enough to have an MCGA graphics card, which allowed for QBASIC Screen Mode 13 (320x200x256 colors). This is the graphics mode we used to code our game. We could have built the game in a CGA or EGA graphics mode, but it was helpful to utilize 256 colors for our graphic sprites.

IBM PS/2 Model 30 ('87)

Microsoft QuickBASIC 4.50

From QB4.5, to QB64, to the World!

After coding the original engine in QB4.5, we ported our code to QB64 (a modern, 64-bit, backwards compatible version of QBASIC) so we could share the game with with the world. QB64 also allowed us to compile our game for modern operating systems without using an emulator. Aside from a few shims, the code will still run entirely in QB4.5 and MS-DOS. We haven't tested performance on authentically old hardware, though -- it would likely run, albeit slowly!

Promoting "Girls in STEAM"

As a washed-up programmer, a school administrator, and a father of two daughters, I want to see girls excel in STEAM (Science Technology Engineering, Arts, and Mathematics) fields. Although our project required lots of math and, of course, some computer science and technology, there is also an artistic and creative aspect to the process of creating a game like this. The limitations of 320x200 pixels and 16x16 game sprites creates a challenge most kids don't understand in a world of nearly infinite possibilities in graphics and processing. Ironically, I think such constraints forces creativity.

It was refreshing and encouraging to see Maria (and my younger daughter Olivia) and her friends get excited about computer science! This isn't just a mindless app on an iPhone -- this project required some grit and finesse.

The best part of our project was seeing my daughter get excited about arrays, loops, conditionals blocks, types, and subroutines! Coding a game about a pop-culture phenomenon like Stranger Things made this process all the more fun, but in the end, I wanted her to learn the raw mechanics of coding a game entirely from scratch. Hopefully it will encourage others to follow suit in this field.

A Side Note on STEAM Education

A side note: I have some theories about computer science education. Although I applaud initiatives like the "Hour of Code" and opportunities for kids to tinker with Javascript on sites like Khan Academy, I think the wonder of "making the computer do something" is lost in the modern "coding" movement. Kids are taught to be hackers, not programmers. My daughter and I started our project with graph paper and colored pencils, mapping out our sprites and arrays before writing a line of code. Conceptualizing "meta code" first -- then writing the actual routines to make things happen -- is largely lost in the way computer programming is taught today. Our project was an opportunity to approach things a little differently, and hopefully, with a dash of healthy nostalgia.