It’s almost here!


I’ve just uploaded the third and hopefully final release candidate of NEON STRUCT. It launches in 5 days, on May 20 (at 10 a.m. PST).

Thanks for following along during the development of NEON STRUCT, and I hope you enjoy the game!

Alpha Beta Gamma

NEON STRUCT crossed another milestone this week, as I declared it alpha complete. My definitions of “alpha” and “beta” are loose, but basically this means: every part of the game is feature complete and technically shippable, albeit lacking the final polish that would make me proud to ship it.

Moving toward beta, I’ll do a polish pass on each level. My main goal now is to add visual interest and local narrative: beautifying key rooms, writing short conversations and news blurbs, or  telling a story through the environment in the Irrational Games mise-en-scène tradition.

I made a slightly risky change to the AI vision system yesterday afternoon. I’d noticed for a while that the AI response (and the Thief-style “light gem”) didn’t always match my perception of the brightness of my environment, but I hadn’t given it much thought. Yesterday, I realized that the real problem is that I’m incorrectly rendering the world in nonlinear gamma space. Essentially, everything looks darker than it’s supposed to, but the AI isn’t “seeing” it that way. It’s too late now to change the renderer to use linear space lighting—that would require relighting every level—but what I can do is to apply a gamma curve to the AI’s vision system so it matches the player’s perception of brightness.

It was an easy change to make, and so far, the results feel more intuitive to me. I can trust my eyes instead of relying on the light gem to warn if I’m visible to enemies. Nevertheless, there is some risk in changing a core stealth system across the breadth of the game, and I will need to do a lot of testing to be certain that every space is still stealthable (or not) as intended.

Dollars and Demos

Things have been a little quiet around here since 2014, but I’m still hard at work finishing NEON STRUCT. The big news this week is that I announced a release date! NEON STRUCT will be available May 20 for Windows, Mac, and Linux.

I had planned to announce the price at a later date, but this morning, I read this post by Dan Adelman on indie game pricing. It echoed some things I’ve been thinking about, but what surprised me was the suggestion to be transparent about plans for future discounts. That’s something I was unable to do on Eldritch; in fact, I had no real plan for it and chose to embrace deep discounts early to quickly recoup my development costs. With NEON STRUCT, I’m launching from a more stable position, and I’m going to try something different with its pricing.

NEON STRUCT will be available on Steam for $17.99. I also intend to sell a standalone version via a Humble Widget, just like I did with Eldritch. (Both versions will be DRM-free, because that’s how we roll at Minor Key Games.)

GBP and EUR prices on Steam will be £11.99 and €15.99 respectively. Steam’s default pricing suggestion was somewhat higher—I believe they adjust it to include an estimated VAT—but I feel that’s unfriendly to consumers, so I’m choosing to take a smaller revenue from those regions so the customer sees an equivalent price tag.

Except for a one-week launch discount of 15%, NEON STRUCT will not be discounted for at least six months after its release. (Assuming that Steam has its usual Thanksgiving sale this year, I would expect that to be the first time it is discounted.)

Why is NEON STRUCT more expensive than Eldritch? The value of a game is subjective, but I believe NEON is a bigger, better-looking game than Eldritch. It has a fantastic soundtrack and more than one thousand lines of written dialogue. But as Dan Adelman said in the aforementioned blog post, games are experiential. Players need to actually play a game in order to determine their own valuation of it.

Like so much else in NEON STRUCT, I’m looking for a solution to this in the classic PC games that inspired me. In 1998, I played the demo of Thief: The Dark Project. I was hooked and immediately started saving to buy the full game. Thief and its indubitably better sequel were formative experiences which set me on a course that led directly to Eldritch and NEON STRUCT.

So I intend to release a demo of NEON STRUCT. It’s the most honest thing to do, I think: put a sizable portion of the game out there for anyone to try. Maybe they like it and want more. Great! Or maybe it’s not for them, and that’s fine too. I’d rather someone try the demo and decide not to purchase the game than buy it and be disappointed. (Although based on early response, I wouldn’t expect many people to be disappointed anyway!)

In other news, I will be speaking at GDC on Tuesday morning about procedural level design in Eldritch. I’ll try to make slides available online shortly after that.

And don’t forget to check out Kyle’s devlog for Gunmetal Arcadia. With its combination of roguelike mechanics and retro aesthetics, Gunmetal Arcadia is on track to be the definitive statement of who Minor Key Games is. And Kyle is way more disciplined about updating his blog on time than I am.

Year in Review

