Page 1 of 2

More feedback needed.

Posted: Tue Nov 04, 2003 1:33 am
by GameArena
Well I've taken some suggestions and was wondering what people think of this once again. For those of you who don't know, it's a source modification to Zdoom (now 48). Here is the link, below is the list of some of the changes.

http://modarchive.gnlive.com/files/gadoom.zip


*Added footsteps to both players and enemies, footstep priority is low so channel overloads won't be an issue. Footsteps fade with distance and can use multiple channels at any given time. They also follow physics to some degree as well, speed determines rate and you must be standing on a surface in order to create footsteps.

*Added taunting via the command, taunt: <sound name>, it is only heard by other players and monsters within a limited distance. It can be set to any sound, but only the players who have the sound will hear it. Taunting wakes up any surrounding monsters.

*Changed: Fists so they no longer alert nearby enemy when you take a swing.

*Changed: Doors now have a greater possibility of awakening nearby enemies, but the system still needs some work.

*Added a feature that makes it so damage from weapons variate depending on distance from their target (as long as it isn't monster vs monster, or player vs monster (it'd be to powerful) ). They are more powerful when used at very close range, (all but the melee weapons). However, they do not weaken beyond their set damage rate.

*Added "Mod" file support. Used with -mod in the command line.

*Added Mod file variables for both Default Slime and Lava damage. They are set by <slimedamage> and <lavadamage>, available range is 0-500. They take effect on all lava and slime damage, but still retain damage "level", so for example if low lava damage is set to 20, hefty damage will be even more dangerous.

*Added Mod file declarers which can specify certain files to add into processing. <reqfile> will make the file required in order to play the project, if it's not found the project will not be executed (a warning will be given). <optfile> is like reqfile except only a warning will be given if the file doesn't exist and the user will be allowed to play. Multiple file declarers may be used within a mod file. Support files are "*.deh", "*.bex" and of course "*.wad". All mod files must end with <end> to signify the end of the stream.

*Added the ACS script command of getdistance(), it returns the distance in units of roughly 32, 2 would be about 64. The arguments for getdistance() consist of 2 actor tids, for example, getdistance(0, 3) would return the distance between the activator (always zero) and the actor with the tid of 3, returns 0 (NULL) when failed.

*Added both the console command and ACS script command of "drawpic", sytax for the ACS command is drawpic(string graphicname, int x, int y, int tics), where graphicname is the name of the graphic to be displayed (must be within used wad), x is the left corner and y is the right corner, tics is the amount of time the graphic should be displayed. For memory sake (in case of recursion), only 32 graphics may be displayed at any given time (this will probably change in the future). Example drawpic("interpic", 0, 0, 40). Graphics appear in their natural state and will not be stretched. This command is useful for intros, credits, etc.

*Added ACS script command checksight(), which checks to see if two actors are "in sight" of each other. The arguments for checksight() consist of 2 actor tids, for example, checksight(0, 3) would tranverse the sight path between the activator (always zero) and the actor with the tid of 3. Returns 1 if true, 0 if false, and -1 for failed.

*Added Mod File option <nostats>, when present level transitions are immediate in all modes except deathmatch. Update: Not yet ported to 48.

*Added a Mod File stream of <thinginfo> the value of which opens a stream to a thing (Actors only supported at the moment), once a stream is open thing variables may be assigned. Currently enemies/weapons can only be altered). Streams do not have to be manually closed, they are closed when a new stream is opened.

*Added Mod File stream modifiers to <thinginfo>, they include <droptype> and <dropchance> (they are enemy modifiers), droptype's value is the item that the currently opened thinginfo stream drops. It may be any object, even another enemy, which could make for some interesting mods, perhaps a guy that turns to an attacking ghost upon death. <dropchance> declares the chance of that thing being dropped, if not set it will be 100. Available range is 1-100. If "None" is assigned, the default drop item will be removed. If <harmless> is specified, that "enemy" will not shoot at players, no value is required when using <harmless>. When <fearful> is present the enemy will try to get away from the player (still firing if <harmless> is not set), no value is required.

