Данные для создания объектов
19.07.2007 Антон ВолковИгровой мир построен на объектой модели. Flash-клиент по запросу сервера создаёт игровые объекты. При создании объекта необходимо дать набор необходимых данных. Например, для 3D-тумбочки нужен список точек и граней, её описывающих. При этом механизм передачи данных должен быть быстр, ёмок и удобен для кодеров. Помимо этого должна быть полная синхронизации имён параметров между сервером и клиентом, дабы не вносить путаницу.
Ранее сервером генерировались интерфейсы для обязательного наличия сеттеров и геттеров на каждый параметр, и, соответственно, каждый Flash-класс должен был их реализовывать. Это всё превращалось в километровую портянку set/get. Помимо этого в памяти оседали совершенно уже не нужные данные.
Сегодня реализовали новый подход передачи данных для конструкторов объектов на клиенте.
Сервер генерирует для каждой модели поведения (о моделях расскажем отдельно) не только интерфейс для реализации, но и специальный класс данных, где все свойства указываются публично. Загрузчик объектов наполняет эти классы данными при загрузке и отдает для инициализации объектам.
Например, есть объект, имеющий 3D-координаты.
Сервер сгенерирует примерно такой класс:
public class Coords3DParams { public var x:Number; public var y:Number; public var z:Number; ... }
При получении данных x, y, z будут заполнены значениями и этот экземпляр данных будет передан объекту для дальнейшей инициализации.
Плюс системы в полной прозрачности, клиент-серверной синхронности, поддержки auto-complete, проверки типов и т.п.
Красота!
Кстати, на базе данных одной 3D-тумбочки можно легко создавать аналогичные тумбочки не загружая данные повторно.