As this will likely be the last installment of the NEON STRUCT blog until 2015, I thought I’d do something different and review how I started making this game, what I have accomplished so far, and where I expect to go next year.


At the start of 2014, I had just finished the Mountains of Madness expansion for Eldritch and I was trying to figure out what to do next. I had two main game pitches among a handful of half-baked ideas: “Deos”, an open-world stealth game about surviving off the grid in a surveillance state; and “Neon”, a non-roguelike cyberpunk Eldritch spinoff. I spent a couple of days prototyping the barest bones of a city generator for Deos, but I had serious concerns about its scope and clarity. I chose to make the cyberpunk Eldritch game instead, and set up a Subversion repository called Neon.


By Mid-February, I was less enthusiastic about the idea of retreading the familiar ground of a first-person action game. I wanted to make something riskier and more meaningful than a reskinned version of a game I had just finished. A week later, I threw the entire design out and started fresh with the concept that would become NEON STRUCT. I wrote in my notes at that time:

It combines the best parts of Deos and Neon: Deos’s NSA story and all its survival/paranoia aspects, and Neon’s reuse of Eldritch tech and familiar core gameplay. And it resolves the problems I had with each concept in isolation: Deos’s narrative ambiguity and absent core gameplay, and Neon’s failure to innovate or be meaningful or exciting.


With a solid concept at last, I got to work. The early days of NEON STRUCT were focused on adding the core tech that would distinguish the game from Eldritch visually and mechanically: skyboxes, improved lighting, a conversation system, stealth AI behaviors. By the end of the month, the foundations were all in place and I began to hint at what I was making.


Eldritch turned out to be quite successful in the long run, but in the months immediately following its release, I thought a lot about how I could have done a far better job of marketing it. I decided not to wait so long to talk about my new game, and announced it in mid-April as Die Augen der Welt. (I’ve never been good at naming things.) Meanwhile, I was still building core player and AI systems, and plotting out the rough shape of the story and missions.


By now, I had a fairly convincing bunch of stealth gameplay but no real content, only a handful of test maps. The story and mission list were not yet final, but hardened enough that I felt could begin working on shipping levels. I gave myself one month to assemble a vertical slice comprising two stealth levels and one social space. I documented the process extensively on this blog, but was somewhat dishonest (with myself, even) about how much work remained to do on those levels, and what that would mean for the game’s schedule.


Following the vertical slice, I should have immediately reconsidered the scope and schedule of the game; but those lessons took some time to sink in. I spent most of June trucking along on the road I had already planned out, and while most of that work remains valuable, I lost more than a few days building out a level that I would eventually cut from the game. Working on a dull level was making me disheartened about the game in general, and my progress slowed.


I took a few weeks off from NEON STRUCT to prepare a big update for Eldritch and to give myself some time to reflect on the challenges of June. I returned with renewed excitement and a clearer vision of the game’s scope, cut the parts that weren’t working, and built a new level that I felt good about.


In August, I finally got to work on some of the most exciting level concepts from my initial plan. The nearly dead 1980s-esque mall level is an image I’d had in my head for years, and I was thrilled to finally find a place for it. And I made a weird dream sequence level, because I like it when video games throw weird curveball levels.


After the rush of blocking out some novel levels faded, my productivity declined again. I lost a lot of time moving to a new home, but I was also struggling to write increasingly complicated scripts in a verbose syntax that was never intended for such things. To improve my efficiency, I designed a simple scripting language that drastically reduced the lines of code required to implement most level scripting.


I realized around October that I should have a playtest/promo build ready sooner than my original schedule called for. I prioritized the first three levels of the game and spent most of the month building those to what I hoped would be a shippable state.


Playtest feedback is invaluable, and actionable negative feedback in particular is a very useful thing. It can also be soul-crushing. The response to the NEON STRUCT demo build was generally positive, but it overwhelmingly indicated that I was not nearly as close to finishing the game as I had hoped. Once again, I took some time off to pursue a side project and to absorb the lessons.


As I reflect on 2014, I feel surprisingly good about the progress I have made. It has been a long and sometimes difficult year; but despite a few setbacks, I am actually not far from my original schedule. NEON STRUCT is nearly end-to-end playable, and it will be finished and polished and hardened over the following months. I intentionally chose to tackle a risky game that demanded skills I had little experience with, and I have learned a lot by doing so.


So, what is in store for next year? In the short term, I intend to cut a trailer and announce NEON STRUCT‘s release date, but that means I need to be certain of the release date. It will be later than my original estimate of February, but should still arrive in the spring. I have a few post-launch features in mind (in particular, Steam Workshop support, pending a strong enough launch to justify it), but after that, there’s no telling what the future holds.

