, world(res.block_types, wc)
, generator(gc)
, chunk_loader(world.Chunks(), generator, ws)
-, spawner(world, res.models, env.rng)
+, spawner(world, res.models)
, server(config.net, world, wc, ws)
, loop_timer(16) {
res.Load(env.loader, "default");
spawner.LimitModels(1, res.models.size());
server.SetPlayerModel(res.models[0]);
+ std::cout << "loading spawn chunks" << std::endl;
+ chunk_loader.LoadN(chunk_loader.ToLoad());
+
loop_timer.Start();
std::cout << "listening on UDP port " << config.net.port << std::endl;
void ServerState::Update(int dt) {
loop_timer.Update(dt);
+ if (!loop_timer.HitOnce() && loop_timer.IntervalRemain() > 1) {
+ server.Wait(loop_timer.IntervalRemain() - 1);
+ return;
+ }
+ if (dt == 0 && !server.Ready()) {
+ // effectively wait in a spin loop
+ return;
+ }
+
server.Handle();
int world_dt = 0;
while (loop_timer.HitOnce()) {
if (world_dt > 0) {
server.Update(world_dt);
}
+ if (world_dt > 32) {
+ std::cout << "world dt at " << world_dt << "ms!" << std::endl;
+ }
}
-void ServerState::Render(Viewport &viewport) {
+void ServerState::Render(Viewport &) {
}