Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411508 Posts in 69374 Topics- by 58430 Members - Latest Member: Jesse Webb

April 26, 2024, 09:58:38 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsCogmind (sci-fi robot-themed roguelike) - BETA RELEASED
Pages: 1 ... 60 61 [62] 63 64 ... 71
Print
Author Topic: Cogmind (sci-fi robot-themed roguelike) - BETA RELEASED  (Read 236863 times)
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1220 on: December 28, 2018, 03:29:32 PM »

There's not as much progress to show these days since I'm working on the main plot of Beta 8 (i.e., spoilers Tongue), though here are a couple things...

I needed to debug a new mapgen feature, and that required having a visual way to quickly tell one cave from another as far as the generator was concerned (for some special cases where logically separate caves might be directly attached to one another), so I added that in real quick.



I've never done a visualization like this but always wanted to after seeing so many other devs produce pretty color-based ID systems. Doing this is pretty easy: Just use HSV coloring and start with a low hue, then increase the hue for each subsequent object by some static amount for each one. Knowing the number of objects in advance also makes it possible to prevent colors from overlapping, since the hue interval can be set based on that known.

For something else I was working on recently I had to look into historical bug reporting figures, and came up with some stats:



There's the Top 10 earners of "bug points," based on some macros run on changelog data. Since the first release in 2015 there have been 460 total reports (including duplicates and simple things like typos, but also of course some major stuff as well) submitted by 118 unique players. These figures exclude the outstanding issues to resolve for Beta 8, which aren't in the changelog yet but I'll be getting to them all at the end of this dev cycle, as usual.

For my [SITREP](https://steamcommunity.com/games/722730/announcements/detail/1699444970757549653) today I wrote more about last week's special Holiday Mode release (still ongoing through 1/1). A few of the images I made for that:

Presents!



Of course Santa's got the coolest GPS



Boom goes the Black Coal

Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1221 on: December 28, 2018, 10:27:00 PM »

Quote
Breaking news: Kyzrati hired by Firaxis to handle the next mapgen code for Civ VII

"Yeah, he seems to get this continents stuff better than us. Also, we're secretly hoping for an ASCII demake of Civ 2"
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1222 on: December 28, 2018, 10:33:21 PM »

Haha xD

On a serious note, though, I have really wanted a good reason to spend ridiculous amounts of time working on overworld generation for a game, that and 4X/simulation mechanics, and like a million other things... but these are definitely close to the top of the list.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1223 on: December 29, 2018, 12:22:11 AM »

Pretty sure if you send Cogmind as your only resume item with "I made this all by myself", they'd hire you on the spot.
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1224 on: December 29, 2018, 12:41:51 AM »

I feel like getting industry jobs doesn't usually work like that Tongue. Although I admit I've been curious if I'd actually be able to get a regular job given my credentials, which are all over the place.

Either way, working on Firaxis stuff would be pretty neat, though working on my own stuff is better!
Logged

Zireael
Level 4
****


View Profile
« Reply #1225 on: December 29, 2018, 01:26:48 AM »

Pretty sure if you send Cogmind as your only resume item with "I made this all by myself", they'd hire you on the spot.

Hehe, agreed!
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1226 on: January 11, 2019, 04:25:51 PM »

SITREP Saturday #43: Pwning the Early Game

Welcome to a new year of Cogmind!



It's been so long in the making I've started to have visions of even grander major updates, and we end up getting Cogmind 2019, Cogmind 2020, and so on until my permadeath, ha.

In the New Year's spirit I streamed Holiday Mode last week on January 1st, building around a very specific weapon available that day (and on New Year's Eve), the RPDS. Some very potent fireworks were on display, including plenty of unnecessary carnage.





It was an interesting time with different challenges from a more regular run.

FYI an RPDS does... this :D



Or in ASCII:



Pwnage

For a long time now I've wanted to do a video that demonstrates how to reliably get through the early game, since it's not all that hard but some players have trouble figuring out how to overcome the various challenges there and end up either having to switch to another difficulty mode or playing the majority of their runs in the early game, which honestly is just the very tip of a much more varied Cogmind experience!

Once you're good at it the first few floors only take maybe ten minutes as you prep for the mid-game challenges, so I wanted to share some of the main tactics that ensure you'll make it through. We've had some other early-game tutorials on video before, but I wanted something of my own that I covered what I thought was most important.

Well we can check that off the list :D





I streamed "Pwning the Early Game" this week, and already a bunch of players have been finding it useful, so that's reassuring.

Although I normally talk a lot of strategy in my streams, this was quite different from the usual since it was focused purely on the essentials for the first floors. I first spent about half an hour describing most of the main UI and basic mechanics, essentially an intro to the game, then did a slow run through the first several floors, talking about strategy, combat tactics, and different robots, systems, and AI. After that I concluded with four more quick runs through the early game, putting everything learned into action to reliably reach Factory. (There are time stamps in the YouTube description.)

Not Spoilers
      
Well, speaking of the early game... let's talk a bit about Beta 8! Why? Because that's its biggest area of focus :D

I haven't really talked about it yet, and while I want to wait until the main announcement to go into details, it's relevant here so let's go.

With Beta 8, in the the early game you'll often have a way to find unique items, and these items can affect your entire play style, if not for an entire run then at least for a while. I mean I guess even regular items and prototypes (and especially artifacts) can already do that for you, but any time unique items are added this is a chance to provide opportunities like that.

For example, among the new items that are being added, there's the PSU Rigger. As per its name, it can be used to rig any power source to explode like a proximity mine. This one's going to be pretty fun to use :D



This kind of stuff has always been part of my long-term plan for Cogmind (because having worked on it for over five years now we're apparently not quite yet in the "long term" xD). Basically expanding the game with new ways to experience and interact with the same world, adding smaller amounts of content with outsized impacts on a run, ableit optional, of course. I have tons more item concepts and avenues for obtaining them in various parts of the world, but these things will be introduced over time, mostly after the actual 1.0 (assuming I can still afford it Tongue).

Now don't get too excited about the Beta 8 gear--you won't be able to pick and choose items, but I can guarantee there are going to be some fun and interesting new experiences coming.

Work on Beta 8 has been pretty smooth lately, just time-consuming as there are some rather complex additions for this update. Some random dev snapshots...

Visualizing the ambient sound from a new area:



Hm, a curious new UI animation, what could it mean? Smiley



Other News

I was chosen for the "Best Developer" award by Spitball Sessions! You can read about that here, and check out their GOTY 2018 podcast. I am honored, and will continue trying to do my best :D. Thanks to everyone for your support (and reviews! they really keep the game going in Steam's algorithms so that I can add more features rather than having to worry about wrapping it up sooner).

And if you're using Proton to play Cogmind, it'd be great if you could contribute to the database.

I guess this is also a notice for those of you who didn't already know: Although Cogmind isn't marked as supporting Linux on Steam, manually activating it for Steam Play does allow you to purchase and download and play normally! There shouldn't be any issues as I've fixed the few Wine-related bugs on Cogmind's side before it even came to Steam, and have added other QoL features specifically for Linux players. (If you do run into the no audio issue there's a workaround--not sure if they've fixed that in Proton itself yet.)

Sure am glad Steam took the initiative on Proton.

The biggest "Other News" we've got here is that we'll be going on our annual family vacation next week for winter/Chinese New Year. I really wanted to have Beta 8 out by now, but it's still not there yet. Being out of town for a few weeks I won't be streaming for the next month or so, and although it's a long "vacation," technically it's more of a workcation since I'll still be setting up office and doing a fair bit of regular work on Cogmind as well.

It feels really good to be caught up on all the personal and/or non-Cogmind things that were getting in the way these months, though, and to have the Roguelike Celebration behind us, since that trip and preparing for

and all the other related work really ate up a ton of time and resulted in the additional backlog of other chores I had to get out of the way xD
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1227 on: February 01, 2019, 03:17:04 PM »

SITREP Saturday #44: Code 403

Beta 8 is feature complete :D

It's not ready for release just yet, but a feature freeze is in effect as it goes into final testing. The next release is dubbed "Forbidden Science," and you'll be able to get your hands on this science when it releases the morning of February 12th (my time, which means the evening of the previous day for many players :P). I'll also be getting back to streaming that day and/or the day after.

Today I've got a batch of feature demos to share, mostly interface-related, along with art and other news.

Quality AND Quantity

The main new content for Beta 8 having been completed a couple weeks back, since then I've been able to turn my attention towards smaller matters, like a collection of UI options and other QoL features to continue improving the experience. Here we go...

Machine hacks now have context help via the usual right-click or A~Z:



This puts the system on par with the item/robot stat info and the robot hacking system in terms of QoL, and could be useful for new players or infrequent players who may have forgotten certain effects :)

By request, the part swap menu includes a remove button:



With that we'll have five different methods of removing a given part, because having options is nice!

The part swap menu also now shows disabled parts in orange, and includes manual tags added to unidentified parts (which originally only showed in inventory and the item info page):



The advanced autoReadyLauncher option has been super useful since introduced in Alpha 12, and now there's its opposite, autoUnreadyLaucher, to reactivate all weapons when a launcher is removed:



It's a common tactic to only attach a launcher to deal with a specific situation, then swap it out after firing--together these options remove most of the other commands involved in that process.

Active streamctrl robot hacks display a range within which you should stay to avoid losing control of the robot:



We've got three different advanced options for how to display Cogmind's part loss directly on the map: blinking red, blinking red `X`, or part's name in red:



Currently there is no explicit on-map display for that information to avoid potentially interfering with other indicators or tactical information nearby (plus we already have that info reflected in the log, sfx, and parts list), but this could be a pretty useful feature for some players, especially given that the majority of the combat focus has been designed to center around the map view.

Countdown timers for fabricator and repair station processes remain visible outside of FOV! \o/



There's also a log message reporting completion if not in view. Originally the machine would only showed this info while in view, but sometimes it could take a while to finish and players often prefer to leave the area and come back later, but would then be forced to calculate out the approximate turn on which it would be finished. Certainly always showing the info is better, though this wasn't done originally because it's a lot more work to separately record and display hypothetical information! I.e., the machine could be disabled or destroyed but you're not supposed to know that unless it's in view, and it has to keep displaying information as if it were still processing.

Quite a few times I've received requests for an in-game real-time clock. I've held off on it for a while since I wanted to be sure of where it could work in the HUD, and now it's found a home:



It's optional (off by default), and there's also a separate option to show a real-time run timer, for the real-time speedrunners out there.

Energy-adjusting utilities now factor into the HUD's net energy readout:



The Scan window also got some updates, including a new option to have it only show what's currently under the cursor (or kb marker), rather than the usual behavior of retaining the last object shown.



This is not default behavior, however, since keeping persistent data visible has the advantage of not losing that reference info simply by moving the cursor to perform other actions. Not to mention persistent robot scan info will update their heat/integrity values as they change, if they're still present in the window at the time, without having to put the cursor back over them or use some other method to check.

Speaking of easier access to object info, you'll no longer have to open solid terrain info to check its armor value, which appears under its name in the Scan window:



I didn't do this originally because constantly updating the Scan window as the cursor moves around would be really distracting, but later realized I could both avoid that annoyance and provide the info by only loading the terrain info after a short delay! So the cursor/keyboard marker has to be stationary for 500ms before it will show armor for that space.

Machines and other props will also show their armor value in the same place! Remember that you'll probably still want to take resistances into account before attempting to destroy something, but this is a good general reminder and should save some time.

The threshold for overweight calculations is now inclusive rather than exclusive, so everyone gets +1 support before going double/triple/quadruple(?) overweight...



Maintenance intel markers were switched from green to gray, so that they can be easily distinguished from Terminal markers:



I originally chose green since all the maintenance bots themselves are green, but Terminals are also green so if you have both types of intel it can be hard to spot the Terminals unless you deactivate the maintenance intel. In any case, gray is also a reasonable color for a neutral party.

The very last thing I did for Beta 8, since I had some extra time, was add a pair of new alien artifacts for fun, and science :)



