eas-kasbah beta release

  • Two Factor Authentication is now available on BeyondUnreal Forums. To configure it, visit your Profile and look for the "Two Step Verification" option on the left side. We can send codes via email (may be slower) or you can set up any TOTP Authenticator app on your phone (Authy, Google Authenticator, etc) to deliver codes. It is highly recommended that you configure this to keep your account safe.

keihaswarrior

New Member
Jan 7, 2003
1,376
0
0
41
Seattle
keihaswarrior.home.icq
Ya, if you have the inclination to improve the soccerball code...
It would be nice if it collided with players when kicked at them. The ball should roll farther before coming to rest. It would be nice to be able to pick up the ball and throw it (both for throw-ins and if it gets stuck in a corner).

It would also be cool if there was a scoreboard (don't know how possible that is though)
 

fist_mlrs

that other guy
Jan 4, 2001
1,496
0
0
39
Zittau, Germany
www.fistmlrs.com
well, im just a mapper and im quite happy that the ball works at all. i had to make it nonsolid once it is kicked so you can't just use it for cheap transportations. it is turned solid again at low velocities. i'll have a look, but if anybody who actually understands uscript could help me... ;)

edit: i can't get the ball to roll at all btw. i had a look at the rolling grenade, but i didn't understand a single word ;) would be nice though because of the hilly roads.

a scoreboard could be done using scripted textures, but this is again something i have no clue about. i might just improve the scoring messages.
 
Last edited:

fist_mlrs

that other guy
Jan 4, 2001
1,496
0
0
39
Zittau, Germany
www.fistmlrs.com
fixed most of the problems mentioned so far. a few aren't worth the risc of producing new ones, so i left them as the have no impact on gameplay and shouldn't be seen during usual gameplay at all. i'll wait till next weekend for beta 3 however, maybe i find some more stuff to do with the map.

i have also been toying around with the night version. i decidet to use a combination of perfect black shadows and slightly lit areas, so gamawhoring won't such an big issue in most places (see the attachments for example). while the roofs are lit by the moon and stars, some of the streets have no own lightning at all. the objectives will stay the same.

just in case somebody is willing to help me with the ball, here is the code:
Code:
class fmk4ball extends Decoration;

#exec obj load file=..\Textures\fmkdeco4.utx package=fmkdeco4

#exec mesh import mesh=fmk4ball anivfile=Models\fmk4ball_a.3d datafile=Models\fmk4ball_d.3d x=0 y=0 z=0 mlod=0
#exec mesh origin mesh=fmk4ball x=0 y=0 z=0
#exec mesh sequence mesh=fmk4ball seq=All startframe=0 numframes=1

#exec meshmap new meshmap=fmk4ball mesh=fmk4ball
#exec meshmap scale meshmap=fmk4ball x=0.03125 y=0.03125 z=0.06250

var bool bFirstHit;
var() bool bkickable;
var int kickspeed;

