Revised friendliness system

Moderator: Graf Zahl

User avatar
Epoch
Posts: 69
Joined: Sat Nov 05, 2005 14:38
Location: Somewhere

Revised friendliness system

Post by Epoch »

I have a complex and somewhat long-winded idea:
First, friendliness system should be altered so that monsters with the friendly flag never target or fire at friendly targets, it is annoyingto have newly spawned friendlies attack other friendlies when all the enemies have died.
Second, a friendliness transfer system for missiles, and a system for friendly monsters to check if missiles hitting them are "FRIENDLY", and to not take damage (or go to pain) if they are.
As a side note, a +HOSTILE flag would be useful to make monsters that attack friendly monsters automatically, like in MBF.
This would be rather complex, but with the MBF source out it shouldn't be too difficult.

EDIT: Okay, I admit, it would be insanely difficult to implement a system like that.
User avatar
DoomRater
Posts: 397
Joined: Tue Jul 19, 2005 4:14
Location: Programmer's Room, talking to Will Harvey

Post by DoomRater »

Any system that causes monsters that are on different sides to attack the closest thing to them that matches the TID they're supposed to be hating would be nice. They seem to attack one particular target until it dies, rather than targeting a new, closer enemy. Highly annoying.
User avatar
Graf Zahl
GZDoom Developer
GZDoom Developer
Posts: 7148
Joined: Wed Jul 20, 2005 9:48
Location: Germany

Post by Graf Zahl »

DoomRater wrote: They seem to attack one particular target until it dies, rather than targeting a new, closer enemy. Highly annoying.

That's how Doom's AI works. But for friendlies it should be improved. I already added some MBF code to improve it but more could definitely be done.
User avatar
Phobus
Posts: 227
Joined: Sat Sep 03, 2005 11:48
Location: Orpington, Kent, England

Post by Phobus »

Am I correct in saying that quick target switches are already possible?

+Quicktoretaliate makes monsters attack the last thing that hit it, and that works with friendlies and thing hate, so that's a simple way to circumvent the current AI, though it's not particularly practical on all monsters, particularly as they can already switch targets depending on what monster has dealt them the most damage.
User avatar
MartinHowe
Posts: 154
Joined: Tue Aug 30, 2005 22:07
Location: East Suffolk (UK)

Post by MartinHowe »

In this article,
Graf Zahl wrote:Interesting. :wink:
I don't suppose that idea (filter scripting and the associated flags) could in any way be useful for this sort of thing?
User avatar
MartinHowe
Posts: 154
Joined: Tue Aug 30, 2005 22:07
Location: East Suffolk (UK)

Post by MartinHowe »

BUMP! ATTN: Graf Zahl (please)

I have a project in the works which would look MUCH better if there were some way to control which specific monsters will attack which specific other ones. Graf, can we please have from you a ballpark figure as to roughly what your thoughts on the matter are. For example, "never", "waiting on Doomscript", "no idea how yet, but would like to eventually", etc. It really is frustrating to not know what will happen, especially as this is, IMO, a much-needed and long-overdue feature in all DOOM games.

What is needed is something that (a) avoids the need for something like filter scripting in all except the most compicated scenarios (b) should (hopefully :) ) be reasonably quick to implement and (c) is tabular in nature so that it could simply be overridden with DoomScript when that eventually turns up. I really think this is too important to WFDS, as DoomScript (or whatever it is eventually called) is likely to be vapourware for a few more years yet :)

How about the following settings which would be used whenever a DECORATE monster is considering whether to attack something or not:

Code: Select all

....
+ISMONSTER
Disposition
{
    BaronOfHell
    {
        Friend  10%
        Enemy   20%
        Ignore  30%
        Grovel   5%
    }

    Archvile
    {
        Friend 100%
    }

    SomeCustomHellNoble
    {
        Enemy  100%
    }

    TID:249
    {
        Enemy    5%
        Ignore  95%
    }

    Default
    {
        Default 50%
        Ignore  50%
    }
}
....   
This monster would do the following:

Code: Select all

* be a FRIEND to Barons with 10% probablility
* be an ENEMY to Barons with 20% probablility
* ignore Barons completely (unless attacked by) with 30% probablility
* ignore Barons completely (EVEN IF attacked by) with 5% probablility
The rest of the time it would do whatever the default value would be for this DECORATE monster, given it's friendliness flag. There could also be a pseudo-class "Default", as in the above example.

