Improve prediction calculations

isolation_bkp/dynres
Dominik Madarász 2021-10-27 11:18:40 +02:00
parent e7f55985db
commit 7059e881fb
2 changed files with 5 additions and 5 deletions

View File

@ -205,7 +205,7 @@ static ecs_entity_t *demo_npcs = NULL;
void
ActSpawnDemoNPCs(void) {
if (!demo_npcs) zpl_array_init(demo_npcs, zpl_heap());
if (zpl_array_count(demo_npcs) >= 10000) return;
if (zpl_array_count(demo_npcs) >= 100000) return;
for (uint32_t i = 0; i < 1000; i++) {
uint64_t e = entity_spawn(EKIND_DEMO_NPC);

View File

@ -4,8 +4,8 @@
#include "world/world.h"
#include "game.h"
#define PREDICT_SMOOTH_FACTOR_LO 0.10
#define PREDICT_SMOOTH_FACTOR_HI 0.01
#define PREDICT_SMOOTH_FACTOR_LO 10.5
#define PREDICT_SMOOTH_FACTOR_HI 20.5
static inline float map_factor(float x) {
x = 1.0f - zpl_clamp01(x);
@ -42,13 +42,13 @@ float smooth_val(float cur, float tgt, uint64_t dt) {
zpl_exit(0);
#endif
return zpl_lerp(cur, tgt, zpl_lerp(PREDICT_SMOOTH_FACTOR_LO, PREDICT_SMOOTH_FACTOR_HI, factor));
return zpl_lerp(cur, tgt, zpl_lerp(PREDICT_SMOOTH_FACTOR_LO, PREDICT_SMOOTH_FACTOR_HI, factor)*platform_frametime());
}
float smooth_val_spherical(float cur, float tgt, uint64_t dt) {
float factor = zpl_clamp01(map_factor(zpl_unlerp(dt, WORLD_TRACKER_UPDATE_MP_FAST_MS, WORLD_TRACKER_UPDATE_MP_SLOW_MS)));
return spherical_lerp(cur, tgt, zpl_lerp(PREDICT_SMOOTH_FACTOR_LO, PREDICT_SMOOTH_FACTOR_HI, factor));
return spherical_lerp(cur, tgt, zpl_lerp(PREDICT_SMOOTH_FACTOR_LO, PREDICT_SMOOTH_FACTOR_HI, factor)*platform_frametime());
}
void predict_receive_update(entity_view *d, entity_view *data) {