Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Игры для соц сетей - синхронизация с сервером (http://www.flasher.ru/forum/showthread.php?t=145192)

xjack 01.10.2010 12:37

Игры для соц сетей - синхронизация с сервером
 
Господа, кто делал кэзуалки для соц сетей, интересует вопрос обмена информацией с сервером. Как лучше организовать, чтобы сервер не лег под десятками или сотнями тысяч запросов пользователей, а игра наподобие фермы(где все растет и изменяется)? Например у меня сейчас каждые 30 сек тупо обновляется информация на сервере, при этом передаются все объекты пользователя. По всей видимости это это не самый лучший вариант из-за большого объема траффика. Кто что может посоветовать?

mr.Ali 06.10.2010 02:26

Конечно передача ВСЕХ объектов - это не лучшее решение.
Лучше всего разработать/использовать предоставляемый протокол обмена данными, т.е. передавать т.н. пакеты, пакетом в свою очередь является структура данных, в случае с Flash - это может быть объект некого класса или просто типа Object сериализованный с помощью XML или JSON. Главное тут под понятием объект воспринимать просто структуру данных с несколькими полями, например так:
Код AS1/AS2:

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;
                }
        }
}


Psycho Tiger 06.10.2010 13:23

Тогда уж сериализованный в AMF или protoBuf )
Нужно передать только измененные объекты. Это достаточно накладно будет считать измененные объекты и передавать пользователю: гораздо лучше было бы работать в связке "изменилось-передали". Проще всего это сделать на сокетах.

membrilius 06.10.2010 13:44

Помойму для игры типа Фермер можно обычным POST обойтись.. Передавать инфу в виде JSON и сразу. Нажал на посадить морковку - передал. Если в игра не устроена так, что серверу надо передавать инфу о действиях пользователя каждую секунду, то отличный вариант.

В Фермере почти 8 мил. чел ... Сколько там одновременно людей морковку собирает? ))) Не думаю что много.

Psycho Tiger 06.10.2010 13:56

Ну э... а если я уточку пошлю нагадить Вам в помидоры? Об этом нужно узнавать как можно скорее.

membrilius 06.10.2010 14:23

да, тогда конечно сокет ) ну или long-polling, хотя я думаю, он убьёт сервер.

xjack 23.10.2010 18:43

Для передачи использую AMF формат, от передачи раз в 30 секунд отказался, теперь запрос идет только когда что-то купил, переместил и т п.
В общем то готов переделать так чтобы передавалось только то что изменилось (передача всех данных -порядка 2-3 килобайт, если только то что изменилось, то в 10 раз меньше) - стоит ли овчинка выделки? Но главный вопрос даже в другом - нормально ли вообще с точки зрения безопасности если сначала изменяю на КЛИЕНТЕ и передаю изменения на сервер, при этом, например, могут передаваться деньги и уровень игрока. Легко ли будет особо умным перцам подделать запрос с нужными AMF -данными?

Sneg 23.10.2010 18:51

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


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

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