Soldak Home   Drox Operative   Din's Curse   Depths of Peril   Zombasite  

Go Back   Soldak Entertainment Forums > Din's Curse > Din's Curse modding
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Display Modes
  #11  
Old 11-18-2011, 11:38 AM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

OK thanks for the clarifications. I just want to make sure I understand the spawn system fully. Tell me if anything here is wrong:

1) MonsterLevelsFromDepth 0.6 determines that for every floor of the dungeon, the dungeon floor level goes up by 0.6.
2) The initial spawn system uses InitChance, and narrows down the monster types to 4 from the monsters available at the dungeon level, spawning monsters, objects and traps using their chances per block. This initial spawning does not use SpawnChance.
3) If there's a quest on that level, the active spawn system goes into effect, replacing dead monsters according to a timer (as discussed above) and this spawn system can draw on any monsters in the range of the level (which is -1 or 0 for regular monsters, and -4 or +2 for desired monsters).
4) Monsters are spawned in the active spawn system using their SpawnChance.
5) The level of the monsters spawned is not changed from what is specified in MonsterTypes.gdb. What can change using Min/MaxMonsterLevelOffset is which dungeon floors they spawn in.

The only curious thing I've seen is that there was a level that had a level 20 creature and a level 26 other creature, and I'm pretty sure neither creature was a Desired monster for that dungeon.
Reply With Quote
  #12  
Old 11-18-2011, 01:37 PM
Shadow's Avatar
Shadow Shadow is offline
Super Moderator
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 8,974
Default

That sounds about right except objects/traps don't do the pick 4 things and only spawn those part.

Off hand I can't explain a 6 level difference. There are other things like quests that can change this a little but what you wrote is most of it.
__________________
Steven Peeler
Designer/programmer
Depths of Peril, Kivi's Underworld, Din's Curse, Drox Operative, Zombasite, & Din's Legacy
Patreon
Reply With Quote
  #13  
Old 11-19-2011, 06:46 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

OK so now that I understand the spawn systems, I have a couple of comments.

I think the system isn't as randomized as it could be. Specifically, I'm talking about the limitation where only certain monsters can coexist in a level. There are 55 monster archetypes in the game, and about 5 times that (275) monster types. It would have been really cool to allow every monster to be in a level with every other monster. For example, zombies and the other undead are unlikely to ever meet their worst enemy -- the Chaos Lord. Of course, you don't want every monster to spawn in every level (and you definitely don't want Chaos Lords spawning in the early levels), but allowing the ability for all types to coexist maximizes the possibilities, which is what a random game is about.

The system as it is really suits DoP better. There, every area has its own level, where you can imagine a specific ecosystem favoring certain combinations of monsters ie. you don't expect every monster to be able to spawn everywhere. But it doesn't work so well in DC. Among the problems this system causes:

1. Around level 26 you start spending a lot of time gaining experience and going through several towns before advancing to the next level. This means you'll see similar creature combinations over and over as you go through different towns, and you won't see other creatures at all.
2. The fact that the monster cycle repeats itself every 25 levels means that by level 25, the player has likely seen every version of every monster. This is a bit of a waste. It'd be nicer to present the player with new challenges as he proceeds through all 100 levels of the game. Unveiling a new, souped up version of a monster the player is already familiar with around level 50 would be quite cool.

3. Players who play a lot will get to learn that certain combinations of monsters coexist, while others do not. This doesn't maximize the potential of a random system, which doesn't need to become boring in this way.

Here's how I would have liked the spawn system to be. It's only a minor tweak, but I think it goes a long way towards increasing randomness. Rather than setting specific levels for each monster type, monster types would be given somewhat overlapping level ranges. Then, just as you have NumMonsterTypesToUse for init spawning, you'd have another number, NumMonsterTypesToSpawn for active spawning. Currently, if you work it out, the game effectively has between 13 and 22 monster types that can spawn per level, though some of them are of the same archetype. This includes the MinMonsterLevelOffset of -1. So you can set NumMonsterTypesToSpawn to around 19. The game would only be able to spawn this number of pre-selected monsters (plus elemental Totems, which can be marked to always spawn) from the types available at the particular level. This would allow monsters to spawn in combination with all other monsters, but only at the levels where it makes sense to have them.

Given the current system, I think what I'll do in my mod is spread out some of the monsters across a few level ranges, and I think I'll also make more monster types that'll inherit other monster types but reduce their spawnChance to a very small value. This way, you could occasionally have a few monsters appearing in levels where they normally wouldn't.
Reply With Quote
  #14  
Old 11-21-2011, 05:25 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

Actually, I just found the DifficultyLevel -1 command, which when set to 0,1,2,3 limits monsters to that difficulty level. Did you originally intend for every difficulty level to have a different set of monsters?
Reply With Quote
  #15  
Old 11-21-2011, 05:42 PM
Shadow's Avatar
Shadow Shadow is offline
Super Moderator
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 8,974
Default

