Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Кто-нибудь делал синхронизацию игр на нескольких девайсах? (http://www.flasher.ru/forum/showthread.php?t=212337)

mikhailk 20.01.2016 14:40

Кто-нибудь делал синхронизацию игр на нескольких девайсах?
 
Вся особенность в том, что заказчик хочет оффлайн-режим.

Допустим, пользователь открыл приложение на одном дейвайсе, скачал с сервера профиль: у перса 10-й уровень. Пользователь отключился от Интернета и играет себе. Доиграл перса до 15-го уровня. Бросил.

Открыл приложение на втором девайсе, скачал с сервера тот же профиль (10-й уровень перса), поиграл без отключения от Интернета, прокачал перса до 20-го уровня, после каждого получения нового уровня перса, этот новый уровень фиксировался на сервере. Закрыл игру.

Возобновил игру на первом девайсе, подключился к Интернету, получил 16-й уровень у перса, приложение лезет на сервер и происходит конфликт - оно хочет записать свои данные (16-й уровень), но там сохранка другой копии игры (20-й уровень).

Как разрулить?

ЗЫ. Применение правил вроде "записывать более старший уровень" не предлагать - там данных много больше, уровень просто для иллюстрации.

undefined 20.01.2016 14:50

мы делали так: при конфликте выскакивает диалог:
Существует более актуальный стейт.Подгрузить?/остаться при своих.

Добавлено через 3 минуты
хотя если нельзя однозначно сказать какой из профилей актуальнее, все конечно сложнее.

Добавлено через 7 минут
хотя можно в деталях описывать юзеру оба стейта с намеком, что два стейта быть не может и пусть сам решает.

mikhailk 20.01.2016 15:36

У нас описать сложно. Пользователь покупает юнитов, экипирует их, зарабатывает очки.
Но видимо придется все-таки делать так. Пусть пользователь решает какой из стейтов делать актуальным для игры.

undefined 20.01.2016 16:25

Цитата:

У нас описать сложно
можно показывать дату создания стейта+девайс, с которого он был записан.Хотя, в свете того, что андройд может быть и многооконным непонятно как оно себя поведет.

mikhailk 20.01.2016 16:35

у нас пока iOS
да, видимо дату стейта и будем показывать

mikhailk 28.01.2016 12:10

Возник чисто технический вопрос.

1. Игра сохранена с устройства-1, допустим, игровые данные версии 123, после чего игра на устройстве-1 закрыта
2. Игра открывается на устройстве-2, в нее загружаются игровые данные версии 123
3. Через некоторое время игра пытается сохраниться с устройства-2, игровые данные версии 124

Вот здесь вроде как конфликт, поскольку игровые данные версии 124 с устройства-2 перезаписывают игровые данные версии 123 с устройства-1, но для пользователя данный конфликт будет выглядеть странно, поскольку он же не играл в это время на устройстве-1. Если по уму, то конфликта и нет.

Иначе говоря, если пользователь попеременно играет в игру на двух устройствах, закрывая на одном и открывая на другом, то конфликта быть не должно, хотя по формальным правилам он как бы есть.

Кто как это разруливает?

caseyryan 28.01.2016 12:26

Что-то я никак не уловлю в чем проблема с определением актуальности. Если у тебя на локалке уровень игрока 20, а на сервере 16, то грузи с локалки на сервер, если необорот, то с сервера на локалку. Проверка даты создания - это совершенно ненадежный способ. Он может по ошибке не ту дату выставил, и данные записались.
Или вообще сделай наличие интернета обязательным условием

undefined 28.01.2016 12:31

Так и не понял в чем конфликт.Что юзер продолжает на девайсе-2 играть с того места, где он остановился на девайсе-1 и потом девайс-1 подцепляет новый стейт - так это никакой не конфликт т.к. учетка то одна.Можно конечно для каждого девайса делать форк, но тут велик шанс закопаться

Добавлено через 1 минуту
Цитата:

Что-то я никак не уловлю в чем проблема с определением актуальности. Если у тебя на локалке уровень игрока 20, а на сервере 16, то грузи с локалки на сервер, если необорот, то с сервера на локалку.
Цитата:

Применение правил вроде "записывать более старший уровень" не предлагать - там данных много больше, уровень просто для иллюстрации.
Цитата:

Он может по ошибке не ту дату выставил, и данные записались.
Кто он? юзер?Дату то сервер назначает.

mikhailk 28.01.2016 12:36

Заказчик настаивает на возможности запуска игры пользователем в оффлайне, т.е., Интернет будет недоступен.

А проблема в том, что это не линейная игра, где можно привязаться к прохождению уровня.

Для упрощения можно считать, что там несколько мини-игр, в каждой из которых можно выиграть игровую валюту и ли призы. Соответственно, на устройстве-1 пользователь поиграл в мини-игры 1 и 3 и выиграл 100 тугриков и плюшевого медведя, а на устройстве-2 пользователь поиграл в мини-игру 2 и выиграл 50 тугриков и зайца.

Понятное дело, постоянный доступ к Интернету решил бы все проблемы вообще, но Заказчик стоит насмерть, как пуговица.

undefined 28.01.2016 12:44

А ну да, забыл по инет.Можешь в своей предыдущий пример добавить информацию где у юзера был инет, а где его нет?


Часовой пояс GMT +4, время: 12:40.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.