HeroEngine Forums
Welcome, Guest. Please login or Register for HeroCloud Account.

Author Topic: [Resolved] Taking part of the "world" and making it an "instance"  (Read 1106 times)

Alex

  • General Accounts
  • *
  • Posts: 6
    • View Profile

If anyone is familiar with City of Heroes, you'll probably understand what I'm asking.

I would like to, effectively, recycle "public" areas of our game world as locations for instanced missions, with artificial barriers.

As an example: We are planning a starter tutorial area that has a bunch of buildings and a dock; no enemies exist here, as your character learns the basic story, movement and combat controls, and interacts with NPCs.  You can explore the dock and beach, and everything, normally, without risk.

Towards the end of the tutorial though, you're informed by an NPC that you've finished your training just in time, because there are monsters coming out of the sea by the docks.  You accept the quest, go to the gate for the docks and click something, and it shunts you into a smaller area that is just the beach and docks, and now the dock gates are shut and padlocked until you finish fighting off the enemies.  It's the exact same docks/beach you can explore outside of the mission, just you can't leave until you're done.

tl;dr What I'm asking is: Can we make a larger area, populate it with buildings and stuff, then chop off a chunk for instanced missions?  Is this doable?
« Last Edit: Oct 31, 12, 04:15:09 PM by HE-Cooper »
Logged

HE-JAY

  • HeroEngine
  • *****
  • Posts: 122
    • View Profile
Re: Taking part of the "world" and making it an "instance"
« Reply #1 on: Jun 29, 11, 01:37:35 PM »

There are certainly tools available to create clumps of assets which you can then import into other areas in order to give the illusion that the player is in a subset of the parent area, but the kind of functionality you're suggesting implies that we want to programmatically (and on-the-fly) chop up and recombine areas to generate instances whose geometry (and potentially other data) differs from the 'parent' instance in some small (or large) way. In practice, this would be highly inefficient, as we'd have to generate new area .dat files, stream them to the user, programmatically alter geometry and other data such that the area acquires the attributes that it needs in order to function properly in the new instance... etc.

You do have several options available, however (and I'm sure there are others beyond the ones I'll list):
  • You can duplicate some of the 'parent' area's geometry (tools do exist in-engine to create asset groups that can be added to the asset library and imported into a new area), then add this to a new area which you can instance.
  • You can instance the entire common area and allow many groups of players to undertake missions (using our CoH example) in different regions of the city/area. Each player or group of players might exist in their own spatial awareness system, and each would be oblivious to the fact that there are others running around outside in the same area 'just out of sight'
  • You can implement (similar to the above option) a type of 'phasing' (as it tends to be called these days) where players in a particular segment of the storyline are shifted to another awareness system and their movement or actions are influenced/restricted to fit their new environment. Using this method, you could dynamically replace the open gate with a closed gate and enforce restricted movement while introducing mobs and other entities to the player.

In short - the precise functionality you're describing is not present, but there are simple ways to create the same net result.
Logged

Alex

  • General Accounts
  • *
  • Posts: 6
    • View Profile
Re: Taking part of the "world" and making it an "instance"
« Reply #2 on: Jun 29, 11, 05:30:08 PM »

Thanks for the (very fast) feedback.

  • You can implement (similar to the above option) a type of 'phasing' (as it tends to be called these days) where players in a particular segment of the storyline are shifted to another awareness system and their movement or actions are influenced/restricted to fit their new environment. Using this method, you could dynamically replace the open gate with a closed gate and enforce restricted movement while introducing mobs and other entities to the player.

is probably what we'll attempt first.
Logged