На Яндекс.играх можно найти много мультиплеерных игр. Где они все хостят сервера? На чём написаны эти сервера? Связь между клиентом и сервером там, как я понимаю, через websocket.
Линк: https://yandex.com/games/tag/multiplayer_177
Если клиент игры можно написать на c++, и далее скомпилировать в emscripten, чтобы получить веб-билд, то можно ли написать сервер на c++ и далее где-нибудь захостить? Нормально ли это? Или сервер принято делать на чём то другом в таких случаях?
Я не изучал детально.
Но по идее веб билд это то что скачивается как набор файлов, с сервера на клиент, и уже на стороне клиента воспроизводится браузером.
Т.е. сервер здесь особой роли не играет, насколько я понимаю.
А как такое захостить пусть отвечают знатоки(хотя ты бы тоже мог бы загуглить раз понимаешь как это работает)
Арендуешь сервер у провайдера и заливаешь туда все что душе угодно. Это может быть как виртуальный комп, так и отдельный комп физически, расположенный на площадке провайдера. Иногда можно и свой комп к ним притащить и там установить, когда то такое делали, но сейчас вряд ли практикуется.
Чаще всего сервер на юниксе, это выгоднее, экономишь раз в десять по производительности. Соответственно и писать надо софт для сервера.
Почему не у себя устанавливать? На площадке провайдера связь доступнее, качественнее и дешевле.
По причине дешевизны связи многие арендовали такие сервера в США, не знаю насколько это выгодно сейчас.
Управление своим компом дистанционное. Если так наконфигурил, что оно умерло с концами, есть линия поддержки, но за это деньги возьмут.
Сервером для конкретной катки может выступать один из игроков, в ней участвующих.
Но для установления первичного подключения между игроками тебе все равно понадобится какой-то полноценный сервер (с выделенным IP-адресом) на хостинге. Это недорого, т.к. на него почти не будет нагрузки.
Либо можно использовать специальные сервисы для таких подключений - например, Photon. При малом кол-ве игроков он бесплатен.
nelyubin_ev
> чтобы получить веб-билд, то можно ли написать сервер на c++ и далее где-нибудь
> захостить?
Если ты хочешь писать сервер на плюсах, тебе нужен веб сервер.
IGamedevStudio
> Я не изучал детально.
Вспомнил, что я тестировал через веб сервер на локальном компе.
Но не путай сервер с которого клиент скачивает веб билд с сервером для мультиплеера.
Тут либо свой сервер с белым IP нужен, либо можно купить "виртуальный комп". Сейчас много компаний которые предоставляют данные услуги. Думаю на попробовать лучше купить на время виртульник. А дальше если проект взлетит - переходить на свой сервер.
Сервер можно написать на любом языке программирования: C++, C#, Java, Javascript, Go и т.д. Данные передаются через сокеты, а какой протокол будет - решать тебе на оснрве потребностей. HTTP для веб сервера когда задержки в секунду не играют роли для игрового процесса. TCP/UDP и тот же websockets - когда много сообщений и нужно быстро доставить, держать соединение - для шутеров например.
Захостить можно или на своем домашнем компе, но нужна услуга "статический IP адрес", чтобы адрес не менялся постоянно иначе игроки не узнают, куда подключаться. Или арендовать в хостинге VPS (виртуалтный сервер), VDS (выделенный сервер) или у облачного провайдера - azure, aws, и т.д.
MANAB Правильно указал на протоколы. Но если делать ВЕБ игры, то вариантов совсем мало: websocket/webrtc для синхронного геймплея, либо http/s для асинхронного.
Я бы порекомендовал посмотреть в сторону Colyseus (более низкоуровневая либа) или Nakama (больше фреймворк/платформа для создания онлайн игр).
Я думал просто на node js сервак делают, в socketio. Это сложно?
Мне тоже очень интересно как это можно будет сделать.
MicroEx
> Я думал просто на node js сервак делают, в socketio. Это сложно?
Нет. JavaScript изначально заточен под всякие сетевые взаимодействия и парсинг текстовых структур данных. Так что в несколько строчек можно и сервер написать, и данные удобно гонять туда-сюда и всё это дебажить.