Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сохранение координат нескольких объектов (http://www.flasher.ru/forum/showthread.php?t=210036)

Godwarlock 19.01.2015 02:59

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

in4core 19.01.2015 03:59

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

TurboDizel 19.01.2015 04:58

Цитата:

Сообщение от Godwarlock (Сообщение 1177710)
Всем привет. При разработке игры, возник один вопрос. В ходе игры создаются объекты, которые двигаются в направлении друг к другу, соответственно меняются их координаты. Таких объектов может быть создано в клиенте от 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'].

nubideus 19.01.2015 09:49

Цитата:

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

Цитата:

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

caseyryan 19.01.2015 11:15

Цитата:

зачем для этого сервер?
для этого есть SharedObject
Да. От себя добавлю. На тот случай, чтобы у игрока все сохранилось в случае крэша браузера, можно каждое действие писать в SharedObject и время от времени синхронизировать его с базой данных. Или же выдавать игроку кнопку "сохранить", чтобы он сам выбирал, когда стоит произвести сохранение. Каким именно образом все сохранять, зависит от типа данных. Если там просто координаты, то можно, как уже говорили выше, просто строку делить по запятым и точкам с запятой, к примеру. Если что-то большее, то в виде JSON строк

Godwarlock 19.01.2015 17:46

Спасибо всем. Более менее понял суть, а в чем собственно разница использование json или xml?

nubideus 19.01.2015 17:50

флеш и то и то поддерживает нативно, выбирай что больше нравится

Godwarlock 19.01.2015 18:28

json еще не юзал, но вот к xml уже привык более мене, на нем и останусь пока

caseyryan 19.01.2015 20:53

JSON проще формировать и проще "читать". Да и объем данных у JSON меньше


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

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