1. CULTIC
  2. News
  3. CULTIC Dev Log - Automap and More!

CULTIC Dev Log - Automap and More!

[p]Hello everyone![/p][p][/p][p]Since we're about two weeks post-launch, I wanted to get another dev log out and catch everyone up on where I'm at with everything CULTIC![/p][p]Overall, launch has still been going well, and I want to give a big thanks to everyone who has been posting valuable feedback and helping with troubleshooting tricky bugs! [/p][p]The next update is going to be an actual full patch, bringing CULTIC up to version 2.01. With this version, I'm going to be trying to tackle all of the current bugs that I can replicate, as well as tackle one of the two most commonly reported issues - navigation in Chapter Two's larger maps.[/p][p]You can read on below for more details on all of this, but the Automap is mostly finished already, with all maps for all levels complete, all objective markers that I wanted to add are completed, and things seem to be working! I need to make some readability adjustments to the map shader and do some testing, but I'm hoping this will be ready for the beta branch within the next week![/p][p][/p][h3]Automap[/h3][p][/p][p]Navigation has by far been the most common issue players have run into besides ammo/resources (which is trickier to tackle, I'll cover that further below), and unlike resource usage, navigation is not really meant to be part of the difficulty. I really didn't receive many issues from QA from navigation throughout playtesting, but that's the trouble with a small sample size! [/p][p]I burned some serious midnight oil over the last week and got a fully functioning Automap put together! With this map system, the map starts out hidden, with a somewhat large radius marked as "discovered" as you walk around, getting painted in a dark color, and then a smaller radius is marked as "explored" getting painted a lighter color, so players should more easily be able to track where they've been and what they can still go explore. [/p][p]Any locked doors you try to open will also be marked on your map, allowing for much easier recall of where you can return to to try out new keys you've acquired.[/p][p]The map can be freely tumbled/panned, and I've also got a separate mode where you can view the map from your current first-person perspective, making orientation a snap in more complex/vertically stacked areas.[/p][p][/p][h3]Key Features[/h3]
  • [p]Dynamic map that reveals ground as you explore and marks nearby ground as "explored"[/p]
  • [p]Map markers for some objectives to aid in finding key items[/p]
  • [p]Map markers for previously visited locked doors[/p]
  • [p]Multiple map modes to suit player's preferences:[/p]
    • [p]Map + Markers[/p]
    • [p]Map Only[/p]
    • [p]Map Disabled[/p]
  • [p]Tumble, pan, zoom, and height controls[/p]
  • [p]A quick re-center hotkey to return to the player's position[/p]
  • [p]A first-person map mode[/p]
  • [p]A few map color palettes[/p]
[p]With the addition of map markers for some objectives, an adjustment was also made to how readable notes work, so some readable notes can now provide the player with map markers. This change involved also needing to know if a note was read yet or not, so now readable notes also have a little glow to them if they haven't been read yet![/p][p][dynamiclink][/dynamiclink][/p][p]I do understand that most players didn't have much issue with navigation, or did to some degree but overall enjoy the exploration, but unfortunately this was not everyone's experience. The different map modes should be a good option for everyone's needs - if you feel the markers are unnecessary, you can try Map Only mode, where only map exploration is tracked! If you prefer the classic experience, you can disable it altogether as well.[/p][p]If you want to see some more technical info on the Automap, I've got that at the end of this post if you keep scrolling down![/p][p][/p][h3]Ammo Updates[/h3][p]After navigation issues, the concerns about ammo/resource availability was definitely the second most common issue. I'm continuing to monitor feedback on this and weighing some options. I mentioned this in the previous dev log too, but this issue is a bit trickier because CULTIC does lean into the survival-horror aspect to a degree, and there is intentional design in the ammo economy, and the majority of the playerbase has been enjoying the resource-minded gameplay - so I need to be really careful in my approach to this as I don't want to trivialize the game for the majority of players to solve an issue affecting a small percentage of players.[/p][p]HOWEVER - that does not mean that no steps have been taken or no further steps will be taken, just that I'm being a bit more careful in the approach. [/p][p][/p][p]Ammo Changes Made So Far:[/p]
  • [p]Shotgun Ammo Box pickups were increased in value slightly from 12 > 14[/p]
  • [p]Magnum Ammo Box pickups were increased in value slightly from 8 > 10[/p]
  • [p]A significant amount of resources were added to Old Town to aid players in that fight[/p]
  • [p]A significant amount of resources, including a mounted machinegun, were added to the Bunker boss arena[/p]
  • [p]A few more molotovs were added to early game areas so players can experiment with them more[/p]
  • [p]Penetration value of Sniper weapons was increased from 2 > 3, matching the Lever Action and Revolver[/p]
