Physiks MP Player DataSync Optimizer B42 – 【Project Zomboid】

服装・装備追加車両追加マップ・建物追加スキル・特性追加ゾンビ・難易度調整サバイバル・クラフト追加UI改善マルチプレイ対応
  • 対応バージョン:1.4
  • サブスクライバー数:11674
  • 最終更新:2026-06-10 02:18:02 UTC
  • 制作者76561198082088147

MOD説明(日本語)

MOD概要

Project Zomboidのマルチプレイヤーにおけるプレイヤー同期の滑らかさを改善するMODです。バニラの同期システムを置き換えるのではなく、軽量な追加の同期チャンネルを導入します。これにより、リモートプレイヤーの動きをより滑らかにし、正確なアニメーション状態と反応性の高い位置同期を実現します。Build 42+と互換性があります。

このMODで何が変わるか

– クライアント側での補間が導入され、リモートプレイヤーがカクつくことなく、より滑らかに移動するようになります。
– レイテンシ補償により、プレイヤーの位置がネットワーク遅延を考慮して実際にいる場所に表示されるようになります。
– 同期データの送信が範囲指定となり、プレイヤーの近くにいるクライアントのみが更新を受信するため、不要なグローバルブロードキャストが減少します。
– アイドル、歩行、走行、攻撃、しゃがみ、エイム、隠密行動を含む7つのアニメーション状態が近くのクライアントに正しく同期されます。
– サーバー負荷に応じて更新レートが自動的に調整される適応型ティック抑制機能が備わっています。
– サーバー側のメモリリークが解消され、長時間のサーバー稼働でもRAM使用量が安定します。
– テレポートやラグスパイク発生時の不自然なラバーバンディングが減少し、動きがより自然になります。
– サーバー側のパフォーマンスが全体的に向上します(例: 非効率なキュー処理の改善、不要な計算の削減)。
– プレイヤー移動時のネットワークコマンドの重複送信が排除され、データ送信量が半減します。
– ゲームが一時停止している間のクライアントおよび補間バッファのメモリ使用量が抑制されます。
– 専用サーバー運用者向けに、サーバーパフォーマンスのさらなる向上、設定のチューニング、診断ログ機能を提供するJavaコンパニオンパッチが利用可能です。
– バニラファイルは変更されず、他のMODとの既知の競合はありません。

想定されるメリット(推定)

– マルチプレイヤー環境での他プレイヤーとのインタラクションが大幅に向上すると考えられます。
– 他プレイヤーの動きや位置がより正確に把握できるようになり、PvPや協力プレイにおける戦術判断がしやすくなると考えられます。
– 視覚的な滑らかさや、他プレイヤーの動きの反応性の向上が、より没入感のあるマルチプレイヤー体験を提供すると考えられます。
– サーバー全体の安定性、特に長時間の稼働においてメモリ面での負担が軽減されると考えられます。
– サーバー運営者にとっては、パフォーマンスの最適化や問題診断が容易になると考えられます。

想定されるデメリット・注意点(推定)

– このMODはバニラのネットワークトラフィックを削減するものではなく、独自の追加の同期チャンネルを使用するため、わずかなパケットオーバーヘッドが発生する可能性があります。非常に低帯域幅のネットワーク環境では、ごくわずかな影響が出る可能性も考えられます。
– 専用サーバー向けのJavaコンパニオンパッチは任意であり、導入には別途設定作業が必要となる可能性があります。
– MODの導入自体は比較的簡単ですが、ゲームのコアな同期部分に影響を与えるため、将来的なゲームアップデートで予期せぬ挙動が発生する可能性はゼロではありません。

向いている人(推定)

– Project Zomboidをマルチプレイヤーで頻繁にプレイし、他プレイヤーの動きのカクつきや位置のずれに不満を感じている人。
– PvPや大人数での協力プレイを重視し、他プレイヤーの正確な位置やアニメーションを把握したい人。
– 視覚的な滑らかさや、よりリアルなマルチプレイヤー体験を求める人。
– 専用サーバーを運用しており、サーバーパフォーマンスや安定性を向上させたいと考えている人。

向いていない人(推定)

– シングルプレイヤーでのみProject Zomboidをプレイする人(このMODの主な機能はマルチプレイヤー向けであるため)。
– 極端に低スペックなPCや非常に不安定なネットワーク環境で、追加のネットワークオーバーヘッドや処理負荷を最小限に抑えたいと考える人(ただし、このMODは軽量設計とされています)。
– MODの導入やサーバー設定に一切の手間をかけたくない人(特にJavaコンパニオンパッチの導入を避けたい場合)。

総合評価(暫定)

– おすすめ度:★★★★★
– 根拠:マルチプレイヤーの体験を根本的に向上させる重要な機能を提供し、サーバーのパフォーマンスと安定性にも寄与する。広範な互換性と継続的な改善が行われており、バニラの同期の弱点を補完する。既知の競合もなく、クリーンに導入・削除できる点も評価が高い。

※この説明文はAIによる自動翻訳です。正確な情報は下記の原文またはSteam Workshop公式ページをご確認ください。

原文を見る(英語)
MOD ID CHANGE!!!!! PLEASE REMOVE THE B41 FROM LABEL IF YOU DO!

