Игровая логика PvP: сервер (C++) + клиент (Quintus.js)
Сервер: Game — authoritative-тик 20 Гц через uSockets timer, движение/коллизии танков и пуль, разрушаемые кирпичные стены, respawn, победа/поражение/ничья, технический проигрыш при дисконнекте. game.ready запускает матч, когда оба игрока в pvp-комнате готовы. Клиент: заведён Quintus.js (MIT, vendored) — Tank/Bullet/Wall спрайты, рендер по снапшотам game.state, keyboard-инпут (WASD/стрелки/space), экран результата матча. Найден и исправлен use-after-free: колбэк onFinished_ синхронно удалял Game изнутри его же метода — перенесено на uWS::Loop::defer.
This commit is contained in:
+7
-2
@@ -25,13 +25,18 @@
|
||||
</header>
|
||||
|
||||
<main id="game-root">
|
||||
<!-- TODO: лобби (этап 3) и игровое поле на Quintus.js (этапы 4-5) -->
|
||||
<!-- TODO: coop-режим с AI и защитой базы — этап 5 -->
|
||||
<h2 class="prompt">./battlecity</h2>
|
||||
<div id="lobby"></div>
|
||||
<div id="battlecity-canvas-container"></div>
|
||||
<div id="battlecity-canvas-container" style="display: none"></div>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<script src="/vendor/quintus/quintus.js"></script>
|
||||
<script src="/vendor/quintus/quintus_2d.js"></script>
|
||||
<script src="/vendor/quintus/quintus_sprites.js"></script>
|
||||
<script src="/vendor/quintus/quintus_scenes.js"></script>
|
||||
<script src="/vendor/quintus/quintus_input.js"></script>
|
||||
<script type="module" src="/js/matrix-rain.js"></script>
|
||||
<script type="module" src="/js/game/main.js"></script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user