Fun With Bugs

The last couple weeks of dev also involved some dedicated bug fixing, clearing out all the reports since Beta 7.

None were very difficult, although for one in particular I added a visualizer for the Entity (robot) spawn blocking layer of generated maps to confirm a suspected cause of unintended behavior. Technically, on maps belonging to 0b10, most armed enemies are not allowed to spawn within a certain distance of the starting point, but UlyssesB shared a screenshot of exactly that happening on the very first floor. This occurred right around a special encounter room (the part cache), so I initially thought it was simply not blocking spawns to that room. But the engine blocks all random spawning in those areas, so that couldn't be it... Then I checked the actual spawn order and noticed the patrol spawn location (based on its leader) wasn't even in the room itself as I'd thought, but just outside it. This particular encounter happens to clear away the nearby wall as part of its behavior, so what had happened was it cleared the wall, opening the way for a patrol to spawn right there where the wall had been!

The visualizer showing a patrol spawning next to the player:


(the squad leader spawned as the middle 's' there, and the others appear next to them since they're not constrained by that particular spawning rule)

Anyway, in the end the solution was to just additionally spawn-block any walls that are opened up (normally cells that start as walls don't need to explicitly block spawning since walls block spawning anyway!). For comparison this is the fixed version on that map:



And it's a good thing I had a visualizer because the initial solution I coded worked in this particular case but wasn't implemented well enough and still left a potential hole for different patrols (which I wouldn't have noticed had I not activated the visualizer again to look at the results).

For devs, the less here is that data visualization are super useful :)

In another recent happening in dev land, this isn't a bug but more a development goof, but check out this interesting looking "map"



This looks absolutely nothing like what was supposed to happen, but during my first attempt to enter a new area I was working on, something went wrong and I ended up in that place. It was supposed to be a certain static environment, but instead I got a sparse and windy weird cave system.

From The Fans



@nyrdal shared some really cool fan art depicting my winning ninja melee build streamed back in October:





And Zyalin has graced us with some Beta 8 hype art:



It's based on this song:





Fellow roguelikedev and Cogmind player VedVid pointed out last week that Poland's largest gaming portal did a quick video on "Games without graphics that will consume your life" xD





Cogmind is in there, along with other well-known roguelikes such as ADOM, Dwarf Fortress, and Caves of Qud.

And that's it for today. The next announcement will cover the true meat of this release, as we give you... FORBIDDEN SCIENCE!
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1228 on: February 02, 2019, 10:26:15 AM »

Goddamn man, just how much polish can you put into one game?!
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1229 on: February 02, 2019, 03:55:12 PM »

You know, I've started wondering that myself this year, because no matter how many of these little improvements and tweaks and options I add, there's still always an ongoing list of more I'd like to do... Kinda worrisome if only because I'd like to one day call it done, but the fact that this list always exists will continue nagging at me!
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1230 on: February 11, 2019, 04:31:52 PM »

!!! ALERT: FORBIDDEN SCIENCE DETECTED !!!



Beta 8 has landed, and with 38 new special items and a new mini-faction with long-term strategic implications, it's like we're back to the good old days of Cogmind Alpha where there's plenty of new content to explore and you're not always quite sure what's out there waiting :D

The best part: Most of Beta 8's features are accessible from the early game, so everyone can get to the new fun stuff right away.

(For the full release notes and feature demo images, see here. Cogmind is also 10% off for the next week on the website (includes DRM-free plus Steam key), but not until 2/13 on Steam due to limitations on their platform settings.)

Cogmind Beta 8 "Forbidden Science" (0.10.190212) changelog:
  • NEW: Branch map "Exiles"
  • NEW: Special sensor ability obtainable early on, with long-term effects
  • NEW: 5 more unique named NPCs
  • NEW: 3 new robots
  • NEW: 38 new items (mostly uniques, many with completely new mechanics) (total = 936)
  • NEW: 2 more alien artifacts
  • NEW: 18 more sound effects (total = 890)
  • NEW: 29 new score sheet entries (total = 799)
  • NEW: Several dozen more lore entries
  • NEW: Potential random NPC encounter in Materials and Mines
  • NEW: Regular doors hit by EM now malfunction, remain open
  • NEW: DISPOSABLE weapons have a unique log message when expended
  • NEW: Quantum Capacitor and Weapon Cycler effect descriptions indicate incompatibility with autonomous weapons
  • NEW: All treads grant +2% accuracy per slot
  • NEW: Added random NPC encounter in Storage
  • NEW: Flight/hover speed now slowed by attached inactive non-airborne propulsion parts (see new "Drag" stat on treads/legs/wheels)
  • NEW: The fabled Hcp. Storage Unit has returned!
  • NEW: Activating Transport Network Coupler reports the number of Haulers across the map, and the number currently in view
  • NEW: -8/Mines map (inaccessible from -8/Materials)
  • NEW: Manual explicitly indicates heat-based accuracy modifiers only apply when heat is positive
  • NEW: Maximum Security, for times when High Security simply isn't enough
  • NEW: Option to disable Cogmind self-destruction (activate in advanced.cfg: noSelfDestruct)
  • NEW: Option to stop drag-dropping inventory item to non-slot location in parts list from applying autoequip assist (advanced.cfg: disableDragDropAutoEquip)
  • NEW: Option to replace per-move HUD net energy display with turnwise value including movement (advanced.cfg: hudEnergyPerMoveTurnwise)
  • NEW: Option to replace per-move HUD net heat display with turnwise value including movement (advanced.cfg: hudHeatPerMoveTurnwise)
  • NEW: Option to show real-time clock on HUD (advanced.cfg: showClock)
  • NEW: Option to show real-time run timer on HUD (advanced.cfg: showRunTimer)
  • NEW: Option to show per-weapon accuracy chances in parts list only while cursor over a robot (advanced.cfg: disablePersistentAccuracyInfo)
  • NEW: Option to have Scan window only show object info while cursor/examine marker is over an object (advanced.cfg: disablePersistentScanInfo)
  • NEW: Option to silence all sfx played for non-plot-related global alerts with on-map indicators, such as assaults (advanced.cfg: muteGlobalAlertSfx)
  • NEW: Part swap menu lists any currently disabled parts in orange, and known faulty prototypes in red
  • NEW: Part swap menu includes a removal option (button or 'z') as long as source is not an empty slot
  • NEW: Robots hacked with streamctrl_low/streamctrl_high now display a ring around themselves, inside which control can be maintained
  • NEW: no_distress robot hack also blocks calls for local garrison reinforcements
  • NEW: Item gallery export data marks non-repairable items
  • NEW: Three new advanced options for on-map indicators for Cogmind part loss (see cogmindPartLossMapIndicator in manual)
  • NEW: Right-click on machine hacks (or Shift-a~z) for context help describing the function of each (total = 95)
  • NEW: RMB over machine Hacking or Results window closes the hacking interface
  • NEW: Recycling Units automatically process parts once their contents exceed a certain threshold
  • NEW: Even when outside FOV, machines processing fabrication and repairs display their on-map countdown timer, and report completion to the message log
  • NEW: Having RIF installed removes one of the requirements for one of the special endings, and also affects the animation for that ending
  • NEW: RIF enables 100% chance to seal any Garrison Access
  • NEW: Closing an active robot hacking UI using any method other than the close button requires confirmation to avoid accidentally forfeiting the hack
  • NEW: Advanced option to automatically activate all non-launcher projectile weapons on detaching an active launcher (advanced.cfg: autoUnreadyLauncher)
  • NEW: Added a helpful alert message during a Warlord-related plot event
  • NEW: Scan window shows solid terrain armor value if cursor or examine marker stationary for 500ms
  • NEW: Scan window shows machine/prop armor value under name if sufficient space
  • NEW: Recalibrator info explicitly states inability to repair alien technology, and prototypes above rating 8
  • NEW: All Alpha supporter names registered since Beta 7 added to in-game list (see Credits menu)
  • NEW: All Alpha item-attribution names registered since Beta 7 added to the item collection gallery
  • MOD: Advanced option showMapBorders now activated by default for new players
  • MOD: Core reset also clears any known manual hacking codes
  • MOD: Maintenance intel markers changed from green to dark gray
  • MOD: Reduced delay on all stasis weapons
  • MOD: Instead of automatically opening adjacent Garrison Access doors, RIF gives 100% to open via Unlock Access command
  • MOD: Recycling Unit matter cap and other parameters differ by security level
  • MOD: First central database lockout check ignored, guaranteeing at least one successful indirect database hack (more guarantees on easier difficulties)
  • MOD: Z-hack mapwide cutoff threshold higher on easier difficulties
  • MOD: Treads minimum ability to escape stasis increased 50%, legs increased 25%
  • MOD: All armored treads slowed by 10
  • MOD: All tread coverage increased by 40, and base tread overweight penalty dropped from 30 to 20
  • MOD: Investigators don't start accompanying some high security assaults until -3/Research
  • MOD: Transport Network Coupler only works in 0b10-controlled maps, and ignores any inactive Haulers
  • MOD: DISPOSABLE part label includes number of uses remaining, which may be greater than 1 for some weapons
  • MOD: Can no longer swap positions with immobile allies, will push past them instead
  • MOD: Immobile allies no longer follow to another map, or into chutes, nor warn about leaving them behind
  • MOD: "The Most Popular Achievement" renamed to "First Step to Greatness"
  • MOD: "Explosive Specialist" achievement renamed "Launcher Specialist"
  • MOD: "Hehehe" achievement description explicitly indicates Datajack requirement
  • MOD: "Wheee!" achievement description more specific
  • MOD: "Curiosity Killed The Cat" achievement description less specific
  • MOD: "Brute Force" achievement awarded even for the one Force() hack that has a second test which might fail
  • MOD: Plasma Storm info displayed using same format as Potential Cannons
  • MOD: Warp Cannon eventually breaks down
  • MOD: Datajacks always disarm Alarm and Ambush Traps rather than have a chance to also reprogram them
  • MOD: Item info window no longer repeats part name across the bottom unless there is a prefix to expand, also now appears in parenthesis
  • MOD: Succeeding at hacking machine targets with an exact 0% chance no longer possible
  • MOD: Manually entered schematic hack targets simply indicate "unknown schematic" if N/A, rather than distinguishing between two possibilities
  • MOD: Attempted attachment of a Faulty part warns about that before most other potential issues
  • MOD: Phase Shifter part list info ('q') mode ability abbreviation changed from CLOK to SHFT
  • MOD: Intercept squad composition and behavior changed
  • MOD: Garrison Access Trojans have no effect on Prototype bots
  • MOD: Momentum damage modifier displayed in status window now rounded rather than truncated
  • MOD: Zion generation parameters slightly more constrained to improve layout consistency
  • MOD: Advanced renderFilter values for SHIFT_HUE now automatically wrap negative values to be within range
  • MOD: Manual updated to reclassify Cogmind core movement type
  • MOD: Manual clearer on conditions for increased detection chance when accessing an interactive machine multiple times (must have been previously hacked)
  • MOD: Thermal Generator effect now reflected in HUD net energy readout (though may not be completely reliable)
  • MOD: Traps manipulated via Terminals now count towards various trap-related score sheet stats
  • MOD: Options menu "Log Calc. Detail" renamed "Combat Log Detail" (existing player setting reset!)
  • MOD: Line-of-fire and explosion AOE visualization not shown on map while any info windows open
  • MOD: Autosaves no longer take place while machine hacking or evolution UI open
  • MOD: Autosave system restores game to turn prior to exiting a map if restoring a run that was force quit during evolution UI
  • MOD: Robot info page Integrity and Temp stats prefixed by "Core" instead of "Est."
  • MOD: Mass support range is inclusive before overweight penalties beyond the first penalty
  • MOD: Bonus points for fast wins reduced overall; curve is steeper and only awarded below 6000 turns
  • MOD: Keyboard examine mode no longer replaces weapon info ('q') mode with per-weapon accuracy readouts (only occurs in firing mode)
  • MOD: Updated context help for broadcast_data/disrupt_area robot hacks to indicate their effect stacks when installed on multiple bots
  • MOD: Removed Datajack Penetration from score sheet
  • MOD: RIF Influence readout in HUD moved below Location
  • MOD: Relay Coupler [NC] rating upped to 4
  • FIX: Derelict logs providing exit/entrance intel might end up identifying the wrong access points [Valguris]
  • FIX: Pre-learned intel for machines would not show log message on entering an applicable floor if no locations currently within map view [Valguris]
  • FIX: Beta 7 broke score sheet hit/miss streak tallies [Valguris]
  • FIX: Part list info ('q') mode did not update melee weapon damage display in real time while toggling propulsion when momentum positive [Valguris]
  • FIX: Fusion Compressors and Desublimators not factored into HUD net energy readouts [Joshua]
  • FIX: Random traps could spawn in special encounter rooms [Joshua]
  • FIX: Recycling Unit hacking interface crashed if attempt to list contents while more than 50 parts [Joshua]
  • FIX: Robots could still leave scan signal markers within FOV under rare circumstances [MTF]
  • FIX: Achievement threshold achievements not earned until completion of subsequent run if threshold was reached via a subset of run-end achievements [MTF]
  • FIX: "Guerilla Style" achievement could be earned via certain unintended means [Raine]
  • FIX: Watcher map_route hack did not ID exits under easiest difficulty mode [Raine]
  • FIX: Rare condition could allow armed hostile patrol to spawn within view at Materials depths on entering map [UlyssesB]
  • FIX: Crash while using an applicable Data Core and sabotaging an explosive machine which destroys the active Terminal [UlyssesB]
  • FIX: Opening part info via keyboard before hacking list appears while connecting to interactive machine superimposed item info over targets [Mojo]
  • FIX: Layout(Zone) Terminal hack did not ID exits under easiest difficulty mode [Mojo]
  • FIX: World seeds could randomly diverge for individual maps if a schematic or similar player-held data were also present on the map [kiedra]
  • FIX: Disabled/rebooting/shut down 0b10 bots might summon reinforcements from a nearby Garrison Access [PlasticHeart, kiedra]
  • FIX: Some renderFilter values for SATURATION advanced customization option could decrement by 1 when saved on exit [Bravo]
  • FIX: NPC dialogue referred to traps triggered on 0b10 robots raising alert, which was no longer the case since adding Trap Extractors [KernelPanic]
  • FIX: Melee attacks against aware targets still considered sneak attacks if true base hit chance is 120% [GJ]
  • FIX: Some types of map labels could appear below the HUD on certain resolutions [JackNine]
  • FIX: Certain renderFilter combinations could cause map to blink while accessing machine hacking UI [yoggo]
  • FIX: Performing a certain action within a few-turn window during a special event would result in an unintended line of dialogue (spoiler) [Decinym]
  • FIX: Allied robot info inventory list did not distinguish between faulty and non-faulty version of same prototype if contains both [Pimski]
  • FIX: Possible crash on exiting game while temporary popup info still visible on map [XenoFiery]
  • FIX: Potential crash if Borebot destroys itself while clearing an explosive machine [Tone]
  • FIX: Ramming a hostile bot off an exit with allies in tow but outside transfer range took the exit without warning about leaving them behind [whitenitro0]
  • FIX: Potential oddity during a particular extended game event interaction (spoiler) [lsend]
  • FIX: Original Wizard analysis text inconsistent with new robot hacking-related lore [Heavyrisk]
  • FIX: Simply targeting bots would aggro them even if outside range or the line of fire and sight are obstructed [Terminus]
  • FIX: Colemak keyboard configuration included an incorrect key assignment [ericmoyer]
  • FIX: Typos [Raine, Snelheid]
  • FIX: Auto-replacement skipped the usual warning when attempting to swap in a Faulty part directly from the ground
  • FIX: Ctrl-RMB and examine mode ('x') would not show info for open doors
  • FIX: Updated weapon cycling system introduced for Beta 7.1 incompatible with advanced autoReadyLauncher setting
  • FIX: Knockback resulting in triggering traps was excluded from some score sheet stats
  • FIX: Part swap menu failed to include manual item tag for unidentified items
  • FIX: A certain (spoiler) launcher's explosion radius visualization showed incorrectly when targeting positions near edge of map view
  • FIX: Imp. Core Analyzer art contained an extra character revealed only by animation
  • FIX: AI ignored additional time cost of attempting to escape various forms of stasis (Stasis Beams etc. now somewhat more effective)
  • FIX: An item on a newly-unlocked Garrison Access door or newly-created shortcut exit would be inaccessible (now pushed away)
  • FIX: wipe_record hack did not prevent ARCs from deploying
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1231 on: February 18, 2019, 05:34:59 PM »

Level Design and Shaping a Cogmind Experience
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

For years I've been taking a pretty standardized approach to designing each new map in Cogmind, and although we have dozens of them now, it's one of the few topics I've never covered on the blog. This is essentially because a serious in-depth look at the entire process would require spoiling a lot of content, considering that all the most interesting maps have been located beyond the early game.

But with the recent release of Beta 8, which adds a very interesting map right to the early game, we now have a good opportunity to discuss map design without worrying too much about spoilers, since for the most part it's easily accessible content anyway.

This article will walk through every stage of the design and implementation process, from start to finish. I took a lot of notes about the process itself as I was building Beta 8, specifically so I could share them here and to ensure that what I write is an accurate representation of what actually went down.

Note that unlike the majority of maps in Cogmind, due to its nature this particular map has a mostly static layout and content rather than drawing heavily on procedural methods. As such the process is missing a few steps, but I'll cover those separately in an addendum. A mostly static map, on the other hand, provides some unique discussion opportunities of its own.


Conception
Before even starting, each map idea needs one or more concepts to build around, and in this case we have several goals:
  • add more potential variety, especially to the early game
  • provide more early plot hooks
  • help new players
For a very long time my notes for potential Cogmind features contained the concept of "derelict labs," a way to access strange and fun technology, so when I started feeling we'd need a new area of the game to achieve all those goals, this concept seemed particularly fitting.

Once I'd decided this was likely to happen (several months before actually doing it), I began intermittently revisiting that section of my notes to expand it with new ideas and considerations. On each new visit to add more ideas, I'd intentionally avoid rereading previous notes on that topic, instead just appending any new thoughts at the bottom. This keeps me in the unique frame of mind I'm in at the time, allowing me to come up with potentially very different ideas, or even perhaps the exact same ideas again without realizing it :P (this because usually days or even weeks have passed and I've forgotten the details of my earlier ideas). Note that coincidentally repeating notes on the same ideas can actually be valuable, because it validates them, perhaps with different reasoning, or even fleshes them out in different directions I hadn't thought of in previous note-taking sessions!

This process resulted in a total of about 2,600 words of rough notes on the topic, which like all of my notes are organized as nested lists in a TXT file.


The entirety of rough notes on the new map, as seen in my editor.

Normally I just delete rough notes once their contents have been implemented or converted to more permanent notes elsewhere, but this time I saved them to share with you. Download/read the original notes here (you'll need line wrapping off to view them properly!). Since the notes are a top-to-bottom process, you can see how they kept getting longer and longer with each extension as I apparently went back and forth on various points. There's even "final summary" followed by the typical "final final notes" followed by "no wait, final final reverses that" xD

In short, a new mini-faction of "Exiles" from another community has their own lab, offering the player both a new sensor ability (dubbed "FarCom") and access to prototype gear from among a pool of possible items. Story-wise, they become the player's earliest significant exposure to the world's lore. As such, it's good that I've circled back around to add this map after the rest of the world is already completed, so they can hook into it properly based on my knowledge of how everything can play out both in terms of story and gameplay. The alternative, trying to build this map from the start, would've likely meant repeatedly updating or changing its contents as the rest of the world was built. (Cogmind's world was almost entirely built from beginning to end, rather than skipping around.) I'm not a fan of ripping out or making significant changes to old content, preferring to get it right the first time.

So back in late October when it came time to add the Exiles, the first task was to reorganize those rough notes. This normally means reading back over them to remove the stupid ideas, refine rough ideas, and generally consolidate the notes while expanding on any unclear points, making sure it all fits together in support of my vision for the map.

I didn't spend very long in this phase, though, because there were simply too many notes this time around, and more importantly they were just going to be converted to a new form shortly afterward anyway. After just deleting some unnecessary chunks and making a few modifications, I quickly started on the proper map design doc.


Map Design Doc
The last planning stage before actually working on a map is to finalize all its relevant notes into a basic format I've been using since the beginning of Cogmind Alpha.

Each map generally has its own text file describing its design. I call these text files "supplements," since the idea originated when I started using these external files to supplement Cogmind's original design doc, a massive file which started to get a little unwieldy by the time the first public Alpha was released after two years (plus I didn't like the format/program that was used to create the original doc and wanted to start moving away from that, and by then the entire primary design doc had been implemented anyway).


