How big are the worlds?

well yea that would have to be clairyfied^^

KuroKuma, don’t confuse mapping with actual shape. In the case of a toroidal mapping the engine uses simple modulus math to get the next coordinate coord = [coord + inc] mod max on either axis; for a cylinder one uses modulus math for the latitude, but crossing a pole does coord = [coord + (max / 2)] mod max, which makes you come onto the “opposite” side of the world, just like on Earth. (The circles at the top and bottom of the cylinder don’t exist–because we’re mapping, not mimicking.)

(Caveat: the math works for a Cartesian coordinate system in which the map occupies quadrant 1; a system in which 0 is at the center would have to contend with negative coordinate values, so the math would take that into account. Assume that for the purposes of computation this is quadrant 1 and the values for 0, 90, and -90 are simply arbitrary offsets from the Cartesian values.)

2 Likes

I see now what you mean^^ And I’d like to hit the person who named that mapping like that xD

What would the other choice be?

It’s just hard to map Cartesian coordinates to spherical objects (which is why polar coordinates exist). Cartesian math is easy compared to polar math, though, so that’s why programmers use it. (When I worked on a B737-400 flight trainer simulation I was happy that I wasn’t the guy working out the auto-pilot math.)

But then it would pretty much just be halo :neutral_face:
Not to say it wouldn’t look really cool anyway :sweat_smile:

Just working on adding the klein bottle wrapping option now. Only for experienced explorers! :dizzy_face:

(Can you believe there is no :möbius: emoticon? Lame.)

5 Likes

I hope you have a glass klein bottle on your desk^^

Yeah, I’m voting for that! Next: wibbly-wobbly timey-wimey!

1 Like

I’m getting caught conceptually on something I’m sure is very silly. As far as I know, wrapping is something any real plan does. For example, if I start in London and keep going east, I’ll eventually end up in London again.

But infinite to me means that as I go east from London, I’ll never again reach London unless I turn back around.

I’m guessing if these definitions are right, that means there are two types of worlds, wrapped and infinite? Or by infinite do you mean that there aren’t world borders and that I can keep going to London over and over as many times as I want?

In the currently live worlds, if you went east, you would never return to your starting point. They are infinite, technically speaking. In the future, world’s will wrap like a globe. You will eventually return to your starting location.

you hit an invisible wall if you reach the ends, so not sure how infinite you can call them xD

The generation is infinite, but past a certain point they added invisible walls to keep you from rendering more world. If you could pass these walls like you could prior to release 100 (I think it was) the world’s rendered flat plains.

I have to agree with Zouls. It seems like if a player were to discover the whole 16km x 16km area, there would be nothing left to generate, meaning not infinite.

I’ve been to one of the corners of Vaisier. I think it was the NE corner, but it’s been awhile.

There is a stack of technology:

  1. Generator - this takes a world configuration file and creates the world chunks. This can be configured to build an infinite world. It’s a lib that can be called from the command line, linked into the server, or built into a tool. This can generate infinite worlds. (Up to the limitation of floating point precision.)

  2. World Builder - this is an editor app that allows you to visually create world configurations. The World Builder then calls the Generator to create all the visualisations you see in the app. At the moment, the World Builder is configured to only allow the creation of wrapped worlds.

  3. Server - this app runs the main game logic on the server. It will load a pre-generated world that has come from the Generator. It can also be configured to call the generator on-demand if sections of the world are missing. In the past we had the server configured to call the generator, but the generator can require quite a lot of memory and this caused the servers to crash. So we switched the generator to use a “flat world configuration” as this requires almost zero memory. If the world is pre-generated it loads and streams almost instantly. If the world is generated on demand it can be quite slow depending on the complexity of the world configuration. (The configs can get extremely complicated.)

  4. Game Client - this app (basically the game you play) talks to the server, streams chunks and learns about the world. The game client can connect to infinite and wrapped worlds.

Currently the Generator and World Builder have been released as part of the modding tools. The Server will be released in the future.

This allows:

  1. The game can be configured to create and play infinite worlds.
  2. The game can also be configured to create and play wrapped worlds.
  3. The main Oort MMO will contain wrapped worlds.
  4. Players can host their own servers if they want to play on infinite worlds.

Happy to answer more questions if you want more details.

3 Likes

Really lovely layout of the different components that come together to create worlds, thank so you much for sharing. Just had a few more questions.

What’s the take away here for non-technical players who are interested in learning more about server rental? Simple, small servers that you’re constantly logged into to keep things generated = less lag? How noticeable would the lag for an infinite world be? Would this lag be noticed mostly on start up or would it persist throughout playing, even after an area is loaded?

I’d settle for understanding how to run the generator. It never does anything when I try to use it. Menus, yes, but then nothing I can click that says “generate.”

Are you saying that the World Builder fails for you - or you don’t know how to use it?

If it doesn’t work, then please give us some system details - OS, GPU, drivers especially.

If you want to learn how to use it - checkout this playlist by @Squidgy

1 Like

Yeah, I didn’t find it at all intuitive. I’ll check out the videos.

It’s possible I made it sound more complicated that it really is. (Actually it probably is quite complicated - but it’s all in the details.) Best just to consider the following. From a server / host perspective there are 2 important issues:

  1. Generating the world requires memory.

  2. Simulating players in the world requires memory.

If you have lots of memory then there is no problem with generating the worlds on-demand as you’re playing. Whilst the world gen isn’t instant, it is faster than players can generally move around the world.

We chose to pre-generate the worlds because it means we can run the worlds on lean hardware, ie. the servers don’t have any more memory that is absolutely required. This is important for us to run the MMO cost effectively. (If full world gen ran on the live servers they’d run out of memory and crash.)

For the average home user you can happily run the server and allow on-demand generation. In this configuration it’s also good to have multiple cores so that the generation doesn’t starve the simulation.

In either configuration - assuming you have sufficient memory and a few cores - there should be no effect on server latency.