Кодирование игрового лобби в ASP.NET
У меня есть многопользовательская онлайн-игра, в которой используется плагин для встраивания себя в веб-страницу, и я пытаюсь понять, как создать для нее веб-лобби, не обращаясь к Flash.
Идея состоит в том, что вошедшие в систему игроки выбирают тип игры на странице и автоматически переносятся в открытое лобби, в котором могут принять участие до x игроков. Лобби - это веб-страница, где пользователь может выбрать свой скин и обновления. Как только x-й игрок присоединяется, лобби должно начать обратный отсчет, который после успешного завершения перенаправляет всех пользователей на другую страницу, которая загружает встроенную игру и объединяет этих пользователей на одном сервере.
Если пользователь выходит из лобби / страницы до окончания таймера, обратный отсчет должен прекратиться, и лобби должно ждать, пока комната снова не заполнится. Я не уверен, как сделать эту часть, так как кажется, что мне нужен какой-нибудь объект таймера на стороне сервера, который знает, когда игрок уходит. Я смотрю на использование WebSync для связи с каждым пользователем на странице лобби относительно того, сколько игроков в данный момент находятся в лобби, и я предполагаю, что я также могу использовать это для отправки команды для загрузки пользователей на новую страницу после успешный таймер обратного отсчета. Я также представляю, что могу использовать WebSync или что-то еще, чтобы мой сервер знал, когда кто-то покидает лобби, чтобы остановить обратный отсчет.
Как мне создать этот таймер на стороне сервера и как с ним взаимодействовать? Я думаю об использовании Quartz.Net для доступа к планировщику или что-то, но я еще не уверен.
Есть идеи?
1 ответ
У вас есть возможность использовать WebSockets? Вы сможете (более или менее мгновенно) наблюдать за изменением состояния и обновлять как клиента, так и сервер после событий.
Вы можете отправить часть данных с сервера в заранее определенное время и запустить javascript на клиенте, чтобы выкинуть пользователя на новую страницу / сделать что-нибудь, когда закончится таймер (или игрок покидает или присоединяется к игре).
(Plug: мой друг и я написали библиотеку C#, с работающим примером живого чата, найденным здесь: https://github.com/Olivine-Labs/Alchemy-Websockets)