Supplements for various maps added over the years. "EXI" is the code for Exiles--note its size relative to the others. It happens to be one of the more complex maps, with a lot of possible content and various scenarios.

Map design docs break down their contents into a number of common sections, including at the very least the following:
  • goal: Main purpose(s) behind adding the map to begin with
  • layout: An overview of environmental factors including the terrain and any props the player will see
  • inhabitants: Descriptions of all the entities (in Cogmind's case, essentially robots) found on that map
  • gameplay: Primary interactive elements of the map, including any cause and effect related to dynamic content
These are the main four, but some maps have one or two additional note categories applicable to that map in particular. For example the Exiles design doc adds a "location" section, because unlike most maps there are a number of important comments to make regarding how to access this map in the first place, and its general position in the world. There's also a large "part concepts" section for collecting ideas for their stash of prototypes.

You can read the entirety of the Exiles map design doc here (again, turn off line wrapping). If you checked out the rough notes earlier, you can see how they evolved into the proper design doc, which weighs in at three times the size (about 7,500 words). Some of the minor details in this doc may not be the same in the final implementation since I sometimes make last-minute changes that aren't necessarily reflected back in the notes, but it's mostly accurate.


High-level Design
It's extremely important to expand the initial map design process to include considerations beyond the map itself. How that map fits into the bigger picture with regard to overall player strategy should be determined in advance, since it can have a broad impact on a map's content, and if not careful a poorly planned map could end up needing more significant changes later on if players find that it's either not very interesting or useful to them in the long run.*

(*There is currently one optional map in Cogmind which unfortunately fits this description: Recycling. It's a relatively simple, small map with some unique mechanics of its own, but its advantages aren't really as enticing for players as I had first envisioned them when it was created early in Cogmind Alpha. Back then I was just getting started adding optional maps, and have learned a lot since then, including by way of the player community as it's matured. I have plans to improve it one day, but it's not a pre-1.0 priority since it's rather out of the way anyway.)

I wouldn't want to waste player time, or my own, so the Exiles map in particular has a number of long-term strategic implications, and properly building them into the experience as a whole involved addressing different kinds of player needs, goals, and... um, craftiness ;)

Like pretty much all of the many optional branch maps in Cogmind's world, the Exiles offer tradeoffs, making certain areas easier while increasing the challenge level in others.


Primary long-term strategic decisions related to the Exiles. Note that some "drawbacks" may even be seen as good (or at least neutral) by certain players, so there are alternative interpretations to this graph as far as coloring goes. (I've chosen the most common view.)

There are other random Exiles scenarios which can affect the available options, but I'm covering just the most common one here. Also, graphed above are only the major strategic considerations--individual prototypes can change a player's potential route or even suggest builds depending on what they are, because they're selected randomly from a pool of possibilities. Overall this one map has really opened up a lot of new options! I'll talk about these options in more detail later.

As designed, the standard Exiles benefits (one free prototype + FarCom) are especially noticeable in the short-term, at the expense of long-term drawbacks, making them a great choice for new or inexperienced players. That's not to say they can't be useful for experienced players as well--already one player won an extended run despite using FarCom, which essentially makes late-game Research branches off limits, even though that's where one normally accesses a lot of the most effective tools for tackling extended game challenges.

Having tradeoffs makes visiting the Exiles much more interesting, and they're essential, too, because without tradeoffs it would be easy for a player to become overpowered, and a no-brainer to route a run through this map. Naturally not every map needs such explicit drawbacks, since in a lot of cases the drawback is the inherent cost of reaching and/or fighting whatever is in the given map, but here I should emphasized that the inhabitants of this particular map are all friendly, and reaching it is quite easy, so stronger measures were required.

Okay, planning is over, time to start doing.

(continued in following post...)
« Last Edit: June 13, 2019, 03:04:38 AM by Kyzrati » Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1232 on: February 18, 2019, 05:35:24 PM »

(...continued from previous post)

Building Blocks
As we already have our high-level analysis and relatively complete plans to guide construction of the new map, the first stage is to put together its entities and items, basically any individual objects that can be created in isolation. This would be the "pieces before the puzzle" approach, breaking down a large project into its smallest parts and working on each of the latter first.

But I'm not even adding them to the new map at this point--it doesn't even exist yet.

Since there's a lot of work to do for such a giant chunk of content, trying to add each new element to the map as it's finished would often involve thinking at multiple levels (local area, map-wide, game-wide...), which is a lot less efficient than focusing on as few aspects as possible without constantly bouncing around. Working efficiently is not only faster, but also gives better results.

So the plan here is to get all the pieces in order, then put them together all at once.

Personally I like to start with the pieces that require the most time to implement, which for me includes most importantly anything that I think would be fun and interesting but is ultimately "optional" when it comes down to it, such as certain rare special events, items, etc.

Stuff like Beta 8's time travel-enabling "Chronowheel" item took forever, one of those things where I'd say "okay I'm going to tackle this one today," then at the end of the day it's "okay, I'll just have to finish this tomorrow...," and then a couple days later I'm like "uh, really gotta finish this thing up today!" (and maybe still don't xD)

But this is the type of content that really makes the project feel more like what it really is, a world built out of passion rather than just a "good enough game to sell and keep the lights on." If I leave this tough optional stuff until later in the release cycle, it's more and more likely to get dropped as I see the deadline approaching and there's still so many other necessary tasks left to do, not to mention the fatigue of what it took to get near the end of the release cycle in the first place.

In the end I'm always glad I've done these parts of the content, but I have to essentially force it through proper planning to make sure it actually happens :P


Items
Items are the smallest building blocks of a map, so we start there.

The notes and design doc originally listed them in completely random order, but again in the interest of efficiency I somewhat reorganized the list to keep certain categories together. For example all projectile weapons should be worked on in succession, since they would all involve similar parts of the data and code. This makes working down the list flow more naturally, without having to jump between too many different areas throughout the source/data, mentally loading extra scopes.

Before starting on any code or data at all, however, I worked with a completely different scope: art. All the art for the new items (more than 30 of them) was done together over a several day period, since again it makes sense to tackle like tasks in bulk. It can be harder to bear when a process like this stretches on for weeks or more, but as a solo dev who can only do one thing at a time, despite game development being a huge long-term undertaking, the efficiency gains are pretty vital.


Art for some EX-tech prototypes found in Beta 8. Each of the new primary NPCs I'd planned for the new map have "signed" their prototypes with their name.

Immediately after the art came the lore. Each of the new items has some lore text associated with it, and seeing how that would in some cases help define or refine the item capabilities themselves, I wanted to make sure they were all accurate and consistent. So all of those entries were written at once, also important here since because they're generally meant for the player to discover/read them in a particular order.

And finally it was time to create the dozens of items themselves--adding the data, balancing their stats, etc., which altogether took a couple weeks. Some items can be added in as little as 30 minutes or so, while others like the Chronowheel mentioned earlier could take several days.

The "Latent Energy Streamer" weapon adds a whole new resource in the form of "latent energy" which could potentially be more widely used later, but for now the entire thing was added specifically for just that one weapon, despite taking several days to complete xD

Latent energy is found throughout the environment, more often concentrated around stationary props like machines and doors.


Activating the LES, which also reveals latent energy nearby.

The LES draws on that energy and focuses it for devastating amounts of electromagnetic damage over an area, but also has side effects such as destabilizing nearby explosive machines, breaking automatic doors, and even corrupting the user. In fact, a number of the Exiles prototypes have negative side effects, which is what makes it possible to give the player such powerful parts early on in the game.


Firing the LES. The firing animation took a while to perfect, too, being different from normal weapons in that it more closely ties into the surrounding environment, tracing lines through the latent energy that it's actually using to fire.

The LES itself also has a unique tag which displays the amount of nearby accessible energy in number terms, as well as shows the actual range of damage it can convert that energy to, values which change as the local energy naturally ebbs and flows, or is used up and slowly rebuilds.

I'm really glad the LES is in game (and can't wait to get a chance to use it myself during a regular run :D), though if I'd waited until late in the dev cycle to add it I'm not sure it would be a thing.


NPCs
After items comes another basic building block: NPCs. Some of these bots make use of the new items so they couldn't come first, but once the items are ready we've got everything we need to put bots together, and an entity (robot) is a pretty self-contained little unit of development that doesn't rely on the map itself (but will become a part of it), so they're a good candidate for getting out of the way early. They take a while to build and balance, but focusing on them individually now means it will be easy to drop them all in on short notice when and where we need them later.

The Exiles map includes four new core NPCs, each of which has a line of data defining their properties. It's a fairly long line!


As a demonstration, here's the data for one of the new NPCs, 8R-AWN. (I've wrapped the line a couple times here so as not to force quite that much horizontal scrolling :P)

When their data is complete, I run them through a separate program that can analyze robot designs and tell whether they'll be overweight, have resource problems, overheat in combat, or any number of other issues. Their stats can be adjusted as necessary before moving on to the actual map :P

Actually no... At this point I also decided that before the map itself I'd implement the FarCom sensor ability they can give you. This, too, could be worked on as an isolated system since I could test it explicitly rather than immediately developing the proper method of obtaining it in game. It could be hooked in as a piece of the puzzle later.


FarCom in action, showing a faint circle within which hostile 0b10 combat bots are detected. (The circle has a slow pulse to it, but the gif doesn't capture that well.)

From an overall design perspective, there are enough types of differences between FarCom and normal attachable Sensors that there is no clearly superior form of detection in all scenarios. Each has their own benefits and drawbacks.


A comparison of standard Sensors vs. FarCom. Green cells are a positive, red are negative.

That said, FarCom is definitely a clear boon for new players, who get a free way to locate threats from afar without relying on any items for that knowledge. New players don't have an easy time finding (and knowing to use!) Sensors, and parts can be destroyed, while FarCom cannot.

The unquestionably most significant benefit from FarCom, one that's quite attractive even to non-beginners, is that it doesn't occupy any part slots at all. This is especially true in the early game where two slots is a larger relative portion of Cogmind's available slots. Sensor users can try to get away with one slot (just the array without an interpreter), but getting the same level of detail that FarCom offers requires two slots devoted to sensor data.

Freeing up a slot or two means extra armor, more storage, better targeting, and/or any number of other utility options, and this is a benefit that extends throughout much of the run, wherever FarCom is active. Of course, using FarCom is still not something everyone will always want to do, as per the earlier chart showing the serious late-game drawbacks.

Overall I'm pretty happy with how it's turned out.


Layout and Integration
Time to build a map! Sort of :)

I always start on blank sheets of loose paper since I find it the most natural, fast, and free-form.


Exiles map general layout, content, and world connection planning.

Most of that page is actually occupied by graphs considering how to connect this new map to the rest of the world. The route the player has to take to reach a map, and return to other areas, are important factors in setting the related rewards and challenge level.

The Exiles are accessible from either -10 (essentially the lowest/earliest depth!) or -9, by the way of the Mines at that depth. They will only appear at one depth, though, and as the entrance is somewhat tucked away inside the Mines, I added a special indicator that lets observant players know when they're at the same depth as the Exiles. I didn't want players potentially wasting their time scouring an entire Mines depth for an entrance that might not even be there, so I drew on so-called "level feelings," a mechanic found in a number of classic roguelikes such as NetHack, ADOM, and Angband whereby on entering a new map you get a log message reflecting a special aspect of that map.


Cogmind's first application of "level feeling," added to save players time when searching for the Exiles.

Players can also read lore in the Exiles Terminals which explains the scanning.

As for the return trip after visiting the Exiles, I had thought to maybe send the player back to the main path through the Lower Caves, but that was when I was initially trying to restrict the design to existing options. Instead I ended up deciding to add a new Mines depth at -8, one that can only be reached while returning from the Exiles. This is both better gameplay (Mines are the smallest and easiest maps, suitable for weaker players) and more logical (the Exiles shouldn't feel quite that close to the Complex, hence no immediate return to it from their map).


In-game world map showing a player route having visited the Exiles and come back to -8/Materials through -8/Mines. That Mines depth is not normally directly accessible in the reverse direction, from -8/Materials, to avoid adding unnecessary exits in that map.

The little nondescript blob at the top right of the note paper is actually quite important, determining the general locations of entrances/exits for the map itself, which in turn can affect the whole map design (terrain layout, content positioning, event timings...). These most vital points determine the flow of the experience. The player enters from the lower-right, and almost immediately there's a junction leading to an exit out (mainly necessary to provide an avenue for other robots to enter the map from this side--more on that later), then the main content area would be in the middle, and further to the left is a second "back exit" from the map.

Lastly, on the left* of the notes is a list of ideas for things I'd need to add to the actual map layout, which I'd sketch out next...

*I'm left-handed and tend to orient my paper horizontally and fill pages of notes from right to left :P

Confident in the connections, it was time to sketch the map layout in more detail!


First pass on a reference sketch for Exiles map layout.

As a static map with important NPC interactions, the layout really had to take into consideration the flow of a new player coming in and experiencing it for the first time--who will they see first and what will they say so that the order of everything makes sense?

So after doing the quick tentative sketch above (based on the earlier general list), I had to take a break from this and jump ahead a bit to work on content for a day, specifically dialogue. True, the NPCs haven't been placed yet, nor is there even a map to place them in, but by writing out the dialogue in advance I could make sure no single NPC was saying too much or otherwise needed to offload some lines onto another, which might affect the layout. (It did.)

After the dialogue detour, I did another pass on the map sketch, creating this second more specific iteration to match it:


Second pass on a reference sketch for Exiles map layout.

The player enters from the bottom right, sees another corridor leading to an exit but no hostiles in view so it's safe to continue exploring. Also there are some "rigged" power sources in the tunnel forward, a mechanic only made available via Exiles tech and therefore will be new to the player--anyone curious will want to check them and out and continue exploring, first meeting 8R-AWN in the corridor there for a friendly welcome/intro chat. Then they'll move into the central area and spot the second main NPC, EX-HEX, who introduces a bit more of the lore and invites the player to seek out EX-BIN to help with a project. From there they can go anywhere, either learning more about the place from prototype tester NPCs in the south area, or head north to get the main benefits of the map, FarCom and the prototype(s). Either direction is fine for a first experience. Then they can leave by heading back to the east side, but are more likely to take the rear exit.

At this point I went ahead and put together all the extra terminal lore and minor NPC dialogue as well, since there might be something in there which could affect the map layout as well (there wasn't, but anyway having just finished the dialogue it was good to keep up the pace while still in "writing mode"--efficiency!).

Then comes time to break out my next tool: REXPaint. I turn the reference sketch into a general layout in REXPaint, measuring out cell distances to make sure everything will fit just right--not too squished and not too open, and that the average player FOV from a given position will reveal the right amount of content.


Exiles map taking shape in REXPaint. For now it's just a single layer containing the general layout, entrance, and exits, still no objects or other details yet. It's also lacking some layout details that might emerge/become necessary as objects are added.

And with that file saved it's ready to drop into the game!

(This map happens to have a fully static layout, so it skips some steps here that many other maps might require. I'll cover those in an addendum.)

(continued in following post...)
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1233 on: February 18, 2019, 05:35:41 PM »

(...continued from previous post)

Content
It's now time to build the actual experience, starting... outside the map :P

As a beginner-friendly map which is still kind of out of the way, I wanted there to be some ways to help funnel new players in that direction. So before working on the map itself, I again wanted to develop along the flow of the experience by beginning with how players are most likely to find it the first time. 8R-AWN, the brawn to the Exiles' brains and the first NPC players meet on entering their lab/cave, is sometimes out running errands for them, and the player might meet him while on one of these errands.

In one of the first Materials floors, whichever matches the Exiles depth, 8R-AWN can be found making his way across the floor towards an exit the Mines. The chance he'll be around is higher for new players who've never met the Exiles before (unless they're using a seed, since seeded content should be consistent, irrelevant of player history). On spotting the player, 8R-AWN invites them to follow, and proceeds to trash hostiles all along the route to the exit. (Or if the player is on the far side of the map, they may simply find a trail of destruction left in his wake from earlier, and 8R-AWN is long gone.) He'll take the exit himself, and if he spoke with the player earlier will be waiting there when the player arrives before some more dialogue and continuing to lead on to the Exiles' hidden entrance.

Another possible encounter with 8R-AWN occurs during the Mines infestation. Assembled suddenly swarming into the area is a pretty deadly encounter for the unprepared, so it's nice that 8R-AWN might show up to save the day, using special tech to shut them all down remotely. In this case if he spots the player he'll also lead them back to the hidden entrance.

This hidden entrance actually took a few attempts to design, since there needs to be a wall that opens up automatically for a friendly player, but I didn't want the player to see a wall from a distance, conclude that it was a dead end, and never bother approaching, so the trigger was placed such that the walls would open immediately as they came into view.


Exiles entrance layout design in Mines. To the player it will appear as if the corridor continues forward until they round the corner, at which point the hidden doors open automatically to reveal the exit as long as the player is friendly.

This entrance is placed as a guaranteed prefab using the pre-mapgen method described here.


Exiles
That same post describes the data/scripting methods used to define the contents of Exiles, which as a static map is simply one giant prefab :)

At this point we can start dropping in all the objects that were created earlier--items, NPCs, dialogue, lore, etc. So it's a relatively quick process since the objects are all ready, which is better than having to repeatedly stop what I'm doing to implement them. Instead I can focus on how everything is fitting together at the macro level, rather than worrying about low-level details.

Once again we're following the flow of the experience into the map from the right side, only this time using additional layers of the REXPaint to draw machines (gray lines) and mark entity and item positions (green letters and green numbers, respectively). Machines and other props, including invisible triggers, are identified using uppercase green letters.


Final Exiles prefab in REXPaint with all data layers visible.

The corresponding data goes into a text file, the features of which I've provided a breakdown before in "Map Prefabs, in Depth."


Complete Exiles prefab data in image form, since it's easier to read with syntax highlighting enabled. (Some of the lines are really long but not worth extending the image for, so they're just cut off.) The file is also available in text form.

As I'm going through adding the objects, I make a list of all the related explicit tests that will be necessary to confirm the content is working as intended. I'm also constantly thinking of all the things that could go wrong and need to be looked into once everything is in motion. This list will be quite important later, and is better put together while each element is on my mind rather than trying to remember these points later, or coming up with tests from scratch. Despite my best efforts at the initial implementation, usually a number of things don't work as intended, and it's certainly better to work through it all systematically rather than wait for a stream of bug reports from players :P

This is a fairly large map so I didn't wait until everything was placed before testing, instead stopping a few times to test in batches, generally clearing out the list in the process.


Bling
With most of the main content done, I moved on to more superficial elements of the kind that can be tacked on.

The FarCom mechanics were already implement much earlier, but it was still missing the animation played when you first receive the ability from the Exiles. There are a number of full-screen animations throughout Cogmind which occur when major abilities are conferred, so FarCom shouldn't be an exception.


EX-BIN using the FarCom Aligner to add you to their system.

One element I also always leave for the end of the content phase is audio. Working with sound effects involves concentrating on tasks other than code, including managing a bunch of audio files and messing with them in Audacity. It's more efficient to do all of them together, so whenever I come across something that needs audio I just leave a placeholder and add it to a list, one that gets taken care of after the rest of the content.


Ambient audio visualization of the area around the FarCom Aligner, where brightness indicates volume. For those who want to read more on this, I've written about ambient sound before.

There were other non-ambient sounds to handle as well.


Variants
I keep saying the Exiles map is "static," but that doesn't mean it can't have a little variety!

There's the usual variety created via the prefab data shared above: Common items in store rooms are randomized, as are the prototypes (where there is quite a large amount of variety since the items can change up gameplay significantly, but appear in different combinations each run).

There's also some variety created via the fact that you may or may not meet 8R-AWN before reaching the Exiles, in different situations, so that makes for unique dialogue options.

But the most significant variety comes from players not always finding the map in its default state at all. There are actually four different scenarios, the above text describing only the first. As part of the world generation, a random state for the map is chosen from among the following:
  • 51%: The default scenario, as described. This state is also always forced under a number of other world conditions outside the map, so the effective percentage is somewhat higher.
  • 12%: Deserted. The Exiles have already wiped their terminals and abandoned their lab.
  • 12%: Destroyed. Complex 0b10 has already attacked the Exiles, leaving the place scarred from battle. There are no survivors to be found, but the area contains other useful remains.
  • 25%: This is equivalent to the default scenario, except forces from 0b10 will attack while the player is there.
I built the base map first, then implemented the 0b10 attack (essentially an event tacked on), then moved on to the other two variants last since they were less complicated. More complicated map variants should come first in case they require changing parts of the map concept itself to work right, whereas doing complicated variants later could mean having to waste time changing a bunch of earlier work! It's hard to predict all the changes that might be necessary in advance, so prioritizing like this is important.

The deserted and destroyed variants were easy to manage since they were basically just modified data and REXPaint maps.


"Destroyed" Exiles prefab in REXPaint with all data layers visible. A comparison to the earlier default scenario reveals newly destroyed machinery, randomized (and randomly shifted) debris, exploded areas, and other different procedural content like possible salvageable robots.

The attack scenario was the most time-consuming variant, since I had to watch the same battle again and again to see all the possible outcomes and whether they met expectations. I spent a couple hours just watching attacks, repeatedly tweaking various parameters to get the desired results.


The Exiles are attacked by 0b10, with the map fully revealed for observation/debugging purposes. 8R-AWN covers the retreat, and EX-DEC drops a sentry turret before taking off.


Special Considerations
Finally almost done! The "normal" way to play is complete at this point, but there's one more important stage: anti-cheese measures :)

Naturally some players will try to gain every possible advantage they can think of, even those requiring outright thievery or murdering allies, so it's necessary to balance those possibilities, too.

Aside: Not all roguelikes need to be balanced like this--some even revel in being totally unbalanced, but for the most part Cogmind is meant to be a tightly balanced experience. Even though some players do still manage to stretch the limits through extreme cunning, which is fine, I want to be careful about allowing specific actions to be so rewarding over others that players always see it as "the proper way" to do something, to the detriment of all other possibilities.

Sure the Exiles are a friendly bunch, but players who see them as a means to an end will likely... try to end them. Handling this was a bit more complex than usual because the Exiles experience isn't limited to a single map--player hostility could begin wherever they see 8R-AWN, thus behaviors could change during future meetings, including on the map itself.

Earlier I charted the strategic decisions a player can make with regard to the Exiles, and the whole reason these are decisions to begin with is that each comes with an associated cost. Players can choose to...

1) Use the default approach, by taking a single prototype from the Exiles vault and using that and FarCom scanning support to just tackle the main areas of the Complex.

This is the easiest option, good for new players. They'll lose the chance to get imprinted in Zion (normally another good crutch for newer players but one that doesn't appear until the mid-game), and they'd have to avoid the late-game Research branches which are very deadly for players with FarCom. Balance-wise, this is because those branches contain alien tech and many of the most powerful items in the game. FarCom makes many other maps easier, at the cost of not having access to these resources.

2) Take one prototype and FarCom, and enter the Research branches anyway.

