diff options
| author | untodesu <kirill@untode.su> | 2025-03-22 15:08:17 +0500 |
|---|---|---|
| committer | untodesu <kirill@untode.su> | 2025-03-22 15:08:17 +0500 |
| commit | e34a973f647bc6b7814ad1f3e837689f8478b84a (patch) | |
| tree | 7c8cb1702c16eb68e7acf942d46633a3833bba00 /game/server/worldgen.cc | |
| parent | d8f0fcb101c21b3c4d746d20da6e56e7591006e4 (diff) | |
| download | voxelius-e34a973f647bc6b7814ad1f3e837689f8478b84a.tar.bz2 voxelius-e34a973f647bc6b7814ad1f3e837689f8478b84a.zip | |
A bunch of pre-release fixes
- Updated localization for protocol messages
- Added item registry check into server-side
- Slightly improved how features are stored
Diffstat (limited to 'game/server/worldgen.cc')
| -rw-r--r-- | game/server/worldgen.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/game/server/worldgen.cc b/game/server/worldgen.cc index 83fddbb..4fc37c7 100644 --- a/game/server/worldgen.cc +++ b/game/server/worldgen.cc @@ -1,13 +1,19 @@ #include "server/pch.hh" #include "server/worldgen.hh" +#include "core/config.hh" + #include "shared/chunk.hh" #include "shared/dimension.hh" #include "shared/protocol.hh" #include "shared/threading.hh" +#include "server/globals.hh" +#include "server/inhabited.hh" #include "server/sessions.hh" +static ConfigBoolean aggressive_caching(false); + static emhash8::HashMap<Dimension *, emhash8::HashMap<chunk_pos, std::unordered_set<Session *>>> active_tasks; class WorldgenTask final : public Task { @@ -60,6 +66,14 @@ void WorldgenTask::finalize(void) auto chunk = m_dimension->create_chunk(m_cpos); chunk->set_voxels(m_voxels); + if(aggressive_caching.get_value()) { + // Marking the chunk with InhabitedComponent makes + // it so that it is saved regardles of whether it was + // modified by players or not. This isn't particularly + // good for server-side disk usage but it might improve performance + m_dimension->chunks.emplace<InhabitedComponent>(chunk->get_entity()); + } + protocol::ChunkVoxels response; response.voxels = m_voxels; response.chunk = m_cpos; @@ -84,6 +98,11 @@ void WorldgenTask::finalize(void) } } +void worldgen::init(void) +{ + globals::server_config.add_value("worldgen.aggressive_caching", aggressive_caching); +} + bool worldgen::is_generating(Dimension *dimension, const chunk_pos &cpos) { auto dim_tasks = active_tasks.find(dimension); |
