Я углубляюсь в RoR и планирую создать несколько сайтов. Помимо веб-сайтов, я хотел бы использовать RoR для создания простого API-интерфейса игрового сервера RESTful, который можно использовать для организации игры для двух игроков для iOS, которую я пишу. Игра основана на времени головоломки (первый игрок, решивший головоломку, выигрывает), и игроки будут общаться с игровым сервером только каждые десять секунд или пять минут, и объем данных, поступающих на сервер / с сервера, вероятно, выиграл. не более нескольких сотен байтов. Поток клиент-сервер будет выглядеть примерно так ...
- Совпадение происходит на клиентах, использующих API Game Center для создания списка из двух игроков (клиентов)
- Оба клиента регистрируются и проходят аутентификацию на игровом сервере, чтобы начать новую игру, затем игровой сервер синхронизирует запуск игры на обоих клиентах
- Оба игрока начинают разгадывать загадку, когда один из игроков заканчивает (решает загадку или выходит), клиент отправляет результаты на сервер.
- Когда оба игрока заканчивают работу, сервер сохраняет результаты в БД и отправляет результаты обоим клиентам, после чего игровой сеанс заканчивается.
Не реализовав это, похоже, это будет довольно хорошо работать с RoR. Обман, однако, является проблемой, и моя идея для решения состоит в том, чтобы использовать концепцию RoR Active Record Session для аутентификации игроков в начале игры. То есть сервер может обрабатывать запросы только тех клиентов, которые были аутентифицированы на шаге 2 выше.
- Видите ли вы какие-либо проблемы с использованием RoR для реализации такого типа пошагового игрового сервера?
- Как уже упоминалось выше, я пытаюсь предотвратить мошенничество, ограничивая проверку подлинности игрока через мое приложение для iOS. Каким образом я могу гарантировать, что мое приложение для iOS запрашивает аутентификацию?
- Если предположить, что я могу эффективно ограничить проверку подлинности игрока своим приложением для iOS, я упускаю какие-либо очевидные способы, которыми игроки все еще могут отправлять серверу ложные данные и обманывать?
Заранее большое спасибо за вашу помощь!