E. Darwin Hartshorn: //Boilerplate

Devgame Internship 4: Tiles

In videogames, tiles are used to create large levels with a few small graphics.  Here’s a fantastic example by someone else:


As you can see, you can create a large variety of backgrounds simply by laying tiles, like this, on a grid.

Continue Reading >>

Devgame Internship 3: More Title Nonsense

So, my super clever idea for an intro is this:

You see the moon through branches.  Maybe it’s silent.  Maybe there’s a wolf howl and then silence.

The camera pans down and, meanwhile, the title fades in.

Now, to do this properly, we need to have layers, where each layer scrolls at a different rate.  So I’ve separated my title screen into layers, which I’m working on painting.

Layer 1: Moon and Stars.  This layer basically stays still.


Adding in Layer 2: Mountains in the distance.  This layer moves very little.


Adding in Layer 3: Krag Vargenstone itself.  This is the whole point of the reveal.  Also note it’s not finished yet.


The Krag needs more contrast and more fine details on the painting, but it’s coming along nicely.

Now, at the size I need to work, my CPU and GPU are already choking.  My laptop, on the otherhand, has never even heard of processing power, let alone having any.  So, something simple, like animating an orc, or finishing the title font.

Font finished.



Devgame Internship 3: Title

Here’s my concept:

Title Rough

And here’s the ‘font’ I’ve created in Inkscape just now:


Time to get ready for my day job.

I have a freaking awesome idea for the title screen, which I’m going to try to assemble on my lunch break at work today. Any progress will be added to this post when I get back.

… hours later…

Git wouldn’t let me push the repo onto GitLab and then pull it to my laptop, so I didn’t have anything to work on whilst on my breaks. Git is a git.

So I spent that time coming up with a way to make a quick and dirty Orcish.

  1. Transliterate English words into a set of nasty-wasty Orc-sounding phonemes. E.g “dwarf” → “dvorv”
  2. Invert the order of the phonemes.  “dvorv” → “vrovd”
  3. Clean up any awkward bits. “vrovd” → “vrov”
  4. Arrange words according to a grammar that is an unholy hybrid of Japanese and Cornish.

Here are some sample phrases:

“I smell a dwarf!” → “Dža vrov dremz!”

“Aren’t you a little short for a Red Claw?” → “Už tov Derválk trož ma xon?”

“This is not the dwarf you’re looking for.” → “Zyd tov už küd vrov matán.”

Like every pretentious fantasy language, there needs to be a liberal sprinkling of diacritical marks.  To quote R. L. McSterlingthong, “Everything is better with ümläüts.”

So, Git is being less of a git now.  Perhaps one day Git and I can establish a true rapport.

But, as of today, I have some material to use if I ever feel like spending an afternoon grunting into my microphone.

Devgame Internship 2: Cheaters occasionally prosper.

Bragging time.

I rendered out a bunch of pictures of dwarf taking steps.

My programmer desires a spritesheet rather than a bunch of frames.

A spritesheet is the frames all bundled together in one image.  Like so:


Now, this is easy when doing pixel art, my preferred mode of operation. Let’s take an example:

Continue Reading >>

Devgame Internship progress journal #1: Momentum

For the one of you out there who is following my project progress (hi mom!), Bestiary has been back-burnered because I have an opportunity to work an internship as part of my Devgame class. So w00t.

I started strong, but at the beginning of February, I stalled out.  Here is a list of reasons. The difference between reasons and excuses is that reasons result in solutions.

Continue Reading >>

Challenge Accepted: These Are The Droids You’re Looking For [Building Android games]

Mobile gaming is the latest big thing, and high-power AAA gaming is starting to bog down in many ways (thankfully giving indies room to breath).  Long, long ago (last year), I got myself an android phone and some books on how to write games for it.  Recently, somebody asked me if I have any mobile capabilities.

I said “A qualified yes,” when I should have said “not yet.”  Today, we are going to try and change those answers into an unqualified “I make Android games” before I have to crawl into bed.  I will count it a success if I have an object moving around on my phone based on where I touch the screen.


Additional challenges:  I be quitting caffeine this week!

Without further ado:

  • 7:14 Getting Eclipse.
  • 7:46 Damn.  That’s a big package.  Extracting Eclipse.
  • 7:51 Hah.  Now let’s see if it runs!
  • 7:53 Nevermind.  Now I have to install everything. I’m going to wash a load of dishes.

Given my bungling here, it should be noted that I’m not starting from square one, as I’ve spent a couple weeks studying Java and Android on my breaks at ye olde day jobbe.  So all hope is not lost.

  •  8:55 Yay.  Eclipse is running.  Time for Hello World.
  • 9:14 Getting my phone to talk to my SDK…
  • 9:23 Hello World is a go!
  • 10:32 Tried to get a game up using an ES created by the chief expounder of ES, Adam Martin.  Failed.  Also had breakfast.  Time for plan two.
  • 11 I miss Visual Studio’s Intellisense.  I’m spoiled.
  • 11:03 Eclipse does throw in closing braces for free, though.  It’ll take some getting used to, but that’s really neat.
  • 11:30 Created interfaces specified by my nice little programming book.  I remember why I dislike OOP.
  • 12-1 Pizza break.
  • 1:17 Framework in place.
  • 2:48 I now have an Android program that causes a character to move to the location I touch on the screen.  It’s running on my phone.

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.