*Added Mod File stream modifier to <thinginfo> that is for weapon fire types. <firetype> only works under a weapon stream opened with thinginfo, but when used correctly it sets the current fire type of the opened weapon. So you can now have the pistol shoot shotgun rounds etc. Example: "<thinginfo>pistol <firetype>shotgun" will cause the pistol to shoot shotgun rounds. Along with the use of dehacked you can really modify how a weapon fires.

*Added the ability to create up to 3 (I'll add more if needed) custom fire types in a Mod File. First you must open up a Custom fire type stream by using <customfiretype> the value of which is the new firetype name. Then you may set additional properties, see below:

-----------------
Name: <projectile>
What it does: Sets the projectile type

Available Values:
bullet: Normal Bullet
fireball: Imp Fire Ball
bfgball: BFG Ball
missile: Rocket
plasma: Plasma Shot
-----------------

Name: <bulletdamage>
What it does: Sets bullet damage if <projectile> is equal to bullet.

Available Values:
0-*

-----------------

Name: <projectilenum>
What it does: Number of projectile's fired

Available Values:
1-*

-----------------

Name: <firesound>
What it does: Where the firing sound is defined.

Available Values:
Must be string: Example, weapons/shotgf

-----------------

Name: <attachscript>
What it does: Attaches an ACS script to be run upon firing.

Available Values:
Must be number of script to be executed.

-----------------

Names: <attachscript_arg1>, <attachscript_arg2>, <attachscript_arg3>
What they do: Add script arguments for attached script.

Available Values:
Integers only

-----------------

Here is a full example:

<customfiretype>ultrashotgun
<projectile>bullet
<bulletdam>50
<firesound>weapons/shotgf
<projectilenum>50
<attachscript>2
<attachscript_arg1>4

Then you can use <firetype>ultrashotgun to access the new firing type. But be sure you define any custom fire types before linking them.

*Improved?: Monsters will tend to keep away from the melee range of the player when the player is using a melee weapon, however it isn't that noticable unless the player is standing in a "crowd" of enemies. Yet it does increase difficulty.

*Improved?: No longer does invisibility become immediate for players, now players slowly transition into and out of invisibility (appearing is quicker than fading out).

*Improved?: Before only a player firing (and of course sight/distance) would alert enemies of a hostile presence. Meaning if there was a group of enemies and only one saw a player and the player never fired, unless the player fired or got into sight none of the other enemies would attack even if someone was shooting right behind them, now even fellow monsters firing will cause nearby enemies to look for the hostile attacker.

*Added: New cvar "vid_adjustfps", which players with low-end computers may find useful, basically if the framerate drops below a certain value, different effects will be turned off (however they will be turned back on if the framerate once again rises).

*Added: ACS Command Sector_CeilingHit(1, tag, (int)script, (int)arg1, (int)arg2, (int)arg3), which sets a script to be activated upon a projectile hitting the ceiling of sector "tag". Overridable (only one script can be assigned), however you can dynamically link to other scripts if needed.

*Added: ACS Command Sector_FloorSound(tag, sound "pointer"), which sets the base footstep sound for sector "tag", useful for declaring different material types. Example: Sector_FloorSound(2, "footsteps/metal").

*Added: <ai_darkness> Mod File Stream modifier, which sets the level of darkness the base AI will no longer be able to see the player. Its default is 0, but when set to a value between 1 and 256 it will become active. Enemies will also notice you if you come close to them in the darkness (really close). <ai_darkness> may only take an integer.

Posted: Tue Nov 04, 2003 4:38 am
by Enjay
A lot of this sounds very interesting. I've dl'd the file, but won't get a chance to try it for a while. I am a little confused as to how to set up these "mod" files, however. Although you have given the syntax for a number of the different options, I'm not clear as to how to set things up and get them working. How, for example, would I allocate a new fire type to a weapon? Or how do I allocate a thing to be dropped by a certain enemy? Is the "mod" file format a standard format from somewhere else that I could read about, or is it specific to your source modification? If it is yours, have you done any documentation on the format?

On the AI improvements, you've caught something I have always thought funny with Doom, especially if you are making a mod where the enemies are more than just mindless zombies. The fact that you can have a fight with and blow away an enemy only to go round the corner an find the enemy's friend, who should have seen the whole thing, apparently totally surprised that you are there.

Posted: Tue Nov 04, 2003 5:07 am
by Chilvence
Drawpic sounds extremely useful

Footsteps.... I see a much easier way for a wad author to use them by them being definable in the terrain lump. Then again I cant find any specs or examples for the terrain lump and I cant remember how to use it...

Posted: Tue Nov 04, 2003 6:22 am
by sirjuddington
That does indeed sound interesting, although, like Enjay, I'm confused about these "Mod" files.

Any chance of an example "Mod" file maybe?

Posted: Tue Nov 04, 2003 8:31 am
by Lexus Alyus
Cool stuff, wonder if randy is interested in any of this...

:twisted:

Posted: Tue Nov 04, 2003 12:49 pm
by Enjay
Yeah, a general lump like TERRAIN would be far more useful for defining which footstep sound gets made where. Having to tag every sector you want to change and include it in a script would be a PIA, especially if you were doing a multiple level thingy, so you maybe couldn't just use the same tag numbers for different levels, therefore you'd need a different script for each level. I'm not saying remove the ACS function - it would still be useful for "one off" changes, but TERRAIN (or alternative) seems like the way to go for general definitions.

Also, I think it would be useful to be able to have different footstep sounds for different enemies. A humanoid enemy could maybe make noises like the player, but even the imp with its bare, clawed feet should sound different. Then there are much heavier enemies, and what about mods with dogs, robots, slime monsters, tracked vehicles blah blah blah. These should not all make the noise of booted heels on concrete.

Oh, and you had to base this off the version where mp3 music was broken didn't you. :P :)

Edit: Heh, just noticed that flying enemies make footstep sounds too, as do "sliding" enemies like the Heretic snakes.

Posted: Wed Nov 05, 2003 10:25 am
by GameArena
I must of forgot to port the code in order to deny flying enemies footsteps, it's complete, but in the chaos of porting to 48 I probably skipped over it. As for the snakes, I don't have heretic so I didn't really notice, I'll fix that as well. I've been working on texture based footsteps through modfiles, but I'm still looking into the new texture system and making sure everything will work correctly. As for mp3's, I'll try to upgrade to 52. One question though, do diff files work successfully in heavily modified files?


I made modfiles extremely simple to use, here is a quick example:

Code: Select all

<optfile>map04.wad
<optfile>map06.wad

<customfiretype>megachain
<projectile>bullet
<bulletdam>20
<firesound>weapons/shotgf
<projectilenum>50

<thinginfo>Chaingun
<firetype>megachain

<thinginfo>ZombieMan
<droptype>RocketLauncher
<dropchance>75
<fearful>

<end>
Any new weapon fire types must be defined before linked with <firetype> and all mod files must have <end> as the final statement to close all open streams. Another thing is after any stream opener, order doesn't matter. So you can use something like:

Code: Select all

<thinginfo>ZombieMan
<dropchance>75
<fearful>
<droptype>RocketLauncher
And it will have the same effect as when used above. Mod files can be saved as either *.txt or *.mod, when you use them in the command line the extension is not required so with testmod.mod, you can use -mod testmod . When using a new drop type, you'll notice a debug message "true" when anything with a new droptype is killed, I simply forgot to remove it, but when I release another version, it'll be removed.

Posted: Wed Nov 05, 2003 3:44 pm
by Enjay
OK, tried a few mods. I'm having difficulty with the bulletdam value. It seems not to alter the bullet damage. I made a new firetype, and allocated it to the pistol. I could tell it was working because it used the shotgun sound, but it still took the normal number of bullets to kill things.

Code: Select all

<customfiretype>kerpow 
<projectile>bullet 
<bulletdam>1000 
<firesound>weapons/shotgf 
<projectilenum>1 

<thinginfo>Pistol 
<firetype>kerpow 

Oh, and I just remembered, 48 was the version that came with the bugged fmod.dll and that's the version you included in your zip. Copying the newer fmod into my gadoom directory fixed mp3 music.

Posted: Wed Nov 05, 2003 4:26 pm
by GameArena
Sorry I used the wrong modifier in my example, it's actually <bulletdamage>, sorry for any confusion :) . Thanks for noticing the fmod bug, I don't tend to use mp3's in Doom so it would have gone right over my head.

Posted: Fri Nov 07, 2003 6:26 am
by Lexus Alyus
Is it possible to create some whacky projectiles? Can you write a full doc on the mod file and all the possible modifiers, that would help loads. Plus, can you add the damn monster site activator :-).