Merry Christmas and Happy New Year!

Mission Results

By popular request, I’ve added a mission results screen to NEON STRUCT. I had rejected the idea months ago, feeling it would break immersion. But many playtesters asked for something like this, and a couple of my favorite stealth/immersive sim games (Thief and Dishonored) do it, so I changed my mind. Unlike the open-ended play-it-your-way methodology of Eldritch, there is a prescribed playstyle here. Avoiding detection by enemies and forgoing any use of violence is strictly a tenser and more challenging experience, and I’m fine with the game treating it as the ideal way to play.

Right now, this screen is presented as a series of pass/fail marks and a final grade. I may add some more stats—how many bodies were found, etc.—but the grading system would likely remain based on these binary conditions because it’s easier to predict.

The mission results screen has a few other benefits. It reinforces pure stealth play in a way that would be tedious to do through narrative alone. It will keep me honest about every level being ghostable (able to be completed without being seen and without taking out any guards). And of course, it will be integrated with Steam achievements for players who like that sort of thing.

Applied Valence Theory

Since the playtest a few weeks ago, I have been aiming to improve the core stealth experience in NEON STRUCT. A couple of friends reminded me of Randy Smith’s GDC presentations on stealth gameplay, and especially the concept of attractive and repulsive stealth spaces, which Robert Yang called valence theory. Here, I’ll examine in detail the first stealth space in the game and show how I am using this concept to improve it.

In the playtested version of the level, this is the player’s perspective as they enter the space. There are some distant guards slowly patrolling the area, and an apparent path of shadow straight up the center toward the large, well-lit central building. But reviewing this space through the lens of valence theory reveals some key problems.

First, it’s kind of a mess: a large ground, dotted with lights and big looping patrols, but no interesting features to break up the space. More importantly, the apparent best path (from the player’s perspective) turns out to be a trap. Halfway to the destination, the player will end up in the middle of the field with no safe approach. Furthermore, there is an alternative path to the right which entirely circumvents the patrols and dangerous spaces. If the player goes this way, they will have a flat, unchallenging experience, and entirely miss the stealth gameplay this space was intended to provide.

This is my first pass at improving the encounter. The most immediately apparent difference is that the space is much smaller, and broken up in the center by a large walled structure. The patrols are much shorter and nearer to the player’s point of entry, making them more visible and learnable.

From the player’s perspective, there is no longer a direct path to the central building. Instead, the player is intended to make a shorter movement to a nearer destination. There are two visible destinations: the dark wall straight ahead, and the dark corner to the left. Both involve waiting until a guard has turned away, but the path to left is somewhat safer as it has some nooks to hide in along the way. (I may also put some planters along the road to provide a bit of occlusion for the player, as both paths still look a little more dangerous than they are intended to be.)

There is a hidden third destination, to the right behind the well lit blind corner. As before, this leads to a mostly unguarded space in front of the right wing of the complex, but getting there is no longer a flat, trivial experience. A player might risk approaching that blind corner, but the light and occlusion are designed to repel them from it. They are more likely to traverse that space when exiting the level, as it provides a safe vantage point to scout these patrols from the other side.

On the far side of this space, I have also added an entrance canopy to the central building. This serves both to identify that building as the primary destination, and to provide occlusion from the bright lights.

Much of the rest of NEON STRUCT‘s development will be spent iterating on the levels and making this sort of improvement. The game is nearly end-to-end playable now, but a few more months of work on stealth gameplay at the micro encounter level is needed to make it the game I want it to be.

The Music of NEON STRUCT

Some months ago, I was trying to figure out NEON STRUCT‘s soundscape. Like the classic stealth games that inspired me, NEON STRUCT is a game where sound conveys useful information to both the player and AIs. Background music could be distracting or tonally inappropriate when the player is waiting and listening for enemy footsteps.

But in between the stealth levels, the player visits safe social spaces. In that context, music is not only appropriate but also serves to implicitly notify the player that she doesn’t need to be stealthy now. However, I worried that the sudden presence (and subsequent absence) of music in the player’s ears could be jarring.

I began experimenting with using diegetic (in-world) music, drawing the player into social spaces and fading out as the player departs. I felt that it met the goals of denoting safe spaces and transitioning more seamlessly from and into stealth levels, but now it felt strange to have instrumental game music playing on in-world stereo systems. I didn’t just want music, I wanted songs.

