# Multi-tile monsters

is there any thoughts or plans to make monster’s tiles be size based?

what i mean is have larger monsters be multiple tiles?

It always seems weird to me that say, the tank-bot is only 1 tile big, while a regular car is what? 4x6 or something?

I was just wondering if something like that has been talked about, I am also a programmer, not too familiar with c++ but I’d love to learn a bit… and I’m interested in trying to dabble in some fields that I could be of some use in.

This is one of those ideas that gets suggested a lot, and seems like it wouldn’t be that difficult to do, but is in truth both fiendishly difficult and requires a ton of work. Basically you would need to rewrite pretty much the entire path finding code and a lot of the map code, as well as catch a huge amount of various edge cases.

Now while box creatures are out, you might be able to create a “snake” type creature where the end just follows the beginning without too much work comparatively (though it would still be a rather large amount). It’s just a lot of work for very little actual reward.

One alternative path for some things (this only works for more goo-like individually damage able monsters) would be to create them in bunches and then have them all group up and move together (similar to the breathers). The end result would be very similar to a single large monster, but wouldn’t take near as much work, just a few path finding tweaks.

It’s actually not necessary - I think. A square ingame seems to be like in Dwarf Fortress, its a ‘place’ rather then a fixed value. I once tried to calculate the Surface Area with the Vehicles, for example:

A Usual Car in CDDA is 6x4 (LxW) squares. Then I looked at a few Car measurements and took somewhat general values of 4,5m x 1,8m ; which would mean that 1 square would be between 75cm² and 45cm² (450cm/6 = 75cm, 180cm/4 = 45) - I simply then figured that around 50cm² would be a good estimate - but that’s not enough for creatures like the jabberwock, cows, amoebic molds or even stuff like beds (in-car as well as current in-game. A normal bed is around 2m in length, some are even longer, so you’d need 4 bed-squares in order to lie down comfortably.)

I was figuring it would be something at least talked about, but good to know its harder than it seems. Path finding and such makes sense of course.

There is more than scale involved in my thoughts however, it would be quite interesting to see say… a tank bot get say, its tracks disabled, or engine, or something to that effect, meaning you could approach monsters you usually just run from, with a bit of precision targeting, could be disabled, or taken out. Just a thought, but i feel it’d be interesting to allow certain monsters, especially robots, be modular much like vehicles, even the ability to disassemble a robot corpse for vehicle parts and/or weapons

I’m not so sure I want to try to delve into something so complex in my first forray, so we’ll see but thanks for the info!

I’m not a very good programmer, but don’t monsters have different attacks and move speeds and what not? Couldn’t we incorporate a 3x3 tileset where move speed is affected my total number of treads. Attacks depending on which tiles aren’t destroyed, and since it’s a tank just let it path through walls?

Or am I oversimplifying it?

Yes
Adjusting the stats isn’t hard, it’s making the monster able to move around in any kind of sensical way that’s going to be difficult. Although TBH we COULD just cheat and make it something that doesn’t have to worry about pathing because it can destroy anything that gets in its way.

What about holes? Especially holes big enough to contain it

What about holes? Especially holes big enough to contain it[/quote]

REALLY cheat, and give it hoverjets so it can fly over holes.

yeah, i’m figuring you’ve been suggesting to make a say a 3x3 tank into 9 individual 1-tile monsters. the problem would be to sync their movement, and trigger results that happen when they move… i haven’t looked at the code, but it’s most likely require a “sync” function or something, which basically makes all parts flags reflect uni-formally with the rest. This would be like a pre-update update…

The easiest of which would be simply updating all parts so that they move with the whole in the right location, (ie: the top right tile stays top right while it turns, etc)

in a more complex sense, it would need to sync effects, like if it is colliding with something, all of the parts should know. If one part is destroyed, it could effect other parts. etc

the big questions would be if that would significantly effect performance

We already have an example of something that keeps a bunch of pieces synched while moving, the vehicle code, that part isn’t too hard. The navigation issue is a known problem with known solutions, though they’re for the most part a bit mor sophisticated than most of the things that happen in the game.
mostly it boils down to a lot of work.

This pretty much leads down to getting NPCs to drive, which seems like it would be alot of fun to see them crash.

To me this seems the most effective solution, but as mentioned by those wiser in code than I it’s almost certainly a good bit of finicky AI/pathfinding work.

I’d also warrant that it’s probably wiser to wait for proper z-levels to manifest before someone tries to figure out a vehicular pathfinder that will almost certainly break in the 2d/3d transition.

Still, once NPCs could drive it’s just a question of properly spawning a ‘brain’ NPC class into vehicular bodies of meat and bone frames (or the more standard metal and plastic if robotic.)

Once you figure out how to program driving AI’s, you can also figure out how to have a proper vehicle enemy. Tank bots could become actual tank vehicles and be broken apart and take a LOT more work to deal with - but you can move around and climb on top of a tank with, say, its treads busted. (Granted its turret can still move but you can sit under the barrel.)

I love the thought. But, it makes me think… and fear. What are the chances that we’ll run into mutated giant zombies?

A Usual Car in CDDA is 6x4 (LxW) squares. Then I looked at a few Car measurements and took somewhat general values of 4,5m x 1,8m ; which would mean that 1 square would be between 75cm² and 45cm² (450cm/6 = 75cm, 180cm/4 = 45) - I simply then figured that around 50cm² would be a good estimate - but that's not enough for creatures like the jabberwock, cows, amoebic molds or even stuff like beds (in-car as well as current in-game. A normal bed is around 2m in length, some are even longer, so you'd need 4 bed-squares in order to lie down comfortably.)
I don't know where you got your constants. Actual tile length/width seems to be far more higher than mere square centimeters. Just an example: I accelerated a car to 73 km/h (which is 20.2(7)8 m/s) and skipped a turn. According to watches 6 seconds has passed. I went forward 4~5 tiles. This means I passed ~122 meters. If we divide it by 5~6 we'll get from 24.4 meters to 20 1/3 meters. So it means one tile is about 22 meters in length and width. Now imagine just how Alice-y Cataclysm DDA world is.

That would mean that your average bike is over 60 meters long.

1 square Meter for a tile is a non-precise rule of thumb. The speeds of the vehicles are no more than vague indicators to give you a feel for how fast you’re going. The two are not and probably never will be consistent with each other.

1 square Meter for a tile is a non-precise rule of thumb. The speeds of the vehicles are no more than vague indicators to give you a feel for how fast you're going. The two are not and probably never will be consistent with each other.
Can't imagine just how slow should a character be to take 6 seconds to cross 1 meter.

Actually one of my far back-burner projects is changing the time per turn to 1 second instead of 6, I think that’ll put move speed in a decent ballpark.

How’s this looking? You’ve done vehicles, lets pump for monsters. Another good use of z-levels, even.