Physiks MP Player DataSync Optimizer
Build 42+ compatible
Workshop ID: 3725078880
Mod ID: PhysiksDataSyncOptimizerB42

[hr][/hr]

Project Zomboid’s vanilla multiplayer sync works — but it was never built for smoothness. Position updates arrive in discrete ticks, remote players stutter between them, and there’s no latency compensation to bridge the gap. What you see isn’t where people actually are.

This mod adds a second, lightweight sync channel that runs alongside vanilla. It doesn’t replace anything the game already does — vanilla handles proximity filtering and bandwidth at the Java level, and nothing in Lua can touch that. What this mod can do is add the layer that vanilla doesn’t have:

Client-side interpolation — remote players move smoothly between received positions instead of snapping tick-to-tick
Latency compensation — positions are extrapolated forward using velocity so players appear where they actually are, not where they were 100ms ago
Proximity-targeted sends — only players within range receive updates from a given player; no global broadcasts
7 synced animation states — idle, walk, run, attack, crouch, aim, and sneak all replicate correctly to nearby clients
Adaptive tick throttling — update rate scales down automatically under server load, keeping the channel lightweight even on busy servers

The result is noticeably smoother remote player movement, correct animation states, and positions that feel responsive rather than delayed — all without touching vanilla sync.

[hr][/hr]

v1.4 — major fixes and improvements

This update addresses every significant technical flaw found through deep code review. The mod is now cleaner, faster, and correct where it previously wasn’t.

Bug fixes

Memory leak eliminated
The server-side packed state cache used raw binary strings as keys and was never pruned. On a long-running server it grew indefinitely. Now capped at 256 entries with automatic eviction — server RAM stays flat no matter how long the session runs.

Teleport threshold was inverted
This one was subtle and painful. Large position jumps — teleports, lag spikes — were being smoothly lerped, causing rubber-banding. Normal small movements were being snapped. The logic was completely backwards. Fixed: big delta snaps immediately, small delta lerps smoothly. Remote player movement is now actually smooth rather than lurching.

O(n²) queue drain on every server tick
The update queue was drained by calling table.remove(queue, 1) in a loop. In Lua, removing from the front of an array shifts every remaining element. On a 30-player server this ran thousands of unnecessary shifts per second. Replaced with a head-pointer index — the drain now costs only what it actually processes.

Performance

math.sqrt() removed from the hot loop
Every proximity check was calling math.sqrt() per nearby player per tick. Replaced with squared distance comparisons — same result, no square root. Gone from every per-player per-tick code path.

Double-send on player movement eliminated
Two separate event handlers were both firing network commands on the same movement frame — OnPlayerUpdate sent ImmediateUpdate while the tick loop sent BatchUpdate simultaneously. Cut down to one path. Cuts outgoing command volume roughly in half during active movement.

Pause buffers capped
Both the client and interpolation pause buffers grew without bound during long pauses. Only the last buffered state is ever used on resume. Capped at 10 entries each — nothing is lost, memory growth is stopped.

Improvements

3 new animation states
Crouch, aim, and sneak were missing entirely. Players doing any of these appeared as idle to everyone nearby. All three are now encoded, transmitted, and applied correctly. Still fits in the existing 8-bit animation field.

Smoothed velocity
Velocity was computed as a raw single-frame position delta — inherently noisy, causing interpolation jitter especially at lower frame rates. Now averaged over a rolling 3-frame buffer per player on both client and server. Extrapolation is noticeably steadier.

[hr][/hr]

Server-side only option

An optional Java companion patch is available for dedicated server operators. It moves the per-player throttle table into a Java ConcurrentHashMap (faster than Lua tables under load), exposes the proximity range and throttle interval as JVM properties you can tune without editing any files, and logs aggregate sync stats to the server console every 30 seconds. Clients don’t need it — it’s purely a server performance and diagnostics tool. See the Discussions tab for install instructions.

[hr][/hr]

Honest limitations

This mod adds an extra sync layer — it doesn’t reduce vanilla network traffic. Vanilla sync runs in Java and cannot be modified from Lua. The additional channel has its own packet overhead (~57–67 bytes of framing per send on top of the binary payload). On a well-connected server you won’t notice this. The benefit — smooth interpolation and correct latency compensation — outweighs the overhead in practice, but it’s worth knowing.

[hr][/hr]

Compatibility

Build 41 and Build 42 dedicated servers
Server-side and client-side installation
No known conflicts with other mods
No vanilla files modified — unsubscribe cleanly removes it

[hr][/hr]

Special thanks to Ricardao — a developer who took the time to dig deep into the code, challenge every wrong assumption, and call out real issues with real precision. His feedback on the network layer, packet sizing, vanilla proximity filtering, and the Java/Lua boundary is directly responsible for making this mod technically honest and genuinely correct. This update exists because of that input. Cheers.

この記事/MODは気に入りましたか?

はい
いいえ
フィードバックをありがとうございます!

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Steam Gamers-ナレッジ-
プライバシーに関する概要

当ウェブサイトでは、お客様に最適なユーザー体験を提供するためにクッキーを使用しています。クッキー情報はお客様のブラウザに保存され、お客様が当ウェブサイトに再訪問された際に識別したり、当チームがお客様にとって最も興味深く役立つサイト内のセクションを把握したりするなどの役割を果たします。