E. Darwin Hartshorn: //Boilerplate

Announcing Project Therion!

Remember the good old virtual pet craze kicked off by Tamagotchi, and picked up by dozens of other games?

I always wanted one of those as a kid.  And you can find them emulated these days for Android and iPhone.  But they tend to require constant attention, and those of us who grew up with the games, well, grew up.  We have jobs and families and college now.

Moreover, my favorite incarnations of the virtual pets included the amazing ability to link up your pets and have them fight.  Typically the combat mechanics weren’t all that great, with the combination of how well you raised your pet, plus some random numbers determining the outcome.

But all that’s about to change.  Announcing Evan Hartshorn Entertainment’s next game project:  Project Therion (that’s probably not the final title).  Your personal pet grows and changes based on how you raise it, and in the 2.0 release, bluetooth battles with friends that involve strategy and skill as well as upbringing will be added.  Moreover, the pet allows you to play well without checking in every twenty minutes, and I’m planning a story and world that is a little deeper… and darker.

Stay tuned, as we keep you filled in on the development process!

Challenge Accepted

Someone asked me “If you could rebuild Starfighter X in a couple of days in ES, why don’t you?”

Since Starfighter X seems to be languishing in the review process, and since it’s unlikely to garner interest as is, I thought, why not?  If I built it really quick in ES, and then extended it until it was a different (and better) game, I could just post the source code of both the original and ES versions on this website for your edification, and submit the turbocharged extension of the ES version to the review process.

This post will document the process, and track the time.  Keep in mind, I have errands to run today, so this will take a bit.

  •  10:31 Started new project.
  • 10:38 AtomSmasher3D begun; core ES manager in place.
  • 10:42 Created Art Component Library, with a Model3D Component Dictionary
  • 10:48 Created Model Library manager.
  • 11 Began prepping model for use in game.

Now running some errands.

Errands took all day.  Fun fact:  it may be possible for me to get a degree in computer science without accumulating further debt.  It would certainly make for a better day job.

Back in the saddle.

  • 1:51 Resumed.
  • 2:00 Finished prepping the hero model and exported it.
  • 2:01 Imported model in the game.  Test run!  Game doesn’t crash.
  • 2:16 Created model-drawing subsystem, and wired it up to the ES.
  • 2:37 Coded the subsystem to actually draw the model.  Result so far:  it’s the right model, but it’s pointed the wrong way.

Nose up

  • 2:58 After twenty minutes of trying to fix it in Blender,  gave up and rotated the ship in-code.
  • Brief pause to run my wife to a babysitting gig.
  • 4:08 Returned!
  • 4:17 Added and integrated Location component.
  • 4:30 Verlet Integration added.  The ship now moves!
  • 4:39 Tweaked colors.
  • 4:42 Added Drag Component.  Ship now slows to a stop.
  • 4:48 More tweaking.
  • 4:55 Added and integrated Acceleration Component.  Added input components (any minute now, control SHALL be mine; BWAHAH!)
  • 5:03 Created a GamePad manager.
  • 5:11 Added and integrated input components.  You can now move the ship with a Gamepad!
  • 5:20 Added a deceleration multiplier.  When your ship is going one way, and you want it to go the other, it’s acceleration is slightly faster.  Gives tighter control without sacrificing the floaty “I’m in space!” feel.

Right, let’s total it up.  So far, I’ve spent 2.5 hours on this, and we have a ship zooming about a screen under player control with 3D graphics.  Sadly, it took two days to get these two hours in, but with no errands to run tomorrow, I should be able to sink a good six hours into the challenge.