This is extremely difficult. Entering a Research branch with FarCom triggers "Maximum Security," the strongest response from the Complex so far, which is essentially like an instantly triggered version of "High Security" with even more assaults (basically endless increasingly strong waves of hostiles entering the map). This mode was added to Cogmind specifically as a response to FarCom, but also made sense to trigger in a few other special scenarios, so I applied it to those as well.

You can see in the rough design notes that the original anti-FarCom plan for Research branches was to dispatch Trackers, a new type of fast and deadly prototype bot. Later I decided that Maximum Security was a better solution there (mainly as an even stronger deterrent), but having already done all the preparations for adding Trackers, I decided to at least make them part of a revamped Intercept squad system.

Intercept squads are another form of tradeoff in Cogmind, originally intended to be very challenging, but players had gotten so good at strategizing that they weren't quite challenging enough anymore--now the good players have to think long and hard about whether they really want to risk Intercepts :P

Ideally like the FarCom sensor mechanic and other building blocks, something as fundamental to the overarching design as MaxSec and new Intercepts should've been determined much earlier in the map design process, but I hadn't yet come up with a good solution and needed to let it sit for a while, and couldn't wait any longer to start Exiles work for Beta 8, so it had to be postponed and wasn't even decided until close to this final stage. Some major changes are best left in waiting :)