I reached out to my friend Andrew Strickland and his sister Anne of the band The Home Conversion. I had listened to their album Stay Wild extensively, and it had an 80s-influenced chill synths + guitars sound that I felt would be a great fit for the world of NEON STRUCT. Anne and Andrew were also excited about the prospect, and offered to not only contribute songs from the album but also to write and record new material for the game.

So I’m thrilled to finally announce that The Home Conversion are providing the music for NEON STRUCT. We have sequenced a tentative 18-song soundtrack, including 7 songs from the Stay Wild album and a whole lot of remixes and new songs. We look forward to sharing more closer to the game’s release next year!

Sequences and Shaders

I started building a filmic title sequence for NEON STRUCT this week. My options for implementing it were somewhat constrained. I don’t have any support for Flash or Bink videos, so I had to build it all in-engine. It’s also a short sequence, so I didn’t want to spend too much time on it.

I wanted this sequence to contain visual elements suggestive of an electronic surveillance system searching for Jillian, the player character. I first considered a Casino Royale-esque treatment with swirling vector art of eyes and ears and camera apertures and drones, but I wasn’t sure I could execute that concept particularly well. Instead, I wanted to take a programmatic approach and let the code turn a small amount of content into something bigger.

The treatment I chose, as seen in the video above, is a sort of glowing, pixelated crawl that leaves behind a faint trace of Jillian’s face. It is implemented with just 4 textures, a simple shader, and a short piece of code that drives the control values in the shader during the sequence.

The fundamental concept of animating the crawl in the shader works by clamping a gradient texture to a small range of values that shifts over time.

For example, this is the gradient I use for the pink and blue diagonal wipe at the start of the video. By authoring it as a gradient from dark in the top-left to bright in the bottom-right, the pixels will crawl in that direction. I added some noise so that some pixels will light up earlier or later than their neighbors. And because I wanted a pixelated look, I started with a small gradient texture and blew it up to full size without interpolation, leaving all those big chunky pixels.

Then the shader multiplies the value by a grid mask to separate the big pixels from each other…

…and finally multiplies by a color texture to colorize the result.

In practice, the gradient texture and mask are packed into the red and green channels of a full color texture, and a second gradient/mask pair is packed into the blue and alpha channels to control the secondary crawl (the trail of longer-burning pixels that reveal Jillian’s face). The parameters for the gradient selection on each of these channels are driven by a small piece of game code.

When the sequence switches from the pink and blue crawl to the green radar crawl, it is simply using a different pair of textures; and I can easily implement more patterns just by authoring a couple of simple textures.

Fractals, Fresh Eyes, and the Fear of Feedback

This week, I have been wrapping up a three-level demo of NEON STRUCT for future playtesting and press needs. This means bringing the first three levels in the game to a representative shippable level of completion.

Polishing a level in a game is like recursively refining a fractal. As I zoom in on the details, I find an infinite amount of further work I could do to improve the game. The shape of NEON STRUCT is not substantially different than the shape of most big budget video games, but the distinction lies in where we choose to stop iterating on the fractal, refining the little details. In Eldritch, I chose to go deep on systems and mechanics, at the expense of virtually any aesthetic polish. In NEON STRUCT, I’m spreading my time a little more evenly; but with a limited budget, it is important that I know when to stop polishing and call it done.

The playtest build will go out to a small number of trusted players within a week. I usually dread the feedback that comes from playtests, because it disrupts my schedule and damages my confidence, but I know it is an essential part of making a successful game. It is also exactly what I need right now. I have been building and playing this game too long to regard it objectively anymore. I need fresh players to evaluate the controls, the tuning of the stealth systems, the writing, and more.

I also need to do the playtest so I can realistically target a release date and start doing PR in earnest. If the feedback is mostly in line with my current plans, I will be on track for an alpha build in early February and a release date around the end of March. If the response implies the need for bigger changes, NEON STRUCT‘s release date will probably be later, around April or May.


Brief update today.

I woke up on Tuesday like, “I’m going to put pigeons in NEON STRUCT!” It had been on my task list for months, but it suddenly seemed critically important to do immediately. In the middle of developing a demo build. While one entire level for that demo still had no primary path scripting.

Mechanically, pigeons are simple alarm systems. If the player disturbs a pigeon or wanders too close, it will fly away for a bit, alerting nearby guards to her presence. Pigeons can’t distinguish between human factions, so enemies may disturb them too. If the player sees a couple of birds fly past, it’s a good bet there’s something approaching.