:twisted:

Posted: Fri Nov 07, 2003 7:10 am
by Enjay
I'd like to be able to apply my customfiretypes to the enemies. I tried to get Zombies to fire instant kill pistols (just trying out some "reality" kind of ideas) but no go (yet).

Posted: Fri Nov 07, 2003 8:13 pm
by GameArena
Lexus Alyus wrote:Is it possible to create some whacky projectiles? Can you write a full doc on the mod file and all the possible modifiers, that would help loads. Plus, can you add the damn monster site activator :-).

:twisted:
It's somewhat possible, like a gun that fires 500 fire balls or something (if you consider that wacky). I may write something pretty soon about the modifiers, but usually when I have free time I work on the features themselves. What do you mean by monster site activator? Enjay: I had been working with custom firetypes for enemies, but it requires quite a bit of work, maybe I'll finish it pretty soon. Currently I'm working on a lot of different modifiers though, such as different blood settings (color, decals, etc.) and a new enviromental sound mapping system for footsteps (yay!).

I'm probably a day or two away from "releasing" another version for public opinion.

Posted: Sat Nov 08, 2003 2:01 am
by Sphagne
Hey, That silent fist is a great feature. Can you change it into a dehacked option to let us have muffles for any weapon we want? and if you can somehow manage to persuade Randy to add this feature to the normal ZDoom, then I think i would be totally in your debt.

