- PVSM.RU - https://www.pvsm.ru -
В данной статье мы разберём, как развернуть свой проект на . Примером послужит конструктор игр, над которым я работаю.

Вступление [2]
Аренда сервера [3]
Сборка проекта [5]
Заключение [8]
Будучи большим любителем Guild Wars 2, однажды я написал прототип [9] с минимальной реализацией похожей системы боя. Мне хотелось, чтобы можно было самим создавать и настраивать бои. Недавно я добавил к прототипу редактор данных игры, веб-клиент и сервер для мультиплеера. После этого я
В процессе работы с сервером я обратил внимание, что этот опыт подошёл бы и для других проектов. Поэтому представляю вашему вниманию данную статью. После прочтения у вас будет готовая инструкция для запуска своего проекта на удалённом сервере.
В рамках данной статьи самого дешёвого будет достаточно. Я взял сервер у RUVDS здесь [10].

Нажимаем заказать, выбираем дата-центр. Для отладки высокого пинга я взял себе подальше, во Владивостоке. Но для игроков чем меньше пинг, тем лучше, поэтому выбирайте дата-центр поближе к себе или к потенциальным игрокам.
В Шаблоне сервера выбираем Установить чистую ОС и Ubuntu, дальше добавляем свой SSH-ключ, чтобы заходить без пароля.

После оплаты нужно немного подождать, пока сервер будет создан. Далее смотрим IP в разделе Мои серверы и заходим:
ssh user@ip
Если возникли вопросы по подключению или настройке сервера, ответы на них, а также другие полезные статьи можно посмотреть здесь [11]
Клиент, сервер и редактор написаны на Rust, поэтому нам понадобится компилятор. Инструкции по установке можно посмотреть на официальном сайте [12]. Рекомендуется устанавливать через rustup. После установки компилятора нам понадобится добавить цель компиляции для браузерного клиента:
rustup target add wasm32-unknown-unknown
А для Windows и macOS ещё нужно установить цель для кросс-компиляции сервера:
rustup target add x86_64-unknown-linux-gnu
Кроме этого, нужно установить утилиту wasm-bindgen, она также понадобится для сборки браузерного клиента:
cargo install wasm-bindgen-cli --version 0.2.100
Теперь, когда у нас есть сервер, можно перейти непосредственно к проекту. Клонируем репозиторий и переходим в нужную ревизию:
git clone https://github.com/ibaryshnikov/game-design.git
git checkout ba24eb3
Нас интересуют папки server и client-web. Сначала соберём клиент:
cd client-web
./build.sh
Так мы скомпилируем клиент в WebAssembly. Другие файлы клиента, такие как index.html, можно найти в папке dist. После этого можно запускать сервер:
cd ../server
cargo run
Когда сервер скомпилируется и запустится, открываем браузер и переходим на http://localhost:8080/game — должен открыться клиент игры. Открываем вторую вкладку, и уже можно потестировать мультиплеер. Управление: wasd — движение, shift — рывок, space — атака.

Когда у нас есть игра и сервер, осталось загрузить файлы игры и запустить её на удалённом сервере. Для начала заходим на сервер и создаём нужные папки:
ssh user@ip
mkdir /game
cd /game
mkdir client-web bin
Обратите внимание, что выше клиент и сервер компилировались в режиме для отладки. Поэтому нам нужно собрать клиент и сервер ещё раз, уже с включёнными оптимизациями. Компилируем клиент и загружаем его на удалённый сервер:
cd client-web
./release_build.sh
scp -r dist user@ip:/game
Компилируем и загружаем сервер, а также файл конфигурации:
cd ../server
cargo build --release
scp target/release/server user@ip:/game
scp config.toml user@ip:/game
Для Windows / macOS команда будет немного другой из-за кросс-компиляции:
cargo build --release --target x86_64-unknown-linux-gnu
scp target/x86_64-unknown-linux-gnu/release/server user@ip:/game
И нам ещё потребуются файлы самой игры с данными об атаках, противниках, уровнях и так далее. Для этого переходим в корень репозитория game-design и выполняем:
scp -r data user@ip:/game
После этого возвращаемся на удалённый сервер и раскладываем файлы по папкам:
cd /game
mv dist client-web/
mv server config.toml bin/
Дальше изменяем порт сервера в файле конфигурации на 80. Чтобы проверить, что порт задан верно, делаем cat bin/config.toml, должно вывести port = 80. И, наконец, можно запустить игру:
cd bin
./server
Переходим в браузере на http://ip_сервера/game. Если страница с игрой успешно открылась — поздравляю, теперь у вас свой проект! Можно взять ссылку и поделиться с друзьями. Остался один небольшой момент с сервером: при закрытии ssh соединения сервер игры тоже автоматически остановится. Чтобы он продолжал работать и после закрытия SSH-сессии, можно воспользоваться утилитой nohup:
nohup ./server > /dev/null 2>&1 &
И делаем ps ax | grep server чтобы убедиться, что процесс успешно запущен. После этого можно закрывать консоль, и сервер продолжит работать.
В первую очередь это хобби-проект, чтобы можно было создавать бои и играть с друзьями. Но я хочу, чтобы и другие любители игр подобного жанра могли экспериментировать с механиками боёв. Поэтому я открыл код под лицензией MIT. В данный момент реализован только самый минимум. И несмотря на то, что в редакторе можно создать несколько уровней, сервер запустит только самый первый. Но я планирую развивать проект по мере возможностей и наличия свободного времени. В планах добавить редактор карт для уровней, запуск всех выбранных уровней и возможность установки порталов для перехода между уровнями. Когда это будет реализовано, мы получим уже настоящую ММО. Также я работаю над мобильным клиентом на основе этого примера [13]. Но главным направлением является редактор способностей и противников, чтобы можно было создавать самые сложные бои с самыми интересными механиками.
Шаги, описанные в статье, подойдут для любого похожего сервера, написанного на Rust, например, с использованием axum [14] или warp [15]. Следуя этим инструкциям, можно создавать свои сервисы, будь то чат, блог или игра, и запускать их на своём сервере. Рано или поздно ваши эксперименты могут перерасти в серьёзный проект. Поэтому пробуйте, и желаю успехов на этом поприще!
© 2025 ООО «МТ ФИНАНС»
Автор: wasdd
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/hosting/430285
Ссылки в тексте:
[1] хостинге: https://www.reg.ru/?rlink=reflink-717
[2] Вступление: #%D0%B2%D1%81%D1%82%D1%83%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
[3] Аренда сервера: #%D0%B0%D1%80%D0%B5%D0%BD%D0%B4%D0%B0
[4] Устанавливаем Rust: #%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC-rust
[5] Сборка проекта: #%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B0-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0
[6] Загрузка игры на сервер: #%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%B8%D0%B3%D1%80%D1%8B-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80
[7] Подробнее об игре: #%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%B5%D0%B5-%D0%BE%D0%B1-%D0%B8%D0%B3%D1%80%D0%B5
[8] Заключение: #%D0%B7%D0%B0%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5
[9] прототип: https://github.com/ibaryshnikov/game-design
[10] здесь: https://ruvds.com/ru/vps_start/
[11] здесь : https://ruvds.com/ru/help/1-for-beginners/
[12] официальном сайте: https://www.rust-lang.org/tools/install
[13] примера: https://github.com/ibaryshnikov/android-iced-example
[14] axum: https://github.com/tokio-rs/axum
[15] warp: https://github.com/seanmonstar/warp
[16] Источник: https://habr.com/ru/companies/ruvds/articles/935014/?utm_source=habrahabr&utm_medium=rss&utm_campaign=935014
Нажмите здесь для печати.