Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
DymitrKharitonov

Features Doom Eternal in GZdoom

Recommended Posts

JUMPPADS:

The essence of jumppads is to throw the player up, this is an interesting replacement for stairs.

We create a sector, decorate it as desired.

1.png.7aadf4f8e5d6a9e90f51563f233b15cb.png

Spoiler

 

  

 Inside the sector we put Thing Actor hits floor: 9999, set this thing to action 128: Thrust Thing Z

2.png.b74f58a1e32ca88cd5031ed3078f126e.png

Thing Tag: 0

Force: to your notice

Down/Up: in our case Up

Set/Add: Set - sets the thing's vertical speed to 0 and only then applies the force. Add - adds the speed resulting from the special's force to the thing's current vertical speed.

3.png.44c71e1ebd42781a61f68e8e8a867ced.png

You can also do oblique jumppad. Just put the following script on Thing Actor hits floor through Action 80: Script Execute: 

 

Script "AngleJumpPad" (void)
{
	ThrustThingZ(0, 50, 0, 0);
	ThrustThing(0, 55, 0, 0);
}

 

4.png.554ca2511d4229daee4f2db364eff9b5.png

 

5.png.a74d57454535c12922be9846990a390a.png

Share this post


Link to post

MONKEYBARS:

Monkey bars will add variety to the movement of your maps. to create them you need a file: MonkeyBars.pk3 which contains decorate (with which the weapon will disappear when swinging) and textures (if you wish, you can draw your own) Next, in Ultimate doom builder, draw a line with textures on both sides.  1.png.83e063a51a93add1f304ff00553ec142.png

2.png.e4538895086bac114eebd63fdfd480a6.png

 

We write the following script: 

Script "MonkeyBars" (int zpos, int dir)
{


	int zmin = (zpos * 1.0) - 96.0;
	int zmax = zpos * 1.0;
	int zcur = GetActorZ(0);
	If(zcur >= zmin && zcur <= zmax)
	{
		int xvel; int yvel;
		If(dir==0){yvel = 17.0; SetActorAngle(0,0.25);}
		Else If(dir==1){xvel = 17.0; SetActorAngle(0,1.0);}
		Else If(dir==2){yvel = -17.0; SetActorAngle(0,0.75);}
		Else If(dir==3){xvel = -17.0; SetActorAngle(0,0.5);}
		If(LineSide()==1){xvel = -xvel; yvel = -yvel;
		SetActorAngle(0,GetActorAngle(0)+0.5);
	}
		PlaySound(0,"skeleton/swing",CHAN_BODY);
		GiveInventory("ClimbHand", 1); //Switch on Our Decorate
	    Setweapon("ClimbHand");

	   ThrustThingZ(0, 20, 1, 0);
	   Delay(3);
	   ThrustThingZ(0, 20, 0, 0);
	   Delay(2);

		SetActorVelocity(0,xvel,yvel,9.0,0,0);
		Delay(5);
		TakeInventory("ClimbHand", 1); //Switch off Our Decorate
	}
}

You can also specify your own speed and strength values. Add a script to our line through Action 80: Script Execute.

Zpos: This is the height of the line above the floor (that is, the difference in the height of the ceiling and the offset of the texture of our monkey bar)

Dir: This is direction, 0 - north 1 - east 2 - south 3 - west

5.png.b128702fd70ea61a9daee4b848da4fe7.png

 

And put a check mark on:  

*Repeatable action

*When player walks over

*Player can use from back side

Share this post


Link to post

PUSHER:

It pushes the player in a straight line, much like monkey bars, so the script looks like. Now we don't need Decorate and the Pusher.pk3 file contains only animated textures. We put two lines, the first with a length of 128, the second with a length of 64 (this is just for beauty, you can use one line)

1.png.2297b23f1eee4620090f15171411c26f.png

Putting textures. Attach the script to the line:

Script "Push" (int zpos1, int dir1)
{
	int zmin1 = (zpos1 * 1.0) - 96.0;
	int zmax1 = zpos1 * 1.0;
	int zcur1 = GetActorZ(0);
	If(zcur1 >= zmin1 && zcur1 <= zmax1)
	{

		int xvel1; int yvel1;
		If(dir1==0){yvel1 = 35.0; SetActorAngle(0,0.25);}
		Else If(dir1==1){xvel1 = 35.0; SetActorAngle(0,1.0);}
		Else If(dir1==2){yvel1 = -35.0; SetActorAngle(0,0.75);}
		Else If(dir1==3){xvel1 = -35.0; SetActorAngle(0,0.5);}
		If(LineSide()==1){xvel1 = -xvel1; yvel1 = -yvel1; SetActorAngle(0,GetActorAngle(0)+0.5);}

		SetActorVelocity(0,xvel1,yvel1,0.0,0,0);
	}
}

Zpos: This is the height of the line above the floor

Dir: This is direction, 0 - north 1 - east 2 - south 3 - west

3.png.fb83b35ef0a72cdfa6b42a0a5c696ca3.png

And put a check mark on:  

*Repeatable action

*When player walks over

4.png.51636a17e7131180a472e7acc62731b9.png

Share this post


Link to post

BREAKABLE WALL:

