Well, I was waiting to post this until after the Zones article in HamsterSpeak #49 got its pictures, but it's getting late, and I don't want to hold this discussion back any longer, so I'm gonna go ahead and get this going.
If you read through the article, you'll see that there's a segment at the end called "The Future of Zones." In that section I discuss two confirmed plans for zones and a wish list of other features that I would personally like to see zones accomplish.
But we're a community, and the community should have a chance to voice its input so that the developers have more ideas to work with in the future. So here's how this thread works. Tell them what you want to see zones do. Do you want them to have a roulette button? Say so. Should NPCs have several possible zone restrictions? How would you like to see that handled? You have games. You want to maximize your games' potential. Speak up. What should the future of zones entail?
As a bonus, since the article discusses NPC movement in zones, we can also use this thread to discuss our desires for NPC movement features (in zones and out).
Here's a working list to get this thread started (copy/pasted from an old discussion over e-mail about six months ago). Add, debunk, and discuss.
General Uses for Zones:
Most of these would probably need plotscripts, or general bitsets that can support plotscripts.
“While in Zone”
A list of functions that can happen while the player is in the given zone. May include a general list of bitsets similar to those that run when the player is on a specific map:
Force Animate Tile (May toggle animation styles: for example, a water tile may change animation if the player walks through it / can turn animations on, off, or switch starting tile and animation sequence)
Play Sound in Zone (Yes, No) (If Yes: One-time, Continuous)
Show Slice/Sprite (This may not be practical unless slices become a built-in engine feature, but it may prove helpful for showing atmospheric effects while player is in a zone)
Run Script / Check Script (First runs script upon entrance, second runs continuously)
“Swap Zones”
Switches the behaviors of two zones.
“Neutral Zone”
If turned on, this may change the behavior of preset bits on a specific map:
Stop Foemap (if “Neutral Zone” is turned on, all foemap data within the zone turns to zero)
Stop NPCs (if turned on, NPCs in zone stop walking)
Stop Animation (if turned on, animation tiles in zone stop animating)
Stop Sound / Music (if turned on, sound effects and/or ambient music stops)
“Active Zone,” or, “Normal Zone”
Returns zone affected by “neutral zone” back to normal.
“Discontinue Zone”
Turns off default zone behavior.
“Continue Zone”
Turns on default zone behavior.”
To reiterate the things that NPCs could do to make zones better:
“Search Zone Edges”
NPCs set to make turns can search for turns in zones (in my example, this type of NPC could stick to the sidewalks, and turn whenever he or she reaches a crosswalk for example).
“Search Random Zone Edge”
Works exactly like the first, but has the option to skip the turn in situations where an NPC may enter an intersection and decide to keep walking forward.
“Switch to Zone”
In cases where zones may overlap and/or form alternate paths for NPCs, the designer may want to allow the NPC to cross over to the new zone. This may be better suited for plotscripting, but it may not hurt to have a few built-in arguments for simple cases. If zones are not overlapping, then the NPC will treat the zones like “doors.” May need alternative bitsets “only use if overlapping,” “use anywhere.”
“Avoid Zone”
NPC may wander freely around the map, but treats the specified zone as a wall.
“Advanced Wander”
Set an approximate range of forward motion to allow NPCs to cover more ground in faster time. Set a minimum and maximum tile distance the NPC has to wander in any given direction before making a random turn and starting over again. Ensures more ground is covered for sentry types, for example.
“NPC Zone Trigger”
If the NPC enters a specified zone, a plotscript could run. This could have general and NPC-specific bitsets.
“NPC Follows Who”
Forces a specific NPC to follow or “chase” another specific NPC. Alternate bitset may allow NPC to chase closest NPC.
“NPC Avoids Who”
Forces a specific NPC to avoid another specific NPC. Alternate bitset allows NPC to avoid all other NPCs.
What else would you guys want to see zones and NPC movement types accomplish?
Place Obligatory Signature Here
There's already lots of great ideas in here. I think the "Avoid Zone" movement option for NPCs would be a simple and very helpful thing to implement. I also think that it would be grand to have ambient music depend on zone. Like an ambient music menu for each map:
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
etc
I am Srime
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
etc
I am Srime
I already discussed in IRC the idea of enabling/disabling layers based on zones. And James instantly realized what I was going for - getting rid of the roofs when you go into a house.
I also wonder if you could do something related to slices... such as setting the parent to a zone? I'm not sure what you could do with it since I'm not completely versed in slices at all at this point, but I feel like you could do some nifty display tricks with this that might not be currently possible.
I also wonder if you could do something related to slices... such as setting the parent to a zone? I'm not sure what you could do with it since I'm not completely versed in slices at all at this point, but I feel like you could do some nifty display tricks with this that might not be currently possible.
I'm sure this has already been mentioned, but being able to change the player's walkabout (Especially without scripting) when they enter/exit a zone would be super cool.
An "Npc limit" for zones, which, when reached, prohibits other npcs from entering, would be a pretty sweet way to controls NPC density in certain areas. There's nothing worse than all your NPCs crowding up an already-bottlenecked portions of the map, you know.
Oh, also, a "default zone" that you can attach to tiles (Think default passability here) would be a great way to make general uses for zones (Like sprite changes or sound-effects.) more efficiently applied!
I really love all these other ideas. Zones are the kind've Simplification + New feature hybrid I've been wanting forever.
An "Npc limit" for zones, which, when reached, prohibits other npcs from entering, would be a pretty sweet way to controls NPC density in certain areas. There's nothing worse than all your NPCs crowding up an already-bottlenecked portions of the map, you know.
Oh, also, a "default zone" that you can attach to tiles (Think default passability here) would be a great way to make general uses for zones (Like sprite changes or sound-effects.) more efficiently applied!
I really love all these other ideas. Zones are the kind've Simplification + New feature hybrid I've been wanting forever.
Sh4d0ws wrote:
I'm sure this has already been mentioned, but being able to change the player's walkabout (Especially without scripting) when they enter/exit a zone would be super cool.
I'm pretty sure you can pull this off with each-step scripting right now. Just have a check for each zone that you think the player will move into, and set the walkabout you want to use for that zone. You can also run a check for character-specific switches.
I know what I'd use this for! Making the PC slightly obscured when he enters water or tall grass or somesuch. I've seen this done in Crescent Dream long before Zones even existed.
Sheesh. Wish I understand the engine enough to contribute ideas. I would like to say, though, that the concept of restricting NPCs to zones and the ability to make roofs and other tiles disappear in certain zones sounds great. Also, more control over ambient music would definitely help create some atmospheric gameplay.
Another thing that occured to me, which is already somewhat possible with scripting, but could be made immensely simpler with zones:
Give a zone an option to alter hero and NPC speeds while said character is in that zone. Could be absolute (set all characters in zone to have speed 10) or a multiplier (set all characters in zone to have speed cut in half - this one would need some kind of rounding rule, obviously)
The thing that triggered this in my head was the swamp terrain in Zelda 2, how on the overworld map Link would move more slowly through swamps than other terrain. Thinking about the multiplier, the options seem to difficult to handle, so maybe it's better to have 2 simple, pre-ordained options:
'double speed'
1->2
2->4
4->10
5->10
10->20(?)
'half speed'
1->1
2->1
4->2
5->2
10->5
I am Srime
Give a zone an option to alter hero and NPC speeds while said character is in that zone. Could be absolute (set all characters in zone to have speed 10) or a multiplier (set all characters in zone to have speed cut in half - this one would need some kind of rounding rule, obviously)
The thing that triggered this in my head was the swamp terrain in Zelda 2, how on the overworld map Link would move more slowly through swamps than other terrain. Thinking about the multiplier, the options seem to difficult to handle, so maybe it's better to have 2 simple, pre-ordained options:
'double speed'
1->2
2->4
4->10
5->10
10->20(?)
'half speed'
1->1
2->1
4->2
5->2
10->5
I am Srime
Quote:
Switch vehicles to operate per zone!
This is a great idea. But isn't this already done by having the vehicle-NPC restricted by zone type? This could be confusing though, and I wonder if this has been tested at all. What does such a setup mean for things like allowing the vehicle to pass through walls, or mount/dismount over a wall...?
I am Srime
Sorry for the delayed reaction, I've been busy.
The plan with zone triggers is that they can be attached to zones in three ways: on entering, on exiting, and while inside, separately for NPCs and for heroes. I'd like to make the meaning of being "inside" a zone configurable per-zone. For example, if you want to change a walkabout palette to indicate being in shadow, you'd likely want the trigger to happen when you're more than halfway over the boundary line. Otherwise you might want to mimic step-on script triggers (the effect happens at the end of a 'step'). But having triggers happen at the beginning of a movement into/out of a zone is tricky. Scripts happen first-thing each tick (before all the other logic), which means that if a script is triggered during a tick (starting a step), it doesn't actually happen until the next tick (when you're already part way in a zone, and it's too late to block the movement, for example, or worse, to change the move speed).
Music would be "while inside" for heroes only. Sound effects could be enter/exit/inside (which causes looping) for heroes and npcs too.
NPCs don't need both a movement zone and an avoidance zone, only one or the other.
An "avoidance zone" which effects all NPCs ought to be set in the general map settings, not in the zone triggers page, because there need only be one. If you want to set a set which ALL NPCs avoid (say, all the doorways or other areas where they would get in the way!) you don't want to set an avoidance zone on each NPC.
Commands to suspend/resume all zone triggers, or a specific zone, definitely.
The "Neutral Zone" zone command(s) sounds like it iterates over all tiles in a zone, applying some effect to tiles/NPCs in that zone. I say most of these are better scripted by hand. Maybe something to do with change the tilemap (including setting animating tiles) would be general enough.
"Swap zones": I'd rather add "copy zone triggers," that's more flexible.
"Show Slice/Sprite":That's an interesting idea, and could be used for things like a splash when stepping in a puddle, kicking up a cloud of dust, wet footprints... However, until slices actually support animation this doesn't seem to useful.
Regarding NPC movement suggestions:
I'm not sure “Search Zone Edges” is really any different from that "Search Wall Edges" James ways he will implement some day (though maybe you didn't intend it to be). I guess three versions of this would be good: follow left walls, follow right walls, and random walls.
On the one hand, it would be odd to put this elsewhere when other zone effects are set in the zone trigger editor. On the other hand it's useful to be able to see this without checking all zones. Clearly the music triggers should be listed in both places. A menu like this showing precedence could also clearly show what happens when two of these zones overlap. Good idea.
Ah yes, Jabber requested this, and I was planning to make it the very first zone trigger to be implemented. Well, it still could be!
Definitely. And it would be great if we could make a "shadow" zone easy by automatically changing walkabout palettes when an NPC/hero enters a zone. This would be easy if the engine was true-colour, but as it is that would mean having to know which palette to change to. The graphics editors are probably the only sane places to do that. And that's a lot of complexity, but it's kind of unlikely to happen, sadly.
Sounds overly specific to me. I'd rather add better NPC movetypes. But being able to assign a script to a zone which checks whether npcs are allowed to enter on a case-by-case basis might be useful... or is also too specific?
I guess this makes a lot of sense, though I was resisting at first because zone numbers on different maps are independent.
Maaaybe. Aside from tactical RPGs, I don't really see this getting used very much. I guess that as long as the possible zone triggers are easy to understand
I guess this have more utility if pixel-based movement is added. Then any percentage speed change makes sense.
I think so too. Vehicles count as heroes, not NPCs, once you mount them so they wouldn't be restricted to the movement zone.
The plan with zone triggers is that they can be attached to zones in three ways: on entering, on exiting, and while inside, separately for NPCs and for heroes. I'd like to make the meaning of being "inside" a zone configurable per-zone. For example, if you want to change a walkabout palette to indicate being in shadow, you'd likely want the trigger to happen when you're more than halfway over the boundary line. Otherwise you might want to mimic step-on script triggers (the effect happens at the end of a 'step'). But having triggers happen at the beginning of a movement into/out of a zone is tricky. Scripts happen first-thing each tick (before all the other logic), which means that if a script is triggered during a tick (starting a step), it doesn't actually happen until the next tick (when you're already part way in a zone, and it's too late to block the movement, for example, or worse, to change the move speed).
Music would be "while inside" for heroes only. Sound effects could be enter/exit/inside (which causes looping) for heroes and npcs too.
NPCs don't need both a movement zone and an avoidance zone, only one or the other.
An "avoidance zone" which effects all NPCs ought to be set in the general map settings, not in the zone triggers page, because there need only be one. If you want to set a set which ALL NPCs avoid (say, all the doorways or other areas where they would get in the way!) you don't want to set an avoidance zone on each NPC.
Pepsi Ranger wrote:
Most of these would probably need plotscripts, or general bitsets that can support plotscripts.
Commands to suspend/resume all zone triggers, or a specific zone, definitely.
The "Neutral Zone" zone command(s) sounds like it iterates over all tiles in a zone, applying some effect to tiles/NPCs in that zone. I say most of these are better scripted by hand. Maybe something to do with change the tilemap (including setting animating tiles) would be general enough.
"Swap zones": I'd rather add "copy zone triggers," that's more flexible.
"Show Slice/Sprite":That's an interesting idea, and could be used for things like a splash when stepping in a puddle, kicking up a cloud of dust, wet footprints... However, until slices actually support animation this doesn't seem to useful.
Regarding NPC movement suggestions:
I'm not sure “Search Zone Edges” is really any different from that "Search Wall Edges" James ways he will implement some day (though maybe you didn't intend it to be). I guess three versions of this would be good: follow left walls, follow right walls, and random walls.
msw188 wrote:
Like an ambient music menu for each map:
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
On the one hand, it would be odd to put this elsewhere when other zone effects are set in the zone trigger editor. On the other hand it's useful to be able to see this without checking all zones. Clearly the music triggers should be listed in both places. A menu like this showing precedence could also clearly show what happens when two of these zones overlap. Good idea.
Mystic wrote:
I already discussed in IRC the idea of enabling/disabling layers based on zones. And James instantly realized what I was going for - getting rid of the roofs when you go into a house.
Ah yes, Jabber requested this, and I was planning to make it the very first zone trigger to be implemented. Well, it still could be!
Sh4d0ws wrote:
I'm sure this has already been mentioned, but being able to change the player's walkabout (Especially without scripting) when they enter/exit a zone would be super cool.
Definitely. And it would be great if we could make a "shadow" zone easy by automatically changing walkabout palettes when an NPC/hero enters a zone. This would be easy if the engine was true-colour, but as it is that would mean having to know which palette to change to. The graphics editors are probably the only sane places to do that. And that's a lot of complexity, but it's kind of unlikely to happen, sadly.
Sh4d0ws wrote:
An "Npc limit" for zones, which, when reached, prohibits other npcs from entering, would be a pretty sweet way to controls NPC density in certain areas
Sounds overly specific to me. I'd rather add better NPC movetypes. But being able to assign a script to a zone which checks whether npcs are allowed to enter on a case-by-case basis might be useful... or is also too specific?
Sh4d0ws wrote:
Oh, also, a "default zone" that you can attach to tiles (Think default passability here) would be a great way to make general uses for zones
I guess this makes a lot of sense, though I was resisting at first because zone numbers on different maps are independent.
msw188 wrote:
Give a zone an option to alter hero and NPC speeds while said character is in that zone.
Maaaybe. Aside from tactical RPGs, I don't really see this getting used very much. I guess that as long as the possible zone triggers are easy to understand
I guess this have more utility if pixel-based movement is added. Then any percentage speed change makes sense.
msw188 wrote:
This is a great idea. But isn't this already done by having the vehicle-NPC restricted by zone type?
I think so too. Vehicles count as heroes, not NPCs, once you mount them so they wouldn't be restricted to the movement zone.
This all sounds very exciting. I only have one bone to pick. I agree that "Avoidance" zones are unneeded, but I still think they would be helpful. It simply allows the author to think about zones in a separate fashion, and it might make construction much simpler as well. Imagine NPCs in a town that are supposed to be freely allowed to wander around outside, but NOT to block doorways. This is much easier for the author to construct with a couple of small avoidance zones than it is with one giant movement zone.
I suppose this could be accomplished with a global avoidance zone, but authors might like to "think" about zones as barriers rather than as areas. It's kind of the same thing as the new elements superseding the enemy types. Elements alone are good enough to handle anything the enemy types could have, but they cannot be "thought of" in the same way. The difference to me is that having separate menues for elements and enemy types might be overcomplicated, while having a movement zone and an avoidance zone for each NPC seems a nice and clean way to give authors this option.
I am Srime
I suppose this could be accomplished with a global avoidance zone, but authors might like to "think" about zones as barriers rather than as areas. It's kind of the same thing as the new elements superseding the enemy types. Elements alone are good enough to handle anything the enemy types could have, but they cannot be "thought of" in the same way. The difference to me is that having separate menues for elements and enemy types might be overcomplicated, while having a movement zone and an avoidance zone for each NPC seems a nice and clean way to give authors this option.
I am Srime
Errr... I think you misread what I wrote. I only said that giving an NPC both a movement zone and an avoidance zone seemed unnecessary... though in some cases it wouldn't be redundant, such as sharing a movment zone between multiple NPCs, and restricting one of them further by also giving it an avoidance zone.
Also, I just remembered that I wanted the global avoidance zone to merely be a default, and you ought to be able to set a default movement zone too. So I see two options:
First:
In General Map Settings:
Default NPC Movement Zone OR Avoidance Zone OR None
In NPC Settings:
Movement Zone OR Avoidance Zone OR Default OR None
Second:
In General Map Settings:
Default NPC Movement Zone OR None
Default NPC Avoidance Zone OR None
In NPC Settings:
Movement Zone OR Default OR None
Avoidance Zone OR Default OR None
Also, I just remembered that I wanted the global avoidance zone to merely be a default, and you ought to be able to set a default movement zone too. So I see two options:
First:
In General Map Settings:
Default NPC Movement Zone OR Avoidance Zone OR None
In NPC Settings:
Movement Zone OR Avoidance Zone OR Default OR None
Second:
In General Map Settings:
Default NPC Movement Zone OR None
Default NPC Avoidance Zone OR None
In NPC Settings:
Movement Zone OR Default OR None
Avoidance Zone OR Default OR None
When I first proposed antizones (or avoidance zones, as we're calling them), I was thinking of them in terms of the second option. The first option is a little too restrictive.
I really like this idea for the simple reason that scripting music changes with zones is a pain. With most functions, you can constantly refresh conditions. But with music, a constant refresh means starting the song over every few ticks, making it impossible to run. So, right now, regulations with global variables are the only way to prevent wrecking music cues in zones if you're using zones to check and play them. With this plan, you only need to trigger the song change once, once the zone is entered.
I'm gonna have to defend this idea. If Entrepreneur: The Beginning inspired the development of zones, then I think it can also convince you (TMC) how relevant this "zone density" idea can be.
Think of the customers who walk out into the "cafe" area after buying coffee. Let's say that I have them sitting down on benches or something. If I've already got four people sitting on benches and the fifth person has nowhere to sit, wouldn't I want the first customer to get off his butt and throw out his coffee so that the next person can sit down to enjoy his cup?
Or, what if they're still standing around, but they're blocking another customer's movement path because there are too many in the zone? I'd want somebody to leave to make room for the next person.
I agree that this feature probably wouldn't be needed for the majority of traditional RPGs, but I'm sure anything that Spoonweaver makes, or any game that employs a puzzle element or management element would benefit from a feature like this. It's certainly worth reconsidering.
Place Obligatory Signature Here
Quote:
Like an ambient music menu for each map:
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
etc
Default: -song-
Zone 1: -another song-
Zone 2: -silence-
Zone 3: (use default)
Zone 4: (use default)
etc
I really like this idea for the simple reason that scripting music changes with zones is a pain. With most functions, you can constantly refresh conditions. But with music, a constant refresh means starting the song over every few ticks, making it impossible to run. So, right now, regulations with global variables are the only way to prevent wrecking music cues in zones if you're using zones to check and play them. With this plan, you only need to trigger the song change once, once the zone is entered.
Quote:
An "Npc limit" for zones, which, when reached, prohibits other npcs from entering, would be a pretty sweet way to controls NPC density in certain areas. There's nothing worse than all your NPCs crowding up an already-bottlenecked portions of the map, you know.
I'm gonna have to defend this idea. If Entrepreneur: The Beginning inspired the development of zones, then I think it can also convince you (TMC) how relevant this "zone density" idea can be.
Think of the customers who walk out into the "cafe" area after buying coffee. Let's say that I have them sitting down on benches or something. If I've already got four people sitting on benches and the fifth person has nowhere to sit, wouldn't I want the first customer to get off his butt and throw out his coffee so that the next person can sit down to enjoy his cup?
Or, what if they're still standing around, but they're blocking another customer's movement path because there are too many in the zone? I'd want somebody to leave to make room for the next person.
I agree that this feature probably wouldn't be needed for the majority of traditional RPGs, but I'm sure anything that Spoonweaver makes, or any game that employs a puzzle element or management element would benefit from a feature like this. It's certainly worth reconsidering.
Place Obligatory Signature Here
I'm sorry TMC, when I read
in my mind I took that to mean you didn't want to add the option of an avoidance zone, since there was already an option for a movement zone.
While I don't think having only one or the other would be too restrictive, I actually think it will look cleaner to have both options rather than toggling them. As an author, it'd be easier for me to keep straight how I'm using some zones as areas, and others as barriers, if I could see both options at once, even if one of them is usually empty.
I am Srime
Quote:
NPCs don't need both a movement zone and an avoidance zone, only one or the other.
in my mind I took that to mean you didn't want to add the option of an avoidance zone, since there was already an option for a movement zone.
While I don't think having only one or the other would be too restrictive, I actually think it will look cleaner to have both options rather than toggling them. As an author, it'd be easier for me to keep straight how I'm using some zones as areas, and others as barriers, if I could see both options at once, even if one of them is usually empty.
I am Srime



