Disorder - a physics FPS [vid. update]

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
Post Reply
User avatar
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]

Post by nullsquared »

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)

Image
Image
Image
Image
Image
(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 :D

- a bunch of other fun stuff :D

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.
zog349
Gnoblar
Posts: 1
Joined: Mon Oct 22, 2007 2:38 am

Post by zog349 »

Very nicely done! Would you mind if I inundated you with models to use?

I... have very little to say. Nice job. Wish I had the commitment to make something like that. I can model models, though. ;P If you are interested.

(Never mind about the models, I think you got it covered. :P)
User avatar
Aladrin
Orc
Posts: 465
Joined: Fri Mar 10, 2006 10:22 pm

Post by Aladrin »

Nice job agi_shi! I've been wishing I had time to do something similar.

zog349... If you've really got models you want to give out, I'm sure there are plenty of people that would be interested in them. My biggest problem is that I have no models, and my second is that I have no time.
User avatar
irishlostboy
Halfling
Posts: 79
Joined: Mon May 28, 2007 4:28 pm

Re: Disorder - a physics FPS

Post by irishlostboy »

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.
our current pc game in development: http://archangel-studio.blogspot.com/
User avatar
irishlostboy
Halfling
Posts: 79
Joined: Mon May 28, 2007 4:28 pm

Post by irishlostboy »

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/
User avatar
walaber
OGRE Expert User
OGRE Expert User
Posts: 829
Joined: Sat Oct 02, 2004 2:20 pm
Location: California, USA
Contact:

Post by walaber »

the physics surrounding picking up, rotating, and dropping objects looks really nice, good job!
Go Go Gadget OGRE!!
Image
User avatar
nullsquared
Old One
Posts: 3245
Joined: Tue Apr 24, 2007 8:23 pm
Location: NY, NY, USA
x 11

Post by nullsquared »

Thanks, guys :D

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 :cry: :oops: 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 :roll:) and random props. Cups, boxes, anything. Email me at nullsquared at [I hate spam, yes :D] google's mail dot com, I'd love more help :D. I tried modeling with Blender3D once. No, not my thing :shock:
User avatar
irishlostboy
Halfling
Posts: 79
Joined: Mon May 28, 2007 4:28 pm

Post by irishlostboy »

well, i will be putting this level file out on my sharecg page in a few weeks when it is done.
Image

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

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/
Horizon
Greenskin
Posts: 122
Joined: Thu Jun 02, 2005 3:24 pm

Post by Horizon »

Take a look at the low poly coop for good, low poly, free 3d models.
Elspin
Gnoblar
Posts: 20
Joined: Thu Oct 04, 2007 7:40 pm

Post by Elspin »

This looks really great, but I definitely wouldn't call hl2 a physics puzzle game - it did have some but mostly it was a shooter. :wink:
User avatar
nullsquared
Old One
Posts: 3245
Joined: Tue Apr 24, 2007 8:23 pm
Location: NY, NY, USA
x 11

Post by nullsquared »

Elspin wrote:This looks really great, but I definitely wouldn't call hl2 a physics puzzle game - it did have some but mostly it was a shooter. :wink:
Well, yeah. I didn't mean it as "HL2 == all physics puzzles", just as in "the type of physics puzzles found in HL2". :)
User avatar
nullsquared
Old One
Posts: 3245
Joined: Tue Apr 24, 2007 8:23 pm
Location: NY, NY, USA
x 11

Post by nullsquared »

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:

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();
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.
User avatar
Aladrin
Orc
Posts: 465
Joined: Fri Mar 10, 2006 10:22 pm

Post by Aladrin »

Again, very nice work.
User avatar
irishlostboy
Halfling
Posts: 79
Joined: Mon May 28, 2007 4:28 pm

Post by irishlostboy »

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/
User avatar
nullsquared
Old One
Posts: 3245
Joined: Tue Apr 24, 2007 8:23 pm
Location: NY, NY, USA
x 11

Post by nullsquared »

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

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:
Image
- 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).
Post Reply