3) Steal all three prototypes from the Exiles vault and add some challenge to the mid-game caves.

For those who really want more than one prototype, this is possible albeit with a bit of a drawback. For one, FarCom will no longer work since by stealing all the prototypes you didn't follow their instructions, although for some players this may be a positive since entering Research branches then becomes a possibility (as does imprinting, if they want to!).

The prototypes are quite powerful, so there needs to be a clear cost associated with stealing them. For this scenario I added a new drawback: Master Thieves. Although they're not too common, Cogmind already has thieves hiding in caves, so I made a special variant which is even more effective and specifically tracks a thieving player any time they're traveling through caves. If you steal from the derelicts, they steal right back--it's an "eye for an eye" sort of deal :) (Thieves race up and try to rip a part off their target, then run away and eventually disappear forever once out of sight.)

Beta 8 has been out for a little while and the current meta among the better players seems to be preferring this route more often than others. I'm not sure if it'll be necessary, but if this route is always superior there are other tweaks to consider, such as allowing Master Thieves to rip parts out of the player's inventory as well ;). That said, I don't want to make this tradeoff as expensive as the FarCom-Research thing--it should be something that players are willing to face under certain circumstances.

4) Steal all three prototypes but just tackle the main areas of the Complex, avoiding the caves.

While not the easiest option, this is still easier than a non-Exiles run. Stealing all the prototypes means losing FarCom, but using sensors instead and avoiding the caves means staying safe from thieves, and still being able to stealthily raid Research branches for the best parts. Avoiding the caves does means losing access to some potential mid-game benefits, but those are optional and there are helpful non-cave branches to consider anyway.

