Grid Sage Forums

Grid Sage Forums

  • November 22, 2024, 01:43:18 AM
  • Welcome, Guest
Please login or register.

Login with username, password and session length
Advanced search  

News:

LINKS: Website | Steam | Wiki

Author Topic: SITREP Saturday #13: 6.81 Seconds  (Read 3116 times)

Kyzrati

  • Administrator
  • True Cogmind
  • *****
  • Posts: 4477
    • View Profile
    • Cogmind
SITREP Saturday #13: 6.81 Seconds
« on: February 16, 2018, 03:42:44 PM »

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 :)

Achievements

A 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 (:P), 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.

Optimization

In 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 :D

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.

Miscellaneous

You 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 :P. 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 :)
Logged
Josh Ge, Developer - Dev Blog | @GridSageGames | Patreon

Joshua

  • Sigix
  • ****
  • Bug Hunter Weekly Seed Participant Shared a Confirmed Combat Win Shared a Confirmed Stealth Win
  • Posts: 319
    • View Profile
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #1 on: February 16, 2018, 08:43:02 PM »

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.

It's fun looking at the preview image and trying to guess what the achievements are from the icons.

Re: difficulty level, you could record the highest/best difficulty level an achievement is achieved on, and show that in the achievement gallery (assuming there is such a thing). Then users could also filter to show only achievements accomplished at Easier or better, or only at Roguelike difficulty level.
Logged

Kyzrati

  • Administrator
  • True Cogmind
  • *****
  • Posts: 4477
    • View Profile
    • Cogmind
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #2 on: February 17, 2018, 07:07:56 AM »

It's fun looking at the preview image and trying to guess what the achievements are from the icons.
I figured you all would enjoy that :P. Many are obvious, though certainly some won't be until you start seeing the names/descriptions and figuring out the symbolism. Also the basic mechanics category will be easier to guess, while some of the other categories have to deal with more abstract ideas.

Re: difficulty level, you could record the highest/best difficulty level an achievement is achieved on
I learned that's how DarkGod does it with ToME and I like that idea, but it has still the drawback of tripling the list of achievements, all of which then require, among other things, separate names in parenthesis to distinguish what difficulty level they're for... Very messy and bloated.

I'd probably do optional difficulty-wise achievements if not on Steam where I have 100% control over the achievement experience, but I don't because a lot of players will also be interacting with it through Valve's system, which isn't flexible.
Logged
Josh Ge, Developer - Dev Blog | @GridSageGames | Patreon

b_sen

  • Derelict
  • **
  • Shared a Confirmed Stealth Win
  • Posts: 66
    • View Profile
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #3 on: February 22, 2018, 07:23:02 PM »

I have noticed that Steam doesn't misbehave if it's told that a player has earned an achievement twice, so if resetting achievements in-game doesn't reset them on Steam, then Steam players can use their Steam list as "earned across all difficulties" and their in-game list as "earned on current difficulty".
Logged

Kyzrati

  • Administrator
  • True Cogmind
  • *****
  • Posts: 4477
    • View Profile
    • Cogmind
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #4 on: February 22, 2018, 07:30:34 PM »

Well, sort of but probably not unless I add that as a specific option. Technically the plan is to sync achievements in both directions, so that players who have a local achievement but it's not yet on Steam will have it uploaded, and those who have it on Steam but not recorded locally will have their Steam achievements downloaded and unlocked automatically... (for example if they stopped playing for a long time then reinstalled again later)
Logged
Josh Ge, Developer - Dev Blog | @GridSageGames | Patreon

b_sen

  • Derelict
  • **
  • Shared a Confirmed Stealth Win
  • Posts: 66
    • View Profile
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #5 on: February 22, 2018, 09:16:16 PM »

Ah, I see.  I'm not actually sure if there is a way to remove an achievement from a player on Steam, but you're the one with the developer API to know...
Logged

Kyzrati

  • Administrator
  • True Cogmind
  • *****
  • Posts: 4477
    • View Profile
    • Cogmind
Re: SITREP Saturday #13: 6.81 Seconds
« Reply #6 on: February 22, 2018, 10:03:22 PM »

There is, but it's only used for testing.
Logged
Josh Ge, Developer - Dev Blog | @GridSageGames | Patreon