minor changes
authorhgn <hgodden00@gmail.com>
Thu, 2 Nov 2023 20:14:00 +0000 (20:14 +0000)
committerhgn <hgodden00@gmail.com>
Thu, 2 Nov 2023 20:14:00 +0000 (20:14 +0000)
12 files changed:
network.c
network.h
player.c
player.h
player_common.c
player_remote.c
player_render.c
player_skate.c
player_walk.c
skaterift.c
skeleton.h
world_sfd.c

index 5d00d16c3b0fb43862b54fd2841491f4c6625ac2..da0be1e392e07fc65f7df722041a4c913e2af1a9 100644 (file)
--- 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; i<vg_list_size(track_infos); i++ ){
-      if( track_infos[i].push ){
-         track_infos[i].push = 0;
-
-#if 0
-         highscore_record *user_record = highscore_find_user_record( 0, i );
-
-         if( !user_record ){
-            vg_error( "No score set but tried to upload for track %u\n", i );
-            continue;
-         }
-#endif
-         highscore_record *user_record = &track_infos[i].record;
-
-         setscore->records[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;
index fc4829d6d1bb3468fb0db3595aaf867be63ad814..8c1d656133d004269e9c60059025fa78f98b6b64 100644 (file)
--- 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 );
index e6b93877f514f3f55b3c6de26462a860a400ca43..de96060710677edb746e08277838848ea485e8e8 100644 (file)
--- 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;
 }
 
index 6ee3112b701165ff9a401c6ed1961d140d3f4fa5..c718c5ac57eb4ccc66f5cc311ab472001293ddcb 100644 (file)
--- 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 );
index 203f52bc28e4500acfbe38a38f8442c8da909169..eeed469d04c52c8b7cdbf36d04709a6eaf967ef3 100644 (file)
@@ -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 
index 3b7e6a6e88ef662c0a36420e3b69b210a5672656..8ab15e0a382de43d5c4b820c04d3b232da0441d2 100644 (file)
@@ -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; i<NETWORK_MAX_PLAYERS; i ++ ){
       struct network_player *player = &netplayers.list[i];
@@ -647,6 +651,8 @@ static void render_remote_players_tags( world_instance *world, camera *cam ){
 }
 
 static void remote_players_init(void){
+   vg_console_reg_var( "k_show_own_name", &k_show_own_name, 
+                       k_var_dtype_i32, 0 );
    for( u32 i=0; i<NETWORK_SFX_QUEUE_LENGTH; i ++ ){
       netplayers.sfx_queue[i].system = k_player_subsystem_invalid;
    }
index 2cf0e283e5736109f61f914a0bd5f4a8e6e1c7b4..13aa5516ddc883d2d3df44fa4a51fbb794f6c02b 100644 (file)
@@ -170,17 +170,22 @@ static void player__animate(void){
    assert( sys->animator_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 );
index 41e03a40b46e836e30d2543279f9753c624a86b6..4688702a68385f01c8d95b68bbc9dffcab278cdf 100644 (file)
@@ -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 );
index 8b493a8e49a7c1856ab7cfeb94f824e6e19b3c47..40b836c26db55a85b065922e51d7f2f2da5287a6 100644 (file)
@@ -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();
 
index 1d7113265d590f539274dee6357ff25cc4652d32..34e42f39cd5ed8ee533490a37aa8971d6ab77419 100644 (file)
 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){
index a07a33af0e097de0f2c6d307f739be270422ba57..b94fa68cb84af7f75fe4ef0edfb9c305c9162720 100644 (file)
@@ -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 );
index ca6f774b327fe4cd41ae3002b2a1cf8ea049a8d0..478f431ee7aa01956d27746184d39d1ef506454c 100644 (file)
@@ -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 ){