#include #include #include #include #include #include #include #include #include namespace deerith { int world_tick = 0; void world_simulation(); std::atomic running = true; void create_client(ENetPeer *peer); void handle_signal(int signal); } void deerith::handle_signal(int signal) { if (signal == SIGTERM) running = false; } void deerith::run_world(int port) { std::signal(SIGTERM, handle_signal); if (!init_server(port)) { deerith_error("could not init server"); return; } deerith_trace("server init on port {}", port); while (running) { world_simulation(); } } void deerith::world_simulation() { flush_network_events(); // process movments update_players_characters(); if (get_world_tick() % 2 == 0) { send_entity_data(); } wait_till_next_tick(); }