This monster would also be a FRIEND of archviles, and always be an enemy to SomeCustomHellNoble. For whatever actor has TID 249, it would be an enemy to that person with 5% probability and ignore it with 95% probability. For any class not mentioned, this DECORATE monster would have the default behaviour (given its friendliness flag).

As a related note, DECORATE flags to explicitly control what a monster does when it runs out of enemies (idle, walk-on-the-spot, or wander), irrespective of whether it is a friendly monster or not, are sorely needed. Alternatively, this could be a new DECORATE property that names a state to jump to. Recall that despite the previous discussions on the matter this CANNOT be done by state logic alone, as some of the transitions involved happen hidden deep inside the engine and are NOT exposed to the DECORATE or ACS programmer.

What do you think? It would really really help me if you could at least state your intentions regarding these two things.

EDIT: Added suggestion for TID trigger
User avatar
DoomRater
Posts: 397
Joined: Tue Jul 19, 2005 4:14
Location: Programmer's Room, talking to Will Harvey

Post by DoomRater »

MartinHowe wrote:As a related note, DECORATE flags to explicitly control what a monster does when it runs out of enemies (idle, walk-on-the-spot, or wander), irrespective of whether it is a friendly monster or not, are sorely needed. Alternatively, this could be a new DECORATE property that names a state to jump to. Recall that despite the previous discussions on the matter this CANNOT be done by state logic alone, as some of the transitions involved happen hidden deep inside the engine and are NOT exposed to the DECORATE or ACS programmer.
Foreverhood would deeply benefit from this.
User avatar
BlazingPhoenix
Posts: 488
Joined: Sun Aug 28, 2005 5:11

Post by BlazingPhoenix »

Maybe even add a function to control friendlies?
User avatar
Eriance
Posts: 150
Joined: Wed Mar 29, 2006 19:36
Location: Everywhere and nowhere

Post by Eriance »

I thought friedly monsters didn't attack one another. I've yet to see my summoned friendlies attack each other.
User avatar
Epoch
Posts: 69
Joined: Sat Nov 05, 2005 14:38
Location: Somewhere

Post by Epoch »

Summoned friendlies often attack each other if a friendly archvile revives a monster that was attacking another friendly, but which that friendly did not get to kill. Thus, it attacks until it has killed that target at least once, but not while enemies are present. This seems to be a bug to me, as a thing's hatred should really be cleared when the target is dead, regardless of the cause.

The main topic of my post was the idea of a HOSTILE flag to add as a map-editing feature to allow the use of enemies that specifically seek out FRIENDLY targets, instead of reacting to attacks. It would essentially be like giving enemy monsters a different version of the FRIENDLY flag, essentially creating a new team of monsters. This could be especially useful in creating battles between armies without massive, time consuming scripts.
User avatar
MartinHowe
Posts: 154
Joined: Tue Aug 30, 2005 22:07
Location: East Suffolk (UK)

Post by MartinHowe »

Given Graf's normal quick response to FRs, I'm surprised at the lack of comment at all from him concerning this one.

@Graf: perhaps you could find a few minutes to answer this one?

Regarding better friendliness in general:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?

Regarding any kind of generalised monster targetting selection:
Is it a [no] or a [yes] or a [Wait till 2015 when randy has finished doing whatever]?

It would be nice to have some idea whether or not to try and put it in myself in my local copy; there is no point in my doing that if you/Randy are going to do something about it yourselves in the near future.
User avatar
Agent ME
Posts: 229
Joined: Mon Jan 02, 2006 12:39

Post by Agent ME »

I'd really like a better friendly system, so they won't actually attack each other or you if you or they accidentally shoot each other. But I don't care too much for what was said above.

Maybe something like a +SMARTFRIENDLY would be nice. +SMARTFRIENDLY would be applied to things like marines or someone smart enough not to go into a firefight with a teammate, while +FRIENDLY's could keep their current behaviour, and could be used in situations where you have a bunch of dumb teammates like some sort of possessed-zombies-that-fight-with -you-or-whatever-the-wad-maker-makes-happen and would fight each other if they shot each other or w/e.
User avatar
Zeg-Vok
Posts: 233
Joined: Wed Sep 21, 2005 18:04
Location: Up the creek without a paddle

Post by Zeg-Vok »

All I know is, something were you can declare a team identifier in the Mapinfo lump or something like that, and then be able to assign a team to an actor via Decorate or Doombuilder would be sweet, and would make my not as smart as 90% of the Doom modding scene buttox feel alot better than what I have to do via ACS for a project of mine

Return to “Closed Feature Suggestions”