#c# #unity3d #chess
Вопрос:
Я ищу совет о том, как реализовать онлайн-проверку шахматных ходов с помощью шахматного движка winboard. Я создаю мобильную боевую шахматную игру в Unity 2020.3. Прямо сейчас у меня есть возможные ходы для каждого игрока, права на замок, статус проверки и т. Д., Создаваемые шахматным движком C# с открытым исходным кодом. Я выбрал этот движок, потому что он написан на C#, и код может быть непосредственно включен в мой проект Unity. Я успешно написал свой собственный код, который соединяет этот шахматный движок с 3D-игрой в шахматы.
Как работает игра (предварительный просмотр видео):
- Фигура выбирается игроком, щелкающим по ней мышью или постукивающим по экрану.
- Возможные ходы для текущей доски рассчитываются шахматным движком.
- Я использую индексы возможного перемещения, чтобы показать возможные основные моменты перемещения.
- Когда игрок делает один из этих возможных ходов, ход применяется к шахматному движку.
- Наступает очередь другого игрока.
У меня есть некоторый пользовательский код для запуска анимации игрока, основанный на типе движения (например, анимация атаки запускается, когда часть захвачена). Я также показываю экраны, которые показывают, когда пришло время для продвижения, игрок находится под контролем или игра закончена.
Я хотел бы как — то упростить процесс расчета возможных ходов и применения ходов, которые должны выполняться на сервере. Моя цель-защитить игроков от отправки незаконных ходов на доску и нарушения игры.
Как бы вы порекомендовали мне подойти к этой проблеме? Это последнее, что мне нужно, чтобы превратить эту игру в приятный онлайн-опыт. Мне просто не хватает решающего навыка понимания того, как сделать эту игру онлайн.
Комментарии:
1. Так почему же вы не можете также использовать этот шахматный движок с открытым исходным кодом на стороне сервера?
2. @Dijkgraaf, если это так просто, я бы с удовольствием сделал именно это. Не могли бы вы объяснить шаги, необходимые для того, чтобы сервер шахматного движка стал сторонним? Я знаю, что это, вероятно, исправительный вопрос для тех, кто разбирается в серверах, но я понятия не имею, с чего начать. Если бы вы могли дать мне общее представление, я бы изучил технологию, необходимую для создания шахматного движка на стороне сервера. Спасибо за уделенное время!
3. К сожалению, ваш вопрос слишком широк. Вероятно, вам нужно взглянуть на веб-сервисы, размещенные либо на традиционном веб-сервере, либо на облачных сервисах. Как вы в настоящее время отправляете ходы от одного игрока к другому? Если у вас это уже есть, то другим вариантом было бы, чтобы приложение для других игроков отклоняло любые незаконные ходы.
Ответ №1:
На сервере у вас будет запущена отдельная версия шахматной игры.
Игрок(/клиент) отправит ход на сервер (таким образом, уникальный идентификатор фигуры и целевой квадрат, который игрок хочет переместить).
На стороне сервера вам нужно будет проверить, действительно ли этот шаг возможен. Это может быть сделано путем получения всех возможных ходов из этой фигуры и проверки intendedChessPosition
того, можно ли найти в списке possibleChessPositions
то, что было рассчитано на стороне сервера. Только тогда вы действительно переместите часть на серверную сторону.
Все игроки/клиенты будут общаться, используя сервер в качестве посредника и органа власти.
Точная реализация может измениться в зависимости от API используемого вами шахматного движка, но это основная идея.