This week I finally finished taking care of all the personal issues I needed to catch up on after neglecting and letting them pile up for the past couple months while I worked on getting the past couple releases out to you all. Now all that stands in the way of Beta 6 is 7DRL and... of course all the remaining Beta 6 work itself xD
So what have I been up to in my travels through the endless world of Cogmind dev...
For one I hadn't played for a bit and it's always good to stay familiar with the experience and mechanics while designing more of them, so I took on last week's seed run and
wrote about that on the forums. It was a wheels-only conduct run on which I successfully fought my way into the late-game, but ultimately doomed myself by splitting my long-term strategy between multiple disparate approaches based on some interesting (spoiler) parts I found. It would've been nice to have streamed this one since it was great fun, but I was still over here in Japan. I'm actually heading home today (if you recall I've been working from Japan), though it'll still be a while before I can back to streaming with all this work to do.
If you're interested in the commercial side of things, last week I also posted an article over on Gamasutra about the most recent
Steam Winter Sale and the effects of being featured. Lots of data and graphs to pore over
AchievementsA good many hours since the last news were spent coming up with the initial achievements list. Cogmind will start with at least a couple hundred achievements, so it's important to get the categorization right from the start and have everything nice and organized.
I also had to decide how to handle the icons, so I started doing some sketches in
REXPaint and came up with a style that will work nicely. Preliminary tests:
Still more work to do there, including the final pass (and then also automating the creation of JPGs required by Steam--would much prefer PNGs...). And of course I'm using ASCII. Though naturally I want to (
), there's also not much of a choice anyway since these aren't just Steam achievements--they'll also be displayed in game and must fit the theme and UI. Cogmind also doesn't use the Steam overlay so when you earn them they'll have to be rendered via its own terminal display.
It's been fun working with the symbolism, drawing on characters, colors and more aspects utilized in the creation of Cogmind to convey the idea of an achievement in a little 3x3 grid.
My current intention is to have all achievements available across all difficulty levels, avoiding the bloat of having separate versions for every difficulty. Almost everyone plays the default difficulty the game was designed for anyway, and for the rare case of players who want to move up from a lower difficulty level I'll add a way to reset your achievements. Unfortunately this particular feature will only be available to offline players because Steam does not support it.
OptimizationIn case you didn't notice (you've probably noticed xD), Cogmind can take a while to start up. This is because pretty much all data is loaded right at the start, which for years was fine, but it's continued to grow all this time and sequentially loading everything was starting to be quite a drag, made all the more noticeable by the fact that I have (and prefer to keep) a blank screen while the game starts. Windows might even decide pop up a nice little "this program is not responding" notice.
I'll deal with that message separately later, but more important is that it shouldn't really take so long to get into the game, so I took the three largest chunks of data and multithreaded them. Fortunately this was quite easy to do since each is mostly raw data that in this case really doesn't care about the existence of the others. The three chunks are GUI particle scripts, map particle scripts, and sound effects. (The only exception was particles that needed to reference sound effects, so for that I added some code to link them up after all the threads completed.) Highlighted profiling data for some potential optimization candidates:
So what kind of savings are we looking at? In my test build scenario, startup took 19.13s, including 6.27 for GUI particles, 3.98s for sfx, and 2.31s for map particles. That's 12.56 seconds for three things that can essentially be loaded in parallel. Post-multithreading profiling:
The main thread sleeps for 6.81s, meaning that basically the steps that previously took 12.56s were instead crammed into 6.81s. So startup time on many machines has been cut by approximately one-third... Nice
Here's a graph demonstrating what Beta 6's multithreading looks like, the first such case in Cogmind:
There's more optimization that could be done, but this was the easy stuff and most other work would have significantly diminishing returns so isn't worth it right now. I also left all the old sequential loading code intact so that I can switch over to that with a debugging option in order to properly debug any loading issues, just in case. It's not the kind of thing that usually has issues, but if it does it'll be nice to keep it single-threaded because multithreaded debugging is just asking for trouble and confusion.
MiscellaneousYou might have noticed among the guides that we have a new one! Last week Suizin/tamagotaso helped translate
Cogmind's manual into Japanese. Quite a feat considering it's currently 60 pages / 17k words. Many thanks there <3
I've also made the
TXT version available next to the English version on the site.
This week Jazzer
reported finding a special Storage room that had no access from the rest of the floor, so I'll take this opportunity to point out that you can find rare instances of the map generator doing stuff like this. It won't affect your progress, can be a fun discovery to make by blasting in there (or via sensors/hacking), and can reflect "glitches" in the 0b10 system, either benign or perhaps intentionally influenced by crafty enemies of the Unaware. Or maybe they're just not done remodeling
. As another example you'll sometimes find hidden doors that lead nowhere--they haven't gotten around to digging out the target room yet.
Here's Jazzer's Storage room as seen in the debugger:
The left one was built first and originally connected to a corridor, but later they decided to add another at the end of the corridor and filled in part of the corridor when they shifted the room rightward. Again this is quite rare, and not something I'll be addressing so you might just come across it one day
Another find by fpsbossfight, something which is definitely a bug but unfortunately not really worth the amount of time it would take to address considering how pointless this is during normal play: If you fill
an entire map with Dirty Bomb Traps and set them off in a one-turn chain reaction, the game will crash around the 400th explosion xD
Rather than show the image here, I'll just
link to it because it's spoilery if you have yet to find Zion. (Yes he was finding creative ways to murder everyone...)
Once again I'll schedule the next SITREP for two weeks from now, so March 3rd, while I continue forging ahead with the Great Achievement Update and also spend some time finishing up my plan for the upcoming 7DRL. I haven't had any time to think about that for a while, and I prefer going into a timed project with a clear plan so none of that precious time is wasted
Also notice that Cogmind is on sale both on my site and on Steam to coincide with the Lunar New Year sale. After this one ends in a few days, the next sale should be the Beta 6 release, for which I'm thinking I'll do an out-of-event one and some promotion since we're getting all these achievements
Since a lot of the relevant SITREP discussion happens on Steam rather than in the forums, for reference here's a link to this same news on Steam. But feel free to post replies here, too