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

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

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

Регистрация: Apr 2009
Сообщений: 104
По умолчанию Игры для соц сетей - синхронизация с сервером

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

Старый 06.10.2010, 02:26
mr.Ali вне форума Посмотреть профиль Отправить личное сообщение для mr.Ali Найти все сообщения от mr.Ali
  № 2  
Ответить с цитированием
mr.Ali
 
Аватар для mr.Ali

Регистрация: Oct 2008
Сообщений: 14
Конечно передача ВСЕХ объектов - это не лучшее решение.
Лучше всего разработать/использовать предоставляемый протокол обмена данными, т.е. передавать т.н. пакеты, пакетом в свою очередь является структура данных, в случае с 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;
		}
	}
}

Старый 06.10.2010, 13:23
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Тогда уж сериализованный в AMF или protoBuf )
Нужно передать только измененные объекты. Это достаточно накладно будет считать измененные объекты и передавать пользователю: гораздо лучше было бы работать в связке "изменилось-передали". Проще всего это сделать на сокетах.

Старый 06.10.2010, 13:44
membrilius вне форума Посмотреть профиль Отправить личное сообщение для membrilius Найти все сообщения от membrilius
  № 4  
Ответить с цитированием
membrilius
 
Аватар для membrilius

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

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

Старый 06.10.2010, 13:56
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Ну э... а если я уточку пошлю нагадить Вам в помидоры? Об этом нужно узнавать как можно скорее.

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

Регистрация: Aug 2008
Сообщений: 258
да, тогда конечно сокет ) ну или long-polling, хотя я думаю, он убьёт сервер.

Старый 23.10.2010, 18:43
xjack вне форума Посмотреть профиль Отправить личное сообщение для xjack Найти все сообщения от xjack
  № 7  
Ответить с цитированием
xjack

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

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

Регистрация: Oct 2005
Адрес: Russia, Moscow
Сообщений: 316
Отправить сообщение для Sneg с помощью ICQ
Легко,клиенту верить нельзя ни в каком случае. Клиент посылает действие которое он хочет сделать, сервер уже решает может он это сделать. В свое время поимел много проблем с тем что доверял некоторые данные клиенту. Проблемы с безопасностью начинаются, когда приложение становится популярным и туда приходят более менее серьезные пользователи

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

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

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


 


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


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