Release: The Last Captain

Hot on the heels of last month’s release of “Either Side of Night” comes the second part of the Linear Cycle. Titled “The Last Captain”, it follows, logically enough, an officer of the Valtian Empire. If you read the first part, you’ll recognize him, but this story centers on him and his mission. The Touched are gone from Midra, but now the survivors are trying to rebuild their nation, and what’s a nation without a leader?

This second part of the series continues the dark atmosphere, but now makes it a bit more…mobile. Some might even say walking. It’s got action, it’s got drama, and it’s got zombies. Should be the perfect story, right? And it sets things up for future entries without, I hope, falling into a sophomore slump like some other Part 2s I’ve seen.

As always, you can click the link above to go to this story’s page here. You can also buy it at the Kindle store for only 99 cents, or, if you prefer, pledge at least a dollar to ny Patreon to gain access to it and the rest of the Linear Cycle.

Part 3, “Forged in the Fires”, is scheduled for release on June 19, 2017, so keep watching this site for more information.

Release: Either Side of Night

At long last, after months of writing, rewriting, editing, and “beta” testing, the Linear Cycle has begun. This set of 6 stories (call them novelettes if you wish) tells the tale of the Valtian Empire and its fall to the Touched, a horde of supernaturally animated dead that feeds off magical energies. The story opens with “Either Side of Night”, the tale of Dusk, a boy caught in the midst of this unfolding disaster.

This is probably one of the darkest stories I’ve written. It has a horror aspect in the zombie horde (though I specifically avoid both the term “zombie” and the phrase “walking dead”), and a kind of epic feel in later parts. I do focus a lot on the “negative” emotional aspects, probably more than in any of my other works. Pathos, drama, despair…they’re all here, and I don’t shy away from depicting some truly heartbreaking scenes. (Seriously. Reading the ending of the series without crying was actually harder than I thought.) But there’s a lot of hope buried in there, too. Yes, it’s the end of the world as we know it, but that doesn’t mean it’s the end of everything.

You can click the link above to get to the main page for the story here on Prose Poetry Code, or you can pick it up on the Kindle store for 99 cents. If you like, you can also get it from Patreon for about the same price; if you keep up your pledge over there, though, you’ll get access to my other works, including future installments of the Linear Cycle.

Keep watching for the second part of the series, “The Last Captain”, coming May 22.

Nocturne on Patreon

Today, April 21, 2017, marks the release of my latest novel, Nocturne, to supporters of my Patreon. For a pledge of only $3/month, you can download a copy in EPUB or MOBI formats, readable on your desktop, mobile device, or e-reader. (You can cancel the backing at any time, of course, but I’d prefer that you didn’t.)

What is Nocturne, you may ask? Here’s the blurb I wrote for it:

He is the Nocturne, and this is his story.

In a world where children are marked for life by the hour of their birth, one man breaks the rules. In Velin, those born in the dark, moonless night are perceived as treacherous thieves, while their brethren of the day are lifted up, glorified. But Shade entered the world in a brief window of darkness within the day, a phenomenon seen once a generation.

He is neither, yet he is both. Now, he must use the combination of day and night to solve the riddle of his past, but also to save the future of a people. Hunted by church and crown alike, the road he walks is long and lonely, yet he knows there is no one else. Only Shade. Only the Nocturne.

One of those searching for him is Kellis Matene, an inspector in training. Her superiors gave her the case of a man born in the night, calling on his fellows, urging action. A rebel, a traitor. As a king dies, a pretender emerges, and Kellis must solve a mystery. All she has to go on is a single name: the Nocturne.

It’s a fantasy novel set in a world of racial tensions, magic, and religion. At the intersection stands the Nocturne, an outcast who wields a power beyond any other man. I’ll be talking a lot more about the book in the coming weeks, because it’s definitely something I’m proud of. And I do plan on releasing it onto the Kindle Store in July, but we’ll see how that pans out.

Free short story: “Miracles”

I’ve told a lot about the writing I do. Now it’s time to show it. “Miracles” is a little story I wrote in March 2015, and I’m posting it here as a free example of my work. Although it’s a little over 11,000 words long, I still consider it a short story.

Set in the 1730s, it’s a brief tale of a young brother and sister, Thomas and Mira, and their flight from England to the American Colonies. Crossing the Atlantic is treacherous, especially for a pair of twelve-year-old orphans, but they have to go. They can’t stay home, but can they outrun the dark secret they share?

Read it now

Continue reading Free short story: “Miracles”

Godot Engine 2.0 released


