Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Digging Tunnels In Map


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
9 replies to this topic

#1 ShadowMan777   Members   -  Reputation: 361

Like
0Likes
Like

Posted 24 June 2013 - 11:55 PM

Hello. I am trying to make a game that has ants digging on a map, and I am having issues with designing how the map will be programmed. I would like the ants to be able to dig tunnels anywhere in solid ground, and I cannot think of a good way to design this. Does anyone have any guidance or articles that they could point me to? Thank you very much.



Sponsor:

#2 weeska   Members   -  Reputation: 255

Like
0Likes
Like

Posted 25 June 2013 - 04:04 AM

That would depend on the type of map, i.e. its granularity and dimension. You could use an array big enough to fit your needs for two-dimensional maps. If it's 3d it gets more complicated and you should at leasst use some sparse grid.

#3 ShadowMan777   Members   -  Reputation: 361

Like
0Likes
Like

Posted 25 June 2013 - 06:28 PM

Sorry I forgot it is a 2D map. I guess I am trying to think of how to setup the collision mesh. I am basically trying to set up a square map, and be able to draw a line with a mouse, and have that be a tunnel that has collision points around it so a unit can move through it.



#4 Khaiy   Crossbones+   -  Reputation: 1342

Like
0Likes
Like

Posted 25 June 2013 - 06:42 PM

I may not be picturing what you want correctly, but couldn't you have the map be an array or list with the "ground" tiles designated as impassable? Then when a line is drawn the "map units" selected have their designation switched to passable, in addition to changing color so the tunnel is visible. That way all the code for ants interacting with the ground stays intact and tunnels function just like an ant moving above ground.



#5 ShadowMan777   Members   -  Reputation: 361

Like
0Likes
Like

Posted 25 June 2013 - 07:17 PM

It can't be tiles because you can dig tunnels at any angle, basically any curve you could create with a mouse needs to be tunnelable, and you wouldnt be able to do smooth curbed tunnels with tiles.


Edited by ShadowMan777, 25 June 2013 - 07:17 PM.


#6 Khaiy   Crossbones+   -  Reputation: 1342

Like
1Likes
Like

Posted 25 June 2013 - 08:23 PM

It can't be tiles because you can dig tunnels at any angle, basically any curve you could create with a mouse needs to be tunnelable, and you wouldnt be able to do smooth curbed tunnels with tiles.

 

It can still be tiles, provided that you have enough of them (or you compromise on the smoothness of the tunnel, though I imagine you don't want this). If you have 100 tiles for the width of a typical tunnel you could make pretty curvy paths. If not curvy enough, just make each ground "tile" smaller. The only limit to the possible curvature would be the smallest particle you can render.



#7 ShadowMan777   Members   -  Reputation: 361

Like
0Likes
Like

Posted 25 June 2013 - 09:50 PM

So basically, the user would draw a curved line over the map, and based on what the curve looks like over a given tile, you would use that tile for that part of the line. That is a pretty good idea, though it would take a decent amount of tiles to be able to have a wide enough range of curves I suppose. Thanks for the idea!



#8 BloodyEpi   Members   -  Reputation: 647

Like
0Likes
Like

Posted 27 June 2013 - 09:56 AM

Have a look at this example in AS3, its pretty much the tiles idea, but with a bitmap.



#9 Waterlimon   Crossbones+   -  Reputation: 2601

Like
1Likes
Like

Posted 27 June 2013 - 10:27 AM

You could:

-Use a lot of wedges for a grid to make smooth tunnels

-Use a quadtree to significantly reduce memory required to allow for denser grid

-Use a not-so-dense grid but apply some GPU magic to make it appear smooth (make each cell have "density" instead of solid/empty. On GPU, draw the map onto texture so the values between cells are interpolated. Render all pixels where the interpolated depth is high enough as solid and rest as empty) though that would be difficult to implement if you dont already have experience doing GPU stuff.

-Just render the tunnels on top of solid land, instead of cutting the land away. Like if you were making a game over water and you must make pathways to walk over the water, and prevented the player from stepping onto water) This would also allow for a more graph like representation of the tunnels for pathfinding and such.


o3o


#10 amrazek111   Members   -  Reputation: 693

Like
0Likes
Like

Posted 28 June 2013 - 01:28 AM

Funnily enough I ran into this exact problem (and I mean exact) some time back.  Tunnels were represented by a connected graph.  The map itself was a plane made up by a fairly dense grid of vertices.  When a tunnel was added, I swept along the path from origin node to the new node, deforming the plane's vertices in a half-cylinder with a touch of randomness to avoid perfectly smooth walls and with a taper as it reached the end.  This was done gradually as ants arrived at the "dig" site to "grab" a small piece of dirt to haul it to the surface.

 

In my case I didn't need a collision mesh as ants would always take paths connected by nodes and never ventured outside of those paths.  You could create one as you constructed tunnels fairly easily though.

 

If you're looking for a two-dimensional solution, one easy way (and the way I started out initially with HGE before switching to Ogre3D) is to create two layers.  One layer represents "dug" tunnels, the other a "cover" layer showing dirt.  As you create tunnels, erase parts of the cover so that the bottom layer shows though.  I've actually got a screenshot of that version:

Spoiler





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS