Как сохранить результат браузерной однопользовательской игры в БД на сервере?
Есть браузерная игра (однопользовательская, типа головоломки), которая реализована с помощью vuejs.
Как лучше всего будет отправлять результат игры (кол-во затраченных пользователем ходов) на сервер, чтобы в будущем иметь возможность вывести топ игроков, например?
Просто отправить в конце игры результат не вариант - запрос легко подделать и отправить в качестве результата любое значение.
Значит нужно какое-то взаимодействие с сервером. Пока что вижу 2 варианта:
1) на мой взгляд неэффективно, но может и работать: при нажатии кнопки "Новая игра" на сервер отправлять ajax-запрос, с помощью которого создавать в БД запись о новой игре. Затем на каждый ход игрока так же отправлять запросы к серверу и увеличить кол-во ходов в БД. Результат каждого хода рассчитывать на сервере во избежание "подделки" результатов.
2) веб-сокеты. Я с ними не работал. Подойдут ли они для такой задачи?
Просто отправить в конце игры результат не вариант - запрос легко подделать и отправить в качестве результата любое значение.
"Новая игра" на сервер отправлять ajax-запрос, с помощью которого создавать в БД запись о новой игре. Затем на каждый ход игрока так же отправлять запросы к серверу и увеличить кол-во ходов в БД
Чем эти 2 метода отличаются?))
Что мне помешает из консоли отправить сразу запрос о начале и "самый высокий результат"?
Andrew, тем что процесс игры и расчет состояния будет производится на сервере. Соответственно и результат мы получим на сервере, а не клиент нам его отправит.
Danbka, ага, аяксом получать данные для отрисовки игры?)) скинете потом ссылку.
Можете попробовать зашифровать уровни, результаты и сделать ключ который свяжет время и уровень и так проверять. Т.е. с фронта отправляете этот ключ-уровня и время(создать какую-то неочевидную зависимость), бэк проверяет валидность и уже решает что делать, записать или перезапустить(например) игру.
Для однопользовательской 1 вариант приемлем. Сокеты предпочтительны, но возможны только на системе люнекс. На Win тоже есть вариант сокетов но имеет ряд проблем, основная которой не возможность контроля демона изнутри.
По 1 варианту., это мин библиотека js на основе jquery, суть в том что если ты немного разберешься в реализации, то ты поймешь как лучше реализовать 1 вариант.