RonnieJamesDiner Posted June 8, 2019 (edited) Hello everyone, I’ve been trying to play around with different ways of incorporating difficulty settings, and for a while I was working on an approach where, rather than creating variation in the number & types of monsters throughout the map across HNTR, HMP and UV, the monsters themselves simply had scaled versions. Using DECORATE, I made two separate versions of each monster – basically a Tier 2 variant, and a Tier 3 variant. The idea was that instead of struggling to maintain a cohesive experience across the map while juggling monster count/type between the skill levels, it simply became a matter of populating the map until I was content with the gameplay, and then adding each monsters’ scaled counterpart. The end result was: The vanilla monsters were flagged for ITYTD and HNTR only The tier 2 variants were flagged for HMP only The tier 3 variants were flagged for UV and N only The map would have no difference in monster count, type, or location, regardless of the difficulty setting – however, the versions of each monster became increasingly dangerous the higher the difficulty you went (essentially akin to the fast monster characteristic of Nightmare, except now virtually all of the monsters are included, and the transition in difficulty scale from HNTR to UV is (I hope) rather smooth). The Imp, for example, by default has a pain chance of 200, and its projectile has a speed of 8. Now, its HMP variant has a pain chance of 65, a projectile speed of 14, and the +MISSILEMORE actor flag. Its UV variant has a pain chance of 25, a projectile speed of 18, and the +MISSILEEVENMORE actor flag. None of the monsters have had their health increased. My intent was not to create unnecessary bullet sponges, but rather to nudge combat just a little bit closer to the razors edge as you upped the difficulty, with things like increased damage, speed, and enemies who were overall more aggressive and lethal. The project I had intended to utilize this for has since gone in a slightly different direction, and I’ve opted to resort back to the standard process of incorporating skill levels. At the end of the day, I thought it would be a shame to let this just collect dust (and possibly be forgotten about) on my harddrive, so I thought I’d post it here. If anyone wants to utilize this, it’s yours! All of the monsters are bunched together in their respective HMP and UV categories, as shown below. [edit] The MAPINFO is now also set up with three skill levels - Normal, Medium, and Hard, whereby Normal uses the default monsters, Medium uses the tier 2 variants, and Hard uses the tier 3 variants. Medium and Hard are set to replace the appropriate actors throughout the map via the MAPINFO lump, so you only have to worry about placing the standard default monsters while creating the level. (Thank you, Tango!) -- MAPINFO lump skill definitions -- Spoiler skill normal { Name = "Normal" SpawnFilter = 2 DefaultSkill } skill medium { Name = "Medium" SpawnFilter = 3 ReplaceActor = "ZombieMan", "FormerHumanHMP" ReplaceActor = "ShotgunGuy", "FormerSergeantHMP" ReplaceActor = "DoomImp", "ImpHMP" ReplaceActor = "Demon", "DemonHMP" ReplaceActor = "Spectre", "SpectreHMP" ReplaceActor = "LostSoul", "LostSoulHMP" ReplaceActor = "ChaingunGuy", "ChaingunnerHMP" ReplaceActor = "Cacodemon", "CacodemonHMP" ReplaceActor = "PainElemental", "PainElementalHMP" ReplaceActor = "HellKnight", "HellKnightHMP" ReplaceActor = "BaronOfHell", "BaronOfHellHMP" ReplaceActor = "Revenant", "RevenantHMP" ReplaceActor = "Mancubus", "MancubusHMP" ReplaceActor = "Arachnotron", "ArachnotronHMP" ReplaceActor = "Archvile", "ArchvileHMP" ReplaceActor = "SpiderMastermind", "SpiderMastermindHMP" ReplaceActor = "Cyberdemon", "CyberdemonHMP" } skill hard { Name = "Hard" SpawnFilter = 4 ReplaceActor = "ZombieMan", "FormerHumanUV" ReplaceActor = "ShotgunGuy", "FormerSergeantUV" ReplaceActor = "DoomImp", "ImpUV" ReplaceActor = "Demon", "DemonUV" ReplaceActor = "Spectre", "SpectreUV" ReplaceActor = "LostSoul", "LostSoulUV" ReplaceActor = "ChaingunGuy", "ChaingunnerUV" ReplaceActor = "Cacodemon", "CacodemonUV" ReplaceActor = "PainElemental", "PainElementalUV" ReplaceActor = "HellKnight", "HellKnightUV" ReplaceActor = "BaronOfHell", "BaronOfHellUV" ReplaceActor = "Revenant", "RevenantUV" ReplaceActor = "Mancubus", "MancubusUV" ReplaceActor = "Arachnotron", "ArachnotronUV" ReplaceActor = "Archvile", "ArchvileUV" ReplaceActor = "SpiderMastermind", "SpiderMastermindUV" ReplaceActor = "Cyberdemon", "CyberdemonUV" } --------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------- If you’re interested, I’ve put together a small demo map which, I hope, adequately showcases the desired effect. There are 80 enemies on the map, whose count/type/location are 100% identical regardless of difficulty (though the Archvile does tend to add to the final count). HNTR are the vanilla monsters, HMP are the tier 2 variants, and UV is the tier 3 set. Try the 3 different skill levels and see how it plays! The map was made in UDMF format, and requires gzdoom. It was tested with the latest build of gzdoom. The map can be downloaded here (v2 now with MAPINFO change) --- http://www.mediafire.com/file/zpf3a6kjo650aay/map01_techbase_v2.wad/file ---------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------- As I mentioned, the DECORATE and MAPINFO lumps included in the map have everything in them, so if you have any inspiration to use this, or you feel like it might make an interesting addition to something you’re already working on, or you just want to muck around with it, please, feel free! I’ll leave a full list of the variations below. Have a great day, and happy mapping! -- Full list of DECORATE monster adjustments -- Spoiler ZombieMan (HMP) : Reduced horizontal bullet spread to 12, added +MISSILEMORE flag ZombieMan (UV) : Reduced horizontal bullet spread to 5.5, added +MISSILEEVENMORE flag ShotgunGuy (HMP) : Reduced horizontal bullet spread to 12, added +MISSILEMORE flag ShotgunGuy (UV) : Reduced horizontal bullet spread to 5.5, added +MISSILEEVENMORE flag Imp (HMP) : Increased projectile speed to 14, reduced pain chance to 65, added +MISSILEMORE flag Imp (UV) : Increased projectile speed to 18, reduced pain chance to 25, added +MISSILEEVENMORE flag Demon (HMP) : Increased movement speed to 12.5* Demon (UV) : Increased movement speed to 15* *Spectre variant is identical to Demon ChaingunGuy (HMP) : Reduced horizontal bullet spread to 14, added +MISSILEMORE flag ChaingunGuy (UV) : Reduced horizontal bullet spread to 7, added +MISSILEEVENMORE flag Lost Soul (HMP) : Increased charge speed to 25 Lost Soul (UV) : Increased charge speed to 30 Cacodemon (HMP) : Increased projectile damage to 7, added +MISSILEMORE flag Cacodemon (UV) : Increased projectile damage to 9, added +MISSILEEVENMORE flag HellKnight (HMP) : Increased movement speed to 10, increased projectile speed to 26, added +MISSILEMORE flag* HellKnight (UV) : Increased movement speed to 12, increased projectile speed to 36, added +MISSILEEVENMORE flag* *BaronOfHell variant is identical to HellKnight Revenant (HMP) : Increased projectile speed to 13, reduced pain chance to 45 Revenant (UV) : Increased projectile speed to 16, increased movement speed to 12, reduced pain chance to 15, added +MISSILEEVENMORE flag Mancubus (HMP) : Increased projectile damage to 10, reduced pain chance to 15, added +MISSILEMORE flag Mancubus (UV) : Increased projectile damage to 12, reduced pain chance to 5, added +MISSILEEVENMORE flag Arachnotron (HMP) : Increased projectile speed to 30, reduced pain chance to 64, added +MISSILEMORE flag Arachnotron (UV) : Increased projectile speed to 35, reduced pain chance to 32, added +MISSILEEVENMORE flag Archvile (HMP) : Increased movement speed to 17, reduced pain chance to 5 Archvile (UV) : Increased movement speed to 20, reduced pain chance to zero (will never enter pain state!) SpiderMastermind (HMP) : Reduced horizontal bullet spread to 14, reduced pain chance to 20 SpiderMastermind (UV) : Reduced horizontal bullet spread to 7, reduced pain chance to 5, added +MISSILEEVENMORE flag Cyberdemon (HMP) : Increased rocket speed to 30 Cyberdemon (UV) : Increased rocket speed to 40, added +MISSILEEVENMORE flag Edited June 9, 2019 by RonnieJamesDiner 5 Share this post Link to post
elend Posted June 8, 2019 This sounds extremely interesting and might make for an easier way to implement difficulty settings. I want to try this out as soon as possible. 2 Share this post Link to post
Mordeth Posted June 8, 2019 I'm currently doing this for E2, except not in the fixed game skill format chosen by OP. Instead, I've separated possible "skill settings" into their own categories, such as 'number/type of monsters' in case of the normal game skill setting, a setting for 'progression puzzles difficulty' and a setting for 'monster AI'. You can set these to different levels, enabling you to mix and mash according to your own preferences. Eg. a HMP game, but with ITYTD puzzles and UV monster AI. 1 Share this post Link to post
RonnieJamesDiner Posted June 8, 2019 14 hours ago, elend said: This sounds extremely interesting and might make for an easier way to implement difficulty settings. I want to try this out as soon as possible. Thanks! There were a few things I wasn't sure about (such as the Archvile not having a pain state in UV), but people can adjust the numbers however they see fit. 1 hour ago, Mordeth said: I'm currently doing this for E2, except not in the fixed game skill format chosen by OP. Instead, I've separated possible "skill settings" into their own categories, such as 'number/type of monsters' in case of the normal game skill setting, a setting for 'progression puzzles difficulty' and a setting for 'monster AI'. You can set these to different levels, enabling you to mix and mash according to your own preferences. Eg. a HMP game, but with ITYTD puzzles and UV monster AI. That sounds fantastic, I'm rather curious about how you implemented puzzles that change depending on the skill level! Sounds exciting :D 1 Share this post Link to post
Tango Posted June 8, 2019 really cool idea! are you placing each variant by hand though? this sounds like something that would be perfectly suited to use the "ReplaceActor" property in a MAPINFO skill definition 0 Share this post Link to post
RonnieJamesDiner Posted June 9, 2019 1 hour ago, Tango said: really cool idea! are you placing each variant by hand though? this sounds like something that would be perfectly suited to use the "ReplaceActor" property in a MAPINFO skill definition Oh my god... well, I'm sure using that now! I had no idea you could replace actors in specific skill level definitions like that, (yes, I was carefully hand placing each and every variant). This has just about made the whole process 1000x more efficient, thank you so much! You learn something new every day. I've updated the original post, as well as the link to the new version of the demo map with the MAPINFO lump changes. I wasn't exactly sure how to edit the pre-existing skill levels, without making new ones. As I currently have it (for the demo map), the MAPINFO lump clears the existing skills, and adds the 3 that I was concerned with - Normal (default monsters), Medium (tier 2), and Hard (Tier 3). I'll continue to play around with this and see what else I can learn. Thanks, again! 1 Share this post Link to post