DS Continuous World. Wow! What a read!

Anything and everything that's related to OGRE or the wider graphics field that doesn't fit into the other forums.
Post Reply
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

DS Continuous World. Wow! What a read!

Post by jacmoe »

I just stumbled upon this Scott Bilas article:
The Continuous World of Dungeon Siege
And I was totally blown away! :shock:

Wow! :)

This might be old hat to (a lot of) you, but - especially in the light of recent topics about threading and the background loading in Eihort and the emerging of GOOF (not to mention the ridiculously large amont of people doing MMOGs) - this is very hot!

Be sure to follow the link to the Gamasutra article!
And be prepared for an interesting ride! :D
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
Falagard
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 2060
Joined: Thu Feb 26, 2004 12:11 am
Location: Toronto, Canada
x 3
Contact:

Post by Falagard »

Nice read, thanks.
User avatar
jacmoe
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 20570
Joined: Thu Jan 22, 2004 10:13 am
Location: Denmark
x 179
Contact:

Post by jacmoe »

Be sure to check out Scot Bilas' Dungeon Siege page where some juicy documentation/code snippets reside. :)
/* Less noise. More signal. */
Ogitor Scenebuilder - powered by Ogre, presented by Qt, fueled by Passion.
OgreAddons - the Ogre code suppository.
User avatar
Sslaxx
Greenskin
Posts: 104
Joined: Thu Apr 27, 2006 12:37 pm
Location: Malvern, Worcs., UK
Contact:

Interesting stuff!

Post by Sslaxx »

Apparently they had to make some of the changes for the Lazarus project...
Stuart "Sslaxx" Moore
User avatar
eugen
OGRE Expert User
OGRE Expert User
Posts: 1422
Joined: Sat May 22, 2004 5:28 am
Location: Bucharest
x 8
Contact:

Post by eugen »

great article !
i'm surprised to see that at the level these guys work they faced the same problems (and sometimes made the same decisions) we do in our humble trial systems
User avatar
Kencho
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 4011
Joined: Fri Sep 19, 2003 6:28 pm
Location: Burgos, Spain
x 2
Contact:

Post by Kencho »

Thanks for the link mate! Will read it as soon as possible :o
Image
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 66
Contact:

Post by sinbad »

Dungeon Seige was a real pioneer in this area - most people attribute these techniques to GTA3+ but DS was there much earlier. Thanks for the link, I've read about DS's techniques before but it comes at an appropriate time.
User avatar
detox
Greenskin
Posts: 103
Joined: Thu Sep 07, 2006 1:13 am
Location: Ohio, USA
Contact:

Re: DS Continuous World. Wow! What a read!

Post by detox »

jacmoe wrote:I just stumbled upon this Scott Bilas article:
The Continuous World of Dungeon Siege
And I was totally blown away! :shock:

Wow! :)

This might be old hat to (a lot of) you, but - especially in the light of recent topics about threading and the background loading in Eihort and the emerging of GOOF (not to mention the ridiculously large amont of people doing MMOGs) - this is very hot!

Be sure to follow the link to the Gamasutra article!
And be prepared for an interesting ride! :D
Fantastic article, thank you very much for the post!

The discussion on game coordinate system(s), coord transforms, and the discussion of methods for retaining spacial and temporal precision was fascinating stuff.
User avatar
chuck_starchaser
Goblin
Posts: 232
Joined: Sat Jun 18, 2005 8:31 pm
Location: Montreal
x 1
Contact:

Post by chuck_starchaser »

