Page 1 of 1

If these were fixed...

Posted: Thu Aug 04, 2005 3:20 am
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... :?

Posted: Fri Aug 05, 2005 3:44 am
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.

Posted: Sat Aug 06, 2005 5:46 pm
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

Posted: Sat Aug 06, 2005 8:13 pm
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.

Posted: Sun Aug 07, 2005 1:19 am
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,
:?

Posted: Sun Aug 07, 2005 1:34 am
by Ransom
I agree with animatrix, although these are relatively small annoyances, they DO detract in the long run.

Posted: Sun Aug 07, 2005 10:30 am
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

Posted: Mon Aug 08, 2005 5:00 pm
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?

Posted: Mon Aug 08, 2005 8:02 pm
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

Posted: Wed Aug 17, 2005 9:16 pm
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.

Posted: Wed Aug 17, 2005 9:55 pm
by AndyCR
just out of curiosity, what engine did you choose?

Posted: Thu Aug 18, 2005 2:06 am
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.