[Help Wanted] "The First King" - FPS game. PRE-ALP

Announce new projects or updates of Irrlicht Engine related tools, games, and applications.
Also check the Wiki
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

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.
dejai
Posts: 522
Joined: Sat Apr 21, 2007 9:00 am

Post by dejai »

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
JP
Posts: 4526
Joined: Tue Sep 13, 2005 2:56 pm
Location: UK
Contact:

Post by JP »

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.
Image Image Image
fmx

Post by fmx »

great camera work Christian
looking forward to seeing more videos!

keep up the great work
:D
xfreakk
Posts: 14
Joined: Thu Nov 15, 2007 1:58 pm

Post by xfreakk »

Hey chris i was taking a look at your source. Where in your source would you say add a mesh character like the Dwarf.
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

Hi, Thanks for all your comment, It's appreciated. :D

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.
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

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:
Image
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

Updated the SVN, and files download.

this is the file structure if you want to recompile the project inside your Compiler:
Image

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.
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

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.
///////////////////////////////////////////////////////////////////////////////
// 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)
///////////////////////////////////////////////////////////////////////////////
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Updated example and docs

Post by christianclavet »

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. :wink:

Here is the list of commands now:
///////////////////////////////////////////////////////////////////////////////
// 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
////////////////////////////////////////////////////////////////////////////////
The source is available on the sourceforge site
Remember to replace IRRlicht.dll, in the Binary folder if you recompile.
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

Hi. Some changes and infos on the project. Updated in the first thread.
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

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.
MasterGod
Posts: 2061
Joined: Fri May 25, 2007 8:06 pm
Location: Israel
Contact:

Post by MasterGod »

I love the new site. Good work.
Image
Dev State: Abandoned (For now..)
Requirements Analysis Doc: ~87%
UML: ~0.5%
Jgoldnight
Posts: 31
Joined: Thu Jun 07, 2007 6:23 pm
Location: New York
Contact:

Post by Jgoldnight »

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!
christianclavet
Posts: 1638
Joined: Mon Apr 30, 2007 3:24 am
Location: Montreal, CANADA
Contact:

Post by christianclavet »

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)
Post Reply