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.
Truth is, I was just an average student. I was rejected by grad school. But I managed to later sneak into University of Michigan's master's program through a "back door". Then I almost flunked out by failing a basic "Intro to Artificial Intelligence" class. Not once, but TWICE. (I only scraped by the 3rd time with a C-). But then I dropped out of the PhD program.
But somehow, this semi-handsome failure got it together enough to score a sweet life in sunny California with my wonderful wife, two kids and a demon mutt. And along the way, I've somehow collected a few dozen patents and publications on chip design and Machine Learning algorithms. (Screw you, 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.
What I discovered in my career was that 99% of what I use day-to-day as a professional Software Engineer did not come from college classes. So this made me wonder: is there a better way to learn practical programming?
With this thought, I was inspired to make a game that would challenge you just like a real-world software engineering project would. And if you were up for the challenge and played the game, it would teach you quite a bit about software engineering as you played.
My goal is to give you just enough hands-on coding practice so you know what to search for to solve your problem – then how to plug into the Internet to continue your learning.
I.e., this is a modern program designed for our modern world. A world where you can Google the answer to any question at your fingertips. I believe that today, the challenge is not that there is not enough information to learn from. (Quite the opposite actually.) It's more about knowing what to search for by having a fun problem or puzzle to motivate you.
I was also inspired from watching how 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 has made 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 forced me to see how fragile life is and accept that my turn could come at any time too. So before I go, it'd be nice to make something that adds value to the world... and maybe even change a few people's lives. 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 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 buzzword college programs that don't give you as solid an education as 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 good info you can get for free.
So if you're ready to start coding, I'll do my best to teach you everything I know, in the best way I know how. I'll try my best to help you beyond your time at DragonScript Arena as well. For example, if you're interested in getting more serious about programming, either as a career or as a hobby... or if you want to chat about anything else in general... like about Life or Music or even Mountain Biking. So c'mon in! I hope you'll join us on this adventure... and maybe even make a friend or two along the way.
(P.S. If you are a Software Engineer or Teacher, email me at firstname.lastname@example.org to join our team of coaches! Please also say hi if you're a game developer or artist. It'll be nice to get to know you.)
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
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 being able 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!