Quote:
Originally Posted by Bluddy View Post
Actually, I just found the DifficultyLevel -1 command, which when set to 0,1,2,3 limits monsters to that difficulty level. Did you originally intend for every difficulty level to have a different set of monsters?
The DifficultyLevel parm is used for Din (NpcTypes.gdb) although it should work for any NPC.
__________________
Steven Peeler
Designer/programmer
Depths of Peril, Kivi's Underworld, Din's Curse, Drox Operative, Zombasite, & Din's Legacy
Patreon
Reply With Quote
  #16  
Old 11-21-2011, 05:51 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

Quote:
Originally Posted by Shadow View Post
The DifficultyLevel parm is used for Din (NpcTypes.gdb) although it should work for any NPC.
Oh I missed that usage. Well I started sketching out what a difficulty-based monster mix would be like. I'd have 2 monstertypes of each archetype per level, and the lowest difficulty level would be dominated by easy monsters, with each difficulty level being dominated by harder and harder monsters. The player would also be introduced to new monsterTypes of familiar archetypes as he went up levels. I'd also create different monster mixes for each difficulty level so the mixes wouldn't exactly repeat.

I ran into difficulties once I realized that, for example, to have Imp1 appear on level 1 and level 4, I would have to duplicate and inherit MonsterImp1 as well as every unique Imp1. It would add up to a lot of work for something that won't be felt by users that much, so I'm putting it off as a very late stage mod.
Reply With Quote
  #17  
Old 11-27-2011, 06:57 AM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

Shadow, would it be difficult to change the Level command in monsters so it's multi-line? You'd then be able to have

MonsterImp1
{
...
Level 1
Level 4
...
}

to allow the imp1 to be in both level 1 and 4, and the unique imps that inherit from Imp1 would also have both levels. It would then observe the other rules of multiline commands ie. overriding overwrites them completely and addsTo adds more commands (ie levels).
Reply With Quote
  #18  
Old 12-01-2011, 08:55 AM
Shadow's Avatar
Shadow Shadow is offline
Super Moderator
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 8,974
Default

I'll look at it, but I suspect that there are too many cases that reference the level number directly.
__________________
Steven Peeler
Designer/programmer
Depths of Peril, Kivi's Underworld, Din's Curse, Drox Operative, Zombasite, & Din's Legacy
Patreon
Reply With Quote
  #19  
Old 12-01-2011, 03:51 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

Quote:
Originally Posted by Shadow View Post
I'll look at it, but I suspect that there are too many cases that reference the level number directly.
That makes sense. I guess it just means more duplication for me...

BTW if you're using the same system for Drox, I highly suggest modifying it to be along the lines of what I suggested:

Just as you have NumMonsterTypesToUse 4, you'd have NumMonsterTypesToSpawn 16 which would go and select an additional 16 monsters per level using their Init values. These monsters would be randomly selected from the range available at the level, so you'd have for example

MonsterImp1
{
MinLevel 1
MaxLevel10
}
MonsterImp2
{
MinLevel 5
MaxLevel 15
}
MonsterDemon1
{
MinLevel 22
MaxLevel 26
}
MonsterDemon2
{
MinLevel 25
MaxLevel 30
}

Chaos Lords can't spawn before level 22 using this scheme, and Imps can't spawn past 15, but anywhere in-between, you never know what combination you'll get. You'd always get spawning from a random selection out of the monsters that are available at that level, but never all the possible monsters.

To create a little bit of level variation (otherwise all monsters will be at the current level) you'd have

MonsterLevelOffsetRandomness 1.5

which would push a monster up or down up to 1.5 levels. To handle desired levels, you'd have something like

DesiredMonsterMultInitValue 3.0

which would simply multiply the init values for the desired monster, giving it a better chance of being selected as one of the monsters to spawn.

Finally, to make sure elemental totems are always included in the set of monsters to spawn, you could have

MonsterFireTotem
{
SpawnAtAllLevels 1
}

This scheme is a) easier to maintain and easier to create interesting monster layouts, vs the current system that has to be carefully laid out level by level.
b) It maximizes the randomness. Any set of monsters from those allowed at the particular level could be chosen, vs the current system which pre-ordains which monsters will meet at which level, which decreases randomness and increases repetitiveness. c) Monsters can now have a much wider range of levels without spawning at every one of those levels, as opposed to having each monster type appear at only 4 levels in the whole game.

And if you end up using this for Drox, please port it back to DC as well
Reply With Quote
  #20  
Old 12-04-2011, 01:02 PM
Bluddy Bluddy is offline
Legend
 
Join Date: Jan 2011
Posts: 1,983
Default

Quote:
Originally Posted by Shadow View Post
I'll look at it, but I suspect that there are too many cases that reference the level number directly.
Actually, thinking about it some more, maybe rather than changing the Level command, it'd be easier to add a command. Just as MinLevel and MaxLevel are values that generate a real level values, the multiline command PossibleLevel would create a list of possible levels, out of which one would be chosen.

You could have

MonsterImp1
{
PossibleLevel 1
PossibleLevel 3
PossibleLevel 5
}

Which would act just like MinLevel and MaxLevel, except only for those levels mentioned.

Would that be more doable?
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -4. The time now is 07:08 AM.


Powered by vBulletin® Version 3.6.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Copyright 2007 - 2019 Soldak Entertainment, Inc.