Auto State Animate
{
	function HitWall (vector HitNormal, actor Wall)
	{
		local float speed;
		Velocity = 0.7*(( Velocity dot HitNormal ) * HitNormal * (-2.0) + Velocity);   // Reflect off Wall w/damping
		speed = VSize(Velocity);	
		if (bFirstHit && speed<400) 
		{
			bFirstHit=False;

		}
		RotationRate.Yaw = RotationRate.Yaw*0.75;
		RotationRate.Roll = RotationRate.Roll*0.75;
		RotationRate.Pitch = RotationRate.Pitch*0.75;	
		If (speed < 60)
            { 
			bBounce = false;
            bBlockPlayers = true;
			bRotatetoDesired=True;
			bFixedRotationDir=False;
			DesiredRotation.Pitch=0;	
			DesiredRotation.Yaw=FRand()*65536;
			DesiredRotation.Roll=0;		
            };
        If (speed > 90)
            playsound(sound'DoorsAnc.adend59',SLOT_Misc,0.3);
	}	

function bekicked( int NDamage, Pawn instigatedBy, Vector hitlocation, 
						Vector momentum, name damageType)
	{
        bBlockPlayers = false;
		SetPhysics(PHYS_Falling);
		bBounce = True;
		DesiredRotation = RotRand();
		bRotateToDesired=False;
		bFixedRotationDir=True;
		bFirstHit=True;
       if (momentum.x < 60)
        {
		Momentum.Z = abs(Momentum.x+momentum.y*0.15);
		Velocity=Momentum*1.0;
		RotationRate.Yaw = 8500*FRand() - 125000;
		RotationRate.Pitch = 8500*FRand() - 125000;
		RotationRate.Roll = 8500*FRand() - 125000;	
        }
       else
        {
               if (momentum.y < 60)
                {
		        Momentum.Z = abs(Momentum.x+momentum.y*0.15);
		        Velocity=Momentum*1.0;
		        RotationRate.Yaw = 8500*FRand() - 125000;
		        RotationRate.Pitch = 8500*FRand() - 125000;
		        RotationRate.Roll = 8500*FRand() - 125000;	
                }
               else
                {
                    if (momentum.x > 120)
                     {
		             Momentum.Z = abs(Momentum.x+momentum.y*0.25);
		             Velocity=Momentum*1.0;
		             RotationRate.Yaw = 850000*FRand() - 125000;
		             RotationRate.Pitch = 850000*FRand() - 125000;
		             RotationRate.Roll = 850000*FRand() - 125000;	
                     }
                    else
                     {
                            if (momentum.y > 120)
                             {
		                     Momentum.Z = abs(Momentum.x+momentum.y*0.25);
		                     Velocity=Momentum*1.3;
		                     RotationRate.Yaw = 850000*FRand() - 125000;
		                     RotationRate.Pitch = 850000*FRand() - 125000;
		                     RotationRate.Roll = 850000*FRand() - 125000;	
                             }
                            else
                             {
                                    if (momentum.x > -60)
                                     {
	                             	Momentum.Z = abs(Momentum.x+momentum.y*0.15);
	                             	Velocity=Momentum*1.0;
	                             	RotationRate.Yaw = 8500*FRand() - 125000;
	                             	RotationRate.Pitch = 8500*FRand() - 125000;
	                             	RotationRate.Roll = 8500*FRand() - 125000;	
                                     }
                                    else
                                     {
                                            if (momentum.y > -60)
                                             {
	                             	        Momentum.Z = abs(Momentum.x+momentum.y*0.15);
	                             	        Velocity=Momentum*1.0;
	                             	        RotationRate.Yaw = 8500*FRand() - 125000;
		                                     RotationRate.Pitch = 8500*FRand() - 125000;
	                             	        RotationRate.Roll = 8500*FRand() - 125000;	
                                             }
                                            else
                                             {
                                                 if (momentum.x < -120)
                                                  {
		                                          Momentum.Z = abs(Momentum.x+momentum.y*0.25);
		                                          Velocity=Momentum*1.0;
		                                          RotationRate.Yaw = 850000*FRand() - 125000;
		                                          RotationRate.Pitch = 850000*FRand() - 125000;
		                                          RotationRate.Roll = 850000*FRand() - 125000;	
                                                  }
                                                 else
                                                  {
                                                         if (momentum.y < -120)
                                                          {
		                                                  Momentum.Z = abs(Momentum.x+momentum.y*0.25);
		                                                  Velocity=Momentum*1.3;
		                                                  RotationRate.Yaw = 850000*FRand() - 125000;
		                                                  RotationRate.Pitch = 850000*FRand() - 125000;
		                                                  RotationRate.Roll = 850000*FRand() - 125000;	
                                                          }
                                                         else
                                                          {
		                                                  Momentum.Z = abs(Momentum.x + Momentum.y*0.3);

		                                                  Velocity=Momentum*1.9;
		                                                  RotationRate.Yaw = 85000*FRand() - 125000;
		                                                  RotationRate.Pitch = 85000*FRand() - 125000;
		                                                  RotationRate.Roll = 85000*FRand() - 125000;	
                                                          }
                                                 }
                                            }
                                     }
                             }
                    }
               }
        }
    bWasCarried = false;
    }

function Bump( actor Other )
{
	local float speed, oldZ;
	if( bkickable && (Pawn(Other)!=None) && (Other.Mass > 40) )
	{
      bekicked( (0),pawn(other),Location, Other.Velocity*1.7 , 'kicked');
	}
}



// function Landed(vector HitNormall)
//  {
//      local actor other;
//  	if( bWasCarried)
//      bekicked( (0),pawn(other),Location, vect(100,0,20) , 'kicked');
//  	bBobbing = false;
//  }

	function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation, 
						Vector momentum, name damageType)
	{
	}
}

