About

From Aaron:

Hello. Thanks for joining DragonScript Arena! If you're curious about me, I wish I could tell you I'm a genius coder who invented something cool, or that I'm a hot-shot PhD who invented the Internet or something.

Sadly, I was just an average student. I was rejected by grad school. But I later sneaked into University of Michigan's master's program thanks to a professor who I'll be forever grateful to. Then I almost flunked out by failing an entry-level "Intro to Artificial Intelligence" class. Not once, but TWICE. (I only scraped by the 3rd time with a C-). Then I dropped out of the PhD program.

But somehow, this semi-handsome failure ended up with a happy life in sunny California with my wonderful wife, two kids and a demon mutt. And along the way, I've collected a few dozen patents and papers on chip design and Machine Learning algorithms. (Take that, stupid college A.I. course.) And somehow, code I've written has made it to faraway places like helping design chips in NASA's Mars Rovers... or powering Deep Learning processors in the cloud.

One thing I noticed was that much of what I use day-to-day as a Software Engineer did not come from college classes. And it seems the best learning experiences happen when you tinker with stuff outside of school or work. So this made me wonder: are there other ways to learn programming?

That random thought inspired me to make a game that would challenge you just like a real-world software engineering project would. And if you're up for the challenge and play the game, it could teach you quite a bit about software engineering. My goal is to give you some fun puzzles with hands-on coding practice. Then give you some hints for what to Google for to solve your problem and plug into the Internet to continue your learning.

This game is also inspired from watching my two kids learn and solve problems as they play. I feel like traditional programming courses don't do a good job chucking you into a fun real-world problem to solve any way you want to. They're usually about boring syntax or toy hello-world problems. Which to me is as interesting as learning English by reading the dictionary.

Plus, watching my kids grow up make me think a lot about getting old, especially after losing my dad in 2017 as well as a few other people close to me. It showed me how fragile life is and made me accept that my turn could come at any time too. So before I go, it'd be nice to make something useful for others. My dad liked to say, "Leave a place better than how you found it."

So those are my selfish reasons. Oh, and I hate it when people discourage others and say that programming is hard, or that it's only reserved for certain lucky people, or that you need to suffer financial debt and sacrifice years in college to enjoy a sweet life. That might have been true once upon a time. But with rising college tuitions and modern trendy college programs not giving you a solid education like they used to – I don't think it's true anymore. Especially with how advanced the Internet has become as a learning platform and with how much quality knowledge you can get for free.

So c'mon in! I hope you'll join us on this adventure... and maybe even make a friend or two along the way. I'm also happy to answer any questions about programming (either as a career or hobby), or if you just want to chat about anything else... like Life, Music of Mountain biking :)

(P.S. If you are a Software Engineer, Teacher, Game Developer or Artist, email me at aaron@dragonscriptarena.com!)

Credits

Special thanks to: Melisa N, J+j , David K, Chris P, Harry M, Jim McG.

History

17 Apr 2017
While we were visiting family and vacationing in Puerto Rico, my kids inspired me to make a programming game. As soon as I got home, I whipped together a prototype to test an idea I had. It began as a 2-D board with squares for the units and ellipses for the bullets. (No dragons yet!) The main goal of the prototype was to test how well I could run custom A.I. code submitted by individual players. It worked better than I expected and this motivated me to develop the idea further. Thus, the A.T.H.E.N.A. (Aaron's Theanthropic Hacker's Engine for Netrunning A.I.) battle-system was born.


26 Apr 2017
Next, I added health bars. And with that, we had a game! I also experimented with different kinds of attacks because having just 1 attack is boring. I wanted to be able to have attacks with a long cast time as well as attacks that are channeled.


28 Apr 2017
I started to research which game engine to use. My quick-and-dirty HTML/Javascript prototype was hitting performance issues and it was clear that the approach was going to run out of steam fast. I wanted to like Unity because of its popularity, but unfortunately it wasn't a good fit because I needed to run custom Javascript code. So I settled on three.js. There was a bit more 3D programming elbow-grease needed, but it was not too bad. Best of all, this was a perfect fit with my A.T.H.E.N.A. engine that runs custom player Javascript code.


28 Apr 2017
My kids started to become curious about what I was making. So I started including them in the process. They were tough critics and they had many ideas. One of them was to add a "boss" monster. They drew it on paper and supervised me while I translated it to 3D. They want me to add their monster to the game one day.


9 May 2017
There was a beautiful dystopic simplicity with the 3D cubes. But they were sad and lacked personality. So on May 9th they transformed into dragons. Thus marked the fateful day the project's name changed from "codebots" to "DragonScript Arena".


31 May 2017
The game engine was starting to take shape. So it was time to build up the rest of the game so that it was playable. This meant allowing players to write code, save code and run code in a game. For the first time in the history of DragonScript Arena, the game could run custom code submitted by players.


12 Jun 2017
The UX was coming along. So I started to add more maps/levels. I also added new game mechanics like "capture the orb".


27 Jun 2017
After watching too many DragonScript Arena games, it was clear we needed a way to fast-forward or slow down the action. To make this work, I really had to clean up the A.T.H.E.N.A. engine so that everything in the universe unfolded in time in exactly the same way, no matter how fast or slow time moved. A happy side-effect of this effort was that games became repeatable -- you could replay a game as many times you want and every replay will be identical (as long as players don't introduce non-repeatable randomness in their code).


12 Jul 2017
3 hero classes were introduced: Bighorn, Longtail and Little Wing. My kids seemed to like those names. I started preparing the game for Alpha release -- fixing bugs and polishing things up enough so that I could recruit some Alpha testers to try the game and give feedback. My parents visited me over the summer so I worked on the game a little less.


4 Oct 2017
After a few rounds of testing, I got a lot of great feedback. But I sat on the feedback for a while. Because while they were great suggestions that I agreed with, my ego took a beating and I needed some time to heal. I also needed to rethink some things. There were many small problems with simple fixes, but there were also some problems that needed big fixes. E.g., One feedback from the testing motivated me to add a Lesson system to help the player along. And also to add Ranks to measure and reward progress.


29 Jun 2018
It had been 7 months since my last video update. My dad passed away unexpectedly in November. 7 months later and I still get random sad thoughts almost every day. They appear, I notice them and they fade away. Sometimes they linger but usually not for very long. I was afraid I'd lose the motivation to finish this project. But I decided to dedicate it to his memory. My dad was a King Scout (similar to Eagle Scout in USA) and one of the things he did was volunteer to lead a few generations of young scouts. So I thought this could be a good chance for me to do the same. I was never a Scout, so I can't do what he did, but I can do this. I originally planned for this project to be a paid coding course. But after some thought, I decided to make this free. If you're willing to work and learn, I don't mind teaching you everything I know.
I finally fixed all the problems from Alpha testing. I also built up the Player vs Player arena and added some new maps. The game finally entered Beta. Just a few more finishing touches and bugfixes before opening it up to everyone!