Day three:  We’d better have all the gameplay in place by the end of the day.  Shooting the gun and destroying the bad guys.

  • 12:27 Started
  • 12:42 Added additional models for particles.  Tested them by replacing the ship with them.  They work.
  • 12:56 Hooked up input components for shooting.  Now I need something to shoot.  Time for assemblages!
  • 1:06 Created our first bullet assemblage.
  • 1:19 Ship now shoots!  Need to put some lifespans on those bullets, lest the ones that miss consume my memory.
  • 1:23 Added my favorite component library, Thanatos, with the components Lifespan and DeathFlag.
  • 1:36 Lifespan and deathflag systems in place.  Bullet now dies before it gets offscreen (for visual confirmation.  I want them to live longer than that…)
  • Pausing briefly.
  • 1:48 Return.
  • 1:53 Shooting things is fun.  Um.  Next step: trails and explosions.
  • 2:07 Tried to find a way to generate an evenly spherical distribution of random velocities (trivial in 2D), and could not.  Decided to fake it.
  • 2:11 Created base particle Assemblages.
  • 2:13 Cribbed my random-number generator and trig toolkit from another project.
  • 2:35 Finished making the basic ‘particle system’.
  • 2:38 Particle Spitter added to the bullet.  It’s less graceful-looking than the old tails, but also less work for the moment.
  • 2:46 Exploding on death added.
  • 2:56 Began Prepping enemy model for in-game use.
  • 3:13 Enemy model imported


  • Tested enemy model by using him as the player, complete with player colors.
  • 3:18 Swapped the player model back in, then swapped the bullet model for the enemy and started launching enemies across the screen, because I’m tired, and it’s funny. <– Remember what I said about mad science?
  • 3:41 Changed the colors from being set to being based on a palette component.  The baddies are now green again.


  •  4:03 Don’t have the brainpower left today to start doing enemy AI, so I’m gonna get a scrolling backdrop set up.
  • 4:24 Tiling Grid modeled.
  • 4:56 Grid imported, but exhibiting weird behaviour:

Distopian Grid


That was all lined up a moment ago.  Now it’s odd.

  • 5:10 Turns out my computer can’t handle tiling that many models of that complexity (And I was making them needlessly complex).  So much for Plan A.

Late start, next day:

  • 2:11 Got started
  • 2:29 Added audio.  Strangely, I needed to add a reference to the XAct studio libraries (I say strangely because they’ve always come prereferenced before…)
  • Ah, that would be why… I had it in Reach mode instead of HiDef.
  • Got the background going.
  • We Meet Again
  •  4:51 Made it so when a character shoots, the bullet proceeds forth from the character’s gun (or guns).  Tested it by flying the virus ship and squeezing off a few rounds.  Yes, that took me the last three hours.  That is why we make our games in 2D and not 3D, children.



Well, that’s all folks.  Tomorrow, I have a programming tutorial to write, so this week’s challenge is up.  Conclusion?

Has 12 hours of building the new Starfighter X proven my statement that I can do in ES in a couple of days what it would take me all month in OOP?

Actually, no.  It is taking me almost as long.


Megahyper Parallax Starfighter X

My first professional game, Megahyper Parallax Starfighter X is in the final playtest/debug process, and should be submitted for final review in a day or two!

So, what is Starfighter X?  It’s a Space-Invaders-esque game for the XBox Live Indie Games market, for a dollar.  It’s not a Japanese Bullet Hell: slow-moving ships and slow-moving bullets (at least by bullet-hell standards) means that mastering the physics and getting a feel for the (admittedly simple) enemy AI is more important than pattern-memorization.  It features pseudo-retro 3D graphics and computer-generated sound effects.

And it’s a start.  Finishing a game means I’m legit; and soon many more will follow.

Starfighter X has no powerups, and only one enemy type, though with each wave they move faster, withstand more of a beating, and get more aggressive.  So if you are looking for something with a lot of depth and variation, I don’t reccomend you buy it.  But for all that, it’s a decent game, certainly worth two or three minutes of play, and if you enjoy it, I wouldn’t mind it if you bought a copy to support me in making more and better games (and teaching anyone who wants to learn to do the same!)

Here’s a screenshot which pretty much sums up the gameplay: