Pickles asking for help from all you good folks....

Discuss any other topics here
Post Reply
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Pickles asking for help from all you good folks....

Post by Pickles »

Hello everyone, hope things are going good with RF and RF2. I see the latest update is awesome and the latest demos are even cooler! It's all good.

As you know I'v been pumping away at FreeVector (which is coming along AWESOME!!) and am now working on localization and language interpretation. So anyways, although it has a Direct Input manager to get device input data, it also uses an asynchronous key checking system as a backup.

Now.... The RF system maps key values to an array to define the value of key in the keyboard data buffer. This is the same as the backup asynchronous system used in FreeVec. The problem is that when a German or French keyboard is used instead, the rearangement of keys changes. Now, Direct Input takes care of all that for you, but I'd like to make the backup keyboard system as verstaile as well.

So, what I need is..... A mapping of your languages keys. In other words a keymap version of your languages keyboard like this thread :

viewtopic.php?t=282

With this info, I can automatically map the keys depending on the language of the keyboard.

Many thanks to anyone who takes the time help me out with this. I appreciate it very much and will acknowledge your contribution upon the release of FreeVector.

Thanks again!
copen
Posts: 8
Joined: Tue Jan 24, 2006 10:19 am

Post by copen »

Hi Pickles

Are you asking only for people using a german or french keyboards, or are you asking people from anywhere in the world :)
Would love to help, but I am not sure how helpfull a danish keyboard layout would be to you... or would it??

Cheers
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Post by Pickles »

Yes that would be a great help. I'd like to fit as many possible languages as I can. If you have the time, a Dutch keyboard layout would be awesome!

Thanks for stepping up with the offer copen. Of course I'll have to have you as a beta tester when it's almost compelte as well. (To be sure that I mapped the keyboard correctly.)

Thanks again all.

Edit - Just wanted to also point out, that when all these keyboard layouts are presented here, this can also be an easy midifcation to RF that can make a scripted player work on almost any languages keyboard.
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Post by Pickles »

You know what, no worries folks. I found all of teh keyboard layouts online. Don't know what the difference between the German one is though? The keys look exactly in the same order.

Anyways, thanks again.

PS - Can I do a shameless FreeVector promotion? LOL, I'll save it for another time.
User avatar
QuestOfDreams
Site Admin
Posts: 1520
Joined: Sun Jul 03, 2005 11:12 pm
Location: Austria
Contact:

Post by QuestOfDreams »

Don't know what the difference between the German one is though? The keys look exactly in the same order.


