Caches and Cuts

I resumed full-time development on NEON STRUCT this week, and spent most of the week building out the new level shown here (working title: Safe House).

This level introduced a few new technical requirements that I hadn’t previously dealt with. In particular, I needed to add very large lights to the world during play (the floodlights in the images below), but doing so took around 100ms to compute irradiance and rebuild the affected voxel meshes.

To solve that, I added an occlusion cache to the lighting system. When the color of a light changes but its size and shape remain constant, the previously solved occlusion can be reused when computing irradiance. During level load time, I enable the flood lights with zero brightness, effectively just precaching the occlusion. Then, when I need to actually turn the lights on during play, I just change their brightness and recompute local irradiance using the precomputed occlusion.

At the start of this week, I reviewed my schedule for the game and made a couple of cuts to stay on track for a release around February 2015.

The first cut was a level called Tunnels. I had built most of it just before my hiatus, but I was unhappy with its quality and had planned to rebuild it this week. While reviewing it, I realized that its problems weren’t in the way I had built it, but the level’s utter lack of purpose in the game. It was ostensibly a core stealth level, but its fiction required it to be only sparsely populated. The player had no particular objective except to get from point A to point B. And it was a grimy sewer level of the kind we’ve seen in hundreds of games before. In short, it failed at being a good stealth level and it wasn’t even remotely interesting. The obvious solution was to cut it and move on to Safe House (which is designed for stealth, has a real narrative purpose and interesting objectives, and is my favorite level so far).

The second cut was an Act 3 level called Train. I had not started building it yet, but I could see that it would have similar problems to Tunnels. I liked the idea of a mission set on a train, but the constraints of the space preclude a lot of core stealth mechanics. There was no real objective here either, and it didn’t advance the plot in any significant way. Cut!

What I’m left with after making these cuts is 21 levels that I feel very good about (split between 11 stealth missions and 10 “social” levels), and room in the schedule for working on things that aren’t levels, like more enemies and gadgets.

Name of Post

After a brief hiatus to work on a not-so-secret Eldritch update, I will resume development on NEON STRUCT next week. My short term goal is a small friends and family playtest around August 1, hopefully validating that I have fixed the shortcomings of the Vertical Slice build.

Between the hiatus, recent travel to help promote Super Win the Game, some level design work that I’ll have to redo for this playtest, and unproductive days before my Twitter ban, my schedule has been shifted back by about six weeks. I’m currently looking at a content complete date around mid-January.

Timetables and Twitters

During the vertical slice milestone, I mentioned some concerns about my schedule for NEON STRUCT. It’s a bigger game than Eldritch, with around 25 handcrafted levels that each require bespoke scripting and writing. The schedule is tightly constrained by my budget, unless I choose to do some sort of crowdfunding or early access—but I’m not inclined to, for various reasons I may write about later. Dividing the number of levels by the number of weeks remaining told me that I needed to be finishing one new level almost every week. That sounded technically possible, but I worried it would not afford enough time to make the levels good.

Two things have happened recently which have restored my confidence in my schedule. First, I got ahead on a whole lot of tech tasks which I had expected would fill up the last months of development—things like the Mac and Linux projects I mentioned a couple of weeks ago. Second, I found I could significantly improve my productivity by banning myself from Twitter during work hours.

My Twitter problem started around the time I announced Eldritch last September. I had good intentions to stay on top of press requests through the site, and I set up a number of columns in TweetDeck to monitor mentions of the game and my various related accounts. After a few days, checking Twitter for new mentions of the game became an addiction. Eventually, noise about Eldritch died down and I got back to work on new projects, but the habit remained. During long compiles, after each SVN checkin, or any time I needed to switch to Firefox for any other reason, I would check Twitter. I would get stuck there and lose my focus. Over and over. Dozens of times each day.

It took me a while to identify the problem. I knew my productivity was less than it had been during development of Eldritch, but I attributed it to other immutable factors in my life. I finally noticed that I only felt physically tense and stressed about my schedule when I was procrastinating by reading Twitter. When I could actually stay focused and productive, the stress was gone. After that realization, I installed LeechBlock and banned TweetDeck during work hours. The following days were among the most productive I’ve had on NEON STRUCT yet.

So my confidence in my schedule is restored; and more importantly, my confidence in my own productivity is too.

Ironically, I’m now taking a very brief hiatus from NEON STRUCT. I will be traveling to Dallas next week to help Kyle show Super Win the Game at the Minor Key Games booth at SGC. And I’m working on a sssecret project that will be finished very soon and revealed next month.