I’ve been saying for a while now that I think Godot is one of the best game engines around for indie developers. It’s open source, it’s free, you never have to worry about royalties—all it really needed was a bit more polish. Well, version 2.0 is out, and that brings some of that much-needed polish. Downloads and changelogs are at the link above, but I’ll pick a few of the improvements that stand out to me.


Godot is, for lack of a better term, a scene-based game engine. Scenes are the core construct, and the engine has always been built around making them easy yet powerful. With 2.0, that’s now even more true.

Thanks to the new additions to scene instancing, Godot scenes got even better. Now, every scene in a Godot game is, to put it in Unity terms, a prefab. If you’ve used Unity, you know how helpful prefabs can be; Godot gives them to you for free. Basically, every instance of a scene can be edited in any way. All of its child nodes, including sub-scenes, are there for the changing.

It gets better, because now scenes can be inherited, too. The obvious use for this is a “base” object that is slightly altered to quickly create others. Enemies with subtle AI or animation changes, for example, or palette-swapped pickups. But I’m sure you can find plenty of other ways inheritance can help you. I mean, it wouldn’t be used so much in programming if you couldn’t.

The editor

Without the editor, Godot would be nothing more than Yet Another Engine. But it does have the editor, and that’s one of its biggest draws. The new version gives the editor a major overhaul, adding tons of new features. It’ll take some time to work out how—and how much—they help, but it’s hard to imagine that they won’t.

The most important, from my view, are multiple scene editing and the new Script view. Working with Godot, one of the biggest pains was the constant need to switch between scenes. They’re the central component of your engine, but you can only have one of them open at a time? No more, and that change alone will probably double your productivity.

The dissociation of the script editor from the scene editor turns Godot into more of an IDE. That will make it seem more familiar to people coming from code-heavy engines, for one thing. But it also means that we can keep multiple scripts open across scene changes. Again, the time-consuming context switch when editing was one of my main gripes with Godot’s editor. Now it’s gone.

Live editing

This one deserves its own section. Live editing is, simply put, the ability to edit your game while it’s running. I’ll have to try it out to see how well it works, but if it does, this is pretty huge. Especially in the later stages of development, fine-tuning can take forever if you’re constantly going through the edit-compile-run cycle. If Godot can take even some of that pain away…wow.

Combine this with the improvements to the debugger, including a video RAM view and collision/navigation debugging, and it gets even better. Oh, and if you’re working on a newer Android game, you can even have live editing on the device.

The announcement at the Godot homepage has a video of live editing in action. I suggest watching it.

The rest

Godot version 2.0 is a massive update. Those features I mentioned are only the best parts, and there are a lot of minor additions and changes. Some of them are of…questionable benefit, in my opinion (I’m not sold on heatmaps in the list of open scripts, for instance, and why not use JSON for your scene’s text format, like everyone else?), but those are far outweighed by the undeniable improvements.

I’ve said it before, and I’ll say it again. If you’re an indie game dev, especially if you’re focusing on 2D games, you owe it to yourself to check out Godot. It really is one of the best around for that niche. And it’s not like it’ll cost you anything.

Release: Before I Wake

So I’ve written my first book. Actually, I finished writing it months ago. Editing, cover design, and all that other stuff that the pros get done for them took up the rest of the time. However you want to put it, it’s done. Here’s the page I’ve set up for it on this site. In there, you can find some info about the book, as well as links to anywhere I’ve put it up for sale. As of right now, that’s only Amazon, but I hope to expand the list eventually.

With this release, I’ve also taken the time to do some minor redecorating. Namely, the sidebar. I’ve added two sections over there. One of them has a list of my published works, something that will (hopefully!) grow to be much longer in the coming months and years. Below that is another list for ebooks that aren’t mine. I’m not the only writer in my family, and family sticks together, so I don’t mind giving a little bit of publicity. The first entry is my brother’s debut novella, Angel’s Sin. It’s firmly in the genre of fantasy erotica, and it’s a bit…odd, so be warned. Anyway, that’s another list that will grow in the future.

I won’t claim that Before I Wake is any great story. I like to think of it as the greatest novel I’ve ever written, but there’s only one other competitor for that title, and it’s…not that good. Maybe I’m too hard on myself. Who knows? However it turns out, I’ve discovered that I like to write. So I’m going to keep on doing that. Surely I can’t be the worst author ever.

Phaser 2.4 released

A while back I mentioned that I thought Phaser was a good choice for beginners of game development. It’s well-supported, it’s popular on browsers and mobile devices, and it uses the current most popular language: JavaScript.

