From 9f57cd3ec64a3dc98d4ffe406f630963e82d6935 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sat, 4 Nov 2023 13:41:58 +0100 Subject: fix client movement stutter --- build/zombies.exe | Bin 1996781 -> 1996747 bytes src/game.c | 11 ++++------- src/players.c | 35 ++++++++++------------------------- 3 files changed, 14 insertions(+), 32 deletions(-) diff --git a/build/zombies.exe b/build/zombies.exe index b47c519..2d3722b 100644 Binary files a/build/zombies.exe and b/build/zombies.exe differ diff --git a/src/game.c b/src/game.c index a32142d..90ce7a5 100644 --- a/src/game.c +++ b/src/game.c @@ -181,7 +181,7 @@ void update_server(platform_window* window) { case MESSAGE_USER_MOVED: { protocol_move* move_msg = (protocol_move*)msg->message; - move_user(window, move_msg->id, move_msg->move, move_msg->delta); + if (move_msg->id != player_id) move_user(window, move_msg->id, move_msg->move, move_msg->delta); } break; case MESSAGE_USER_LOOK: { @@ -215,7 +215,8 @@ void update_server(platform_window* window) { update_spawners_server(); update_drops_server(); update_wallitems_server(); - update_throwables_server(); + update_throwables_server(); + update_zombie_chunks(); broadcast_players = platform_get_time(TIME_FULL, TIME_NS); update_players_server(); @@ -354,10 +355,8 @@ static void move_camera(platform_window* window) { _global_camera.x += dirx*speedx; _global_camera.y += diry*speedy; - //_global_camera.x = _next_camera_pos.x; //_global_camera.y = _next_camera_pos.y; - log_infox("%.1f %.1f", speedx, speedy); } void update_game(platform_window* window) { @@ -369,12 +368,10 @@ void update_game(platform_window* window) { else { update_client(window); } - - update_zombie_chunks(); if (global_state.network_state == CONNECTED) { take_player_input(window); - + draw_grid(window); draw_wallitems(window); draw_zombie_chunks(window); diff --git a/src/players.c b/src/players.c index a01a962..8e6f14e 100644 --- a/src/players.c +++ b/src/players.c @@ -172,33 +172,23 @@ void take_player_input(platform_window* window) { if (keyboard_is_key_down(KEY_A)) { network_message message = create_protocol_user_moved(MOVE_LEFT, player_id); 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)) { network_message message = create_protocol_user_moved(MOVE_RIGHT, player_id); add_message_to_outgoing_queuex(message, *global_state.client); + move_user(window, player_id,MOVE_RIGHT, update_delta); } if (keyboard_is_key_down(KEY_W)) { network_message message = create_protocol_user_moved(MOVE_UP, player_id); add_message_to_outgoing_queuex(message, *global_state.client); - - // if (keyboard_is_key_down(KEY_A)) { - // p->direction = DIRECTION_TOPLEFT; - // } - // else if (keyboard_is_key_down(KEY_D)) { - // p->direction = DIRECTION_TOPRIGHT; - // } + move_user(window, player_id,MOVE_UP, update_delta); } if (keyboard_is_key_down(KEY_S)) { network_message message = create_protocol_user_moved(MOVE_DOWN, player_id); add_message_to_outgoing_queuex(message, *global_state.client); - - // if (keyboard_is_key_down(KEY_A)) { - // p->direction = DIRECTION_BOTTOMLEFT; - // } - // else if (keyboard_is_key_down(KEY_D)) { - // p->direction = DIRECTION_BOTTOMRIGHT; - // } + move_user(window, player_id,MOVE_DOWN, update_delta); } @@ -301,6 +291,8 @@ void update_players_server() { void draw_players(platform_window* window) { float size = get_player_size_in_tile(); + map_info info = get_map_info(window); + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; @@ -310,7 +302,7 @@ void draw_players(platform_window* window) { players[i].height = height; box box = get_render_box_of_square(window, (vec3f){players[i].playerx, players[i].playery, height}, (vec3f){size,size,1.0f}); - + /* render_quad_with_outline(box.tl_d, box.tr_d, box.bl_d, box.br_d, rgb(200,150,120)); render_quad_with_outline(box.tl_u, box.tr_u, box.bl_u, box.br_u, rgb(200,150,120)); @@ -324,18 +316,11 @@ void draw_players(platform_window* window) { box.br_d.x, box.br_d.y, box.tr_u.x, box.tr_u.y, frame.tl, frame.tr, frame.bl, frame.br); - - int size = get_tile_width(window) / 2; - map_info info = get_map_info(window); - - float player_render_x = box.tl_u.x;//players[i].playerx*info.tile_width + (players[i].playery*info.px_incline); - float player_render_y = box.tl_u.y;//players[i].playery*info.tile_height - (height*info.px_raised_per_h); + + float player_render_x = box.tl_u.x; + float player_render_y = box.tl_u.y; players[i].gun_height = height+0.5; - //float gun_render_x = players[i].gunx*info.tile_width + (players[i].guny*info.px_incline); - //float gun_render_y = players[i].guny*info.tile_height - (players[i].gun_height*info.px_raised_per_h); - - //renderer->render_rectangle(gun_render_x, gun_render_y, size/4, size/4, rgb(20,255,20)); if (players[i].connection_state == DISCONNECTED) { float icon_h = (box.tr_u.x - box.tl_u.x)/2; -- cgit v1.2.3-70-g09d2