Y and Z keys are swapped, at the position of [ ; and ' the german layout has umlaute etc

PS: try to avoid such keys in your game's control system :wink:
copen
Posts: 8
Joined: Tue Jan 24, 2006 10:19 am

Post by copen »

PS - Can I do a shameless FreeVector promotion? LOL, I'll save it for another time.
Oh please do! Looking very much forwars to see what your are fiddling around with :wink: Maybe a website at some point?
User avatar
federico
RF Dev Team
Posts: 443
Joined: Tue Jul 05, 2005 3:14 pm
Contact:

Post by federico »

Nice to hear about you, fratello!
Please put some screens somewhere on the net. Let us see those goodies!
:D :wink:
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Post by Pickles »

>>Y and Z keys are swapped<<
Right, missed that. Guess that's why the old style s,z,x,c control scheme had trouble with it. Cool.

No worries folks I'll soon have scrrens and a web site and the whole deal, but I can't releae anything in 'bits and peices'. That usually messes things up, I find.

But to do a bit of shameless promo again, here are a couple of cool features that it has:

- Full support for directx FX files.
- Scriptable Fixed Function interface.
- Supports multiple mesh models.
- Automatically loads textures from FX files.
- Load up to 8 subset texture groups per model and unlimited extra textures for effects.
- Render passes can be seperated on a per texture basis. (TRON 2.0 Glow effects, heat haze, etc..)
- Multi threaded level loading, lighting calculations, animations, AI, physics and sound.
- Event driven AI system takes the logic out of writing scripts. Just set the behaviours and states and then write the script code for each event.
- Averaged framerates for super smooth movement.

Anyways, thanks for letting me get that off my chest, I don't really talk to anyone about this, so it's a releif to. I'll keep you all posted.

Thanks again.
User avatar
SithMaster
Posts: 306
Joined: Mon Jul 04, 2005 11:45 pm

Post by SithMaster »

Would it be possible to let levels made in rf be interoperable with freevector? this way if i have stuff made already i can still use them without having to try and recreate them.

but it sounds good so far.
The brightest light casts the darkest shadow.
Burn the heretic. Kill the mutant. Purge the unclean.
GD1
Posts: 413
Joined: Tue Jul 05, 2005 2:33 pm

Post by GD1 »

sweet! can't wait to take a look at this! :)
Check out my band
Tougher Than Fort Knox
Image
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Post by Pickles »

>>made in rf be interoperable with freevector<<

That's a very good question that I've been thinking about for a while actually.

I have already made BSP converters that can take a compiled level and create a 3ds mesh for use with other engines. It would also be trivial to read compatable entity data from a 3dt. Getting at the lightmap data however would be the real goal. FreeVector lets you use any type of lighting system you like. You can use lightmaps generated in another program or by FreeVector or generate shadow maps or use shadow volumes. (It lets you create any effect you want.) The Genesis lightmapping/radiosity process is still one of the best around I say and being able to port that data would be awesome! But in any case, the RF level can always be exported to 3ds (thank to Quest) and just loaded into FreeVector like that. (sens lightmaps) So at least you can export the geometry. Incidently, all of my testing is done with an exported version of Cell Division.

Anyways, again, thanks for letting me talk about this stuff. I get to so rarely lately. Now I'm off to add dynamic gamma controls. (A super cool lighting trick! Check out the technique in Game Programming Gems 4 - Dynamic Gamma using Sampled Scene Luminence.)

Cheers!
copen
Posts: 8
Joined: Tue Jan 24, 2006 10:19 am

Post by copen »

Haha pickles, if you want to talk about FreeVector, I am sure a LOT of people would be eager listeners. I know I would.

Fx; My biggest question is if it will be as easy to use as RF for non-programmers?

Will it have physics, normalmapping, realtime shadows, multiplayer etc etc. Whatever you can think of ;0)

Under what license will it be published?

If you dont wanna let us know more atm that is fine too... your the man!
Pickles
Posts: 40
Joined: Mon Jan 23, 2006 4:26 pm

Post by Pickles »

>>Will it have physics, normalmapping, realtime shadows, multiplayer etc etc<<

