Disorder - a physics FPS [vid. update]
- nullsquared
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
Disorder - a physics FPS [vid. update]
This is an FPS I'm working on right now. It's meant to be a physics puzzle game, much like HL2.
I realize it doesn't show anything crazily spectacular with Ogre, but I wish to put it here to show how great Ogre is when combined with a physics engine and how easy it is to get things working fast and nicely.
Video:
http://www.youtube.com/watch?v=YYGsJ88xsm4
I seriously suggest you watch the video, it's streaming and it does the game much more justice than the screenshots, since, after all, physics... move.
Some screenies: (note that this was from a debug build at 6x AA and 16x AF - in release mode, I get in the order of 100s of FPS)
(Disorder Engine is the name of the game engine, it combines several libraries into a pretty much usable game engine...)
The physics library used was Newton. It's really easily and fun to integrate Newton with Ogre, I can tell you that! (I didn't use one of the pre-made wrappers for various reasons.)
Random Features:
- see-your-feet. I just loved how F.E.A.R. did it, so I HAD to have it in there. Haha!
- pick up stuff. usual HL2 stuff - walk around, press use on something, and pick it up. Bonus - no glitches with picked up stuff, no prop-surfing Stuff gets dropped when you press use again, throw it, or get too far from it (maybe it got stuck somewhere) You can also rotated anything you're holding. Remember holding that bucket in HL2 and not being able to turn it? Oh yeah, that was most definitely annoying. Not any more.
- throw stuff. you can either "kick around" things you didn't pick up, or throw something you're holding.
- completely physical character control. Note: all rotation is graphics-side only, I wouldn't have been able to do this without Ogre and it's genius orientations of nodes via quaternions and what-not.
- spawn... anything. all you do is create a lua script defining an object. you can use built-in primitives or a simple Ogre mesh as a convex hull. Then you just create a ScriptedObject and tell it to load so-and-so script. Tada, it all "just works".
- there is no defined "down". Think Prey. Down is anything you want it to be. Whenever the player gets a bit disorientated he Slerps to a standing position
- a bunch of other fun stuff
Note that this isn't a final release or anything. It's just a simple demo showing random things. There's a crap-load of portal code in there that did nothing in the video (remember the Portalized/v01dEngine portals thread?)
What do you think?
I realize it doesn't show anything crazily spectacular with Ogre, but I wish to put it here to show how great Ogre is when combined with a physics engine and how easy it is to get things working fast and nicely.
Video:
http://www.youtube.com/watch?v=YYGsJ88xsm4
I seriously suggest you watch the video, it's streaming and it does the game much more justice than the screenshots, since, after all, physics... move.
Some screenies: (note that this was from a debug build at 6x AA and 16x AF - in release mode, I get in the order of 100s of FPS)
(Disorder Engine is the name of the game engine, it combines several libraries into a pretty much usable game engine...)
The physics library used was Newton. It's really easily and fun to integrate Newton with Ogre, I can tell you that! (I didn't use one of the pre-made wrappers for various reasons.)
Random Features:
- see-your-feet. I just loved how F.E.A.R. did it, so I HAD to have it in there. Haha!
- pick up stuff. usual HL2 stuff - walk around, press use on something, and pick it up. Bonus - no glitches with picked up stuff, no prop-surfing Stuff gets dropped when you press use again, throw it, or get too far from it (maybe it got stuck somewhere) You can also rotated anything you're holding. Remember holding that bucket in HL2 and not being able to turn it? Oh yeah, that was most definitely annoying. Not any more.
- throw stuff. you can either "kick around" things you didn't pick up, or throw something you're holding.
- completely physical character control. Note: all rotation is graphics-side only, I wouldn't have been able to do this without Ogre and it's genius orientations of nodes via quaternions and what-not.
- spawn... anything. all you do is create a lua script defining an object. you can use built-in primitives or a simple Ogre mesh as a convex hull. Then you just create a ScriptedObject and tell it to load so-and-so script. Tada, it all "just works".
- there is no defined "down". Think Prey. Down is anything you want it to be. Whenever the player gets a bit disorientated he Slerps to a standing position
- a bunch of other fun stuff
Note that this isn't a final release or anything. It's just a simple demo showing random things. There's a crap-load of portal code in there that did nothing in the video (remember the Portalized/v01dEngine portals thread?)
What do you think?
Last edited by nullsquared on Sun Oct 28, 2007 5:47 pm, edited 1 time in total.
-
- Gnoblar
- Posts: 1
- Joined: Mon Oct 22, 2007 2:38 am
- Aladrin
- Orc
- Posts: 465
- Joined: Fri Mar 10, 2006 10:22 pm
- irishlostboy
- Halfling
- Posts: 79
- Joined: Mon May 28, 2007 4:28 pm
Re: Disorder - a physics FPS
not bad at all. everything seems to work. just needs prettyfying.
you will find some nice physics prop models and destructable models if you follow the link in my sig.
you will find some nice physics prop models and destructable models if you follow the link in my sig.
our current pc game in development: http://archangel-studio.blogspot.com/
- irishlostboy
- Halfling
- Posts: 79
- Joined: Mon May 28, 2007 4:28 pm
\\zog349 wrote:Very nicely done! Would you mind if I inundated you with models to use?
zog, if you have 3d models that you would like to share, people around here will be happy to have them. your best bet is put them up on sharecg. as ogre 3d is really programmer heavy, you will find they get used a lot.
our current pc game in development: http://archangel-studio.blogspot.com/
- walaber
- OGRE Expert User
- Posts: 829
- Joined: Sat Oct 02, 2004 2:20 pm
- Location: California, USA
- Contact:
- nullsquared
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
Thanks, guys
BTW, this isn't finished or anything. There's a lot more to be done, such as, *cough* the main level format . I also have to add a ScriptedJoint to accompany my ScriptedObject, because right now all you can do is spawn completely customized bodies. I also forgot to add water, lol! Then I'll have to finish portals. I went from visuals to physics to visuals to physics. Now I have a visual implementation and a physics implementation. Each in a separate project I wanted to finish them before Portal came out, but oh well.
@ zog349: I have 2 modelers on my mini "team", if you wish to call it that (it's actually just them and me xD)... one is supposedly working on a big level, and the other... I only saw a cube from him. And a simple square that I needed before. Right now I'm in dire need of a proper level (hopefully my first modeler holds up what he's saying ) and random props. Cups, boxes, anything. Email me at nullsquared at [I hate spam, yes ] google's mail dot com, I'd love more help . I tried modeling with Blender3D once. No, not my thing
BTW, this isn't finished or anything. There's a lot more to be done, such as, *cough* the main level format . I also have to add a ScriptedJoint to accompany my ScriptedObject, because right now all you can do is spawn completely customized bodies. I also forgot to add water, lol! Then I'll have to finish portals. I went from visuals to physics to visuals to physics. Now I have a visual implementation and a physics implementation. Each in a separate project I wanted to finish them before Portal came out, but oh well.
@ zog349: I have 2 modelers on my mini "team", if you wish to call it that (it's actually just them and me xD)... one is supposedly working on a big level, and the other... I only saw a cube from him. And a simple square that I needed before. Right now I'm in dire need of a proper level (hopefully my first modeler holds up what he's saying ) and random props. Cups, boxes, anything. Email me at nullsquared at [I hate spam, yes ] google's mail dot com, I'd love more help . I tried modeling with Blender3D once. No, not my thing
- irishlostboy
- Halfling
- Posts: 79
- Joined: Mon May 28, 2007 4:28 pm
well, i will be putting this level file out on my sharecg page in a few weeks when it is done.
it still needs a little work yet, (or a lot)
and like i said, there are no shortage of objects to play with as physics props.
just add your own collision model, and you are good to go.
dont have time to take on any more "team" membership at the moment, but from what i have out already, you should have enough to get started with.
maybe later, when you have developed your idea further, i can do more custom work for you.
hope that helps
it still needs a little work yet, (or a lot)
and like i said, there are no shortage of objects to play with as physics props.
just add your own collision model, and you are good to go.
dont have time to take on any more "team" membership at the moment, but from what i have out already, you should have enough to get started with.
maybe later, when you have developed your idea further, i can do more custom work for you.
hope that helps
our current pc game in development: http://archangel-studio.blogspot.com/
-
- Greenskin
- Posts: 122
- Joined: Thu Jun 02, 2005 3:24 pm
Take a look at the low poly coop for good, low poly, free 3d models.
- nullsquared
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
- nullsquared
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
Here's a bit of a newer video:
http://video.google.com/videoplay?docid ... 5029&hl=en
(sorry for the crappy quality, Google's compression is way uglier than YouTube's, but my video was 111.11 MB)
All of the code there that does the whole gravity flip is:
And it *Just Works* since everything is so flexible. The player can technically re-adjust to the gravity automatically, but since we already had the "down" direction here I just told him the new up directly.
http://video.google.com/videoplay?docid ... 5029&hl=en
(sorry for the crappy quality, Google's compression is way uglier than YouTube's, but my video was 111.11 MB)
All of the code there that does the whole gravity flip is:
Code: Select all
Ogre::Vector3 ndown = -player->getHeadOrientation().zAxis();
player->setUp(-ndown);
physMgr->globalGravity.amount = ndown * 9.81;
// note that some things may be asleep and not notice the gravity change
physMgr->wakeEverything();
- irishlostboy
- Halfling
- Posts: 79
- Joined: Mon May 28, 2007 4:28 pm
this looks good. is the gravity just "slow" or is it framerate problems? everything seems to fall too slow. apart from that solid proof of concept. would be nice to see this less ugly, and with some gameplay.
our current pc game in development: http://archangel-studio.blogspot.com/
- nullsquared
- Old One
- Posts: 3245
- Joined: Tue Apr 24, 2007 8:23 pm
- Location: NY, NY, USA
- x 11
Hm. Well, gravity is 9.81 meters per second in the demos. I guess it does fall a bit "slow", but it doesn't look too bad. At least not when I'm doing things. Then again, my update rate is a bit slow (60Hz). Maybe I'll try 120Hz, instead. Talking about the physics, that is. My FPS in release is 400+, that's with 1024x768 @ 6x AA and 16x AF.irishlostboy wrote:this looks good. is the gravity just "slow" or is it framerate problems? everything seems to fall too slow. apart from that solid proof of concept. would be nice to see this less ugly, and with some gameplay.
Small updates:
- I'm working on a small "hud" type of thing. I mainly want to be able to display some text and a crosshair. Result:
- I switched the view-flipping algorithm. It now preserves your forward view vector as much as possible, rather than just construct a new orientation from an "up" vector.
- I switched to ray-casting for the findObjectToHold() method (holding and finding something to hold is completely different from each other, this is quite useful for several things). Now it works completely seperately from the environment, so it works under all circumstances (the other algo wouldn't find anything to pickup if down wasn't -Y).