Member-Run Project Large+ World

Status
Not open for further replies.

IcyPhoenix

Terrarian
Hey Guys,

So I decided to once again look into if it was possible to generate a world that is larger then large...

Well the conclusion is no, you cannot do it natively by just changing the generation values.

Obviously that didn't stop me, so here is a sneak peak at a 30,000 x 4000 world (warning boring video!), this was tested with tshock (running to the end of the world takes too long)


Difficulties Encountered

Since I'm dealing with the decompiled code base, understanding what each variable does is pretty big headache - but the things that caused the most grief were:
  1. Memory Limitation - I tried to keep the server as a 32bit application, using large memory space to provide it 4gig, but the above generated world went beyond that, so had to compile it as a 64bit application, the end ram usage was 5gig.
  2. Stack Over Flow - If you have read the code, you'll notice that heaps and heaps of code reference itself within itself, on a small scale that is okay, but on a larger scale this hit the Stack Over Flow exception, even after increasing the stack size beyond 4gig (default is 1mb) it still didn't help, so I assumed some sort of recursion is happening too deep for it to matter. This was overcame by commenting out certain generations.
  3. Hard Coded Limitations - There are a few areas where the array is created with a hard coded size, this size under normal circumstances is fine, but it doesn't dynamically adjust with the growing map size, example of these are the arrays that hold dungeon doors/platforms etc... - these had to be arbitrarily increased as I didn't want to delve too deep on figuring out the max size needed.
  4. Coding Problems -
    • The initial code didn't account for what would happen if the arrays reached its maximum, so everything was initiated with X value and for some reason the random generator decided to be inclusive upper bound, not sure why this is the case, had to initialize some arrays with +1 to max elements.
    • Chest limit got hit before it was able to generate any special chests (water/biome etc...) this was never accounted for and the chest generation infinitely looped, as it never was able to end its while loop, for generating the special chests.
  5. Minimap - Everything client side worked, except for the minimap, I'm actually unsure why this doesn't work - as the methods are abit too ambigious and require more examining.
  6. Bottom of Hell Tiles not being sent - once again didn't bother looking into this, but the bottom of hell is just empty but actually has tiles there, something isn't updating properly.
-Icy
 
I'm duly impressed. I was looking to attempt a larger world size (though not as demanding) -- since you're well ahead of me on this, I'm wondering what would work without the need for LAA or 64-bit. Some sizes I was considering were 9600x3200, 12800x3600, or 16800x4800.
 
I'm duly impressed. I was looking to attempt a larger world size (though not as demanding) -- since you're well ahead of me on this, I'm wondering what would work without the need for LAA or 64-bit. Some sizes I was considering were 9600x3200, 12800x3600, or 16800x4800.
I was able to generate up to 10000 x 2400 before hitting OOM exceptions, so roughly any size around 24000000 tiles.
 
i'm 99.99% sure this thread is gonna get closed because you used Red's Wings.
 
i'm 99.99% sure this thread is gonna get closed because you used Red's Wings.
Oh I didn't really have anything further to say, this isn't a release or anything more a proof of concept - so if it gets closed doesn't really change much.
 
Status
Not open for further replies.
Back
Top Bottom