Digging Tunnels In Map

Started by
8 comments, last by amrazek111 10 years, 9 months ago

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.

Advertisement
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.

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.

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.

-------R.I.P.-------

Selective Quote

~Too Late - Too Soon~

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'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.

-------R.I.P.-------

Selective Quote

~Too Late - Too Soon~

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!

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

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

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]

busyants.png

I went with two layers rather than blitting the dug texture in so that the "cover" dirt would still be able to occlude some objects in the scene, giving the appearance of depth and eliminating the worry that the ant sprite would have to fit entirely within the confines of the tunnel at all times.

[/spoiler]

This topic is closed to new replies.

Advertisement