skittles sour Posted June 19, 2025 Share Posted June 19, 2025 This was a bit I wrote on a sort of impetus when reflecting on the worldgen mods I've done. It was written as a guide to doing a worldgen map, but will probably serve poorly as one. But given how little information you might find on the Klei Forums regarding worldgen mods, I braved it and thought I might as well share these thoughts with you all, despite how embarrassing it might be to parade my little amateur problems before more knowledgeable members of the community: Doing your own worldgen map This guide is for doing your own map by means of a mod in DST. By "doing your map," I mean creating an entire Level of your own design, and not just a setpiece that you insert into a more or less standard worldgen. As regard setpieces, you'll find quite a few good guides out there. your project is somewhere between a setpiece and an entire world, you will still find this guide helpful. I will first be attacking the key concepts in DST worldgen and then move onto the important considerations by which you can elaborate your ideas. Something I regret, is that a lot more of this is going to be from personal experience than from proper research, because I had ended up autodidacting myself, after finding limited help on the modding forums, where worldgen was never a popular category of mods. Feel free to share your insights and point out errors. Room / Task / Taskset / Level I will be capitalizating the worldgen Level to better distinguish it from the common noun level. The Room, the Task, the Taskset and the Level will be the four levels to the worldgen hierarchy. A ROOM is usually unified by a single turf, it is the lowest level of agglomeration from the point of view of worldgen, immediately above the Instance. A TASK is an agglomeration of Rooms. When people say BIOME, they can be thinking of any level of agglomerations between these two degrees. Usually they mean Room. But the "biome" in the title of the Force Biomes Mod means a Task. DST's worlgen currently has 10 fixture mainland tasks, apart from the lunar island tasks, and as oppose to OPTIONAL TASKS which are the agglomerations that you sometimes get and sometimes don't, and from which the standard worldgen picks five. You can find these tasks in map/tasksets/forest.lua. You can also use my Room & Task Names Mod to get to know the names of the tasks and of the biomes. This mod will spawn a sign at the center of each room with the name of its task and of its room: https://steamcommunity.com/sharedfiles/filedetails/?id=3431314950 Each of these tasks have a bit of a particular theme and a more or less elaborate story, but the level of characterization is regrettably uneven: the "Great Plains" task has our favorite friends Beefalos, and have a pretty good real world landform that, despite the simplicity of the "Great Plains" task, it still manages to capture fairly well. Think of how the savanna biome is only characterized by three main prefab types: beefalo, grass and rabbit dens, apart from the occasional flower, spider den and rock1. Compare the "Beeeees!" task, which has just as few essential prefabs, but which feels weaker as a concept. If you browse the worldgen category of the Steam workshop and sort it by date released, you'll notice that for the first few years much of the mods are more or less extending and enlarging on the standard worldgen: think of Megarandom and Advance Worldgen and the several Caves on Ground maps, and of course the Force Biomes mod. Then, the general tendance went the direct opposite direction, where you get quite a few very elaborate interpretations of the minimalist concept. There was the original Minimalist World, then the several forks of Tiny World. I think of this change in tendance as a sort of verification of the very old idea that it is not quantity, but quality, that is interesting. And what is quality? Quality is proportions, it is arrangement. As DST expands more and more, the DST world became more and more, if not incoherent, at least a bit indigest. My guess is that if you are reading this guide you are probably considering elaborating on the minimalist concept, which is great because you might find this more pertinent information in this guide, whose author has a real taste for this genre of worldgen. I have yet to touch on the final two levels of agglomeration: the Taskset and the Level. They are basically the big unifying level that coordinates everything together. For a given world, that is to say, for your surface or for your caves world, there will only be one single Level, and inside this Level there will only be one single Taskset. The dictinction between them may seem confusing because it is confusing, and it was not very well made when they conceived this distinction. This distinction does not exist in DS. The functions of the DS level is repartitioned awkwardly between the DST Level and the DST Taskset. You can take a look at them in map/levels/forest.lua and map/tasksets/forest.lua. You'll see that some level-wide setpieces, such as the Touchstones and the Wormholes, are in the taskset file, and some, such as the Warzones and the Chess setpieces, are in the level file. Rooms and Tasks will be more important when designing your map. Now that all four concepts are introduced, here is another mod that will help you familiarize yourself with DST's rooms and tasks, the Concision Worldgen mod. This allows you to turn off the Optional Tasks as well as the Optional Setpieces, so you can get a small map of just the essential tasks and biomes, without the accidents of randomization: https://steamcommunity.com/sharedfiles/filedetails/?id=3382934201 Post-Init vs Duplication, and the Question of Forward-Compatibility You either be recycling Vanilla Rooms by means of a post-init, or copying the room's code from its files, doing an AddRoom, and then adjusting the numbers in detail. You might wonder whether doing a post-init will have the advantage of forward compatibility, since it will catch whatever new content they plan on adding, or whether it would be the duplication that will have this advantage, since new in-game content will not disrupt your rooms. The most intrusive thing they've done has been adding tasks such as the "StatueHarp_HedgeSpawner" tag to mark a room as a candidate for spawning this setpiece. On the one hand, I do not think DST's new content has ever changed an old existing room because their update has usually been very inoffensive additions and not rearrangements, and on the other hand, much of DST's worldgen is quite loose, in the sense that the base-game will be using Distribute Prefabs, as oppose to Count Prefabs, so I personally do not know which if these two would be the better option, but I usually opt for duplication, which allows for better customization. The Diverse Realms mod, a very elaborate map that pushes it almost to baroque, has ended up incompatibilizing bcause it did not create its own level, but instead adjusted the Vanilla Level by means of a post-init. So when they added the Junk Yard, the big junk pile was added into the Vanilla map's required_prefabs, but Diverse Realms did not include the setpiece on its level, since it did not create its own level but instead altered the Vanilla level via a post-init, and so the Diverse Realms mod ended up getting stuck on worldgen, which is usually what happens when an old worldgen mod incompatibilizes. But if you are looking for ideas, please take a look at this goldmine of conception: https://steamcommunity.com/sharedfiles/filedetails/?id=3431518320 If you are adding a setpiece, you'll either be doing an AddTaskPostInit, to add your setpiece to a particular Task, or AddLevelPostInit or AddTaskSetPostInit, to add it as a level-wide setpiece that can appear in any task. When you are adding new rooms, remember NOT to remove the "colour" items, because without it the worldgen does crash. Distribute Prefabs vs Count Prefabs Let's go back to Rooms and take a look at the very basic "Forest" room in map/rooms/forest/terrain_forest.lua. The "contents" table is what we are most interested in. You will find two systems used in parallel in the process of population: the "countprefabs" system, and the "distributeprefabs" system. The Count Prefabs system is very intuitive. How many prefabs you put in, is how many prefabs the algorithm will attempt to spawn. Opposed to this is the Distribute Prefabs system, where spots are first picked depending on the parameter of general density of the room, and then the spots are distributed to the prefabs by the parameter of particular density. In our "Forest" room you see that the Count Prefabs table only has one item, spawnpoint_multiplayer = 1, where as much of the content is populated by the "distributeprefabs" table. The smaller your Level, the more precision with which you have conceived your ideas, the more you will be moving from the Distribute Prefabs system to the Count Prefabs system. Another reason for which you might prefer Count Prefabs, is that the Distribute Prefabs parameters are very sensitive: a single percentage can correspond to a massive difference. Yet another reason is that the Distribute Prefabs are difficult to adjust, since they are condemned to a certain randomness, and the particular worldgen you get when testing your mod, the accidental arrangement of certain prefabs next to each other, even the accident of their color in contrast to other prefabs, may give you a false impression that a prefab is too dense and lead you to doing adjustments that might end up frustrating you even more. A good way to start drafting and testing your worldgen ideas is by duplicating Vanilla rooms and then adding in countprefabs and then seeing how it looks. You can find more information in the older worldgen guides on the Klei Forums and also the extensive article called "Worldgen" in the DST wiki. But above all I would suggest you attack the worldgen algorithm, specifically the "Node:PopulateVoronoi" function in the map/graphnode.lua file. There, you will notice something very important: when the algorithm cannot find enough spots, which happens very often when you're starting out because you're all overjoyed with the power of being able to finally control this aspect of the game that has felt so mysterious and so ungraspable, so, when the algorithm cannot find enough spots, it might simply bail, printing out in the log "Didnt get enough points for all prefabs", without failing the worldgen of the entire level. So if you're putting something important in the Count Prefabs table, remember to add it to the required_prefabs list. Something else I've been doing is adding an inexistent prefab in the Count Prefabs table as well as the required_prefabs table, for example named as "redmushquarry_GUARANTOR", for the express purpose of force-failing the worldgen when the Voroni algorithm failed to find enough spots. There is also the old rule of moderation in all things, especially never too much. Noise Tiles A room with one single turf ends up feeling boring, and this is where Noise Tiles come in. Noise Tiles allow you to set up gradations and contrasts between tiles inside a single room. Remember to take advantage of DST's worldgen which allows you to create your own noise tiles, and fairly simply too, in difference to DS where the Noise Tiles were kept on the side of the engine. In Vanilla, in the mainland of your surface world, only the Mosaic biome uses a noise function. It takes two steps to do a noise tile in your "modworldgenmain": first you add it as a tile: AddTile("MYNOISETILE", "NOISE"), the first parameter being a customizable name and the second one being the category of tiles to which your tile belongs, and which you will enter "NOISE" in all caps; and then you define the noise tile function: require"noisetilefunctions"[WORLD_TILES.MYNOISETILE] = function(...) end. You can check out the Vanilla noise tiles in the "noisetilefunctions.lua" file. What your noise function is basically doing is that it is translating a level, which you can imagine as an altitude, into a tile, which you can imagine as a terrain. Think of a complicated mountain chain from which you cut out a random chunk in the shape of a circle: there would be a peak, a secondary peak, and a valley between them, and then the masses of land of medium altitude. For the algorithm the middle bit will be a lot more important than for a real world mountain chain. The center of your room, in the eyes of the noise function, is not necessarily the peak, nor necessarily the valley. In order to create water, make your function return WORLD_TILES.IMPASSABLE, because DST's ocean is generated after continental generation is complete, by means of converting the IMPASSABLE into water and setting up gradation between the different ocean depths. Remember that your noise function must always return something, otherwise you will see weird crashes from the side of the engine. As with my remark on the parameters for the Distribute Prefabs table, you'll find that for the noise tile functions, the parameters are just as delicate and hyper-sensitive: I've tested the land-ocean threshold level extensively when creating single-biome maps for our game mode called Starving Floor. The rule I've ended up with is the threshold of 0.374, below which, ocean, above which, whatever land tiles or combination of land tiles for that specific map. At this threshold we consistently get two lakes, one at the dead center and one a bit off center. We play around a little more so as to sometimes unify the lakes and somtimes forcing them apart of leaving them to RNG. This is a very precise number because one single basis point above or below will force the two lakes to connect or fragment the landmass into two seperate islands. This is a very specific situation where you have one single room squeezed between three "BGImpassable" background rooms, arranged this way so as to get us the classic-looking triangular shape. When you are doing a map for an entire world, the algorithm will get more legroom, and these altitudes, to continue the metaphor, will gradate over different rooms. My Fragmentation mod replaces the noise tiles of every single room with a noise tile, and I had the very awkward task of adjusting a threshold for an entire map so you get enough fragmentation to give your landscape interesting accidents, but not enough fragmentation so landmasses don't break apart and so you're not forced to play Wortox or Walter in order to navigate the map. I had ended up using a rough threshold of < 0.4 and > 0.8, that is to say, leaving the middle bit land and converting the values above and below into ocean: https://steamcommunity.com/sharedfiles/filedetails/?id=3425380018 I love this tool so much that I set up different levels of nuances between neighboring rooms within the same task. In order to mass-produce noise tiles, it is convenient to write a function that mass-produces names to save the trouble of naming ideas that you are still elaborating. You can find my little workflow in the One Biomes mod, in the modworldgenmain.lua, under the function "env.Noise": https://steamcommunity.com/sharedfiles/filedetails/?id=3457116205 Proxy Prefabs If you explore the Diverse Realms world, you will notice a very elaborate setup where, within a single room, underlaid by a noise tile, different prefabs are distributed according to what tile they are on. This is done by means of setting up proxy prefabs and combining them with terrain filters. First, you declare a proxy prefab: require"prefabswaps".AddCustomizationPrefab("desert_berrybush", "berrybush"), the first parameter is your own personal name and the second one being what in-game prefab it translates into. This "desert_berrybush" prefab does not exist in-game, but it does for the worldgen algorithm, and is a placeholder for the "berrybush" prefab that you will end up seeing. Then, you set up terrain.filter.desert_berrybush = { ... }, so that, for this proxy prefab, the algorithm will force it to only spawn on top of certain tiles, when it is possible. There is a final step which is to turn on contents.countprefabs_uses_filters = true, so the "PopulateVoroni" function enforces the terrain rules for your Count Prefabs, something that, by default, it does not do. The Diverse Realms mod set up its own system which is more personal and elaborate. A simpler function you can copy is from my One Biomes mod. You can take a look at both its "env.ProxyPrefab" and "env.PluripartitePrefabs", the former of which, manual, and the latter of which, automatic. You can also reference several of our One Biomes maps, such as the onebiomes/an_afternoon.lua in the mod folder: https://steamcommunity.com/sharedfiles/filedetails/?id=3457116205 Formalities and Conceptions When I do a worldgen map, I try to set up a system with a complete divorce between formalities and conceptions. The former of which are little things, many of which, relics of older versions of DST and even DS that the official devs out of consideration for compatibility, and sometimes inexplicably, as if out of a bizarre routinism, maintained: you have to have a "colour" for a Room, you have to put in some sort of arbitrary name for your setpiece, your Rooms, your noise tiles, even though you might only use them once. Opposed to this are your conceptions, the meat: a contrast, a juxtaposition, a look, a sense of invitation, a certain clair-obscur, stuff that you want to conceive, if possible, once, on which you then elaborate, but you do not alter in essence, provided that you have already conceived it well enough in its original inception. Once you are familiar with the simple structuration of Level / Taskset / Task / Room, and you know the limits of what you should be able to do, I suggest that, before you actually start working on a draft, to play around in creative mode and to conceive the stuff, writing it down, for example the essential contrast between two prefabs, a contrast which other prefabs will serve only to accentuate, before attacking the algorithm, and before your ideas freeze and retreat in the frustration that you will be inevitably be faced with when you are attacking the game from a flank where the engine is going to be shielding much of the Lua code that you can actually access. And perhaps this is precisely why so little content can be found on the Klei Forums for doing worldgen mods. Levels and Start Locations It is with this opposition in mind that I want to revisit the two items on top of the worldgen hierarchy: the Level and the Taskset. As I had remarked, it is a really regrettable thing they did to implement a distinction that was not well conceived, and since DST exploded, they had no room to backpedal, and had to stick with this distinction, despite the few number of worldgen mods. I myself was able to assimilate and remember much of how the worldgen algorithm works, but everytime I have started a new worldgen map, I have had to do a copy-pasta of my previous one, and then marvel at how arbitrary both the worldgen algorithm is and also how arbitrary was my manner to deal with the worldgen algorithm. For the notes below, you can reference a worldgen mod of your preference, and not just the base-game files. I myself am looking at the Great Desert mod: https://steamcommunity.com/sharedfiles/filedetails/?id=3422031573 When you do an "AddLevel", you are above all adjusting the "overrides" table. In this one table are united settings that will effect how your world is generated, now called "World Generation", and settings that you can change after, now called "World Settings". "Roads" is effectively a bit of an androgynous item here, because you can, through hacks, turn on Roads in your world after it is generated, since that, in order to generate roads, the algorithm simple links together the center of your rooms. You want the "overrides.task_set" to point to the Taskset you've created. You will want to adjust the "world_size" variable, perhaps set prefabswaps_start = "classic", maybe turn off Loops and increase Branching. If you are seeing a bizarre engine-side crash with a tiny map, try turning off roads. You might also want to set "touchstone", "boons", "traps", "poi", and "protected" to "never", for the sake of derandomization, because it is with these five settings that the worldgen algorithm will try to squeeze in Failed Survivors, Traps such as the Reed Trap, Points of Interest and Protected Resources. If you look at the "map/levels/lavaarena.lua" file, you'll see that Forge have all five of these set to "never" so as to abuse the precedure-generated algorithm into doing a setpiece-only map. You can adjust other items like setting specialevent = "none". But these will remain suggestions for your audience, since they do not alter the worldgen, and are adjustable after it. If you are serious, you will want to set up your own "start_location". A Start Location is a Room with a Setpiece that the algorithm will call "START." By default, it is the default start setpiece with the portal and three flowers in the Room called "Clearing". You want to do the "AddStartLocation" function, with the "start_setpeice" pointing to your setpiece, and the "start_node" pointing to the biome that will surround it. There are ways to get around the Start Location, ways as convoluted as some of DST's farms. I again point you to the One Biomes mod if you want to do a map with just an ocean setpiece or one with just a setpiece floating in the middle of the void. For example, if you add a Start Location with start_setpeice = nil, you can set up an arrangement of two or more setpieces in the "start_node" biome, since the start_node is, by default, emptied of its "countstaticlayouts" when filling the function of a Start Location. The Start Location will be the center when you set up your Locks and Keys. Setpieces If you compare the "map/levels/forest.lua" file against the "map/tasksets/forest.lua" file, you'll notice that for a Taskset, a setpiece has to be restricted to certain tasks, whereas for a Level, it is unrestricted. An item mod such as the Battle Axes mod would add its setpieces by a "AddLevelPreInitAny". The way that the Junk Yard, the Stage Hand and the Terrarium setpieces spawn, is by Room tags that you can find in the "map/maptags.lua" file. The Room tags serve several very different functions for which you should reference this base-game file. I have yet to see a mod use these tags to add a setpiece. If you have a taste for precision, you will want to add your setpiece to a specific Task. If you are thinking of the "Plain" Room in the "Great Plains" Task, you might want to: duplicate this room; add your set piece to your duplicated copy; add your duplication to the "Great Plains" Task; and then substract a Vanilla "Plain" from the "Great Plains" Task so as to round it up. I will revisit this procedure a few paragraphs down. You will also remember to add something to the "required_prefabs" table. There are "required_prefabs" tables at every level of agglomeration: the "MagicalDeciduous" Room has it for "statueglommer"; the "RuinedGuarden" Task has it for "minotaur_spawner"; the "forest" Taskset has it for "gravestone"; it is possible to add requried prefabs to a Level. The algorithm adds these up in the "map/network.lua" file, so you should add the required prefabs at the correct level of agglomeration, the level of agglomeration where this prefab is actually necessary. Adding a prefab multiple times will make the algorithm check for a total count. There is the fifth level called Location which has an invisible required prefab, which is the "multiplayer_portal". The Location is the genre of which the surface world called "forest" and the caves are the species. This invisible required prefab is enforced for both worlds. The data for the location is not easily accessible. If you do not like the portal, you can remove it after worldgen. When adding a setpiece, the two parameters you will be mainly thinking about are the "LAYOUT_POSITION" and the "PLACE_MASK". I always set my setpieces to "LAYOUT_POSITION.CENTER", the only exception being when I am doing a room with two setpieces, one centered and one off-center. The "PLACE_MASK" is handled in the engine. What I was able to infer from their names, what I was able to observe in their usage, and what I was able to gather from the two only posts on it in the Klei Forums, is that, you usually want your setpieces set to "PLACE_MASK.IGNORE_IMPASSABLE_BARREN_RESERVED", so the setpiece is granted the permission to terraform impassable tiles into its setpiece tiles. I am not entirely certain whether the "_RESERVED" in it is what permits setpieces to cut into each other, but they will occasionally do, with the setting of "IGNORE_IMPASSABLE_BARREN_RESERVED". For the Archipelago Mod, where I converted every single Room into an island, I had to do something for setpieces, since the land space was going to be very circumscript. I changed the Place Masks for every single setpiece to PLACE_MASK.IGNORE_IMPASSABLE_BARREN_RESERVED, and then proceeded to sort the larger and more important Vanilla setpieces into the task to which they are most associated, such as the Shadow Chess Piece Sculptures inside a "DeepForest" Room in the "For a nice walk" Task; a "Terrarium_Forest_Fire" setpiece in a "Clearing" in the starter "Dig that rock" setpiece; and our old favorite chess setpiece "Maxwell5" inside a "Plain" Room in the "Great Plains" setpiece: https://steamcommunity.com/sharedfiles/filedetails/?id=3429135237 I also replaced the Starting Location with a duplication I called "Clearing_with_boat", which I added by means of a Post-Init: the mod is a Modifier Worldgen mod, without its own map, but only modifying another map, so the user will not be selecting the map and making adjustments anyway, so a Post-Init would save the user the trouble of selecting or pondering over the new Start Location. This is also why Tropical Experience, Island Adventures and Megarandom were executed by Post-Initis, so the final control was detained in the mod's configuration settings. Themes and Mechanics I think of a map as a sculpture that I appreciate simultaneously from two angles, or of a literary text where you are trying to analyze, at the same time, the ideas it's evoking and the logic of its plot: the theme and the mechanic. The theme is the more intuitve end of the opposition. It is the look, the associations, both the associations in-game and the association of their real world counterparts. Beefalo is associated is the Savanna biome. Moon Glass may or may be associate with the Mush Gnome. On the one hand, their have the same lunar color scheme and of course the official narrative of the lunar invasion, but on the other hand, the Lunar Archipelago prefabs have more angular contours, that is the complete opposite of the look of the Lunar Grotto, where the outlines are all in mouldy roundness. The mechanic is analysis opposed to the synthetic nature of the theme; it is the chain of substitutes opposed to the web of associations; it is the uses and abuses to which each prefab lends itself for a player who knows his way around the game: a Volt Goat Herd is the possibility of a farm; the Mosaic biome immediately conjures up the image of the meteor shower; the tumbleweed spawner suggests the idea of self-sufficiency; the Shadow Chess Pieces setpiece is a substitute for Chesspieces for a minimalist map, as much as the Earthquakes dispenses with the Pig King, or the Bee Queen Crown with the Beehive. A good way to elaborate your ideas, is to attack the world from the side of the mechanic, and not the more intuitive side of the theme: do I really need so many Chess setpieces? Shall I content myself with one single "Maxwell5"? But do I need them at all if I'll have the Shadow Chesspieces, and not to mention the ruins? And do I even need the Shadow Chesspieces, if I can force the tumbleweeds to drop the little chess trinkets? But that would be pushing the minimalism too far, woudn't it, to the point of being convoluted? Go down, in your mind, your own personal quest tree of building a base, and wonder which resources are dispensable, and which are not. Imagine all the possible scarcities, and whether the abundance of a resource rare in Vanilla can more than compensate a certain scarcity that you've picked as a theme. This is also why the Desert Enhancement map by ThemInspector feels so strong conceptually, and in my opinion, the strongest DST worldgen mod in conception. It realizes an incredible balance between difficult scarcities and unexpected abundances: the scarcity of the log that we took so much for granted in vanilla; but in compensation, a concentrated chess biome and a dense spider quarry, sights that, after the impossible distances that take days to traverse and explore, are such a pleasure to discover, and makes the whole map into a well-balanced experience, not to mention the big unifying theme of the Desert, and how well the map captures the corresponding real-world terrain, all the while disinguishing nuances within the Desert so known for its monotony: https://steamcommunity.com/sharedfiles/filedetails/?id=929742407 Locks and Keys Let us too return from the themes of worldgen creation back to the mechanics of the worldgen algorithm, and attack the most difficult part of it: the Locks, Keys and Regions. The Locks and Keys are a bizarre system that feels more suited for Adventure Mode than for sandbox, and seems indecisive in an awkward middle ground between the absolute liberties of a true Sandbox, and the controls of a more story-driven procedural generation, a creole of two language, each of which have their vocabulary, from which words are taken, orphaned, to live in a sad artificial life in a hybrid world where they are like fish out of water. It is the bastardy of the Composite Order. The system is intuitive in conception: you have keys that open locks; some locks need certain keys; some keys can open several locks while some locks can only be opened by one key. The "START" node is linked to the LOCKS.NONE, while the more peripheral tasks link off the middle tasks linking to the center tasks. The execution is farily simple too. You can find the hierarchy of the keys in the "map/lockandkey.lua", and compare them to the "map/tasks/forest.lua" file where you can find the setup to each of the tasks. The problem is that after familiarizing yourself with the Constant and playing in different combinations with different friends across different worlds, you observe that certain Tasks feel more associated to certain other Tasks and that certain associations are stronger than other associations, and that you really don't need the second Deciduous biome, and that it's worth the trouble getting a mod to make sure the two deserts connect. The Tiny Worlds mods all more or less maintained the structure of the Vanilla Locks and Keys, whereas for my maps I've decided to derandomize by reducing it to a skeleton structure of one single center Task branching out to three branches. I like simplicity, and then I am convinced that, by repartitioning Vanilla's elements into these four agglomerations, I can come up with an ensemble conceptually stronger than the randomness of six or seven levels of locks and keys in the Vanilla worldgen that is, for me, as painful to look at in the results of its generation, as it is painful for my mind to imagine the possibilities of its combinations that I have yet to see. This tripartite arrangement also has the advantage of being a good number of divisions to repartition Vanilla content, a large enough number to permit a certain liberty in your combinations, but also few enough so that the task of repartition isn't overwhelming and you can actually maintain a certain quality-control by making all four agglomerations equally good: equally strong, conceptually, in its themes, with contrasts between them and nuances within them; equally characterized so that each one is evoking different ideas and each have their own attraction; but above all, and this is really the most important part, equally important to game play, both in the early game and the late game, especially with immobile resources, raid bosses and points of interest distributed evenly between them, because these immobile resources are going to be the skeleton of your world after you have chewed away the meat. The Great Desert is my interpretation of ThemInspector's Desert Enhancement: https://steamcommunity.com/sharedfiles/filedetails/?id=3422031573 Islands You tell the algorithm to isolate a landmass by setting a "region_id" on your task. If you test out the Rooms and Task Names mod, you'll notice that the algorithm executes this separation by spawning Rooms of ocean between the mainland and the island. This is also what is behind the tricks for finding the Lunar Islands. You can find the algorithm in "map/storygen.lua", it's the "Story:AddCoveNodes" function. You should take a look at the various setups for the Lunar Island Tasks in the "map/tasks/dst_tasks_forestworld.lua" file, and decide whether your island is going to be a "level_set_piece_blocker", or whether it'll be hassler-free, that is to say, blocking Deerclops spawn and the spawning of other giants. The "not_mainland" tag is not necessary, and I have it removed for my minimalist maps, so that you can still do certain stuff on islands, like encounter a Rook Nose or Wagstaff's machines. Do a content search of the "not_mainland" to see how it actually effects gameplay. The Cove rooms give your island task a jagged shoreline. I had tested these out a long time ago but did not manage to understand them satisfactorily enough, so I have been pasting the Vanilla parameters for good measure, and same for the "crosslink_factor" parameter which is only ever really used in the shard Lunar Islands' "MoonIsland_IslandShards" Task, and which is passed onto the engine in the "Story:GenerateNodesForRegion" function in the "map/storygen.lua" file, with a default value of 1. If you have insights on these, please feel free to share them. If your island is one lone Room, remember to add "RoadPoison" to the room_tags, because the algorithm fits roads through the center of nodes, so it'll crash the worldgen when it cannot find a second node to which the road can connect. If you want to do an entire world in islands, you should take a look at Island Adventures or my Islandia map. There are a few hacky things you have to do, such as setting layout_mode = "RestrictNodesByKey", which is also a trick you have to do for extremely tiny maps. I apologize that this Islandia map was written in what I called a Unichunk, when I had the most convoluted idea of setting up a system so I can put all of the content in one single unifying chunk, by making each of the functions return whatever string or table so they can all be nested together: https://steamcommunity.com/sharedfiles/filedetails/?id=3425879062 Ocean You can adjust setpieces in the ocean by adjusting the "ocean_prefill_setpieces" table in your Taskset. The ocean is generated after the continents are complete. The impassable tiles are terraformed into different ocean tiles, depending on how far they are from different pieces of landmass and the edge of the map. The "map/rooms/terrain_ocean.lua" file was a bizarre idea they had to regularize the Ocean worldgen to make it more like a room. You will notice that the "wobster_den_spawner_shore" is not a prefab but a marker that the worldgen algorithm converts into a bunch in the file "map/bunches.lua", and with tile filters too so they always spawn in WORLD_TILES.OCEAN_COASTAL. This is why you sometimes encounter a single Wobster Den on its lonesome, despite it once belonging to a bunch: they first spawned a bunch, and then orphaned the one Wobster Den you see because the other spawned too close to the shore. I do not understand the Ocean worldgen algorithm enough to develop more. I am also thinking that DST's newer content will likely elaborate on DST's ocean, which is currently not DST's strongest part in terms of conception. The distances are enormous and the exploration is not punctured by interesting transitions, by accidents in the landscape, like in Shipwrecked, and the colors of DST's ocean are regrettable. But above all the logistics are a real resource sink, and a sad one at that. Think of the brutal manner in which people built boat bridges to connect to the Lunar Island, and the no less brutal manner people now spam the Dock Kit to do the same thing, and then the no less brutal manner with which people rush the Lunar Islands, which were never, for most players of the game, but a raid quest. After playing my Islandia maps alone and with people for a few different runs and then going back to Shipwrecked for some comparaison, I gave up elaborating on the concept because I found the whole alternation of land and ocean not interesting enough, compared to a purely continental map where, with the noise tiles I love so much, I can create much more interesting accidents in my landscape. On the continent, everything is connected, everything is forced into all sorts of transitions between them and their neighbors, often in spite of themselves. It is painful for me to think that somewhere in my world is an island that I will visit only once and for one single purpose, and who will just sit there for the rest of my world. For a continental map, this resources that I only need once can be integrated into the continuum of a landscape, but for an map entirely in islands, it'll force you to surround it with an arbitrary enviroment whose single-use nature you will never be able to efface. Link to comment https://forums.kleientertainment.com/forums/topic/166571-reflexions-on-dst-worldgen/ Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now