cubicjs/index.html
2024-12-16 00:36:55 +03:00

146 lines
No EOL
6.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>cubic</title>
<link rel="stylesheet" href="/css/style.css">
<link rel="apple-touch-icon" sizes="180x180" href="/icon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/icon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/icon/favicon-16x16.png">
<link rel="manifest" href="/icon/site.webmanifest">
<script>
if (!new URLSearchParams(location.search).has("PLEASE_HTTPS")) {
if (location.protocol !== 'http:') {
location.replace(`http:${location.href.substring(location.protocol.length)}`);
}
}
</script>
<style>
pre {
font-family: 'Fira Code', 'Times New Roman', Times, serif;
font-size: 15px;
border-radius: 10px;
padding: 15px;
background: #333;
}
</style>
</head>
<body oncontextmenu="return false;">
<div class="container">
<h1>Cubic</h1>
<p>игра кубик переделанная на js</p>
<div class="margin-25"></div>
<input type="text" id="server-ip" placeholder="айпи серрве"><br>
<input type="text" id="server-nick" placeholder="ник игроаа"><br>
<span id="server-error" style="color: red;margin: 5px 0;display: inline-block;"></span><br>
<button id="connect-server">поддключт к серваа</button><br>
<div class="margin-25"></div>
<canvas width="640" height="480" id="game"></canvas>
<div class="margin-25"></div>
<h3>список серверов:</h3>
<ul>
<li>meex.lol</li>
<li>других пока нет</li>
</ul>
<div class="margin-25"></div>
<h3>инструкция по игре:</h3>
<pre>
ходить через кнопки A и D
прыгать кнопкой Space
выбрать блок цифрами
поставить блок через ПКМ только перед этим выберите
ломать блоки через ЛКМ
меню отладки на F3
ресетнуться на кнопку R
открыть чат кнопка T
</pre>
<div class="margin-25"></div>
<h3>протокол сервачный:</h3>
<pre>
работает через вебсокеты
дефолтный порт 8000
булевые значения пишутся как 0 и 1
в нике не должны быть пробелы
установка - добавление / изменение
формат пакетов:
первый символ - тип пакета
остальное - данные пакета, параметры через \n (перенос строки)
пример пакета отправки мира:
"WB10,0,1,normal,#fff\nP1name,0,1,0,0,#d00"
🠅└─┬───────────────┘ └┬────────────────┘
тип параметр (блок) параметр (игрок)
список пакетов:
{данные} - типа это какието данные так обозначаю, скобки не надо
[C] - айди пакета
клиент отправляет:
заход игрока [J]: {ник_игрока}
прыжок выкл (controls_jump = false) [C]: "J", "0"
прыжок вкл (controls_jump = true) [C]: "J", "1"
идти выкл (controls_x = 0) [C]: "W", "0"
идти левее (controls_x = -1) [C]: "W", "1"
идти правее (controls_x = 1) [C]: "W", "2"
установить блок [P]: {x}, {y}, {тип}
сломать блок [D]: {x}, {y}
нажатие кнопки (список кнопок ниже) [K]: {кнопка}, {нажата ли}
отправить сообщение [M]: {сообщение}
корректировка движения [R]: {рандомное айди}, {x}, {y}
сервер отправляет:
кикнуть игрока с ошибкой [K]: {ошибка}
установить цвета игроку [C]: {цвет}
установить ник игрока [N]: {ник}
установить позицию игрока [P]: {x}, {y}
установить velocity игрока [V]: {x}, {y}
установить walk speed игрока [S]: "W", {скорость}
установить jump speed игрока [S]: "J", {скорость}
установить gravity speed игрока [S]: "G", {скорость}
отправить мир [W]: {изм. мира}, {изм. мира}, ...
отправить все типы блоков: [B]: {тип_1}, ..., {тип_9}
отправить сообщение [M]: {сообщение}, {сообщение}, ...
корректировка движения [R]: {рандомное айди}, {время}, {vel_x}, {vel_y}
список кнопок которые может отправить игрок через отдельный пакет:
["KeyR", "KeyW", "KeyE", "KeyQ", "KeyS", "KeyZ", "KeyX", "KeyC"
"Numpad1", "Numpad2", "Numpad3", "Numpad4", "Numpad5",
"Numpad6", "Numpad7", "Numpad8", "Numpad9", "Numpad0",
"ShiftLeft", "ControlLeft", "Enter", "F1", "F2"]
формат изменения мира:
установка блока: "B1{x},{y},{collides},{type},{color}"
установка игрока: "P1{name},{x},{y},{vel_x},{vel_y},{color}"
удаление блока: "B0{x},{y}"
удаление игрока: "P0{name}"
</pre>
<a href="server.py">готовая реализация сервера на Python</a>
</div>
<script src="script.js"></script>
</body>
</html>