From 6ba5c35d106d749a1ebafbd3cbe18c3a02f781d3 Mon Sep 17 00:00:00 2001 From: hgn Date: Thu, 2 Nov 2023 20:14:00 +0000 Subject: [PATCH] minor changes --- network.c | 124 +----------------------------------------------- network.h | 3 ++ player.c | 3 +- player.h | 2 +- player_common.c | 9 +--- player_remote.c | 12 +++-- player_render.c | 11 +++-- player_skate.c | 12 ++++- player_walk.c | 4 +- skaterift.c | 33 +++---------- skeleton.h | 2 +- world_sfd.c | 2 +- 12 files changed, 47 insertions(+), 170 deletions(-) diff --git a/network.c b/network.c index 5d00d16..da0be1e 100644 --- a/network.c +++ b/network.c @@ -57,83 +57,6 @@ static void request_auth_ticket(void){ SteamAPI_ISteamUser_RequestEncryptedAppTicket( hSteamUser, NULL, 0 ); } -#if 0 -static void send_score_request(void){ - vg_info( "Requesting scores\n" ); - netmsg_scores_request req; - req.inetmsg_id = k_inetmsg_scores_request; - - SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( - hSteamNetworkingSockets, network_client.remote, - &req, sizeof(netmsg_scores_request), - k_nSteamNetworkingSend_Reliable, NULL ); -} - -static void send_score_update(void){ - vg_info( "Sending scores\n" ); - u32 size = sizeof(netmsg_set_score) + - vg_list_size(track_infos)*sizeof(struct netmsg_score_record); - netmsg_set_score *setscore = alloca( size ); - setscore->inetmsg_id = k_inetmsg_set_score; - - int count = 0; - for( u32 i=0; irecords[count].trackid = i; - setscore->records[count].playerid = 0; - setscore->records[count].points = user_record->points; - setscore->records[count].time = user_record->time; - - count ++; - } - } - - if( count == 0 ) return; - u32 send_size = sizeof(netmsg_set_score) + - count*sizeof(struct netmsg_score_record); - setscore->record_count = count; - - SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( - hSteamNetworkingSockets, network_client.remote, setscore, send_size, - k_nSteamNetworkingSend_Reliable, NULL ); -} - -static void send_nickname(void){ - netmsg_set_nickname nick; - nick.inetmsg_id = k_inetmsg_set_nickname; - - memset( nick.nickname, 0, 16 ); - vg_strncpy( steam_username_at_startup, nick.nickname, 16, - k_strncpy_allow_cutoff ); - - SteamAPI_ISteamNetworkingSockets_SendMessageToConnection( - hSteamNetworkingSockets, network_client.remote, - &nick, sizeof(netmsg_set_nickname), - k_nSteamNetworkingSend_Reliable, NULL ); - - network_client.name_update = 0; -} -#endif - -#if 0 -static void server_routine_update(void){ - send_score_update(); - send_score_request(); -} -#endif - static void network_send_username(void){ netmsg_playerusername *update = alloca( sizeof(netmsg_playerusername)+ NETWORK_USERNAME_MAX ); @@ -422,15 +345,8 @@ static void on_persona_state_change( CallbackMsg_t *msg ){ static void network_connect(void){ /* Connect to server if not connected */ SteamNetworkingIPAddr remoteAddr; - -#ifdef SR_USE_LOCALHOST - SteamAPI_SteamNetworkingIPAddr_SetIPv6LocalHost( &remoteAddr, 27402 ); -#else - const char *server_lon1 = "46.101.34.155:27402"; - SteamAPI_SteamNetworkingIPAddr_ParseString( &remoteAddr, server_lon1 ); -#endif - const char *server_lan = "192.168.1.32:27402"; - SteamAPI_SteamNetworkingIPAddr_ParseString( &remoteAddr, server_lan ); + SteamAPI_SteamNetworkingIPAddr_ParseString( &remoteAddr, + network_client.server_adress ); char buf[256]; SteamAPI_SteamNetworkingIPAddr_ToString( &remoteAddr, buf, 256, 1 ); @@ -440,42 +356,6 @@ static void network_connect(void){ hSteamNetworkingSockets, &remoteAddr, 0, NULL ); } -#if 0 -static void on_inet_scoreboard( SteamNetworkingMessage_t *msg ){ - netmsg_scoreboard *sb = msg->m_pData; - - u32 base_size = sizeof(netmsg_scoreboard)- - sizeof(struct netmsg_board)*vg_list_size(track_infos), - expected = base_size+sizeof(struct netmsg_board)*sb->board_count; - - if( msg->m_cbSize != expected ){ - vg_error( "Server scoreboard was corrupted. Size: %u != %u\n", - msg->m_cbSize, expected ); - } - else{ - if( vg_list_size(track_infos) > sb->board_count ) - vg_warn( "Server is out of date, not enough boards recieved\n"); - else if( vg_list_size(track_infos) < sb->board_count ) - vg_warn( "Client out of date, server sent more boards than we have\n"); - else - vg_success( "Recieved new scoreboards from server\n" ); - - for( int i=0; i < vg_min(sb->board_count,vg_list_size(track_infos)); i++){ - scoreboard_client_data.boards[i] = sb->boards[i]; - highscores_board_printf( stdout, sb->boards[i].data, 10 ); - } - } - -#if 0 - /* We dont need to stay on the server currently */ - SteamAPI_ISteamNetworkingSockets_CloseConnection( - hSteamNetworkingSockets, network_client.remote, 0, NULL, 1 ); -#endif - - network_scores_updated = 1; -} -#endif - static void poll_remote_connection(void){ SteamNetworkingMessage_t *messages[32]; int len; diff --git a/network.h b/network.h index fc4829d..8c1d656 100644 --- a/network.h +++ b/network.h @@ -60,10 +60,13 @@ struct { } *request_buffer; vg_pool request_pool; + + char server_adress[64]; } static network_client = { .auth_mode = eServerModeAuthentication, .state = k_ESteamNetworkingConnectionState_None, + .server_adress = "46.101.34.155:27402" }; static int packet_minsize( SteamNetworkingMessage_t *msg, u32 size ); diff --git a/player.c b/player.c index e6b9387..de96060 100644 --- a/player.c +++ b/player.c @@ -267,9 +267,10 @@ static void player__spawn( ent_spawn *rp ){ static void player__kill(void){ } -static void player__begin_holdout(void){ +static void player__begin_holdout( v3f offset ){ memcpy( &localplayer.holdout_pose, &localplayer.pose, sizeof(localplayer.pose) ); + v3_copy( offset, localplayer.holdout_pose.root_co ); localplayer.holdout_time = 1.0f; } diff --git a/player.h b/player.h index 6ee3112..c718c5a 100644 --- a/player.h +++ b/player.h @@ -173,7 +173,7 @@ static void player__im_gui(void); static void player__setpos( v3f pos ); static void player__spawn( ent_spawn *rp ); static void player__kill(void); -static void player__begin_holdout(void); +static void player__begin_holdout( v3f offset ); static int localplayer_cmd_respawn( int argc, const char *argv[] ); static void player_apply_transport_to_cam( m4x3f transport ); diff --git a/player_common.c b/player_common.c index 203f52b..eeed469 100644 --- a/player_common.c +++ b/player_common.c @@ -188,6 +188,8 @@ static void player__cam_iterate(void){ v3f pco; v4f pq; rb_extrapolate( &localplayer.rb, pco, pq ); + v3_muladds( pco, localplayer.holdout_pose.root_co, + localplayer.holdout_time, pco ); v3_lerp( cc->tpv_lpf, pco, 20.0f*vg.time_frame_delta, cc->tpv_lpf ); /* now move into world */ @@ -203,13 +205,6 @@ static void player__cam_iterate(void){ v3_muladds( tpv_offset, cc->cam_velocity_smooth, -0.025f, tpv_offset ); v3_add( tpv_origin, tpv_offset, tpv_pos ); -#if 0 - f32 t; v3f n; - if( spherecast_world( world_current_instance(), tpv_origin, tpv_pos, - 0.2f, &t, n ) != -1 ){ - v3_lerp( tpv_origin, tpv_pos, t, tpv_pos ); - } -#endif /* * Blend cameras diff --git a/player_remote.c b/player_remote.c index 3b7e6a6..8ab15e0 100644 --- a/player_remote.c +++ b/player_remote.c @@ -6,6 +6,8 @@ #include "font.h" #include "gui.h" +static i32 k_show_own_name = 0; + static void player_remote_clear( struct network_player *player ){ addon_cache_unwatch( k_addon_type_player, player->playermodel_view_slot ); addon_cache_unwatch( k_addon_type_board, player->board_view_slot ); @@ -628,9 +630,11 @@ static void render_remote_players_tags( world_instance *world, camera *cam ){ font3d_bind( &gui.font, k_font_shader_default, 1, NULL, &skaterift.cam ); font3d_setcolour( (v4f){1.0f,1.0f,1.0f,1.0f} ); - render_remote_player_nametag( - localplayer.final_mtx[0][3], - steam_username_at_startup ); + if( k_show_own_name ){ + render_remote_player_nametag( + localplayer.final_mtx[0][3], + steam_username_at_startup ); + } for( u32 i=0; ianimator_data ); sys->animate(); - sys->pose( sys->animator_data, &localplayer.pose ); + + player_pose *pose = &localplayer.pose; + sys->pose( sys->animator_data, pose ); struct skeleton *sk = &localplayer.playeravatar->sk; if( localplayer.holdout_time > 0.0f ){ - player_pose *pose = &localplayer.pose; skeleton_lerp_pose( sk, pose->keyframes,localplayer.holdout_pose.keyframes, localplayer.holdout_time, pose->keyframes ); + + v3_muladds( pose->root_co, localplayer.holdout_pose.root_co, + localplayer.holdout_time, pose->root_co ); q_nlerp( pose->root_q, localplayer.holdout_pose.root_q, localplayer.holdout_time, pose->root_q ); + localplayer.holdout_time -= vg.time_frame_delta * 2.0f; } @@ -428,7 +433,7 @@ static void render_playermodel( camera *cam, world_instance *world, glUniformMatrix4x3fv( _uniform_model_character_view_uTransforms, skeleton->bone_count, 0, - (f32 *)final_mtx ); + (const GLfloat *)final_mtx ); mesh_bind( &model->mdl.mesh ); mesh_draw( &model->mdl.mesh ); diff --git a/player_skate.c b/player_skate.c index 41e03a4..4688702 100644 --- a/player_skate.c +++ b/player_skate.c @@ -1102,7 +1102,13 @@ static void player__skate_pre_update(void){ v3_copy( localplayer.cam.angles, localplayer.angles ); localplayer.angles[2] = 0.0f; - player__begin_holdout(); + v3f newpos, offset; + m4x3_mulv( localplayer.rb.to_world, (v3f){0.0f,1.0f,0.0f}, newpos ); + v3_add( newpos, (v3f){0.0f,-1.0f,0.0f}, newpos ); + v3_sub( localplayer.rb.co, newpos, offset ); + v3_copy( newpos, localplayer.rb.co ); + + player__begin_holdout( offset ); player__skate_kill_audio(); player__walk_transition(); return; @@ -2676,7 +2682,9 @@ static void player__skate_animate(void){ (1.0f-fabsf(animator->slide)*0.9f); animator->offset[1]=vg_clampf(animator->offset[1],-0.5f,0.0f); - v3_muls( animator->offset, 0.3f, localplayer.cam_control.tpv_offset_extra ); + v3f cam_offset; + v3_mul( animator->offset, (v3f){1.0f,0.3f,1.0f}, cam_offset ); + v3_copy( cam_offset, localplayer.cam_control.tpv_offset_extra ); /* localized vectors */ m4x3_mulv( localplayer.rb.to_local, state->cog, animator->local_cog ); diff --git a/player_walk.c b/player_walk.c index 8b493a8..40b836c 100644 --- a/player_walk.c +++ b/player_walk.c @@ -50,7 +50,7 @@ static void player_walk_generic_to_skate( enum skate_activity init, f32 yaw ){ v3_copy( v, player_skate.state.cog_v ); v3_copy( v, localplayer.rb.v ); - player__begin_holdout(); + player__begin_holdout( (v3f){0.0f,0.0f,0.0f} ); player__skate_reset_animator(); player__skate_clear_mechanics(); rb_update_transform( &localplayer.rb ); @@ -67,7 +67,7 @@ static void player_walk_drop_in_to_skate(void){ player_skate.state.activity_prev = k_skate_activity_ground; player_skate.state.activity = k_skate_activity_ground; - player__begin_holdout(); + player__begin_holdout( (v3f){0.0f,0.0f,0.0f} ); player__skate_clear_mechanics(); player__skate_reset_animator(); diff --git a/skaterift.c b/skaterift.c index 1d71132..34e42f3 100644 --- a/skaterift.c +++ b/skaterift.c @@ -60,33 +60,6 @@ static struct player_avatar localplayer_avatar; int main( int argc, char *argv[] ){ -#if 0 - u8 buf[ 512 ]; - bitpack_ctx ctx = { - .buffer = buf, - .buffer_len = 512, - .bytes = 0, - .mode = k_bitpack_compress - }; - - v4f q = { 0.388, -0.565, 0.515, 0.515 }; - vg_info( "q: %f %f %f %f\n", q[0], q[1], q[2], q[3] ); - - /* compress */ - bitpack_qquat( &ctx, q ); - - vg_info( "compressed bytes: %u\n", ctx.bytes ); - - /* decompress */ - ctx.bytes = 0; - ctx.mode = k_bitpack_decompress; - - bitpack_qquat( &ctx, q ); - vg_info( "q: %f %f %f %f\n", q[0], q[1], q[2], q[3] ); - - return 0; -#endif - vg_mem.use_libc_malloc = 0; vg_set_mem_quota( 160*1024*1024 ); vg_enter( argc, argv, "Voyager Game Engine" ); @@ -94,9 +67,15 @@ int main( int argc, char *argv[] ){ } static void vg_launch_opt(void){ + const char *arg; if( vg_long_opt( "noauth" ) ){ network_client.auth_mode = eServerModeNoAuthentication; } + + if( (arg = vg_long_opt_arg( "server" )) ){ + vg_strncpy( arg, network_client.server_adress, 64, + k_strncpy_overflow_fatal ); + } } static void vg_preload(void){ diff --git a/skeleton.h b/skeleton.h index a07a33a..b94fa68 100644 --- a/skeleton.h +++ b/skeleton.h @@ -78,7 +78,7 @@ static void keyframe_copy_pose( mdl_keyframe *kfa, mdl_keyframe *kfb, /* apply a rotation from the perspective of root */ static void keyframe_rotate_around( mdl_keyframe *kf, - v3f origin, v3f offset, v4f q ) + v3f origin, v3f offset, v4f q ) { v3f v0, co; v3_add( kf->co, offset, co ); diff --git a/world_sfd.c b/world_sfd.c index ca6f774..478f431 100644 --- a/world_sfd.c +++ b/world_sfd.c @@ -180,7 +180,7 @@ static void world_sfd_update( world_instance *world, v3f pos ){ float *target = &world_sfd.buffer[i*2+0], *cur = &world_sfd.buffer[i*2+1]; - float const rate = vg.time_delta * 15.2313131414f; + float const rate = vg.time_delta * 25.2313131414f; float d1 = *target-*cur; if( fabsf(d1) > rate ){ -- 2.25.1