It has physics for objects that are defined as physical and it also uses 'force spheres' to generate explosions. (Needs some work for those though. THe ol' blast through walls bug is there) Multiplayer is a messaging system so the best it can produce for a multiplayer game is the 'twitchy' first person shooter.

As for normal mapping shadows and all that, it is added by the user through the rendering scripts. THis is where all the rendering of the scene, passes and models /effects are controlled from. So a person must know DX9 to create theese effects. Here is a small example of a rendering script that detects whether or not multi passes are available on the card and if not uses a double pass system to blend two textures:

Code: Select all

INIT[()
{
	//Set the Device States

	SetMultiPass(false);
	SetRenderStages(1);

	SetRenderState("D3DRS_LIGHTING", "FALSE");
	SetAmbientLightColor(255,255,255);
	SetRenderState("D3DRS_CULLMODE", "D3DCULL_CCW");
	//SetRenderState("D3DRS_FILLMODE", "D3DFILL_SOLID");
	//SetRenderState("D3DRS_FILLMODE", "D3DFILL_WIREFRAME");
	SetRenderState("D3DRS_NORMALIZENORMALS", "TRUE");
	SetRenderState("D3DRS_ZENABLE","D3DZB_TRUE");

//	EnableSpecular(true);

	//FOG
	SetRenderState("D3DRS_FOGENABLE","TRUE");
	SetRenderState("D3DRS_RANGEFOGENABLE","TRUE");
	SetRStateValue("D3DRS_FOGCOLOR",0);
	SetRenderState("D3DRS_FOGTABLEMODE","D3DFOG_LINEAR"); //pixel fog
	SetRenderState("D3DRS_FOGVERTEXMODE","D3DFOG_LINEAR"); // vertex fog
	SetRStateValue("D3DRS_FOGSTART",20);
	SetRStateValue("D3DRS_FOGEND",50);

	SetSamplerState(0,"D3DSAMP_MAGFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(0,"D3DSAMP_MINFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(1,"D3DSAMP_MAGFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(1,"D3DSAMP_MINFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(2,"D3DSAMP_MAGFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(2,"D3DSAMP_MINFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(3,"D3DSAMP_MAGFILTER", "D3DTEXF_ANISOTROPIC");
	SetSamplerState(3,"D3DSAMP_MINFILTER", "D3DTEXF_ANISOTROPIC");

if(GetMultiPass() > 1)
{

	//-------------single pass multitexturing------------------

	SetTStageState(0,"D3DTSS_COLORARG1","D3DTA_TEXTURE");
	SetTStageState(0,"D3DTSS_COLOROP","D3DTOP_SELECTARG1");
	SetTStageState(1, "D3DTSS_TEXCOORDINDEX", "D3DTSS_TCI_PASSTHRU");
	SetTStageState(1,"D3DTSS_COLORARG1","D3DTA_TEXTURE");
	SetTStageState(1,"D3DTSS_COLORARG2","D3DTA_CURRENT");
	SetTStageState(1,"D3DTSS_COLOROP","D3DTOP_MODULATE");

}
else
{
	SetRenderState("D3DRS_ALPHABLENDENABLE","TRUE");
	SetRenderState("D3DRS_CULLMODE", "D3DCULL_NONE");
}

	font = AddFont(32,32,10,1,false,"Arial");
	fur = LoadEffect("fureffect.fx","Furry");
	ShowFPS(true,font);
	LoadWorld("world.fvw");
	NewOrder("FRAME");
	return 0;

}]

FRAME[()
{
	if(IsWorldLoaded())
	{
	sp = CreateSphere(4,12,10,0,10,20,fur);
	sp = CreateSphere(6,12,8,3,6,15,fur);
	sp = CreateSphere(3,12,15,-1,5,10,fur);
	NewOrder("FRAME2");
	return 0;
	}
	
	DrawText(0,"Loading.",100,200,100,200,200,255);
	return 0;

}]


FRAME2[()
{

	UseMouseView();

	if(CheckDIKey("LEFT")) 
	{
		CameraTurn(-25);
	}
	if(CheckDIKey("RIGHT")) 
	{
		CameraTurn(25);
	}
	if(CheckDIKey("UP")) 
	{
		CameraTilt(-25);
	}
	if(CheckDIKey("DOWN")) 
	{
		CameraTilt(25);
	}
	if(CheckDIKey("W")) 
	{
		CameraWalk(-200);
	}
	if(CheckDIKey("S")) 
	{
		CameraWalk(200);
	}
	if(CheckDIKey("A")) 
	{
		CameraStrafeWalk(200);
	}
	if(CheckDIKey("D")) 
	{
		CameraStrafeWalk(-200);
	}

	return 0;

}]

MODELRENDER[()
{
if(GetMultiPass() < 2)
{
    //First rendering
    SetRenderState("D3DRS_SRCBLEND","D3DBLEND_ONE");
    SetRenderState("D3DRS_DESTBLEND","D3DBLEND_ZERO");
    RenderModel();

   //second rendering
    SetBaseSubset(0,0);
    SetRenderState("D3DRS_SRCBLEND","D3DBLEND_ZERO");
    SetRenderState("D3DRS_DESTBLEND","D3DBLEND_SRCCOLOR");
}

}]

}

The above script is a simple example of a 'game script'. INIT is run first and then Frame then Frame2 when the world is loaded. These are run prior to rndering the scene. MODELRENDER is called prior to the model being rendered. If the card can do simultalneous render passes then it is setup in the init order, otherwise, the MODELRENDER script renders two passes of the model, switching to the first set of extra loaded subset textures for the second pass. If the second set of subset textures was defined as LIGHTMAP, then it would use the lightmp texture for that part of the 'world.' (Extra textures are defined in a model file.) There are also a few 'macro' commands to help things along though, like : UseDot3(), UseENVBump() and a couple more.

That all happens through the Fixed Function pipeline. If you look at the script though, you will see that it also loads an effect and applies it to some spheres that it draws. Those are all renderd using the programmable pipeline and through an effect file. You can use both simultaneously and control the rendering of the scene or model the whole way through.

This system requires that a person knows DX9 and how to create the effect, but there will be many examples and fx files with the release.

Anyways, back to work....
Post Reply