to be honest i think the hole coding should be replaced, as it is just based on unreals "let the book fly if i shoot it" code. the ball doesn't roll on the ground at all, it doesn't burst when hit (though this could be added easily), and the hole collison detection is messed up when it comes to players. as you see, once it is "kicked" the playercollision is set to false, in order to prevent it from beeing abused as a cheap way of transportation. i could only test it with bots and came to the conclusion reenabling it once the velocity is down to 60 should be enough, but obviously it isn't. an other problem is that the balls momentum isn't equal to all direction, if you kick it towards the east it is much weaker then when kicked towards the north. would be great if anybody could help me, if not i'll only fix the blocking, as rolling makes my mind twist and the momentum problems are a mystery to me.
 

Attachments

  • kasbahn1.jpg
    kasbahn1.jpg
    128.1 KB · Views: 15
  • kasbahn2.jpg
    kasbahn2.jpg
    107.3 KB · Views: 17
  • kasbahn3.jpg
    kasbahn3.jpg
    45 KB · Views: 15
  • kasbahn4.jpg
    kasbahn4.jpg
    61.1 KB · Views: 14

keihaswarrior

New Member
Jan 7, 2003
1,376
0
0
41
Seattle
keihaswarrior.home.icq
If I were you, I would add a little ambiant light to most areas. From a gameplay perspective it is annoying to have perfectly dark areas. Also, I think it would make the shadows a little smoother. Lastly, from a realism standpoint there is really no such thing as perfect darkness unless you are inside a box.

I hope someone helps you with that ball code. :)
 

fist_mlrs

that other guy
Jan 4, 2001
1,496
0
0
39
Zittau, Germany
www.fistmlrs.com
well, the problem with even a tiny bit of ambient light is that it will imidiately enable gamma whoring. you could easily make the hole map daybright this way while perfect dark shadows would still hide you... thats why i usually don't make night maps ;)
 

geogob

Koohii o nomimasu ka?
fist_mlrs, those warning message when an area is captured by the defender are to wide. It give the impression that the whole map is covered by sniper actors. There is no way to get from entry points C or D to the extract without getting a warning when A and B are secured.

Anyway, I'm not really for these warning and for sniper (if there are any) since the spawn points beeing removed is already a major "penality" for this map :D
 

keihaswarrior

New Member
Jan 7, 2003
1,376
0
0
41
Seattle
keihaswarrior.home.icq
fist_mlrs said:
will have a look. its true, the snipers shouldn't be needed.
Ya, you shouldn't need very intrusive sniper actors. Just as long as the defender spawn is protected well and defenders can't see attackers "teleport" in. To only having warnings in the places that need them, just use multiple small warnings with 0 fire radius.
 

fist_mlrs

that other guy
Jan 4, 2001
1,496
0
0
39
Zittau, Germany
www.fistmlrs.com
beta3:
http://fistmlrs.homestead.com/files/eas-inf-fmKasbahbeta3.zip

i've fixed the known bsp errors, or at least i think i did, and removed the defender sniper actors beeing spawned once the spawn areas are captured. i've had some problems with uploading it, thats why its a week late.

in case there are no gameplay-affecting problems i'll consider this a final beta and prepare it for release.