Great article. I was thinking about these problems years ago, while working on a game engine I never got too far with (long before Ogre existed). My idea at the time was pretty similar to that, except I was planning on having much larger nodes, but use integers for the geometry, instead of float. At one millimeter resolution, a 32-bit int spans more than 4000 kilometers. 2000 if you want to avoid overflow issues at the edges. Or 1000 kilometers if you're really paranoid.
So, my nodes were going to be potentially huge.
The world coordinates (floating point, for rendering purposes) were going to track the player by periodic steps, just like in that paper. But the idea I was working on was to batch the transformations needed... Say you're walking at 1 km per hour going East, and that there are roughly 1 million polygons to recalculate. So, I plan on recalculating 1000 polygons per frame, compute where I might be in 1000 frames at the current speed, and by the time I get there, all 1,000,000 polys' new world coordinates are calculated, and I just switch to the new world data and and place the center of the world there. Only objects that have moved will need to be recalculated on that last frame, and so, perhaps the batching should be planned for 999 frames, instead, and leave the last one for only moving things.

Another thing I struggled with was physics consideration. Physics often need previous frame data, which would be missing at the moment of a switch. The solution would be to make moving object transformations twice, on two consecutive frames, then switch to the new world coord system.
Speaking of the devil, physics suffers the same precision problem as graphics, with floating point. Even more so. So, my plan was to do physics computations based on local coordinates, where position is represented in integers, at a smaller scale, say 1024'ths of a mm. A "binarymetric micron", if I'm allowed to coin a term :D

One final problem with physics is that while speed is relative, acceleration isn't. Some kind of Absolute Stationary Frame of Reference is needed, if nodes are allowed to move, accelerate or rotate. This was important to me because the game I was dreaming of was a future world with planets, space stations and ships. If you're in a rotating space station, sitting at a cafe, looking out the window at the Earth, sipping capuccino, and suddenly you decide to spin a top on the table, you should see the top's axis remain parallel to... the universe I suppose..., rather than remain at the same position relative to the table. This would be true on Earth as well, but less noticeable, since you rarely find a top that can stay spinning for 24 hours. With a large, heavy pendulum you can veryfy it switches directions of swinging full circle at each 24-hour period.

This might sound like minutiae, but it isn't: If you put a station on polar orbit around the Earth, with the axis of its rotation pointing towards the Sun, it would be incorrect for its axis to remain aligned to the Sun throughout the year. The axis of rotation will remain aligned to whatever star it points to in the very far distance, ignoring the seasons.
So, while positions and velocities are relative, and we can move and rotate our world coordinates to match any stationary or moving frame of reference of convenience, the laws of inertia require that we compute accelerations, centrifugal forces and gyroscopic effects relative to some universal frame of reference that is both: positionally and rotationally stationary.

I'm just rambling, when I should be coding...
"Glory is fleeting; Obscurity is forever."
Heard it from a bartender, on some planet, in Vegastrike.
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: DS Continuous World. Wow! What a read!

Post by jokoon »

Well this thread is 5 years old, but is the Paged scenemanager allow to have such a large world ?
Crashy
Google Summer of Code Student
Google Summer of Code Student
Posts: 1005
Joined: Wed Jan 08, 2003 9:15 pm
Location: Lyon, France
x 49
Contact:

Re: DS Continuous World. Wow! What a read!

Post by Crashy »

As far as I know, the paged scene manager is deprecated now.
Follow la Moustache on Twitter or on Facebook
Image
User avatar
Mikachu
Gnoll
Posts: 603
Joined: Thu Jul 28, 2005 4:11 pm
Location: Nice, France
x 35

Re: DS Continuous World. Wow! What a read!

Post by Mikachu »

Crashy wrote:As far as I know, the paged scene manager is deprecated now.
It's been deprecated mostly because it was replaced with the paging component.

The EndlessWorld sample is a demo of how you can use that component to produce a large world.
OgreProcedural - Procedural Geometry for Ogre3D
jokoon
Goblin
Posts: 203
Joined: Sun Aug 23, 2009 8:30 am
x 3

Re: DS Continuous World. Wow! What a read!

Post by jokoon »

Mikachu wrote:
Crashy wrote:As far as I know, the paged scene manager is deprecated now.
It's been deprecated mostly because it was replaced with the paging component.

The EndlessWorld sample is a demo of how you can use that component to produce a large world.
It's really slow when it loads geometry, can't it be tweaked to have a lower resolution or complexity ?
Post Reply