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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Jan 2012
Сообщений: 836
По умолчанию Сохранение координат нескольких объектов

Всем привет. При разработке игры, возник один вопрос. В ходе игры создаются объекты, которые двигаются в направлении друг к другу, соответственно меняются их координаты. Таких объектов может быть создано в клиенте от 1-50 и десятая часть может быть задействована в клиенте. То есть на сцене таких 10 объектов, у которых меняются координаты. Суть вопроса в том, что мне надо как-то сохранять все координаты объектов в базе данных mysql, на тот случай, если пользователь покинул страницу или у него отключился интернет, но при этом, чтобы в последующем заходе в игру, сохранилось всё так, как было до его отключения. Подскажите, как можно осуществить данное. Не создавать же поля в бд для каждого объекта и сохранять туда координаты. Какие есть решения вообще в такой ситуации?

Старый 19.01.2015, 03:59
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
БД тут как бы и не причем, достаточно пхп обработчика и записи в файл. Причем записывать придется постоянно, некий квик-сейв делать, так как при вырубании интренета или при закрытии браузера - ничего не поделаешь, то есть не сможешь пихнуть эти данные, поэтому придется постоянно спамить их, может как варинат через сокет. хз
__________________
Марк Tween

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

Регистрация: Apr 2010
Сообщений: 137
Цитата:
Сообщение от Godwarlock Посмотреть сообщение
Всем привет. При разработке игры, возник один вопрос. В ходе игры создаются объекты, которые двигаются в направлении друг к другу, соответственно меняются их координаты. Таких объектов может быть создано в клиенте от 1-50 и десятая часть может быть задействована в клиенте. То есть на сцене таких 10 объектов, у которых меняются координаты. Суть вопроса в том, что мне надо как-то сохранять все координаты объектов в базе данных mysql, на тот случай, если пользователь покинул страницу или у него отключился интернет, но при этом, чтобы в последующем заходе в игру, сохранилось всё так, как было до его отключения. Подскажите, как можно осуществить данное. Не создавать же поля в бд для каждого объекта и сохранять туда координаты. Какие есть решения вообще в такой ситуации?
Можно сделать как нибудь вот так, но в правильности данного метода я не уверен). Делаете таблицу в БД, например, saved_games, в которой будут все сохраненные (не законченные) игры. В таблице будет поле uniq (автоинкремент как всегда), id (идентификатор игрока, который играет) и data (данные об объектах, тип varchar на символов эдак 1000, но это Вам виднее на сколько). В игре каждую минуту (смотря какая игра, опять таки Вам виднее, какой интервал выбрать) отправлять в БД запрос на сохранение состояния игры. Как что отправить я так понимаю Вы знаете, а именно интересует в каком виде отправить данные, так вот пусть будет переменная типа String и выглядит, например, вот так: "0,100,200;1,110,220". Здесь точка с запятой разделяет Ваши объекты, а запятая разделяет данные для каждого объекта. Ну и понятно эту строку пихаете в поле data. Вот так сохраняете в течении игры, и если игра вылетит, то при следующем входе проверяйте, есть ли в таблице saved_games запись с id того игрока, который входит, и если запись есть, значит он не доиграл, и нужно взять эти данные, и по ним нарисовать уровень (разбить строку по ";", а потом по "," каждый элемент массива после разбиения). Если такой записи нет, значит создаешь новую игру. А если игрок доиграл свою игру, то в конце удаляешь запись из этой таблицы с id этого игрока.
P.S. Строка "0,100,200;1,110,220" это только пример, куда более удобнее было бы наверное использовать JSON, если у объекта много свойств, и хочется общаться к ним не как к [0], [1], а как к ['x'], ['rotation'].

Старый 19.01.2015, 09:49
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 4  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
на тот случай, если пользователь покинул страницу или у него отключился интернет, но при этом, чтобы в последующем заходе в игру, сохранилось всё так, как было до его отключения
зачем для этого сервер?
для этого есть SharedObject

Цитата:
БД тут как бы и не причем, достаточно пхп обработчика и записи в файл.
и будет у него бд в виде файла.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
зачем для этого сервер?
для этого есть SharedObject
Да. От себя добавлю. На тот случай, чтобы у игрока все сохранилось в случае крэша браузера, можно каждое действие писать в SharedObject и время от времени синхронизировать его с базой данных. Или же выдавать игроку кнопку "сохранить", чтобы он сам выбирал, когда стоит произвести сохранение. Каким именно образом все сохранять, зависит от типа данных. Если там просто координаты, то можно, как уже говорили выше, просто строку делить по запятым и точкам с запятой, к примеру. Если что-то большее, то в виде JSON строк

Старый 19.01.2015, 17:46
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 6  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Спасибо всем. Более менее понял суть, а в чем собственно разница использование json или xml?

Старый 19.01.2015, 17:50
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 7  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
флеш и то и то поддерживает нативно, выбирай что больше нравится

Старый 19.01.2015, 18:28
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 8  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
json еще не юзал, но вот к xml уже привык более мене, на нем и останусь пока

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
JSON проще формировать и проще "читать". Да и объем данных у JSON меньше

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

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

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


 


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


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