• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

How to create huge worlds?

YanBG

Member
I really want to make this huge sandbox rpg. The players' coordinates(x,y) should be visible on the world map. That would make navigation and using some other tools(mini-games) for orientation interesting.

Not sure how it is in Minecraft, because i haven't played it but here is my opinion.

1) No room transitions, tbh coding it seems clunky.

2) Separate areas are possible, a world map where the player as a chess piece moves around and time passes. Each cell is a location that can be entered. This should still be a pretty big map with mp_grid but drawing the background(painted pieces of the world) might be light on the performance.

3) I prefer open world but don't want to generate it on startup. Even 1024x1024 is noticeable loading time. I got suggestions to do it during menu time etc but it's not ideal.

I'm thinking about generating chunks but i also want to have them form connected and seamless world(in case of procedural maps).

Main design i need ideas is about populating the world with towns. It could be a system confined to the chunk areas(to avoid houses cut in two) and them at random range of 5-10 chunks another town and another etc.

Forests will 3-5 neighbouring chunks.

Major issue is testing and adding content. Older RPGs made separate Acts/Chapters so they can isolate parts of the game to test faster.

Thoughts?
 

sylvain_l

Member
Main design i need ideas is about populating the world with towns.
didn't play recently, but minecraft is an example of what not to do for me. IA is so lame, that villagers just wander around the day and try to hide in a house at night. But they get overrunned and zombified easly once you activate the village by passing by. And you can't much interact with them.

if you want "rpg" living world you'll have to add much more depth to the IA to ensure balance and evolving of village/town and interactivity.

dwarf fortress is much better at handling those things IMHO.

p.s.
and much of those games tends to have update+extensions constraint making the saved game else incompatible (one solution some allow is to easly activate/deactivate specific versions of game/extension).
 

YanBG

Member
dwarf fortress is much better at handling those things IMHO.
Any examples you can give me? Becasue i haven't played it.

p.s.
and much of those games tends to have update+extensions constraint making the saved game else incompatible (one solution some allow is to easly activate/deactivate specific versions of game/extension).
If it's on Steam, there can be version history/betas to revert the game to. I have some experience with making save files from last year. For simple equipment items, they were all objects and i used their ids, but when i add more objects the ids in GM shift. Now i use csv in included files(instead of ds_map) and 1 item object, with variables that change the name etc. I'll see what can be done for the terrain.

Btw i've seen a game here, that used a map of earth, each pixel replaced with a tile and was relatively huge. Can't remember the name though.
 
D

Deleted member 13992

Guest
Which procedurally generated games did you really enjoy? The ones who's world-building stood out for you? There are so many formulas to do this, no "one" best way. I would start by going over those and breaking their world generation down into layers. Geographical layers, biome layers, town layers, see how they're distributed.

A lot of successful procedurally generated game projects didn't start off as games, but just as a landscape engine, a sandbox without any goal except to generate a persistant landscape to walk around in. Consider starting out with that as well. When minecraft exploded in popularity, it didn't even have towns at all, or more than 3 biomes. If you can pull that off, it gives you a foundation and a knowledgebase to get you started,
 

YanBG

Member
Which procedurally generated games did you really enjoy?
Can't think of any rpg, but rts have random maps too. Mount&Blade is sandbox but the world map is fixed. Diablo has fixed towns etc.
A lot of successful procedurally generated game projects didn't start off as games, but just as a landscape engine, a sandbox without any goal except to generate a persistant landscape to walk around in. Consider starting out with that as well. When minecraft exploded in popularity, it didn't even have towns at all, or more than 3 biomes. If you can pull that off, it gives you a foundation and a knowledgebase to get you started,
Good idea, i started working on the code. Red pixels are towns, dark green forest:


Now i have to figure how to make each dot a larger area and to define few of the towns to be larger(multiple sectors) with ports etc. Another issue with big worlds is that they often feel too empty and get boring.
Thank you, i'll read that.
 

Yal

