|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2009
Сообщений: 104
|
Игры для соц сетей - синхронизация с сервером
Господа, кто делал кэзуалки для соц сетей, интересует вопрос обмена информацией с сервером. Как лучше организовать, чтобы сервер не лег под десятками или сотнями тысяч запросов пользователей, а игра наподобие фермы(где все растет и изменяется)? Например у меня сейчас каждые 30 сек тупо обновляется информация на сервере, при этом передаются все объекты пользователя. По всей видимости это это не самый лучший вариант из-за большого объема траффика. Кто что может посоветовать?
|
|
|||||
Регистрация: Oct 2008
Сообщений: 14
|
Конечно передача ВСЕХ объектов - это не лучшее решение.
Лучше всего разработать/использовать предоставляемый протокол обмена данными, т.е. передавать т.н. пакеты, пакетом в свою очередь является структура данных, в случае с Flash - это может быть объект некого класса или просто типа Object сериализованный с помощью XML или JSON. Главное тут под понятием объект воспринимать просто структуру данных с несколькими полями, например так: package com.netlib.packets { /** * Сетевой пакет */ public class Packet { //Идентификатор пакета public var iOperation:uint; //Длинна данных public var iDataLength:uint; //Данные - строка в формате JSON public var sData:String; /** * Конструктор * iId Идентификатор пакета * sData Данные в формате JSON */ public function Packet(iOperation:uint, sData:String) { this.iOperation = iOperation; this.sData = sData; this.iDataLength = sData.length; } } } |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Тогда уж сериализованный в AMF или protoBuf )
Нужно передать только измененные объекты. Это достаточно накладно будет считать измененные объекты и передавать пользователю: гораздо лучше было бы работать в связке "изменилось-передали". Проще всего это сделать на сокетах.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Aug 2008
Сообщений: 258
|
Помойму для игры типа Фермер можно обычным POST обойтись.. Передавать инфу в виде JSON и сразу. Нажал на посадить морковку - передал. Если в игра не устроена так, что серверу надо передавать инфу о действиях пользователя каждую секунду, то отличный вариант.
В Фермере почти 8 мил. чел ... Сколько там одновременно людей морковку собирает? ))) Не думаю что много. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ну э... а если я уточку пошлю нагадить Вам в помидоры? Об этом нужно узнавать как можно скорее.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Aug 2008
Сообщений: 258
|
да, тогда конечно сокет ) ну или long-polling, хотя я думаю, он убьёт сервер.
|
|
|||||
Регистрация: Apr 2009
Сообщений: 104
|
Для передачи использую AMF формат, от передачи раз в 30 секунд отказался, теперь запрос идет только когда что-то купил, переместил и т п.
В общем то готов переделать так чтобы передавалось только то что изменилось (передача всех данных -порядка 2-3 килобайт, если только то что изменилось, то в 10 раз меньше) - стоит ли овчинка выделки? Но главный вопрос даже в другом - нормально ли вообще с точки зрения безопасности если сначала изменяю на КЛИЕНТЕ и передаю изменения на сервер, при этом, например, могут передаваться деньги и уровень игрока. Легко ли будет особо умным перцам подделать запрос с нужными AMF -данными? |
|
|||||
Легко,клиенту верить нельзя ни в каком случае. Клиент посылает действие которое он хочет сделать, сервер уже решает может он это сделать. В свое время поимел много проблем с тем что доверял некоторые данные клиенту. Проблемы с безопасностью начинаются, когда приложение становится популярным и туда приходят более менее серьезные пользователи
|
Часовой пояс GMT +4, время: 23:14. |
|
« Предыдущая тема | Следующая тема » |
|
|