Jump to content

what exactly does -fast / "fast monsters" do?


Recommended Posts

It is possible, but I don't understand why you would do that when you can just use -fast.

 

To answer the question in the topic subject, -fast makes monsters move faster but more importantly it makes them fire way more often and projectiles are twice as fast as well.

Share this post


Link to post

you can make everything faster on deh even your guns so yea you can i dunno if it will be precisely how it works with the fast- parameter

Share this post


Link to post

I'm pretty sure it almost EXACTLY replicates monster behaviors from the Nightmare difficulty, minus respawn/nightmare obj placement.  The monsters on nightmare tend to attack right away when they see you, while with this parameter they usually attack more like they normally would, only they move faster and their attacks are faster and occur more often, but it's just like how they act on nightmare in terms of speed. That's about all there is to it as far as I can tell.

Edited by alLAN95th

Share this post


Link to post

It'd be quite time consuming, but the ZDoom Wiki lists out the ZScript replication of every monster and projectile, including the exact impact of -fast on each.

 

The two keywords to look for are:

  • Actor property "FastSpeed": Defines the monster/projectile's new travel speed if -fast is enabled (for example, it's 20 for the Imp's fireball, rather than the default 10)
  • State keyword "Fast": Halves the duration of any state if -fast is enabled (for example, the Demon's SEE, MELEE and PAIN states are all halved in duration)

Share this post


Link to post

This may or may not help at all but super quick search of the original doom source release for 'fastparm' I see these

 

g_game.c starting at line 1415

    if (skill == sk_nightmare || respawnparm )
	respawnmonsters = true;
    else
	respawnmonsters = false;
		
    if (fastparm || (skill == sk_nightmare && gameskill != sk_nightmare) )
    { 
	for (i=S_SARG_RUN1 ; i<=S_SARG_PAIN2 ; i++) 
	    states[i].tics >>= 1; 
	mobjinfo[MT_BRUISERSHOT].speed = 20*FRACUNIT; 
	mobjinfo[MT_HEADSHOT].speed = 20*FRACUNIT; 
	mobjinfo[MT_TROOPSHOT].speed = 20*FRACUNIT; 
    } 
    else if (skill != sk_nightmare && gameskill == sk_nightmare) 
    { 
	for (i=S_SARG_RUN1 ; i<=S_SARG_PAIN2 ; i++) 
	    states[i].tics <<= 1; 
	mobjinfo[MT_BRUISERSHOT].speed = 15*FRACUNIT; 
	mobjinfo[MT_HEADSHOT].speed = 10*FRACUNIT; 
	mobjinfo[MT_TROOPSHOT].speed = 10*FRACUNIT; 
    } 
	 

Also a bit less clear these bits from A_Chase in p_enemy.c: lines 715 and 735

    // do not attack twice in a row
    if (actor->flags & MF_JUSTATTACKED)
    {
	actor->flags &= ~MF_JUSTATTACKED;
	if (gameskill != sk_nightmare && !fastparm)
	    P_NewChaseDir (actor);
	return;
    }
    // check for missile attack
    if (actor->info->missilestate)
    {
	if (gameskill < sk_nightmare
	    && !fastparm && actor->movecount)
	{
	    goto nomissile;
	}

My off-hand guess is maybe you can replicate the firing frame times of the demons from -fast but not the changes to their tracking and aggression

Edited by DuckReconMajor

Share this post


Link to post

Fast mode is basically Nightmare without the respawning, double ammo, immediate attacking, and not disabling cheats.

 

In a nutshell:

  1. Monsters have a greatly reduced "cooldown" before attacking again (if you're in sight when they can do a new attack, they almost always will after barely moving)
  2. Most monster fireballs are about 50% faster; Baron/Hell Knight projectiles are 33% faster. What this really is is just making projectiles move at 20 map units per tic - Imp/Cacodemon fireballs are normally 10; Baron/HKs are normally 15.
  3. Demons and Spectres both move and attack 2x faster than usual.

Share this post


Link to post
39 minutes ago, DuckReconMajor said:

Also a bit less clear these bits from A_Chase in p_enemy.c: lines 715 and 735

Both these are covered in decino's "How Doom's Enemy AI Works" video. The former is what allows fast/nightmare monsters to attack again right after they've attacked (4:20 in the video), and the latter also governs more aggressive attack behavior (4:58 in the video). I recommend watching that video, though the information specific to fast/nightmare is scattered throughout it.

 

The other bit of code you quoted (from g_game.c) governs the increased projectile speed and the fast pinky/spectre movement/attacks.

 

I think you can replicate the faster projectiles and pinkies with DeHackEd, but not the enemy aggression.

Edited by Shepardus

Share this post


Link to post

Thanks @Bauul @DuckReconMajor @Shepardus. Since the extra aggression is hardcoded in, I abandoned the idea. My problem was that I have some custom flying monsters that barely flew anymore and were easier to kill with "fast monsters" enabled, but adding the SkullAttack action to their attack states has fixed the problem and lets them fly again.

Edited by TimeOfDeath666

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...