[Help Wanted] "The First King" - FPS game. PRE-ALP
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi Mastergod.
The rig, mean the thing that make the camera move. This "rig" is using a basic IRRlicht camera, but does manipulate it as what you see on the demo. I'm building functions so that we'll not be limited by a specific kind of functionnality. I want to manipulate the camera, but in lots of case we'll need to manipulate the camera differently. (vehicle cam, tank cam, third person cam, first person cam, etc. ladder cam). All of those could be build by the functions that are available in there, so you'll build a new "rig" to support what you want to do. Later, I plan to incorporate XBOX360 controller support, so we could create a FPS rig that support that. (input function that will use the XBOX controller)
If you understand C++ well you should be able to incorporate it easily on your project. Most camera code is inside a single class and that class is inside a single file (include). Just have to check for some globals (device, etc) to port correctly.
The rig, mean the thing that make the camera move. This "rig" is using a basic IRRlicht camera, but does manipulate it as what you see on the demo. I'm building functions so that we'll not be limited by a specific kind of functionnality. I want to manipulate the camera, but in lots of case we'll need to manipulate the camera differently. (vehicle cam, tank cam, third person cam, first person cam, etc. ladder cam). All of those could be build by the functions that are available in there, so you'll build a new "rig" to support what you want to do. Later, I plan to incorporate XBOX360 controller support, so we could create a FPS rig that support that. (input function that will use the XBOX controller)
If you understand C++ well you should be able to incorporate it easily on your project. Most camera code is inside a single class and that class is inside a single file (include). Just have to check for some globals (device, etc) to port correctly.
A rig, could be described as a structure or framework in which certain entities may move around in, in predefined sets. For example a rigging on a sailing boat, allows you to pull up and down the sails, the same concept applies to Calvet's Camera System, as the camera is rigged, or in other words has been configured to an adjustable framework which can be configured to fit a certain size. Think of a camera on a flag pole as you pull it up the camera moves higher. Thats a good explanation of a rig. Hope that clears it up Master God.
Programming Blog: http://www.uberwolf.com
Christian, big congratulations on the progress with the camera!
The head tilt when strafing looks incredible, a very nice feature and i'm glad you managed to get it working! And the walk simulation is looking really cool too.
I think the head tilt to look round corners needs a bit more work though as it just rotates the head but to look round a corner you'd need to sort of rotate the body at the waist so that your head ends up going round the corner but your feet don't, do you see? If you need any suggestions on how to get that working i'm sure i can help you out.
'Crouch lower' could be called crawl, so you can crouch down onto your hands and knees sort of level and then go even lower to be crawling on your belly.
The head tilt when strafing looks incredible, a very nice feature and i'm glad you managed to get it working! And the walk simulation is looking really cool too.
I think the head tilt to look round corners needs a bit more work though as it just rotates the head but to look round a corner you'd need to sort of rotate the body at the waist so that your head ends up going round the corner but your feet don't, do you see? If you need any suggestions on how to get that working i'm sure i can help you out.
'Crouch lower' could be called crawl, so you can crouch down onto your hands and knees sort of level and then go even lower to be crawling on your belly.
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi, Thanks for all your comment, It's appreciated.
xfreakk, the current constructed rig does not have a character. This is not yet implemented. (The current constructed pre-build setup is for a FPS type camera rig.)
Having a character be part of the rig is one thing I want to try on. (Experiment will be easy since the functions are all separated)
I will try along this week or next week, to load a character and put it in the rig components. This could be the base of a RTS camera or WOW type. I want to see if I could try to mimic the camera rig used in GEARS OF WAR (Not sure I'm able to do it, because this rig is awesome!)
But this will be a nice thing to try. I still have a parent/child relation problem on the node to fix. Also, It would be nice, If I could build a crane rig for creating cinematic shoots for intros.
xfreakk, the current constructed rig does not have a character. This is not yet implemented. (The current constructed pre-build setup is for a FPS type camera rig.)
Having a character be part of the rig is one thing I want to try on. (Experiment will be easy since the functions are all separated)
I will try along this week or next week, to load a character and put it in the rig components. This could be the base of a RTS camera or WOW type. I want to see if I could try to mimic the camera rig used in GEARS OF WAR (Not sure I'm able to do it, because this rig is awesome!)
But this will be a nice thing to try. I still have a parent/child relation problem on the node to fix. Also, It would be nice, If I could build a crane rig for creating cinematic shoots for intros.
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi. I have decided to put more time on a tool I will need to develop and train myself on character animation in IRRlicht. Once that completed, I'll get back on the project.
I'm working on expanding the Mesh Viewer tool to allow more thing for characters. At the same time, it's should teach me how to bring character in, set the frames, set the Lights, etc.
Here is the developpement thread for this tool where I'm practicing.
Most of the things learned while creating it, will get back into the project.
http://irrlicht.sourceforge.net/phpBB2/ ... 775#144775
Here is a glimpse on the tool now:
I'm working on expanding the Mesh Viewer tool to allow more thing for characters. At the same time, it's should teach me how to bring character in, set the frames, set the Lights, etc.
Here is the developpement thread for this tool where I'm practicing.
Most of the things learned while creating it, will get back into the project.
http://irrlicht.sourceforge.net/phpBB2/ ... 775#144775
Here is a glimpse on the tool now:
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Updated the SVN, and files download.
this is the file structure if you want to recompile the project inside your Compiler:
The camera rig functions are more independant now. Found out about the STATIC keyword that I was NOT using in defining pointer in classes and loosing them to crash the application. This is working correctly now.
Added an example to use the camera rig class
File is here (Binary and source) :
http://downloads.sourceforge.net/first- ... ze=3474217
You use a single include, then:
1 command to use the class
1 command to initialize the class
1 command to refresh the class
So with the include, you only have to write 3 lines of code to make this work.
this is the file structure if you want to recompile the project inside your Compiler:
The camera rig functions are more independant now. Found out about the STATIC keyword that I was NOT using in defining pointer in classes and loosing them to crash the application. This is working correctly now.
Added an example to use the camera rig class
File is here (Binary and source) :
http://downloads.sourceforge.net/first- ... ze=3474217
You use a single include, then:
1 command to use the class
1 command to initialize the class
1 command to refresh the class
So with the include, you only have to write 3 lines of code to make this work.
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi, updated the Rig class for the camera rig functions (riggedcamera.h)
I've added more commands and function to change the parameter of the rig and updated the example with some documentation:
The example file is there on sourceforge:
http://downloads.sourceforge.net/first- ... ze=3475649
Here is the current documentation for using the include "riggedcamera.h" and have my camera rig. It need only this file now to be used on other projects.
I've added more commands and function to change the parameter of the rig and updated the example with some documentation:
The example file is there on sourceforge:
http://downloads.sourceforge.net/first- ... ze=3475649
Here is the current documentation for using the include "riggedcamera.h" and have my camera rig. It need only this file now to be used on other projects.
///////////////////////////////////////////////////////////////////////////////
// The first king camera rig system, By Christian Clavet
// Here are the commands that can be used:
//-----------------------------------------------------------------------------
// COMMANDS
//-----------------------------------------------------------------------------
// void changemode(bool wsm, bool smm, bool tlm, bool slm)
// Activate/Deactivate certain mode function of the rig
// Here are the modes:
// wsm = walksim mode (Default TRUE)
// smm = smooth movement mode (Default TRUE)
// tlm = Tilt when strafe (Default TRUE)
// slm = Slide when stop moving (Default TRUE)
// use example: CamRig.changemode(true, true, true, true)
// This will activate all the features offered by the rig
//------------------------------------------------------------------------------
// void setRigSpeed(int mode, float move, float strafe, float jump)
// Set the defined speed for each action movement
// modes are: 0=run, 1=walk, 2=crouch, 3=crawl
// use example: CamRig.setRigSpeed(0,5.0f,3.0f,5.0f);
// This will set the speed for RUN to:
// 5 units forward/backward
// 3 units left/right
// 5 units for jumping
//------------------------------------------------------------------------------
// void setRigTilt(int mode, float tilt, float speed)
// Set the tilt angle of the camera for certain actions
// modes are 0=Tilt angle when strafing, 1 Tilt angle when head tilt
// use example: CamRig.setRigTilt(0,4.5f,0.2f);
// This will set the tilt on strafe to 4.5 degrees, with a speed value of
// 0.2 increments for the speed of the move
//------------------------------------------------------------------------------
// void setRigCrouch(int mode, float value, float speed)
// Set the crouch values
// modes are: 0=crouch, 1=crawl
// use example: CamRig.setRigCrouch(0,-30.0f,0);
// This will set the crouch value to lower minus 30 unit lower the rig
// when using that action
//------------------------------------------------------------------------------
// void setRigWalk(float amplitude)
// set the amplitude of the walk simulator (if used)
// use example: CamRig.setRigWalk(0.5f);
// This will lower the amplitude in half of the default value
// The parameter multiply the value
//
//------------------------------------------------------------------------------
// void createFPSrig()
// create a FPS type camera rig, this rig is composed of multiples
// functions and two extra noes (empty nodes) that are used to
// do the crouch
// use example CamRig.createFPSrig();
// This will create the camera rig with the default values
//-----------------------------------------------------------------------------
// void OnAnimate(u32 TimeMS)
// This will animate and refresh the camera rig
// use example CamRig.OnAnimate(device->getTimer()->getRealTime());
// This will refresh the position and movement of the camera rig
// and send back time info for the time functions
//------------------------------------------------------------------------------
// FUNCTIONS
//------------------------------------------------------------------------------
// scene::ICameraSceneNode * getCamera()
// Return the current pointer of the camera
// use example: CamRig.getCamera()->setFOV(45*DEGTORAD);
// The rig camera will change the Field of view to 45 degree
//------------------------------------------------------------------------------
// float getCurrentSpeed()
// Return the current rig movement speed
// use example: float speed=CamRig.getCurrentSpeed();
// Will retrieve the current speed the rig moves (forward/backward)
///////////////////////////////////////////////////////////////////////////////
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Updated example and docs
Hi, I've updated the RiggedCamera.h source, example and demo
Changes (Feb. 7Th, 2008):
- Now Animators applied to the camera are taken into account, this could have caused some strange behaviors. I had a timing problem that caused this to not work. Now fixed.
- The include is almost completely indepedant from the user source now.
When you create your FPSCameraRig, you enter the device pointer as parameter.
- CuteAlien, gave me the solution for Event Handling (sharing events with multiple event handlers). The source is included in the example (eventreceiver.h)
With this you can add multiple event receiver classes and this "master class" will maintain all of them. This was required on lots of my projects (gui handling, different keyboard mapping for rigs etc) Very simple to use and setup. Would be nice if this would be put in the next version of the Irrlicht SDK.
- Added more functions and command to tweak more the current rig. But the rig can be started with only 1 command for Init and 1 command for refresh. It's pretty simple.
Here is the list of commands now:
Remember to replace IRRlicht.dll, in the Binary folder if you recompile.
Changes (Feb. 7Th, 2008):
- Now Animators applied to the camera are taken into account, this could have caused some strange behaviors. I had a timing problem that caused this to not work. Now fixed.
- The include is almost completely indepedant from the user source now.
When you create your FPSCameraRig, you enter the device pointer as parameter.
- CuteAlien, gave me the solution for Event Handling (sharing events with multiple event handlers). The source is included in the example (eventreceiver.h)
With this you can add multiple event receiver classes and this "master class" will maintain all of them. This was required on lots of my projects (gui handling, different keyboard mapping for rigs etc) Very simple to use and setup. Would be nice if this would be put in the next version of the Irrlicht SDK.
- Added more functions and command to tweak more the current rig. But the rig can be started with only 1 command for Init and 1 command for refresh. It's pretty simple.
Here is the list of commands now:
The source is available on the sourceforge site///////////////////////////////////////////////////////////////////////////////
// The first king camera rig system, By Christian Clavet
// Here are the commands that can be used:
////////////////////////////////////////////////////////////////////////////////
// COMMANDS////////////////////////////////////////////////////////////////////////////////
// void createFPSrig(IrrlichtDevice * deviceparm)
//
// Create a FPS rig and get the DEVICE pointer for the entire class
// This FPS rig is composed of a Camera and 2 empty nodes for controls
//------------------------------------------------------------------------------
// void OnAnimate(u32 TimeMS)
//
// Time based animation function
// This will animate the rig and calculate the time
// This "animate function" do the Rig assembly
//------------------------------------------------------------------------------
// void changemode(bool wsm, bool smm, bool tlm, bool slm)
//
// Activate/Deactivate certain mode function of the rig
// Here are the modes:
// wsm = walksim mode (Default TRUE)
// smm = smooth movement mode (Default TRUE)
// tlm = Tilt when strafe (Default TRUE)
// slm = Slide when stop moving (Default TRUE)
// use example: CamRig.changemode(true, true, true, true)
// This will activate all the features offered by the rig
//------------------------------------------------------------------------------
// void setRigSpeed(int mode, float move, float strafe, float jump)
//
// Set the defined speed for each action movement
// modes are: 0=run, 1=walk, 2=crouch, 3=crawl
// use example: CamRig.setRigSpeed(0,5.0f,3.0f,5.0f);
// This will set the speed for RUN to:
// 5 units forward/backward
// 3 units left/right
// 5 units for jumping
//------------------------------------------------------------------------------
// void setRigTilt(int mode, float tilt, float speed)
//
// Set the tilt angle of the camera for certain actions
// modes are 0=Tilt angle when strafing, 1 Tilt angle when head tilt
// use example: CamRig.setRigTilt(0,4.5f,0.2f);
// This will set the tilt on strafe to 4.5 degrees, with a speed value of
// 0.2 increments for the speed of the move
//------------------------------------------------------------------------------
// void setRigCrouch(int mode, float value, float speed)
//
// Set the crouch values
// modes are: 0=crouch, 1=crawl
// use example: CamRig.setRigCrouch(0,-30.0f,0);
// This will set the crouch value to lower minus 30 unit lower the rig
// when using that action
//------------------------------------------------------------------------------
// void setRigWalk(float amplitude)
//
// set the amplitude of the walk simulator (if used)
// use example: CamRig.setRigWalk(0.5f);
// This will lower the amplitude in half of the default value
// The parameter multiply the value
//------------------------------------------------------------------------------
// void setRigSceneUpDownMax(float up, float down)
//
// This define the limit in case of falling outside the level
// Will position the rig at the UP max if falling
//------------------------------------------------------------------------------
// void setRigTargetDistance(float distance)
//
// Set the target distance from the camera. It is recommended that you use
// a high value like (1000-2000, etc).
// Warning: could exibit weird behavior if distance is short and walksim is on.
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
////////////////////////////////////////////////////////////////////////////////
// scene::ICameraSceneNode * getCamera()
//
// Return the current pointer of the camera
// use example: CamRig.getCamera()->setFOV(45*DEGTORAD);
// The rig camera will change the Field of view to 45 degree
//------------------------------------------------------------------------------
// float getCurrentSpeed()
//
// Return the current rig movement speed
// use example: float speed=CamRig.getCurrentSpeed();
// Will retrieve the current speed the rig moves (forward/backward)
//------------------------------------------------------------------------------
// stringw getRigState()
//
// Function to return the rig state in a text string (temporary)
// This will need to be changed to something more convenient
////////////////////////////////////////////////////////////////////////////////
Remember to replace IRRlicht.dll, in the Binary folder if you recompile.
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi. I've talked with my teacher about this project. He recommended me strongly to update the project web site and define a specific forum for the project.
If you want to have a peak at the new site:
http://first-king.sourceforge.net/index.html
The dev forum is also up, but I still have some infos to put in.
If you want to have a peak at the new site:
http://first-king.sourceforge.net/index.html
The dev forum is also up, but I still have some infos to put in.
-
- Posts: 31
- Joined: Thu Jun 07, 2007 6:23 pm
- Location: New York
- Contact:
I've been following this project for some time now, and I have tinkered with both the code and released demos. I think you guys are amazing for having this project open to the public. Personally, I have learned quite a bit about Irrlicht and game development from analyzing your code and spec documents.
I would hope to be able to learn enough about Irrlicht through my own side projects to be able to contribute some code in the near future, but you guys seem to be years ahead of me. I'll catch up eventually
Good luck on the next stages of development Chris!
I would hope to be able to learn enough about Irrlicht through my own side projects to be able to contribute some code in the near future, but you guys seem to be years ahead of me. I'll catch up eventually
Good luck on the next stages of development Chris!
-
- Posts: 1638
- Joined: Mon Apr 30, 2007 3:24 am
- Location: Montreal, CANADA
- Contact:
Hi. I have a new teacher in game/level design since last week. I have done a nicer version of the project web site following is recommendations, and will update my game design documentation shortly from what I'll learn in class.
My teacher in class is very kind to give me lots of infos to improve my communication docs about the First King project, so it will improve the overall planning of the project.
I still have some other concept arts and drawing to do, so we'll have some idea of the working of the game. (Only 3 for the level story now, I would like to have six now). I publicly show the infos for the first 3 levels and would like to show at least 2 concept art pictures so you would have a better idea what is all about.
I have planned 9 levels for the game, given the description on the site (for 3 level).
I'll also will do more concept sketches in the following month for the level details (the characters, the weapons, etc.), theses will mostly go on the site too. When theses will be completed, the basic work to start the first level modeling will start so I'll have a first prototype to show. (no AI for the first prototype)
My teacher in class is very kind to give me lots of infos to improve my communication docs about the First King project, so it will improve the overall planning of the project.
I still have some other concept arts and drawing to do, so we'll have some idea of the working of the game. (Only 3 for the level story now, I would like to have six now). I publicly show the infos for the first 3 levels and would like to show at least 2 concept art pictures so you would have a better idea what is all about.
I have planned 9 levels for the game, given the description on the site (for 3 level).
I'll also will do more concept sketches in the following month for the level details (the characters, the weapons, etc.), theses will mostly go on the site too. When theses will be completed, the basic work to start the first level modeling will start so I'll have a first prototype to show. (no AI for the first prototype)