Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.01.2016, 14:40
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Кто-нибудь делал синхронизацию игр на нескольких девайсах?

Вся особенность в том, что заказчик хочет оффлайн-режим.

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

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

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

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

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

Старый 20.01.2016, 14:50
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 2  
Ответить с цитированием
undefined

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

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

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

Старый 20.01.2016, 15:36
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
У нас описать сложно. Пользователь покупает юнитов, экипирует их, зарабатывает очки.
Но видимо придется все-таки делать так. Пусть пользователь решает какой из стейтов делать актуальным для игры.

Старый 20.01.2016, 16:25
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
У нас описать сложно
можно показывать дату создания стейта+девайс, с которого он был записан.Хотя, в свете того, что андройд может быть и многооконным непонятно как оно себя поведет.

Старый 20.01.2016, 16:35
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
у нас пока iOS
да, видимо дату стейта и будем показывать

Старый 28.01.2016, 12:10
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Возник чисто технический вопрос.

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

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

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

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

Старый 28.01.2016, 12:26
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Что-то я никак не уловлю в чем проблема с определением актуальности. Если у тебя на локалке уровень игрока 20, а на сервере 16, то грузи с локалки на сервер, если необорот, то с сервера на локалку. Проверка даты создания - это совершенно ненадежный способ. Он может по ошибке не ту дату выставил, и данные записались.
Или вообще сделай наличие интернета обязательным условием

Старый 28.01.2016, 12:31
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 8  
Ответить с цитированием
undefined

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

Добавлено через 1 минуту
Цитата:
Что-то я никак не уловлю в чем проблема с определением актуальности. Если у тебя на локалке уровень игрока 20, а на сервере 16, то грузи с локалки на сервер, если необорот, то с сервера на локалку.
Цитата:
Применение правил вроде "записывать более старший уровень" не предлагать - там данных много больше, уровень просто для иллюстрации.
Цитата:
Он может по ошибке не ту дату выставил, и данные записались.
Кто он? юзер?Дату то сервер назначает.

Старый 28.01.2016, 12:36
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 9  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Заказчик настаивает на возможности запуска игры пользователем в оффлайне, т.е., Интернет будет недоступен.

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

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

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

Старый 28.01.2016, 12:44
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 10  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
А ну да, забыл по инет.Можешь в своей предыдущий пример добавить информацию где у юзера был инет, а где его нет?

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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