Now, the guys behind Phaser have released version 2.4, and it has quite a few changes and updates. Most people will be gushing over the support for boned animation and video, but there are a few nuggets hidden in the changelog that might be just as useful. Let’s see what we can find, eh?

  • Phaser.Text no longer extends PIXI.Text but replaces it entirely. Phaser.Text now natively extends a Phaser Sprite, meaning it can be enabled for physics, damaged, etc.

On the surface, not a huge change, mostly just back-end stuff. But look at the second half of the entry: text objects are now sprites in their own right. That actually makes the code for a lot of games much easier, simply because we can use all the sprite methods on text. Think of, say, a word puzzle, where every word (or letter) can be made into its own sprite.

  • Mouse.button and MSPointer.button have been deprecated and are no longer set (they remain at -1). They never supported complex button events such as holding down 2 buttons and releasing just one, or any buttons other than left and right. They have been replaced with the far more robust and accurate Pointer DeviceButton properties such as Pointer.leftButton, Pointer.rightButton and so on.

This (and a handful of entries following it) is another step towards “unifying” control schemes. It’s annoying to have to write separate code to handle the mouse and a touchscreen. Now we don’t have to. Of course, you still need to compensate for the fact that a mouse can have nearly pixel-perfect accuracy, whereas fingers are lucky to get within about a centimeter of their target.

  • Added support for the Creature Automated Animation Tool. You can now create a Phaser.Creature object which uses json data and a texture atlas for the animations. Creature is a powerful animation tool, similar to Spriter or Spine. It is currently limited to WebGL games only, but the new libs should prove a solid starting point for anyone wanting to incorporate Creature animations into their games.

This is the one everybody’s talking about. To be honest, it doesn’t intrigue me as much. Creature is just one commercial, proprietary tool among many. Show me an open standard for 2D bones, and then I’ll get excited.

  • allows you to load a video file into Phaser. It works in the same way as, allowing you to pass an array of video files – and it will load the first one the device is capable of playing back. You can optionally load the video via xhr where the video data is converted to a Blob upon successful load.

Video is cool, no doubt about it. But the whole field of in-browser video is a disaster area. Format support, patents, DRM, it’s all enough to make somebody swear off the whole thing forever. Still, if you can figure out a way to use it safely and easily, more power to you. Maybe it’ll lead to a revival of FMV games.

  • Text.setTextBounds is a rectangular region that allows you to align your text within it, regardless of the number of lines of text or position within the world. [ed: I removed the example, shout-out, and issue number]

More text rendering goodness. I can’t complain. This and other additions simplify the task of making a text-heavy game, something most game engines (not only HTML5, and not only free) make absurdly difficult.

  • Keyboard.addKeys is a practical way to create an object containing user selected hotkeys. [ed: Same removals here.]

Better keyboard support is a good thing in any engine, especially as so many are trying to forget that a physical keyboard even exists. And an easier way to support hotkeys can never be bad, because they’re one of the most annoying parts of a control scheme.

  • All Game Objects and Groups have a new boolean property called pendingDestroy. If you set this to true then the object will automatically destroy itself in the next logic update, rather than immediately. [ed: Removed use case and call-out.]

Godot has this same thing (as queue_free()), and it’s very helpful there. In a language full of callbacks (like JS), it’s even more necessary. Again, this isn’t something you want to scream out from the rooftop, but it’s a subtle change that eliminates a whole class of coding errors. Who could ever argue with that?

  • All Signals now have the ability to carry extra custom arguments with them, which are passed on to the callback you define after any internal arguments. [ed: Same removals here.]

A good customization point that’s never going to be important enough to mention in a press release. But it’s nice to have, and it simplifies some common tasks.

  • Phaser.Create is a new class that allows you to dynamically generate sprite textures from an array of pixel data, without needing any external files. We’ll continue to improve this over the coming releases, but for now please see the new examples showing how to use it.

Depending on how this plays out, it could be a great addition to an already excellent engine. A lot of designers absolutely hate generated textures, but I like them. Get some good noise algorithms in there, and you could do some wonderful things.

There’s a lot more in there, and I do mean a lot. And Phaser 3 should be coming within the next year or so, although release dates always have a tendency to…slip. But this 2.4 release does help cement Phaser as the forerunner for HTML5 game development. For coders rather than designers, there’s really not a better option, and I’ll continue to recommend Phaser for anybody that wants to get started with game coding. Unity’s great and all, but it’s a lot more complicated than popping open a text editor and a browser, you know?