diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/drops.c | 2 | ||||
| -rw-r--r-- | src/game.c | 24 | ||||
| -rw-r--r-- | src/overlay.c | 10 | ||||
| -rw-r--r-- | src/pathfinding.c | 6 | ||||
| -rw-r--r-- | src/players.c | 24 | ||||
| -rw-r--r-- | src/protocol.c | 7 | ||||
| -rw-r--r-- | src/zombies.c | 2 |
7 files changed, 45 insertions, 30 deletions
diff --git a/src/drops.c b/src/drops.c index 881c207..59bfcc6 100644 --- a/src/drops.c +++ b/src/drops.c @@ -23,7 +23,7 @@ void update_drops() { drops[i].time_active += update_delta; drops[i].position.z = MAX_HEIGHT_DIFF * sin (2 * M_PI * 0.5f * (drops[i].time_active) + 0) + b.start_h; - for (int x = 0; x < max_players; x++) { + for (int x = 0; x < MAX_PLAYERS; x++) { player *p = &players[x]; if (!p->active) continue; @@ -2,7 +2,7 @@ #include "../include/pathfinding.h" static void server_on_client_disconnect(network_client c) { - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { player p = players[i]; if (p.client.ConnectSocket == c.ConnectSocket) players[i].active = false; } @@ -20,7 +20,7 @@ void start_server(char* port) { } static u32 get_session_id() { - u64 time = platform_get_time(TIME_NS, TIME_FULL); + u64 time = platform_get_time(TIME_FULL, TIME_NS); return (((time * 2654435789U) + time) * 2654435789U) + platform_get_processid(); } @@ -48,7 +48,7 @@ void connect_to_server(char* ip, char* port) { global_state.network_state = WAITING_FOR_ID; network_message message = create_protocol_get_id_up(player_id); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } } } @@ -92,7 +92,7 @@ static void broadcast_to_clients(network_message message) { send_queue_entry entry = {0}; entry.message = message; - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { player p = players[i]; if (!p.client.is_connected) continue; if (!p.active) continue; @@ -113,9 +113,9 @@ static void rotate_user(platform_window* window, protocol_user_look *message) { } static void set_ping_for_player(protocol_generic_message* msg) { - u64 diff = platform_get_time(TIME_MS, TIME_PROCESS) - msg->send_timestamp; + u64 diff = platform_get_time(TIME_FULL, TIME_MILI_S) - msg->send_timestamp; - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { player p = players[i]; if (!p.client.is_connected) continue; if (!p.active) continue; @@ -128,7 +128,7 @@ static void set_ping_for_player(protocol_generic_message* msg) { float update_timer = 0.0f; void update_server(platform_window* window) { - server_update_time = platform_get_time(TIME_NS, TIME_FULL); + logic_update_time = platform_get_time(TIME_FULL, TIME_NS); mutex_lock(&messages_received_on_server.mutex); @@ -140,7 +140,7 @@ void update_server(platform_window* window) { { case MESSAGE_GET_ID_UPSTREAM: { protocol_get_id_upstream* m = (protocol_get_id_upstream*)msg->message; - network_client_send(&msg->client, create_protocol_get_id_down(m->id)); + add_message_to_outgoing_queuex(create_protocol_get_id_down(m->id), msg->client); spawn_player(m->id, msg->client); log_info("Player connected to server"); } break; @@ -188,9 +188,9 @@ void update_server(platform_window* window) { update_timer += update_delta; - server_update_time = platform_get_time(TIME_NS, TIME_FULL) - server_update_time; - if ((server_update_time/1000000.0f) > 5.0f) { - log_infox("Server update took %.2fms", (server_update_time/1000000.0f)); + logic_update_time = platform_get_time(TIME_FULL, TIME_NS) - logic_update_time; + if ((logic_update_time/1000000.0f) > 5.0f) { + log_infox("Server update took %.2fms", (logic_update_time/1000000.0f)); } } @@ -223,6 +223,7 @@ static void load_bullets_into_existing_list(protocol_bullets_list* msg_bullets) } void update_client(platform_window* window) { + logic_update_time = platform_get_time(TIME_FULL, TIME_NS); mutex_lock(&messages_received_on_client.mutex); for (int i = 0; i < messages_received_on_client.length; i++) { @@ -271,6 +272,7 @@ void update_client(platform_window* window) { allocator_clear(&client_incomming_allocator); mutex_unlock(&messages_received_on_client.mutex); + logic_update_time = platform_get_time(TIME_FULL, TIME_NS) - logic_update_time; } void update_game(platform_window* window) { diff --git a/src/overlay.c b/src/overlay.c index 298f460..4894760 100644 --- a/src/overlay.c +++ b/src/overlay.c @@ -51,7 +51,7 @@ static void draw_leaderboard(platform_window* window) { renderer->render_rectangle(x, y, actual_width, height_total, rgba(0,0,0,120)); draw_leaderboard_entry(x, y, actual_width, height_per_row, "Player", "Kills", "Deaths", "Ping"); - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; char kills[30]; snprintf(kills, 30, "%d", players[i].kills); @@ -65,12 +65,18 @@ static void draw_leaderboard(platform_window* window) { void draw_debug_stats(platform_window* window) { float fps = 1.0f / update_delta; float usage = (update_delta / (1.0f / 60.0f) * 100); + int count = 0; + for (int i = 0; i < OUTGOING_QUEUE_SIZE; i++) + { + if (!messages_to_send_queue[i].active) continue; + count++; + } char fps_text[50]; snprintf(fps_text, 50, "FPS: %d, MS: %.4f, USAGE: %.0f%%", (int)fps, update_delta*1000.0f, usage); char update_text[50]; - snprintf(update_text, 50, "server: %.2fms", server_update_time/1000000.0f); + snprintf(update_text, 50, "update: %.2fms, queue: %d", logic_update_time/1000000.0f, count); renderer->render_text(fnt_20, _global_camera.x, _global_camera.y + fnt_20->px_h*0, fps_text, rgb(0,0,0)); renderer->render_text(fnt_20, _global_camera.x, _global_camera.y + fnt_20->px_h*1, update_text, rgb(0,0,0)); diff --git a/src/pathfinding.c b/src/pathfinding.c index 88bcd23..538c279 100644 --- a/src/pathfinding.c +++ b/src/pathfinding.c @@ -17,7 +17,7 @@ bool can_walk_at(float x, float y) bool find_path_to(vec2f start_pos, vec2f end_pos, array *to_fill, pathfinding_request* request) { - uint64_t timestamp = platform_get_time(TIME_PROCESS, TIME_MS); + uint64_t timestamp = platform_get_time(TIME_FULL, TIME_US); allocator al = create_allocator(500000); struct path_node { @@ -88,7 +88,7 @@ bool find_path_to(vec2f start_pos, vec2f end_pos, array *to_fill, pathfinding_re if (to_fill) { if (to_fill->length > 1) array_remove_at(to_fill, to_fill->length-1); - //printf("PATHFINDING TOOK: %fms\n", (platform_get_time(TIME_PROCESS, TIME_MS)-timestamp)/1000.0f); + //printf("PATHFINDING TOOK: %.2fms\n", (platform_get_time(TIME_FULL, TIME_US)-timestamp)/1000.0f); } mutex_unlock(&request->mutex); @@ -300,7 +300,7 @@ void make_pathfinding_request(vec2f start, vec2f end, array *to_fill, pathfindin if (request == ereq) { ereq->start = start; ereq->end = end; - ereq->timestamp = platform_get_time(TIME_PROCESS, TIME_MS); + ereq->timestamp = platform_get_time(TIME_FULL, TIME_MILI_S); mutex_unlock(&global_pathfinding_queue.mutex); return; } diff --git a/src/players.c b/src/players.c index e6fab6d..d22ec57 100644 --- a/src/players.c +++ b/src/players.c @@ -19,7 +19,7 @@ float get_player_size(platform_window* window) { int get_player_count() { int count = 0; - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; count++; } @@ -27,7 +27,7 @@ int get_player_count() { } void spawn_player(u32 id, network_client client) { - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (players[i].active) continue; players[i].active = true; players[i].sec_since_last_shot = 10.0f; @@ -97,7 +97,7 @@ void move_user(platform_window* window, u32 id, protocol_move_type move, float d } player* get_player_by_id(u32 id) { - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; if (players[i].id == id) return &players[i]; } @@ -132,7 +132,7 @@ object check_if_player_collided_with_object(platform_window* window, player p) { } int get_my_player_index() { - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; if (players[i].id == player_id) return i; } @@ -146,28 +146,28 @@ void take_player_input(platform_window* window) { if (keyboard_is_key_down(KEY_W)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_UP, player_id); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } move_user(window, player_id, MOVE_UP, update_delta); } if (keyboard_is_key_down(KEY_S)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_DOWN, player_id); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } move_user(window, player_id, MOVE_DOWN, update_delta); } if (keyboard_is_key_down(KEY_A)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_LEFT, player_id); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } move_user(window, player_id, MOVE_LEFT, update_delta); } if (keyboard_is_key_down(KEY_D)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_RIGHT, player_id); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } move_user(window, player_id, MOVE_RIGHT, update_delta); } @@ -186,7 +186,7 @@ void take_player_input(platform_window* window) { p->gunx = p->playerx + gun_offset_x; p->guny = p->playery + gun_offset_y; - network_client_send(global_state.client, create_protocol_user_look(player_id, gun_offset_x, gun_offset_y)); + add_message_to_outgoing_queuex(create_protocol_user_look(player_id, gun_offset_x, gun_offset_y), *global_state.client); } // shoot @@ -199,13 +199,13 @@ void take_player_input(platform_window* window) { diry /= length; network_message message = create_protocol_user_shoot(player_id, dirx, diry); - network_client_send(global_state.client, message); + add_message_to_outgoing_queuex(message, *global_state.client); } } } void update_players_server() { - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; players[i].sec_since_last_shot += update_delta; } @@ -213,7 +213,7 @@ void update_players_server() { void draw_players(platform_window* window) { float size = get_player_size_in_tile(); - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; OBJECT_RENDER_DEPTH((int)(players[i].playery+size)); diff --git a/src/protocol.c b/src/protocol.c index 468e80a..4493604 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -107,6 +107,13 @@ void client_on_message_received(u8 *buffer, u32 length) mutex_unlock(&messages_received_on_client.mutex); } +void add_message_to_outgoing_queuex(network_message message, network_client c) { + send_queue_entry entry; + entry.message = message; + memset(entry.recipients, 0, sizeof(entry.recipients)); + entry.recipients[0] = c; + add_message_to_outgoing_queue(entry); +} void add_message_to_outgoing_queue(send_queue_entry entry) { for (int i = 0; i < OUTGOING_QUEUE_SIZE; i++) diff --git a/src/zombies.c b/src/zombies.c index 88d8e05..16ca4aa 100644 --- a/src/zombies.c +++ b/src/zombies.c @@ -4,7 +4,7 @@ static player get_closest_player_to_tile(int x, int y) { float best_length = 99999; int best_index = -1; - for (int i = 0; i < max_players; i++) { + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; float dirx = (players[i].playerx - x); float diry = (players[i].playery - y); |
