Page 1 of 1

Infinite ages

PostPosted: Mon Aug 25, 2014 3:16 pm
by Justintime9
Just a random question: with the use of vis-regions, is it possible to create ages that basically go on forever? Like, let's say Cyan kept expanding Ae'gura. Could they have done that indefinitely if they'd used lots of vis-regions? Because the main hindrance to that is just lag right? Too much to render at a time.

Re: Infinite ages

PostPosted: Tue Aug 26, 2014 2:42 am
by Mystler
The problem with infinity is that it is infinite. Unfortunately, I didn't get my hands on a PC with infinite RAM and HDD yet... ;)

Re: Infinite ages

PostPosted: Tue Aug 26, 2014 2:50 am
by Sirius
I guess, yeah, it's possible. Well, not sure the size of variables would allow you to work at 1*10^8053 units, but you still have at least a few hundred (thousands ? tenths of thousands ?) kilometers of virtual space available.

As far as I know, the limit of whether an Age is possible, is not its volume, it's how much data you put in it. You can block rendering of objects with VisRegions, however the more objects you have in your Age, the more that will be put in your RAM and VRAM (VRAM also includes textures). Also, there is the problem of how much collisions the engine must compute. That's why Cyan made simple colliders instead of making everything trianglemesh'd. Plus, longer loading times, etc.

However, computers can handle the task quite easily (obviously modern ones do that even better), as long as you put enough visregions. AFAIK, vertices are the main problem, memory rarely is.

Modern game engines handle the task quite easily by loading and unloading stuff as you move in the world, but Plasma doesn't do that very good (mostly because it cannot both render the scene AND load resources in the background).

Re: Infinite ages

PostPosted: Tue Aug 26, 2014 5:30 am
by Justintime9
Interesting. So it would really be more difficult to actually build than to load. Because in Blender everything is loaded, and thus causing quite a bit of lag. So are you saying that modern game engines generate vis-regions automatically?

Re: Infinite ages

PostPosted: Tue Aug 26, 2014 6:43 am
by Sirius
Well, Ae'Gura is a big Age and has a ton of vertices, and yet, it still loads relatively fast and could be played on average computer at the time the game was out. I doubt with the current tools someone can make an Age more complex than Ae'Gura, so unless you plan on making a forest Age with high-detailed trees, you won't have to worry about memory.


I don't know about modern game engines building visregions (it depends of how the engine works, I think engines using something called BSP can do it). Generally, it's the work of the designer, making closed rooms, or putting objects to prevent all the scenery to be visible at once (mostly done in interiors).
What the engine generally does is compute the distance of the player or the camera to an object, and if it's far enough the object is either hidden or replaced by a low-poly version. It also fades real-time lighting and shadows in the same way. If the object is really far, then the engine deletes it from memory. If you happen to come back close enough to see the object, the game re-reads the model from the disk as you continue to play, and re-displays it once it's loaded. It's mostly used in exterior scenes that span across kilometers.

Minecraft is a good example of almost-infinite worlds. In it, rendering is limited to a close distance, even though the world spans across kilometers (IIRC, I read about the maximum world size being something like 1/3 of the surface of Earth). Obviously the whole world isn't loaded at once.

Plasma is unable to free and reload objects on the fly, which means hidden objects are still in memory when they aren't rendered. The only exception is in Minkata when switching to daytime/nighttime scene, but Plasma still freezes the game for the duration of the loading time.

Re: Infinite ages

PostPosted: Wed Aug 27, 2014 4:59 am
by KathAveara
Sirius wrote:IIRC, I read about the maximum world size being something like 1/3 of the surface of Earth

It's actually slightly over 7 times.

Re: Infinite ages

PostPosted: Wed Aug 27, 2014 6:56 am
by GPNMilano
Sirius wrote:Well, Ae'Gura is a big Age and has a ton of vertices, and yet, it still loads relatively fast and could be played on average computer at the time the game was out. I doubt with the current tools someone can make an Age more complex than Ae'Gura, so unless you plan on making a forest Age with high-detailed trees, you won't have to worry about memory.


I really wouldn't say that Ae'Gura is a complex age. It's just big. As far as complexity goes its fairly simple which is why the loading time for it is so slow compared to its size. There's very few particle systems in the age, just the one waveset, and no other advanced shading tech. Compared to an age like Kemo that was Cyan's testbed for Plasma, so it has everything from bumpmapping to particle systems, to forces on the particle systems, to wavesets, etc. And then there's ages like Tsogal that have things like shading mods etc.

Yeah, Ae'gura, not that big of a deal. Just, fairly large in terms of sheer size. Though Gahreesen, and Descent from Myst V seem bigger to me.

Re: Infinite ages

PostPosted: Wed Aug 27, 2014 10:34 am
by Sirius
Hmmm, I'm not entirely sure. Ae'Gura may really crude in some places, but it remains an Age with an awful lot of vertices. But yeah, otherwise lightmapping is kept to a minimum and there isn't any particle system (except the portal to the Tiwah). Not many objects with alpha either.
In terms of loading time, the two main factors seem to be textures and vertices.

Either way, I think as long as you avoid specularity, dynamic lights and shadows, and put visregions when you can, anything you build will be fine, because it's hard to build something really complex anyway.

Oh, and it's true Gahreesen is actually much bigger than it seems. Because the exterior area is an insane 10,000 units above the interior area. Doesn't have any impact on performances, though, and it still works perfectly.


What I like with Cyan, is that when they make a big Age, they don't overdo light and particles, while when they make a small Age or one with not much detail, they find a way to make it interesting visually (Minkata is just a huge plane, but sandstorms and fog make it interesting, Tsogal has waving grass, Direbo has a lot of projection lights and some particle effects, Gira has dynamic lighting and dynamic, smoothed shadows, and of course there's Kemo !)

Re: Infinite ages

PostPosted: Mon Sep 01, 2014 5:30 pm
by Paradox
VisRegions only save on the runtime rendering performance by hiding things that are out of sight. All of those object still exist though, they're still loaded, they're just not visible.

Dynamic loading (or paging as Plasma calls it) is definitely a weak point of the engine. As Sirius mentioned, trying to page something in at runtime results in the game freezing until the data is loaded. We tried this in Ahra Pahts and it was painful. :(
In theory that's something that could be fixed at an engine level in open-source, but it would introduce a new layer for bugs (which would be particularly hard to track down in this case).

There're other issues with dynamic loading too: the trickiest part is knowing when something needs to be loaded. If dynamic loading were to be applied to Ae'gura, you'd need to know that from the Ferry Terminal, you need to load the Great Stair, and from the Great Stair you need to load the Kahlo Pub, but you don't need to load the Kahlo Pub from the Ferry Terminal, etc.