In response to Xooxer
Like the desert in Ocarina of Time, wander off the path and get sent back to the start.

One method I use for making the edge of the map more entertaining without using perspective is by throwing some TURF_LAYER-1 screen objects on the screen. Those will show instead of the black edges of the map. They also look cooler when you move the mob =P.
In response to Xooxer
Similar to Star Wars Battlefront II. In that game, if you walk too far off the map, you either get killed or teleported back to start; I forget which. In a military game, they could get shot for trying to go AWOL.
I've thought for a long time it'd be interesting to allow Z levels to "connect". It does raise some questions though:

  • Should view(), range(), get_dir(), etc. be impacted by this so verbs can rely on them?
  • What notation would be used for connecting/disconnecting maps? I.e., how would this be done in the DM language?

    And of course, there is a problem that one-way connections like in Zelda's lost woods (mentioned elsewhere on this thread) would be impossible. The problem isn't so much that you couldn't connect a map to itself in a loop, but you couldn't do it one-way. If going west off a given z level loops you back around but going east takes you to a new area, then as soon as you cross the western threshold you'll suddenly see a new area on your right. So you'd lose some flexibility there. You could, however, compensate by allowing for interesting features like casting a map tile "adrift" whenever no players are near the edges of that map or the adjoining maps, and then reconnecting when a similar situation exists elsewhere--that potentially makes the woods more random though.

    Overall though I've always felt a feature like this would greatly enhance BYOND's ability to handle massive open-world RPGs, because you could swap maps in and out but still maintain an appearance of a seamlessly connected world. The main thing I wonder about is how, on a DM language level, to change the connections between Z levels at runtime.

    Lummox JR
In response to Lummox JR
/map objects attached to a Z level with directional references to other map objects attached to other Z levels.
In response to Xooxer
I was thinking that yeah, essentially oview() and all the viewing procs would be affected by it as well. I have no idea how the BYOND code is set up, so this is more of a stab in the dark, but could you make something in the map itself? Like, when you make a new map you see
X <n>
Y <n>
Z <n>
Wrap [ ]
or, something like that?
In response to Lummox JR
As Xooxer mentioned, adding /map objects would be a very, very nice addition to the language. Especially if that included map handling, such as saving and loading entire maps and sections of maps.

[Edit]

In addition to this, it would incredibly awesome (if the /map object were added) if it would be possible to have some sort of layering effect with the maps. Possibly just a layer variable, and empty spaces on a map of a higher layer will show maps of a lower layer. This could be used to produce very, very cool effects for games.
In response to Popisfizzy
Popisfizzy wrote:
As Xooxer mentioned, adding /map objects would be a very, very nice addition to the language. Especially if that included map handling, such as saving and loading entire maps and sections of maps.

Ignore my previous statement, I side with these two.
In response to Lummox JR
Well one thing I can think of doing is adding in an extra set of dimensions for the map size like panel height and panel width and have them represent the number of z levels in each direction. So for example if you set the following variable
x=150
y=150
pheight=3
pwidth=3

it would give you a map of size 150x150x9 and it would set it up something like this

789
456
123

Then you could use the get_dir proc and others and would know exactly which z levels are next to which. and also have in looping from 3-1 and 1-3 as well as 3-9 9-3 etc.

The proc could then be set up to know which z panels are in which direction based on the value of z.

Im doing a similar process with my mail system and the time it takes to get to the players based on the z and there distance. Theres no wrap around but it could be handled fairly easy.
I once developed a system to simulate this. It worked primarily off of a hacked and slashed version of our own LummoxJR's swapmaps, and some inspiration from (might have been nadrew or gug's) multi-tile mob demo.

Essentially, I made the map floor(view_width/2)*2 tiles wider than the target x dimension, and floor(view_height/2)*2 tiles wider than the target y dimension. Next, when loading a new region, I'd copy the borders of that region into that leftover edge. I made each area a teleport on enter, and then created what I called "shadow" atoms in place of each atom within that targeted buffer.

I wrote these shadow atoms to change their names, icons, move, delete, etc. when their parent object did, and to receive input exactly as their parent, and relay the input.

It was a lot of work, but the trickery was pretty much flawless.
In response to Ter13
Ter13 wrote:
I once developed a system to simulate this. It worked primarily off of a hacked and slashed version of our own LummoxJR's swapmaps, and some inspiration from (might have been nadrew or gug's) multi-tile mob demo.

Essentially, I made the map floor(view_width/2)*2 tiles wider than the target x dimension, and floor(view_height/2)*2 tiles wider than the target y dimension. Next, when loading a new region, I'd copy the borders of that region into that leftover edge. I made each area a teleport on enter, and then created what I called "shadow" atoms in place of each atom within that targeted buffer.

I wrote these shadow atoms to change their names, icons, move, delete, etc. when their parent object did, and to receive input exactly as their parent, and relay the input.

It was a lot of work, but the trickery was pretty much flawless.

Could you, perhaps, post the library? I'm interested in seeing how you did that.

Thanks in advance.
In response to Lummox JR
Lummox JR wrote:
  • Should view(), range(), get_dir(), etc. be impacted by this so verbs can rely on them?

    Yes, but only when the function is used. For example, if a cup is at 10,1,2 and you're at 1,1,1, you souldn't be able to take it if z 2 isn't west of z 1. Stuff like that. BTW, about the dummy objects, I have no way of working around that, but one possible thing would be to allow to see certain ranges in the map. Like, if the map looks like:

    9999--9999
    8888--8888
    7777--7777
    6666--6666
    5555--5555
    4444--4444
    3333--3333
    2222--2222
    1111--1111
    0000--0000

    And you can see 1-5,1-5,1 at 6-10,6-10; you can see 6-10,1-10,1 at 1-5,1-10, and you can see 1-5,1-5,1 (yes, again) at 6-10,1-5. You'd see this:

    -99994444-
    -88883333-
    -77772222-
    -66661111-
    -55550000-
    -44444444-
    -33333333-
    -22222222-
    -11111111-
    -00000000-

    That's just to deminstrate, since I can't explain now. Also, this isn't the only thing it'd be useful for (come to thing of it, it wouldn't be much better than the current solution), but it'd let you, say, keep an key on something else while you're moving around (say, like, look at a camera in your top left corner while still seeing around you.) Come to think of it, multiple maps (with, like, multiple client.eyes or whatever) would be more useful.

    Thanks in advance.
In response to Guy Hendricks
That's just to deminstrate, since I can't explain now. Also, this isn't the only thing it'd be useful for (come to thing of it, it wouldn't be much better than the current solution), but it'd let you, say, keep an key on something else while you're moving around (say, like, look at a camera in your top left corner while still seeing around you.) Come to think of it, multiple maps (with, like, multiple client.eyes or whatever) would be more useful.

Not to burst your bubble, but Lummox has been saying that multiple map controls will be highly unlikely in the future.
In response to DivineTraveller
DivineTraveller wrote:
That's just to demonstrate, since I can't explain now. Also, this isn't the only thing it'd be useful for (come to thing of it, it wouldn't be much better than the current solution), but it'd let you, say, keep an key on something else while you're moving around (say, like, look at a camera in your top left corner while still seeing around you.) Come to think of it, multiple maps (with, like, multiple client.eyes or whatever) would be more useful.

Not to burst your bubble, but Lummox has been saying that multiple map controls will be highly unlikely in the future.

I know. But it'd be AWESOME! Ha Ha Ha Ha!! Anyway... Point is, it'd still be useful. Course, that's slightly off-topic, so yeah.
Page: 1 2