Войти
ПрограммированиеФорумОбщее

Как для игры сделать сервер и захостить

#0
16:51, 22 мая 2023

На Яндекс.играх можно найти много мультиплеерных игр. Где они все хостят сервера? На чём написаны эти сервера? Связь между клиентом и сервером там, как я понимаю, через websocket.

Линк: https://yandex.com/games/tag/multiplayer_177

Если клиент игры можно написать на c++, и далее скомпилировать в emscripten, чтобы получить веб-билд, то можно ли написать сервер на c++ и далее где-нибудь захостить? Нормально ли это? Или сервер принято делать на чём то другом в таких случаях?

#1
18:29, 22 мая 2023

Я не изучал детально.
Но по идее веб билд это то что скачивается как набор файлов, с сервера на клиент, и уже на стороне клиента воспроизводится браузером.
Т.е. сервер здесь особой роли не играет, насколько я понимаю.
А как такое захостить пусть отвечают знатоки(хотя ты бы тоже мог бы загуглить раз понимаешь как это работает)

#2
21:09, 22 мая 2023

Арендуешь сервер у провайдера и заливаешь туда все что душе угодно. Это может быть как виртуальный комп, так и отдельный комп физически, расположенный на площадке провайдера. Иногда можно и свой комп к ним притащить и там установить, когда то такое делали, но сейчас вряд ли практикуется.
Чаще всего сервер на юниксе, это выгоднее, экономишь раз в десять по производительности. Соответственно и писать надо софт для сервера.
Почему не у себя устанавливать? На площадке провайдера связь доступнее, качественнее и дешевле.
По причине дешевизны связи многие арендовали такие сервера в США, не знаю насколько это выгодно сейчас.
Управление своим компом дистанционное. Если так наконфигурил, что оно умерло с концами, есть линия поддержки, но за это деньги возьмут.

#3
22:15, 22 мая 2023

Сервером для конкретной катки может выступать один из игроков, в ней участвующих.

Но для установления первичного подключения между игроками тебе все равно понадобится какой-то полноценный сервер (с выделенным IP-адресом) на хостинге. Это недорого, т.к. на него почти не будет нагрузки.

Либо можно использовать специальные сервисы для таких подключений - например, Photon. При малом кол-ве игроков он бесплатен.

#4
16:03, 23 мая 2023

nelyubin_ev
> чтобы получить веб-билд, то можно ли написать сервер на c++ и далее где-нибудь
> захостить?
Если ты хочешь писать сервер на плюсах, тебе нужен веб сервер.

IGamedevStudio
> Я не изучал детально.
Вспомнил, что я тестировал через веб сервер на локальном компе.

Но не путай сервер с которого клиент скачивает веб билд с сервером для мультиплеера.

#5
8:37, 25 мая 2023

Тут либо свой сервер с белым IP нужен, либо можно купить "виртуальный комп". Сейчас много компаний которые предоставляют данные услуги. Думаю на попробовать лучше купить на время виртульник. А дальше если проект взлетит - переходить на свой сервер.

#6
16:43, 29 мая 2023

Сервер можно написать на любом языке программирования: C++, C#, Java, Javascript, Go и т.д. Данные передаются через сокеты, а какой протокол будет - решать тебе на оснрве потребностей. HTTP для веб сервера когда задержки в секунду не играют роли для игрового процесса. TCP/UDP и тот же websockets - когда много сообщений и нужно быстро доставить, держать соединение - для шутеров например.
Захостить можно или на своем домашнем компе, но нужна услуга "статический IP адрес", чтобы адрес не менялся постоянно иначе игроки не узнают, куда подключаться. Или арендовать в хостинге VPS (виртуалтный сервер), VDS (выделенный сервер) или у облачного провайдера - azure, aws, и т.д.

#7
23:17, 29 мая 2023

MANAB Правильно указал на протоколы. Но если делать ВЕБ игры, то вариантов совсем мало: websocket/webrtc для синхронного геймплея, либо http/s для асинхронного.

Я бы порекомендовал посмотреть в сторону Colyseus (более низкоуровневая либа) или Nakama (больше фреймворк/платформа для создания онлайн игр).

#8
14:03, 30 мая 2023

Я думал просто на node js сервак делают, в socketio. Это сложно?

#9
15:17, 30 мая 2023

Мне тоже очень интересно как это можно будет сделать.

#10
20:27, 30 мая 2023

MicroEx
> Я думал просто на node js сервак делают, в socketio. Это сложно?

Нет. JavaScript изначально заточен под всякие сетевые взаимодействия и парсинг текстовых структур данных. Так что в несколько строчек можно и сервер написать, и данные удобно гонять туда-сюда и всё это дебажить.

ПрограммированиеФорумОбщее