Is you improved monster AI working automatically or we have an option to turn it on and off via MAPINFO, or dehacked? it would be better to have an option for it.

Great news, now we can assign scripts on sectors directly, as well as on line-defs!

Hey, you have a darkness limit for monster AI, thats logic, but if you implement my actor sight calculation, it would be fuzzy logic, which is a more natural way of things. I think it is worth the few days you have to spend on it.

As for footstep and the lot, if you can categorize your monsters into something like this:

Flying = Caco
Sliding = Snakes

Small-Booted = players, zombies
Small-hoofed = demon?
Small-bare-footed = imps
Small-metalic = ?

Medium-booted = ?
Medium-hoofed = knight
Medium-bare-footed = archvile
Medium-metalic = baby-spider

Large-booted = ?
Large-hoofed = cyberdemon
Large-bare-footed = ?
Large-metalic = spiderdemon

Then let us define the sounds for each category, for some standard surfaces like:

Mud, stone, metal1-3, wood, flesh...

then it would be totally open and expandable for future enhancement.

Posted: Sat Nov 08, 2003 12:42 pm
by GameArena
I originally planned to make footsteps material based and user assigned, but decided that would be too much of a limit. In the version I'm working on right now it's a lot easier to assign footstep sounds (it's done through mod files), as you will just use the something similiar to the following method:

<env_footstep_texture>METAL01
<env_footstep_sound>footsteps/metal

Which would mean whenever flat METAL01 is walked on, footsteps/metal will be played. I don't know whether I'll add individual overridables for actors though, I really doubt anyone would use it a lot.

As for the advanced AI, I never ported it to 48 because it's so incorperated into the source, besides it needed some work anyway. If I have time maybe sometime here I'll start on another AI system which doesn't require user defined waypoints for advanced movement.

What exactly is this actor sight calculation you speak of?

Posted: Sat Nov 08, 2003 2:38 pm
by Enjay
Other suggestions:

When defining bullet fire types - make range settable. Despite having asked Randy to extend the range of the hitscan weapons many times, now that it has been, and my sniper rifle can reach right across a level, its value is a little degraded by the fact every other hitscan weapon can also do the same. :? I guess I'm never happy.

Be able to specify a shotgun horizontal type spread or a more rounded super shotgun type spread for multi-pellet fire types.