5) Kill the Exiles, specifically 8R-AWN to salvage his own excellent prototype loadout, and also steal all three prototypes.

This is basically the strongest result for the player (assuming no need/desire for FarCom), though also the most dangerous option since 8R-AWN is pretty powerful and Cogmind is weak at the beginning. Players are already doing this, though, because of course they are :P

I did add the possibility of a Hero of Zion attacking the player as a result of their hostilities, but didn't make it guaranteed since that, too, could be gamed by players for more cheese potential. I'd rather it just happen in some cases as more of a lore-related surprise.

As you can see there are quite a few special considerations when adding a new map! Gotta think of how players will react to each possibility, and whether they'll think certain tradeoffs are worth it. In making these judgements it helps that I play a fair bit of my own, and that I'm also always reading about player experiences.

The next article will be an addendum to this one, covering static vs. procedural maps, steps to procedural level design that weren't covered here, and some notes on where random encounters fit in.
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1234 on: February 22, 2019, 05:28:43 PM »

SITREP Saturday #45: STATUS=WINNING

Beta 7 stats are in :D



You can read all about general stats, wins, run length, RIF use, and robot hacks over on the forums here.

Exiles and Golems

My new stream series has found its title, and we're in the middle of an Exiles Golem run. Unlike many of my past runs, this one's kinda spoilery if you've never been to the Deep Caves :P