[p]Changes coming in 2.01[/p]
  • [p]Magnum rounds will be added to the Bunker boss arena, as I realized there currently aren't any at all[/p]
  • [p]A small sprinkling of Molotovs will be added throughout all of Chapter Two so they're not quite so scarce[/p]
  • [p]Re-supply points after larger fights will be re-evaluated to see if they need souped up for players who run dry during those fights[/p]
  • [p]All maps will be audited to try and identify significant gaps in resource availability - e.g. long periods of time where there are no pickups for a particular ammo type [/p]
[p]If players have any specific areas where they felt they were really being starved for ammo, I'd encourage you to continue to report those to the Feedback and Suggestions sub-forum on the Discussions board! Having those specifics, like "after fight I completely ran out of ammo, and I didn't get any more until ", go a long way towards pinpointing those dry spells![/p][p][/p][h3]Bug Fixes[/h3][p]I intend to include fixes for most currently reported bugs that I have been able to replicate! Some of the more minor collision/texture/geometry issues will probably wait until a future patch, but the bigger issues like achievements that aren't firing correctly and the leaderboard ID issues will be addressed.[/p][p][/p][h3]Unity Security Exploit[/h3][p]Some of you may have seen the news yesterday about Unity having discovered a potential security exploit in games that were built using their engine. Steam has already released an update for their platform to address the exploit, and version 2.01 of CULTIC will include Unity's patch for their end of things. There's not currently any real risk or impact to players that's been identified, but just wanted to let you know I'm aware of it and it will also be addressed so that it doesn't ever turn into an issue.[/p][p][/p][h3]Automap Behind-The-Scenes[/h3][p]For those of you more interested in the development side of the Automap, I wanted to detail it's development a bit here just because it's been honestly a really fun little project to tackle. I've never done a map system like this before, and have generally avoided it because it just seemed like it'd be a massive amount of work to manually build a map for CULTIC's levels, especially when even Chapter One's maps were already pretty big - and Chapter One's levels didn't really need a map badly enough to warrant that much work.[/p][p]However, Chapter Two's maps are obviously much larger, and the need for some navigational assistance was felt much more strongly by players. There's an argument to be made for just adding way more signposting, but at a certain point you run into two problems there:[/p][p]1.) The immersion and "real world space" feeling starts to degrade the more "game-ified" the world starts to be, and...[/p][p]2.) If you want to guarantee that no players get lost, you pretty much have to dive into "yellow paint" territory. As much as players hate to see "yellow paint" or other egregious hand-holding measures in games, the fact is that it's most likely there because some players significantly struggled with the conveyance at that point of the game.[/p][p]So, with that in mind, it made more sense to just go straight for a map rather than adding more signposting, which players may also miss, and still be in the same boat - after all, there have been quite a few players that never even saw the actual signposts in Fairgrounds![/p][p][/p][h3]Dumping The Navmesh[/h3][p]I remember looking at DOOM 2016's Automap at one point and thinking "man, that map looks like they just took the game's navmesh (the mesh used to determine where AI is allowed to walk and how to navigate) and extruded it... and then I thought "dang that's a really good idea!" Your navmesh is basically already a simple representation of the valid, in-bounds areas of your level, and would save me from having to manually draw/model out a map of the entire level![/p][p]Luckily for me, the Astar Pathfinding system by Aron Granberg that CULTIC uses has an awesome little feature to barf your navmesh out to an .obj file, which I can open in Blender, and...[/p][p][/p][p][/p][p]Well shoot, that's a ton of vertices. This is Fairgrounds, by the way. So while this was still a huge timesaver, it was clear that a lot of manual cleanup would be needed. Luckily, using a shortcut in Blender that lets you select all linked vertices meant that I could basically just select vertices that are on a known walkable area of the map, and then select everything that's connected to it, which wound up being another lifesaver! This made it really easy to quickly bulk-select big chunks of the walkable map while ignoring things like the tops of crates, rooftops, inaccessible terrain, etc. that are all technically walkable but still not areas that I want shown on the map.[/p][p][/p][p][/p][p]From there, it was just a lot of manual cleanup and reducing vertex counts by using degenerative dissolves to merge similar/clustered vertices, and then getting rid of loose vertices and islands. Lots and lots of manual cleanup, but I got it down to where most of these maps were only taking 30 minutes to an hour to finish, which isn't bad all things considered. Here's what Fairgrounds looked like after it was all cleaned up:[/p][p][/p][p][/p][h3]Painting the Path[/h3][p][/p][p]The next big task was figuring out how the heck I would handle revealing the map and showing where the player had been. Again, with the goal being avoiding tons of manual work. I figured it'd be easy enough to just "paint" the map as the player explored using vertex colors. Basically, a 3D model is just made up of a bunch of points, or vertices, that are connected together to make all of the polygons that make up the shape. In the above image, every intersection of every line is a vertex, and I can access the positions of those vertices, compare the position to the player's position, and if it's within a larger radius, I mark it as "revealed", and if it's within a close radius to the player, it's marked as "explored". Kind of like a Fog of War system but with two levels. [/p][p]The only issue with that was that some of these maps have a TON of vertices - 16-20K in some instances, and running 16,000+ vertex comparisons each frame was going to be a big hit towards performance, so I wound up writing this function as a C# "Job", meaning it could be taken off of the main thread and basically run in the background until it was finished, rather than the game waiting for it to be finished before continuing. In the end, it was only about a 0.2ms operation, which is spread out across several frames, so the performance impact was negligible.[/p][p]3D meshes can also store a color along with each vertex, so I made it so by default, each vertex in the map mesh is marked with a transparent black (RGB 0,0,0 with an Alpha value of 0). When you "reveal" a vertice by getting within ~25m of it, that color gets changed to a dark blue, and when you "explore" it by getting within 5m of it, it gets marked as light blue. Then those vertex colors are referenced by the shader I made for the map and used to properly render it.[/p][p]I also wanted to be sure that the map was readable even when the player was in an area with a lot of verticality to it - like when they were in a building with multiple floors. I added a feature to the shader that would dither out map geometry that was above the player and within a certain radius, so you can still see the player's location even when there's map geometry directly above you! [/p][p][/p][p][/p][p]I'm honestly really proud of how this turned out because I only very recently learned about shader building and how to work with nodes, so this is all brand new to me![/p][p]Since the map mesh is build from the levels' actual navmesh, the nice thing was that everything lines up 1:1, so when it comes to representing the player's location or placing map markers, I didn't need to do any scale or transform conversions, I can just use actual world positions for everything, which was a huge relief.[/p][p]It took about a week of work to get this far and get all of the meshes built. I want to make some more readability adjustments to the map so it's easier to view when there are a lot of vertical layers stacked up, but other than that, I've been super happy with how quickly it's come together and hope it helps players out![/p][p][/p][p]P.S. sometimes the navmeshes had little faces in them and this one was my favorite, as it perfectly encapsulates how I felt while cleaning up all these meshes:[/p][p][/p]