ID:157624
 
So I have some mini-games within my game, but it uses a same portion of the map. I was going to allow people to share this portion of the map by making only objects that were being used for them visible to them. I tried using image objects, the only issue is that when the objects move, they don't include directions.

I've already asked this question like twice now, is there a way to do it? If not, someone just say so?
You should probably just make your mini-game map a bunch of identically sized areas, surrounded by a dense and opaque black border. Then just use a datum or some other suitable structure for maintaining which areas are currently being used, the location of the start point you'd put the player, etc etc.
In response to Stephen001
I was thinking about that, but its a pretty big map..Aswell as their are gonna be different maps/arenas for this mini game, so it ends up as A LOT of map space...
In response to Valen45
Still seems easier than dealing with users bumping into each others invisible mini-game objects, each other etc.
In response to Stephen001
There is no bumping. Its more of a Castle/Towers like game.
In response to Valen45
Well, any interaction then. Entered(), take your pick. It's not simply a matter of visually hiding the objects.
In response to Stephen001
Yes it is..The towers would only send attacks that to the opposing enemies that belongs to the player. All I'd have to do in the check is check the owner of the enemy. Thats a lot easier than building multiple maps, then making a way of checking which one is in use.
In response to Valen45
Presumably towers also need selective density, as do enemies. You do want to place other player's towers on top of each other, but not the same player's tower's. Enemies moving isn't too bad, but again needs checks. This is a pervasive change, and unless your mini-game objects happen to be a sub-class of normal objects (not a bad approach I guess), changes to mini-game logic can introduce bugs into the game proper. It's just not an approach I recommend.


Compare this to:

minigame_map
var/area/minigame/map_area

New(var/area/minigame/some_area)
src.map_area = some_area

minigame_map_controller
var/list/free_maps = new()
var/list/used_maps = new()

proc/find_free_map()
if (free_maps.len > 0)
var/minigame_map/M = free_maps[1]
free_maps -= M
used_maps += M
return M
return null
// Error case, ran out of maps. Could clone Z-level to get more.


As just a skeleton example.
In response to Stephen001
I put 18 on one z layer, that should be enough. If they run out, I'll just have a busy, try again later message.