Фреймворк Dependency Injection, подходящий для игр as3 и обычных мультимедийных сайтов - PullRequest
2 голосов
/ 30 ноября 2009

Проведение небольшого исследования по структурам внедрения зависимостей для AS3, чтобы сохранить слабую связь классов и повысить возможности повторного использования кода. Я пристально смотрю на RobotLegs. Я еще много чего не понимаю в этой среде, но она кажется идеальной для наших обычных мультимедийных приложений, но кто-нибудь использовал эту среду для игр AS3? если это так, это хороший фреймворк для игр или я должен искать другой фреймворк? Я слышал, что шаблон MVC не идеален для игрового дизайна, но хотел бы, чтобы это было прямо сказано:)

Мне бы очень хотелось услышать от любого, кто использовал фреймворк для зависимостей для игр, как это сработало для них!

Ура, Anton

Ответы [ 3 ]

2 голосов
/ 23 декабря 2009

Я использовал RobotLegs для игры, которая требовала интеграции с несколькими различными бэкэнд-сервисами. Один сервис предоставил мне многопользовательскую зону лобби, позволяющую игрокам соревноваться друг с другом, один отвечал за игру лицом к лицу после вызова, а один позволял игрокам получать доступ к информации из своих учетных записей социальных сетей.

С самого начала я планировал архитектуру игры так, как если бы я создавал многофункциональное интернет-приложение. Сама игра была реализацией популярной пошаговой настольной игры. Размышления о том, как запустить локальную игру против сетевой игры, определенно помогли мне не сбиться с рамочного подхода MVC к разработке игр. Было много кода, который можно было использовать повторно, и разница между интерпретацией щелчка мышью локального игрока и получением сообщения по сети, указывающего, что удаленный игрок сделал нечто подобное, помогла мне понять, какую логику просто невозможно связать на вид вообще. Я смог очень плавно использовать модели, команды и посредники, и, в конце концов, он сделал код игры более понятным и понятным, когда я доставил его своему клиенту.

Я думаю, что в большинстве игр будет базовая модель, которая отслеживает «доску», будь то фигуры в сетке или вражеские корабли и астероиды в космосе. Как только вы представите модель как отдельную сущность от представления, вам будет проще представить, как взаимодействие игрока через мышь и клавиатуру может запускать команды контроллера для внесения изменений в модель и уведомления представления об этих изменениях. Для некоторых простых игр это может оказаться гораздо более трудоемким. Для других, например для тех, где требуется длительное обслуживание или несколько методов ввода, это может сэкономить некоторые головные боли.

Давайте на секунду подумаем о различных взглядах в игре. Представления могут включать в себя титульный экран, экран настроек / опций, многопользовательское лобби, экран рекордов / таблицы лидеров и саму основную игру (которая может состоять из множества небольших просмотров!). Многие из этих представлений могут иметь модели, такие как список рекордов, различные настройки (которые должны быть общими для экрана опций и видов игры), список игроков, ожидающих игру, и текущее состояние игры, и т.д. Кстати, нужен ли способ сохранить игру, чтобы игрок мог перезапустить с того места, где он остановился? Это проще сделать, когда данные находятся в модели и не привязаны непосредственно к представлению.

Я думаю, что слишком многие разработчики Flash смотрят на игры как на совершенно разных зверей из богатых интернет-приложений. Среда MVC может быть подходящей для игры, особенно для многопользовательской игры и для игр, которые вы собираетесь использовать в течение более длительного периода времени для добавления нового контента и функций. Самая большая проблема состоит в том, чтобы заставить себя вспомнить тот факт, что милые, маленькие пушистые зверюшки, бегущие по экрану, - это просто визуализация данных, которые могут легко отображаться по-другому с помощью DataGrid или диаграммы ... хотя это может быть не так весело играть с ними таким образом!

1 голос
/ 04 декабря 2009

RobotLegs совершенно новый, поэтому вам будет сложно найти много людей, которые использовали его в производстве. Они наконец перешли от релиз-кандидатов к первой стабильной версии на прошлой неделе. Тем не менее, он был создан целой группой чрезвычайно уважаемых программистов, и если ваш проект рассчитан на среднесрочную и долгосрочную перспективу, вы увидите, что внедрение RobotLegs взорвется в течение всего срока его существования. Это будет то, что используют все классные дети! :)

(У меня нет никакого интереса, кроме случайного общения с некоторыми авторами через Twitter и через блогосферу).

НТН

0 голосов
/ 30 ноября 2009

AS3 на данный момент не мое дело, но игровые фреймворки есть;) Итак, да и нет, паттерн MVC не ваш первый выбор, потому что вы не создаете столько представлений, контроллеров и моделей.

У вас есть что-то более похожее на интерфейс, некоторый общий «движок», обрабатывающий игровую механику, и несколько таблиц базы данных.

В настоящее время я использую некоторые аспекты MVC, но не полный шаблон - «только преимущества».

EDIT: Вы не можете «сказать, что:» MVC не предназначен для использования внутри игры (движка), потому что шаблон MVC описывает только логику, а не что-то заранее определенное, например «код всегда должен содержать $ x и начать с include ($ y) ". Это просто шаблон проектирования, который напрямую не влияет на качество кода, а скорее на прогресс и то, как вы продвигаетесь в разработке игры.

...