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.)
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
Not to say it wouldnât look really cool anyway
Just working on adding the klein bottle wrapping option now. Only for experienced explorers!
(Can you believe there is no :möbius: emoticon? Lame.)
I hope you have a glass klein bottle on your desk^^
Yeah, Iâm voting for that! Next: wibbly-wobbly timey-wimey!
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:
-
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.)
-
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.
-
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.)
-
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:
- The game can be configured to create and play infinite worlds.
- The game can also be configured to create and play wrapped worlds.
- The main Oort MMO will contain wrapped worlds.
- Players can host their own servers if they want to play on infinite worlds.
Happy to answer more questions if you want more details.
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
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:
-
Generating the world requires memory.
-
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.