Pickles asking for help from all you good folks....
Pickles asking for help from all you good folks....
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!
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!
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.
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.
- QuestOfDreams
- Site Admin
- Posts: 1520
- Joined: Sun Jul 03, 2005 11:12 pm
- Location: Austria
- Contact:
>>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.
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.
- SithMaster
- Posts: 306
- Joined: Mon Jul 04, 2005 11:45 pm
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.
but it sounds good so far.
The brightest light casts the darkest shadow.
Burn the heretic. Kill the mutant. Purge the unclean.
Burn the heretic. Kill the mutant. Purge the unclean.
>>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!
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!
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!
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!
>>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:
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....
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");
}
}]
}
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....