🐧 *penguin noises*
GMC Elder
I don't have much experience in this regard, but big open worlds are more work than you'd think - especially trying to funnel players so they experience content in an optimal way (e.g. do easy missions first and don't break mission balance by getting there in an attack helicopter or with 20 summoned undead dragons) is nigh on possible, which makes balance pretty hard. Also, generating enough content that the world doesn't feel repetitive is beyond hard, so it's imp9rtant to set up your systems to support creating new stuff easily and reuse stuff in ways that make it less obvious you reuse stuff.

I dug up some relevant GDC talks you might wanna sift through:



 

Rob

Member
Wouldn't it be far easier to start with a small map with 1-2 towns, 1 mountain range and a couple of forests. Work out how you're going to do things within that small map and how you're going to fill it with content before you extrapolate it into a bigger map.

If you can get the small map to feel cool then that's a good place to start for a big map.

On the flip side, if the small map is giving you problems then how is it going to be for the bigger map?
 

YanBG

Member
@Yal with a sandbox, there can be free exploration. I don't plan enemies that scale up and down depending on the player's level but there can be tips for each area's difficulty. In Mount&Blade each lord(town) have unending need of messengers(delivering a letter to the next town) for tiny reward. Players use it to gain some early coin, then just stop doing it. Thank you for the links, i'll check them. My main concern is if i code it unoptimized.

@Rob i divided the game/code, so this "big" one was just a test. Now i got back to fleshing out a town, i've tried a "medium" map before but it takes too long to be created each time i test it and exploring is also slow. I don't want to change all the variables to arrays when i switch to larger world. Although idk which would be the fastest way to design it, especially if i need to prepare a demo.

@lolslayer did you test it with tiles and objects? The fps always drops for me, tried deactivation etc. If i delete the outside chunks, then the re-creation each time is just too slow(loading time/start-up) and the player can just dance on the border if the chunks are too small.

I've added corner/joint roof tiles, to have some more variation in the roof shapes. Also several roof colors, i have some more ideas like 2nd floors but the progress is slow.

 
F

Famine

Guest
I think from my end, I would define it as a series of passes like what I feel Dwarf Fortress does.

This is where you make a first pass filling up every data point with water, then a second pass to define your land mass(es) of one terrain type. Then you start doing additional passes to define the clusters of areas you want based on the apex of the land mass itself.

For example, the picture you linked looked similar where all the outer areas from the center were rocky, then as you got closer to the apex, it became sandy, then plains, then forest, and eventually mountains with snow.

Seems pretty straight forward from there where you can define various rules such as everything north of the apex going from hotter to colder with the types. Then everything south going from warmer to hotter or maybe colder as well.

Then final passes for cities, rivers, lakes, and pounds to finalize it out.

On another note, extremely large worlds are often wasted resources. In meaning, they become very under utilized. Even in big online multiplayer games such as EVE Online, when you have hundreds of solar systems, it cab be difficult to navigate and explore them if the playerbase shrinks. You end up with a lot of dead areas that just have no value to the overall game. They become deloaded until some player decides to pass through. Even then, they are often just passing through the area versus actually stopping and utilizing it.
 
Last edited by a moderator:

lolslayer

Member
@lolslayer did you test it with tiles and objects? The fps always drops for me, tried deactivation etc. If i delete the outside chunks, then the re-creation each time is just too slow(loading time/start-up) and the player can just dance on the border if the chunks are too small.
For truly massive worlds you need to delete everything too far away from the player and re-create it when you get back, deactivation makes the game a lot quicker but you'll still get slow-down if you have a lot of objects, even while being deactivated.

I haven't tried tiles, and I kept the object count quite low, the only thing you can do using my system is or making smart systems to improve the loading-in performance, or using multithreading which is really obscure in gamemaker because it isn't officially supported
 

Yal

🐧 *penguin noises*
GMC Elder
deactivation makes the game a lot quicker but you'll still get slow-down if you have a lot of objects, even while being deactivated.
To clarify this: generally deactivating stuff means the number of active objects is kept low; what takes time it moving stuff between the active and inactive objects list (since it needs to traverse the entire list, which slows down if you have millions of instances). A handful of other things also needs to traverse both lists, such as accessing an instance's variables using the dot notation.

So to minimize slowdown when deactivating, try to not deactivate more often than you need to (slow-paced games can get away by doing it every 10-15 steps) and try to minimize the number of individual activate/deactivate calls (since setting up and traversing the list is slower than the stuff that's done for each thing in it, there's batch optimizations)
 

lolslayer

Member
To clarify this: generally deactivating stuff means the number of active objects is kept low; what takes time it moving stuff between the active and inactive objects list (since it needs to traverse the entire list, which slows down if you have millions of instances). A handful of other things also needs to traverse both lists, such as accessing an instance's variables using the dot notation.

So to minimize slowdown when deactivating, try to not deactivate more often than you need to (slow-paced games can get away by doing it every 10-15 steps) and try to minimize the number of individual activate/deactivate calls (since setting up and traversing the list is slower than the stuff that's done for each thing in it, there's batch optimizations)
Thanks, still, I would recommend not using deactivated instances to set up the whole world when its massive
 

YanBG

Member
On another note, extremely large worlds are often wasted resources. In meaning, they become very under utilized. Even in big online multiplayer games such as EVE Online, when you have hundreds of solar systems, it cab be difficult to navigate and explore them if the playerbase shrinks. You end up with a lot of dead areas that just have no value to the overall game. They become deloaded until some player decides to pass through. Even then, they are often just passing through the area versus actually stopping and utilizing it.
True, what i can do is add a size setting when creating new worlds. Similar to how you can choose the random map size in RTS games(tiny for 2 players, large for 4, huge etc).
 
Top