Author Topic: Project: Regional mods  (Read 356 times)

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Project: Regional mods
« on: September 26, 2011, 07:55:26 pm »


                <making his list...>

Based on the discussion and interest I saw on the "Dynamic Forest Area" thread (and my own need for it ;-), I've started a new project called "Regional mods" 

Purpose - create large regions of areas by re-using a variety of template areas linked by scripting. Any area-node in a region may be either a template area or a specific and unique crafted area.
  • Provide a defined structure to regions as settings for plotted areas and other mods - i.e. the Bonewash always runs northeast from *here* and the Hearthwood is right over there. *Not* randomly generated areas whose only consistent feature is their blandness.
  • Provide a persistent upgrade path. As new areas are completed, the take the place of template area place-holders.
  • Allow a relatively few templates to represent hundreds or thousands of areas without hitting NwN resource limits.
Let me repeat part of that in a different way. My idea here is to create a setting within which to set the gems of your creations. The regional mod will be the surrounding areas of wilderness and set here and there within it will be the destination and plot areas.  It will, ideally, link across module and server. The Region is the gold, the plot mods/areas are the jewels. Together they make <jewelry?> stop that! ...a whole greater than their parts.

Example: I am writing the Forester mod now. It is set in Tieri Verd'n (The Walking Woods). The Walking Woods are not *needed* for Forester, but if you download Forester and you download Tieri Verd'n and other mods that the region links to, then you may take a break from sweet-talking the troll Matriarch to wander down toward the Vale of Tears or the forest town of Elfhaven. Then wander back and see what mischief the hedgewitch and her daughter have got up to while you've been gone. 

An important part of this process will be saving, restoring and updating state info when moving between mods and servers. I lack a lot of experience, particularly with moving between servers. But I learn fast :-) And I am humble enough <hah!> to accept help and give credit :-)

Oh, one more thing. State info will be saved by node, not area. So if someone changes something in a certain place, the change will only occur at that node, not in the area that node shares with uncounted other places.  Similarly, state info will be weighted by activity. Active nodes will hold on to their state data longer, while neglected/never visited nodes will bottom out at default (unspawned/inactive).

Example (planned): If a rampaging monster of the catastrophic variety hits the south end of the Walking woods and it takes a month for anyone to hear about it, it will devastate a large number of areas (nodes). These state changes will be done by scripting and should have minimal impact on performance. But when the PC gets to the area, they will find devastation! Later, when they haven't been by the site of their great triumph for a month or so, they will return to find the place sylvan once more.  But it won't happen overnight or with a server reset :-P

Waddya think?

<...and checking it twice, because it just *can't* be right>
               
               

               


                     Modifié par Rolo Kipp, 26 septembre 2011 - 08:33 .
                     
                  


            

Legacy_QlippothVI

  • Full Member
  • ***
  • Posts: 197
  • Karma: +0/-0
Project: Regional mods
« Reply #1 on: September 27, 2011, 05:44:03 pm »


               That sounds pretty cool. Will creatures be able to wander from area to area? Or I guess I should be asking, how they will be simulated, this rampaging monster, since it appears that they won't?

Node: A cluster of areas whose state is preserved as a group.

If I want to add an area to the wash, how would I alter this node? Does the naming convention influence it's layout (what areas link to which other areas?
EDIT: Ah, I see on your project page it will use 2DAs, this makes things easier (for me to understand '<img'>

I'm interested in tracking creature movement through a script rather than by active creature. I'm planning on having scout NPCs which can spy and report on areas they wander through, but was thinking of seeing if they could be scripted activities, and the scout only shows in the module when some event uncovers them (opposing scout or enemy patrol gets lucky).
               
               

               
            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Project: Regional mods
« Reply #2 on: September 27, 2011, 07:08:58 pm »


               <nods at some...>

Creatures (not just monsters... I have a lot of *non-combat* encounters planned) *will* be able to roam between nodes. (Note: Each node is a single area in the regional network. It points to either a template area or a developed, hand-crafted area).

The idea is to "manage" inactive creatures & areas in a player-client friendly way. That means manipulating data during non-cpu intensive periods (And, later, with nwnx or some other system, doing this externally). But, as creatures are technically just data-states until spawned in, there is no restriction on *where* they are in the regional network. This also allows us to have areas in multiple states (Scorched earth, recovering, wooded, forest, etc.) and for these phantom spawns to affect areas out of sight.

Possibly later, if I can figger a way to winkle the mod to add/delete inactive areas while running, we might be able to drop in replacements in the temp directory.

The first version (codenamed Vanilla) will try to work without NwNx, so players only need to DL a hak, hence the 2da approach. The advanced version (codenamed RockyRoad ;-) will fork off at some point to use NwNx and an external db. In both cases, the 2da will provide a default state that the areas will move toward if they've been changed by events/player visits.

I think of the visible/active creatures as tokens representing much larger populations. Example: If an area has an alpha herbivore population of 350, then 35 actual creature objects may spawn. Hunting reduces the population. Breeding increases the population. But we never ask the NwN engine to do things individually, except for spawned in creatures. We *model* the ecology in abstract and then present tokenized representations of state in the active area.

The same principle would work for your scouts. Despawn them when they go out of sight. Initialize a plot object (more on that later - essentially, you need to model what the scout is doing out of sight and what is being done to it) and if it returns to an active area (or the active area goes to it) then respawn with the updated state info.

State info, in this case, means its whereabouts, its "job" (goal), and any *modified* stats (If most stats are still default, why save them?).

<...shakes his head at others>
               
               

               


                     Modifié par Rolo Kipp, 28 septembre 2011 - 09:25 .
                     
                  


            

Legacy_QlippothVI

  • Full Member
  • ***
  • Posts: 197
  • Karma: +0/-0
Project: Regional mods
« Reply #3 on: September 28, 2011, 05:11:39 am »


               Rocky Road (cuz it's nuts)?

Will Vanilla use the normal Save Game feature to store variables in the module, or will it use the Bioware DB?

I think it was Shield Lands (module on the Vault) that did something with spawning the results of conflicts over time by spawning the groups in their strength when teh player enters the area.
               
               

               


                     Modifié par QlippothVI, 28 septembre 2011 - 04:12 .
                     
                  


            

Legacy_Rolo Kipp

  • Hero Member
  • *****
  • Posts: 4349
  • Karma: +0/-0
Project: Regional mods
« Reply #4 on: September 28, 2011, 04:57:33 pm »


               <looking over...>

Currently planning to use the Bioware db. I'm looking at the code that some people have already written to transport henchmen between modules... Primarily because I use a modular round-robin for seasonal progression (which is working in a very basic fashion), and it's just a hop, skip and jump-to-the-left to using it for inter-module communication (spacial instead of temporal).

But, I'm open to suggestions.  I'm actually pretty good at modelling systems, but not very experienced with NwScript. Still, I have three decades worth of talented amateur programming skills, so I have some faint hope I'll be able to figure things out...

Especially with such a fantastic community to draw from when I get in trouble :-)

<...certain purloined henchman and AI code>