If these were fixed...

Discuss any other topics here
Post Reply
User avatar
animatrix
Posts: 134
Joined: Thu Jul 07, 2005 10:51 pm

If these were fixed...

Post by animatrix »

Other than these, RF is super,
Fix the single pixel wide line at bottom of screen during fog
Fix the explosion clipping problem
Fix the shots not registering on 2 out of four walls

Other than this, RF is awsome for making playable games, but these three are a definate aggravating minus for RF, they really take away from the beauty of RF... :?
User avatar
Master
Posts: 81
Joined: Tue Jul 12, 2005 6:58 pm

Post by Master »

Fix the shots not registering on 2 out of four walls.
I don't think it's THAT big a' problem. I didn't even notice it until it was mentioned on the forums.
Nout
Posts: 136
Joined: Tue Jul 05, 2005 5:14 pm

Post by Nout »

I've looked to this and solved 2 problems using a small trick

- Fixed the explosion clipping problem
- Fixed the shots not registering on 2 out of four walls

2 changes need to be made in CWeapon.cpp and are marked by //Added by Nout in the code-segment below

Code: Select all

/* 07/15/2004 Wendell Buckner
    BUG FIX - Bone Collisions fail because we expect to hit the bone immediately after hitting the 
	overall bounding box. So tag the actor as being hit at the bounding box level and after that check ONLY
	the bone bounding boxes until the whatever hit the overall bounding box no longer exists. 
			//if(CCD->Collision()->CheckForCollisionD(&d->ExtBox.Min, &d->ExtBox.Max,
			if(CCD->Collision()->CheckForBoneCollision(&d->ExtBox.Min, &d->ExtBox.Max,tempPos, tempPos1, &Collision, d->Actor, BoneHit, d->BoneLevel)) */
			if(CCD->Collision()->CheckForBoneCollision(&d->ExtBox.Min, &d->ExtBox.Max, tempPos, tempPos1, &Collision, d->Actor, BoneHit, d->BoneLevel, d ))
			{
				//
				// Handle collision here
				//
				int nHitType = CCD->Collision()->ProcessCollision(Collision, d->Actor, false);
				if(nHitType != kNoCollision)
				{
					Alive = false;
					d->Pos = Collision.Impact;
					//Added by Nout
					geVec3d_Scale(&d->Pos, 0.99f, &d->Pos);
					//End added by Nout
					Actor = Collision.Actor;
					Model = Collision.Model;
					if(nHitType == kCollideNoMove)
					{
						geVec3d_AddScaled (&tempPos, &(d->Direction), 1000.0f, &tempPos1);
						CCD->Collision()->CheckForWCollision(NULL, NULL,
							tempPos, tempPos1, &Collision, d->Actor);
						CCD->Decals()->AddDecal(d->Decal, &Collision.Impact, &Collision.Plane.Normal);
					}
				}
			} 
		}
		// Move and Pose
		if(Alive)
		{
			d->Pos = tempPos1;
			//Added by Nout
			geVec3d_Scale(&d->Pos, 0.99f, &d->Pos);
			//End added by Nout
			CCD->ActorManager()->Position(d->Actor, d->Pos);
			CCD->ActorManager()->GetBoundingBox(d->Actor, &d->ExtBox);
			
			if(d->MoveSoundEffect!=-1)
			{
				Snd Sound;
				geVec3d_Copy( &(d->Pos), &( Sound.Pos ) );
				CCD->EffectManager()->Item_Modify(EFF_SND, d->MoveSoundEffect, (void *)&Sound, SND_POS);
			}
and further....
This update will be part of the next release
hike1
RF FAQ-Keeper
Posts: 607
Joined: Tue Jul 05, 2005 4:19 am
Contact:

Post by hike1 »

Do we really need the 217MB Direct X 9 SDK to compile Reality Factory now? Because I'm on dial up, impossible to get it.
User avatar
animatrix
Posts: 134
Joined: Thu Jul 07, 2005 10:51 pm

Post by animatrix »

Thanks Nout , thats good news, Has anyone figured out the one pixel line on bottom of screen during fog?
And no offense "master" but if you put as many hours in game creation with RF as I have, you would see it as a problem, these things detract from RF and its ability to immerse a player in your game,
:?
Ransom

Post by Ransom »

I agree with animatrix, although these are relatively small annoyances, they DO detract in the long run.
User avatar
QuestOfDreams
Site Admin
Posts: 1522
Joined: Sun Jul 03, 2005 11:12 pm
Location: Austria
Contact:

Post by QuestOfDreams »

Code: Select all

//Added by Nout 
geVec3d_Scale(&d->Pos, 0.99f, &d->Pos); 
//End added by Nout 
that is not a good solution since the result depends on the position, better get the normal of the colliding face (Collision.Plane.Normal) and add a small amount to Pos
Nout
Posts: 136
Joined: Tue Jul 05, 2005 5:14 pm

Post by Nout »

You are right, but in practical situations, it does not matter too much.
When you are close to the wall, the decall is on the wall and when you are far away, a distance difference of 1% between the decall and the wall is not recognizable. I just went for the most easy solution.

Using the collision plane, how do you know if you have to add or substract a small value?
User avatar
QuestOfDreams
Site Admin
Posts: 1522
Joined: Sun Jul 03, 2005 11:12 pm
Location: Austria
Contact:

Post by QuestOfDreams »

When you scale the pos (absolute position in the world) this might result in the opposite effect - moving the pos into the wall
the collsionplane normal on the other hand should always point out of the visible face side, so you will always have to add the offset in this direction
User avatar
ZenBudha
Posts: 285
Joined: Wed Aug 17, 2005 6:06 am
Contact:

Post by ZenBudha »

I feel your pain Animatrix. Add also the lack of the ability to have proper weapon innacuracy. I tried for months to get that working with no success.

Now I've moved to another engine. Still love RF for what all it taught me though, and it is great for fast prototyping.

However now I can level design in 3DS Max (no more BSP geometry, and although I have to program 10 times as much it's really for me the only way to get what I want done.

I guess I just hit a point as probably many have that you have to dive into some code at some point to get what you want.
User avatar
AndyCR
Posts: 1449
Joined: Wed Jul 06, 2005 5:08 pm
Location: Colorado, USA
Contact:

Post by AndyCR »

just out of curiosity, what engine did you choose?
User avatar
ZenBudha
Posts: 285
Joined: Wed Aug 17, 2005 6:06 am
Contact:

Post by ZenBudha »

I've been using the latest version of the Antiryad Gx engine. It's pretty complex but I'm slowly figuring it out. It's pretty well documented though so thing are going pretty smoothly.
Post Reply