This is a brutal replacement for ordinary doors. To create this wall I used a glass break script (I didn't find a link to the forum, just know that the script is not mine). I replaced some components and textures in it, all this is contained in the BreakWall.pk3 file. You can also use your own textures and sounds. In Ultimate doom builder in user-defigned you will have Thing map spot ceiling:

3.png.01740f77c47bb94b4b37ea19983d2195.png

 

We put a texture on our line and assign a tag to it:

1.png.1069ce84dc733864627e08191abc1a59.png

 

2.png.9e7b1e8c4f8f0305b497d0db32ccea1e.png

 

At one end of the line we put Thing map spot ceiling (we assign the same tag as the line), at the other end of the line we put Thing map spot (the tag is the same as for the line but with a minus sign)

We align things as in the picture:

5.png.444f6439fa7f66fd3b2b175e8d9895ef.png

Attach the script to the line: 

script 1 (int a)
{
    print(s:"angle: ", i:a);
}

script "BreakWalls" (int id)
{

    int tid = id;
    int spawndistance = 8;

    int x1 = GetActorX(tid) >> 16;
    int y1 = GetActorY(tid) >> 16;
    int z1 = GetActorZ(tid) >> 16;
    int angle = GetActorAngle(tid) >> 8;

    int x2 = GetActorX(-tid) >> 16;
    int y2 = GetActorY(-tid) >> 16;
    int z2 = GetActorZ(-tid) >> 16;


    int hlength = linelength(x1, y1, x2, y2);
    int hnumsteps = fixeddiv(hlength<<2, spawndistance<<5);
    int hstepsize = fixeddiv(1.0, hnumsteps);


    int vnumsteps = fixeddiv(abs(z1 - z2)<<2, spawndistance<<5);
    int vstepsize = fixeddiv(1.0, vnumsteps);

    for(int hu = 0.0; hu < 1.0; hu += hstepsize)
    {
        int x = coordat(x1, x2, hu);
        int y = coordat(y1, y2, hu);

        for(int vu = 0.0; vu < 1.0; vu += vstepsize)
        {
            int z  = coordat(z1, z2, vu);
            Spawn("WallsShardSpawner", x, y, z, 0, angle);

        }
    }


    Setlineblocking(id, OFF);
    thingsound(id, "Walls", 127);
}

function int linelength(int x1, int y1, int x2, int y2)
{
    int d1 = abs(x2 - x1);
    int d2 = abs(y2 - y1);

    return sqrt(d1*d1 + d2*d2);
}


function int coordat(int a, int b, int u)
{
    a <<= 16;
    b <<= 16;

    return a + fixedmul(u, (b - a));
}


function int abs (int x)
{
    if (x < 0)
        return -x;

    return x;
}

Id: Our line's tag

7.png.509e9ad5cd797599d64e6a63689ce88b.png

 

And put a check mark on:

*Impassable

*On projectile impact

*Front side only

4.png

Edited by KadzitsuHelp

Share this post


Link to post

I myself am still new to all this, so I could not do without outside help. Thanks to those people who helped me on the forums (I also don't know English well, so if you don't understand something, then ask) :)

Share this post


Link to post

This looks AWESOME. Will you also rebuild the Doom Eternal campaign? I've already finished the Doom Eternalcapmaign on every difficulty for more times than I am wanting to admit but it would be absolutely awesome to see this in GZDoom with Classic Doom graphics and stuff. What about the weapon mods, do they work?

Share this post


Link to post
8 hours ago, 0o0[ULTIM4TE]L1FE[F0RM]0o0 said:

This looks AWESOME. Will you also rebuild the Doom Eternal campaign? I've already finished the Doom Eternalcapmaign on every difficulty for more times than I am wanting to admit but it would be absolutely awesome to see this in GZDoom with Classic Doom graphics and stuff. What about the weapon mods, do they work?

I want to do it, but I don't have much time yet. Weapon mods work through mod EoA - Eternal

Share this post


Link to post
13 minutes ago, KadzitsuHelp said:

I want to do it, but I don't have much time yet. Weapon mods work through mod EoA - Eternal

That's really awesome and I'm really excited to play this when it comes out! Will it also feature the gore effects from Doom Eternal? It could just be based on Brutal Doom, though, since Doom Eternal's gore seems to be based on the ideas of Sergeant_Mark_IV for his gore. But that's just my idea. And also, no pressure and take your time! : )

Share this post


Link to post
6 hours ago, 0o0[ULTIM4TE]L1FE[F0RM]0o0 said:

That's really awesome and I'm really excited to play this when it comes out! Will it also feature the gore effects from Doom Eternal? It could just be based on Brutal Doom, though, since Doom Eternal's gore seems to be based on the ideas of Sergeant_Mark_IV for his gore. But that's just my idea. And also, no pressure and take your time! : )

Thank you! But I am not developing the EoA - Eternal mod, another person does it.  I have shared some features for creating maps in this tutorials. The mod EoA-Eternal: https://www.moddb.com/mods/embers-of-armageddon/addons/eoa-eternal

Share this post


Link to post
4 hours ago, KadzitsuHelp said:

Thank you! But I am not developing the EoA - Eternal mod, another person does it.  I have shared some features for creating maps in this tutorials. The mod EoA-Eternal: https://www.moddb.com/mods/embers-of-armageddon/addons/eoa-eternal

Oh... alright. But yeah, the Doom Eternal campaign in GZDoom would still be awesome nonetheless!

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×