A Change of Pace?

I've been strongly considering starting a Patreon to accept subcription support, but I'm very undecided at the moment...

I think having something like that in the long term will be important for future Cogmind development seeing as I do a lot of extra releases without putting them into some kind of DLC, though the original plan was to maybe start that after 1.0. That said, it would take a while to build up a Patreon (or even see whether it's viable), so it might make more sense to start now.

In fact, it could even enable development of more features before 1.0, which might be better in the long run than leaving some of my ideas for later, when they're potentially less likely to happen. I have a lot of fun plans for Cogmind which I'm sure you'll enjoy one day, but I can see it also being advantageous to have all this extra stuff in the game before it reaches 1.0, if only because it'll be better received then, right? :)

In the end, I may be a commercial dev but I don't run my "business" in a commercial fashion, so that'll start to hurt in the long run. (The smart money-oriented approach would've been to release Cogmind as 1.0 by now, and collect content updates into one or more large DLCs, but I want to avoid DLC!)

So I'm thinking about possibly discontinuing the normal SITREPs and instead changing up the format in which I do things, with ideas including:
  • splitting out some some special design and progress topics to put them on the blog instead of hiding them in SITREPs
  • giving patrons advance access to blog posts
  • including extra dev stuff I don't normally talk about, for example even more future plans rather than always talking about features after they're already implemented :P
  • possibly some voting/polls
  • possibly some little rewards
  • free access to older Cogmind builds?
It'd also be less spammy than repeatedly posting public updates to Steam and elsewhere :P

I'm not really a fan of gating content, so maybe it could even just be a completely open/public thing with no gating at all, although I imagine this would mean less potential support. Starting simple could be nice, though.

I mean, it's almost cliche to think about it, but if only a portion of Cogmind owners pitch in just $1~2 each month, it really adds up and great things are possible :D

Anyway, still just thinking about it, wondering what others think...
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #1235 on: February 23, 2019, 04:06:44 AM »

Quote
I've been strongly considering starting a Patreon to accept subcription support, but I'm very undecided at the moment...

I think having something like that in the long term will be important for future Cogmind development seeing as I do a lot of extra releases without putting them into some kind of DLC, though the original plan was to maybe start that after 1.0. That said, it would take a while to build up a Patreon (or even see whether it's viable), so it might make more sense to start now.

I think it's very much justified in this case, because like you said: you don't do paid DLC. And it feels fitting for you somehow.

And you are falling into the trap of never hitting 1.0 before you're satisfied, which is never because you keep adding new content. It's a vicious cycle.
Logged
Kyzrati
Level 10
*****



View Profile WWW
« Reply #1236 on: February 23, 2019, 05:04:25 AM »

And it feels fitting for you somehow.

And you are falling into the trap of never hitting 1.0 before you're satisfied, which is never because you keep adding new content. It's a vicious cycle.
I do agree it feels fitting.

But no traps here! I'd actually be perfectly satisfied with it if I just completed what's currently left on the main roadmap. In fact, part of me wants to do that! (Really, what's there is balanced and fun, it's just missing a couple features basically required for 1.0.) That said, I'm also thinking of what's best for the community in the long run, and also kinda want to try something a little different...

I dunno. It's change, and change is always cause for a bit of anxiety. Despite almost everyone now telling me it seems perfect, do it, I'm still really on the fence about it, going back and forth every minute here...
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1237 on: March 13, 2019, 03:46:15 PM »

I've set up a new Patreon page where players and fans of my work can support my projects :D



If you've never heard of it before, Patreon is basically a subscription service through which you can support individual creators and their work.

A number of developers have relied on ongoing donations (or specifically Patreon) over the years to help support their projects, and I've always thought this kind of model would be more suitable for the way I do things--less focused on the end-game commercial value of something and more about just making cool stuff :D

Even $1/month can really add up, but I guess we'll find out how feasible this is over the long term.

Check out the page for lots more info!

One of the possible perks is partial access to my debugging tools for Cogmind, which a number of players have been clamoring for but I didn't want to widely release. I'm cool with a more limited-scope release like this for some patrons, though :). I'll be writing more about this stuff in the future on the blog.

Speaking of the blog, for all patrons there's also early access to the latest article "Roguelike Level Design Addendum: Procedural Layouts." I've got a bunch of other new topics lined up as well.

Also, specifically with regard to the future of Cogmind, there's a new notice on the forums.

I should emphasize that although Cogmind happens to be what I spend most of my time on, the Patreon is actually not exclusively for that purpose. In a more general sense it's like the cool roguelike stuff fund for Kyzrati :P
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1238 on: March 31, 2019, 03:29:04 PM »

!!! ALERT: SPECIAL MODE DETECTED !!!



It's that time of year again, when all sorts of fake things appear on the internet... But I've become a fan of using this opportunity to make crazy unprecedented things that are true, so Cogmind is going P̶a̶y̶2̶W̶i̶n̶  Pay2Buy! Well, for a day, anyway Wink

Get the latest Cogmind update and fire it up on April 1st, and anyone who's past the tutorial starts and has been playing the regular game will automatically have new runs start in Pay2Buy mode!

The general changelog is below, but you can read more about this event in the full release notes (includes feature demo images).

Cogmind Beta 8.1 "Pay2Buy" (0.10.190401) changelog:
  • NEW: Unique AFD mode for 2019, automatically activates on 4/1 for anyone who has played at least three runs
  • NEW: 1 new unique superweapon
  • NEW: Special NPC encounter under certain circumstances
  • NEW: Additional improvements to reduce turn delay when holding wait key or moving at extremely high speeds
  • NEW: Command line argument "-forceAFD2019" to enable the AFD mode from 2019, regardless of system date
  • NEW: Command line argument "-forceAFD2018" to enable the AFD mode from 2018, regardless of system date
  • NEW: [AFD 2019] Includes a special interface for "purchasing" items with CogCoins, an event-specific mechanic
  • NEW: [AFD 2019] Earn CogCoins by raising the alert level
  • NEW: [AFD 2019] Other event-specific mechanics
  • NEW: [AFD 2019] Score sheets include list of all purchased items at the end
  • NEW: Any AFD mode scores can now be uploaded as well for aggregate stats and potential special leaderboads, but are still excluded from main leaderboards
  • NEW: Added Phase Armor and Phase Redirector mechanics to manual's Attack Resolution section
  • NEW: List of patrons added via Credits menu
  • MOD: Tweaked various Exiles scenario reactions
  • MOD: Master Thief behavior changed to make them more dangerous
  • MOD: New internal turn system, harder to game for free peeking around corners
  • MOD: Dropped items/salvage allowed to fall to other side of map exits (on same map)
  • MOD: Overloaded Fabricator effects no longer count as Cogmind kills, or for alert purposes
  • MOD: Signal Generator only works in 0b10-controlled areas
  • MOD: Firepult damage reduced
  • MOD: Keyboard's Pause key no longer has an effect
  • MOD: Alpha Supporters shortcut command changed from '0' to '9'
  • MOD: Lore no longer has '9' as an optional shortcut (access via Records page)
  • MOD: AFD runs no longer added to scorehistory.txt
  • FIX: An active Stasis Generator brought into a new map has no effect unless toggled off and on again [Joshua]
  • FIX: Ejecting couplers from certain unlocked Garrison Access instead destroys them [Joshua]
  • FIX: "Batter Up" achievement description did not specify melee impact damage only, despite kinetic cannons now being capable of knockback as well [Joshua]
  • FIX: Gallery CSV/HTML exports were missing a header for the new propulsion Drag stat [Mx. Eldritch]
  • FIX: Rare crash on an allied Mechanic seeking a repair target after robot it was following is destroyed [Horse]
  • FIX: In rare layouts a special hidden area of a certain map might be slightly disconnected from the rest of the map [8fpsbossfight]
  • FIX: Possible to crash the UI by switching into the game menu extremely quickly while also switching pages [geedmat, Horse, 8fpsbossfight]
  • FIX: Crash on hitting a controllable ally with a Field Lobotomy Kit [ApolliniaD, alice_fexa]
  • FIX: Manual seeds could be applied incorrectly in some cases, resulting in different seeds producing the same world [Suslik]
  • FIX: Combining any Thermal Generator and Cryofiber Web could show a net negative energy readout in HUD, even though still positive [lsend]
  • FIX: Advanced flashProjectileVictims option could in some locations cause flashes outside of combat as well [Puzzlebark]
  • FIX: Integrity Redistributor could result in the wrong effect if core integrity near 50% of a total value greater than 1000 [mtf]
  • FIX: Crash on accessing the Z-Roster if earlier on same map summoned a hero and in the turn immediately afterward a new hero was added to roster [Rumbl3]
  • FIX: Fixing a separate issue in previous release broke schematic list highlighting while hacking a Fabricator [Malthusis]
  • FIX: Typo [mindcog]
  • FIX: Scrollable lists containing multiple keyboard ASCII colors may not align properly with list items when more than 26 items, after scrolling
  • FIX: Hacking Prototype ID Banks did not immediately update identified inventory items if any happen to be matching unknown prototypes
  • FIX: Multiple Stasis Generators being used at once may not always remain active depending on relative toggle states
Logged

Kyzrati
Level 10
*****



View Profile WWW
« Reply #1239 on: April 19, 2019, 12:21:41 AM »

Roguelike Level Design Addendum: Procedural Layouts
[Cross-posted from the devblog here--follow link for better formatting and light-on-dark style.]

Last time I described the entire design and creation process behind Cogmind's latest new map, though a single map can't quite cover all aspects of the so-called "standardized approach" I've taken to level design in Cogmind. So we're back again today to expand that article with a look at some more potential parts of the process.

Most aspects of map design follow the same routine regardless of whether using a static or procedural base--compiling notes, writing a design doc, thinking high-level gameplay, integrating it with the world, creating and adding content and so on, all detailed in the previous post. But there are a few steps that I apply to level design specific to procedural maps, particularly when establishing their initial layout.

The Exiles being a static map, I could draw out everything in exactly the layout needed to create the desired flow for that experience, but most Cogmind maps are either partially or entirely procedural, requiring that we use other approaches to constrain their generation and exert some amount of broader control over the experience.

The largest main maps in Cogmind are giant 200x200 squares with great freedom in terms of mobility and player options. How do we guarantee a relatively balanced experience in a place like this?


Sample map generation (Factory).

Since advancing to a new map in Cogmind is generally the safest course of action (because it escapes any pursuers, lowers the current alert/danger level, and can both heal you and improve your capabilities), the absolute most important factor for balance is the placement of entrances and exits.

Knowing where these are, and being able to reach them, is of the utmost importance to the player as well, so aside from a possible randomly placed exit that the player may get lucky to quickly happen across, the main exit positions are intentionally placed far away, and built into the very foundation of the map's layout to ensure they're probably not all that easy to access.

So the first step to a procedural map, before even setting the parameters or running mapgen tests, is actually to fire up REXPaint (surprise :P) and do some orientation mockups. To take some of Cogmind's earliest floors ("Materials") as an example, here is a set of possible orientations as planned in REXPaint:


Procgen map layout planning in REXPaint (Materials).

Like the above Factory map sample, this one is built with tunnelers, so placing the initial tunnelers to seed the map also forms its backbone for exploration purposes, basically working "backwards" from all the points of interest until they all collide at various other points. Based on their relative distance and the way they travel, they're not likely to directly connect with one another for a while, producing circuitous routes.

The generator may also decide to randomly instate one or more optional barriers (thick gray lines) to prevent tunnelers and rooms from crossing over that area, increasing the circuitous nature of the local area relative to other exits. (Please excuse the terrible coloring--the image was taken directly from my messy dev files rather than produced/modified specifically for the blog :P)

Light gray thick lines, on the other hand, are designed to always prevent the map from creating paths in that direction, enforcing a more specific shape for the map and its general routes.

As per the legend there (again, not ideal, usually just for me), more specifically yellow shows where each guaranteed entrance/exit is placed, randomly shifted around in the approximate area indicated, with a tunneler digging out in a random direction from among those represented by the lines. Gray lines on brown are more directional tunnelers that can pick a random direction from among the options, but are used just to fill space rather than act as access points. And brown empty blocks indicate space for random placement of prefabs that lead to branches.

A map can choose from any one of the patterns available, each of which is fairly different so the player doesn't know which pattern they're currently playing in (or even that there's a pattern at all!) and can't reliably deduce a way out without more info. That said, players do learn and know that edges of the map are more likely to contain main exits (if far away), so trying to follow the edges is usually a good idea, and there are also other forms of "map sense" which players develop over time to recognize various signs that might indicate an exit is nearby.

Different maps in Cogmind have different types of plans and layouts, but in the end the methods and goals are more or less the same.


Procgen map layout planning in REXPaint (various).

In the end these layouts are all represented by numbers in Cogmind's mapgen scripts, but it's nice to have images for reference during development. (While it would be possible to create a visual method for scripting, that'd be more work than it's worth in my case.)

Exits to branches are placed more randomly, thus it's naturally more likely that exits found closer to where a player enters the floor will take them sideways in the world (to more adventure yet without replenished health) rather than upwards (towards the surface and a win).


Entrances/exits labeled on a procedurally generated Factory map.

In the example above, there are four (green) points where the player may enter from or can exit to another main map. One (yellow) point where they can leave from ended up being randomly placed around the lower middle area, and two branch exits happen to be up in the northwest quadrant.

Here's another example with more connections:


Entrances/exits labeled on a procedurally generated Factory map.

The second version, found at a different depth, has only three pre-placed main access points and two randomly placed ones. It also connects to more branch maps, so here a player is quite likely to reach a branch before finding a way up, giving the option to leave early (by necessity or to seek out branch rewards) or continue further on for a way towards the surface. (Three of the branch exits on this map are also billboarded by their surroundings, making them even more noticeable from a distance.)

Back to the process, though, with general layout guide in hand it's time to start generating a base map. This is done outside the game in a separate program I put together called specifically for testing and analyzing layout generation without any actual game content. After setting some initial parameters like tunneler locations and behavior, it's time to watch them in action to see what they can do.


Repeated generation previews for the Storage map.

I'll watch these for maybe 30 minutes--less for really simple maps, longer for complicated ones, seeing if there are any strange outlier results that don't fit the goal, tweak the parameters, and then continue watching.

Having a separate program is nice since it's quick and easy, and examining the map at a higher level without thinking about content details makes it easier to focus on macro considerations like how easy it is to cross a given map if one simply approaches it as a maze rather than an inhabited world. The micro can come later.

Still, one thing to remember when working with procedural maps is that what you see in an overview shot during development has very little connection to how it's experienced in game! It might look like a terrible map but actually be fun while inside it, or it might look like a great map but not be all that interesting, or even tedious or boring to explore. Naturally it'll be up to the content to keep it interesting, and every game is different in that regard, but even in the overview you can pretend you're at a certain location and exploring outward from there, see where your path takes you, think about how much you can see or know from a given point, and imagine overcoming game-appropriate challenges along the way to one of the exits (or exploring randomly until happening across one of said exits xD).

I've mentioned before the advantage of having "loops," in which a branching map always allows for forward exploration as well as new paths for reaching earlier points, i.e. backtracking without retracing exact steps (or when looked at another way, loops enable more than one path forward). Backtracking is pretty much always an option for players in games, but if repeatedly forced it can become tedious. Also note that in some cases a game's mechanics can enable players to create these alternate routes. Cogmind does this, adding another layer of potential strategy.

Some other important factors I keep in mind at this stage are:
  • The "openness" of the map. How many of its cells are actually occupiable? A giant map composed mostly of blocked space will feel and play very differently from one filled with corridors and rooms. Sometimes one or the other is more preferable.
  • Consistency across room sizes. Are there mostly small rooms but a few massive ones? Should all rooms be about the same size?
  • Open area dimensions. Areas where numerous corridors meet could end up creating cavernous spaces (outside rooms). Is this okay or should there at least be a limit to their size?
  • How many of these open areas are there? Open areas play differently from rooms or corridors, so their ratio matters.
  • The prevalence of hidden corridors. These are used to connect some rooms with each other, offering alternative routes if discovered.
  • Are entrances and exits even reachable? Any map where this is not the case is naturally thrown out, but it's also important to pay attention to how hard it is for the generator to fulfill this vital condition at all.

Each of the above factors is actually tested for explicitly on completion and the map is thrown out if it doesn't fit within the parameters decided for that map. If map generation becomes too difficult then many maps will be created only to be thrown out before finding one that meets all criteria, which can take a while! Situations like this clearly require parameter adjustments.

It does, however, save time to do all these tests immediately after the initial layout generation, before any game content is loaded in or even considered at all. Some Cogmind maps might fail dozens of times before loading, but even thought they're quite large it's not really noticeable because the failure states are checked early in the process.

The layout generator also comes with other modes to help visualize a map's various aspects while tweaking parameters...

The most fundamental visualization shows routes through the map, using pink dots for entrances/exits, and green dots distributed along the shortest paths between each access point (dots are used because referencing complete lines is both less clear and too CPU-intensive). Also activated in the image below is the room seclusion factor, showing in red those rooms which have a below average distance between their doorway and the closest of those main routes. The darker the red the greater the distance.


Path and seclusion visualization. If an entire half of a map ends up being secluded, hopefully that's intentional :P (but this is why browsing through many generations is important--looking for those outliers)

Even though it's usually obvious just from looking at the layout, open areas get their own visualizer if at least to confirm what the generator thinks is an "open area."


Highlighting in orange the areas the generator has marked as "large open areas."

Hidden doors are one of the Cogmind-specific factors I pay attention to, so there's a mode to highlight those as well. Maps with more of these are more dangerous because enemies can use them to sneak up on the player or otherwise throw a wrench in sound tactics during a fight, but players can also use hidden corridors to their advantage to escape trouble, sneak around, or more quickly access different locations, assuming they've already used any of various means to discover their locations first.


Hidden doors and corridors highlighted in blue. These are also usually the only way the map generator will directly connect rooms with one another, giving them another unique quality.

Less often used is the monochrome visualizer, which simply shows open vs. closed cells without any type detail whatsoever. Sometimes it does come in handy, though, just to get a clear picture of the possible connectedness of the map as a whole, information which may sometimes be "hidden" behind other visual distractions.


Open cell visualization for purely looking at connectedness where mobility is concerned, assuming full knowledge and/or a way past any temporary obstacles.

Aside from tunnelers, the only map features placed at this early phase are possibly a handful of special prefabs, similar to how tunnelers are placed, though I've already covered that under "Seeding with Prefabs" in this article.(Examples of such prefabs include the aforementioned "billboarded" branch exits.) The same article also covers post-generation embedded prefabs, for encounter purposes, along with how they're categorized, built, and distributed.

There's a lot more to the process for tunneler-created maps, but beyond this point it gets extremely Cogmind-specific so this is a good stopping point for now. If we do go there one day it'll probably better to just look at one specific map type as an example.

Procedural cave maps also have some design methods of their own, but those are simpler and have mostly been covered before.

For patrons, there were more comments and discussion of this article over on Patreon here.
« Last Edit: May 28, 2019, 03:59:16 PM by Kyzrati » Logged

Pages: 1 ... 60 61 [62] 63 64 ... 71
Print
Jump to:  

Theme orange-lt created by panic