2008-11-02 4 views
3

Как хобби проект Я в настоящее время пытаюсь создать небольшую браузерную игру - и я думал, что это будет «правильная вещь», чтобы закодировать ее, используя шаблон MVC, отделяя «движок» игры от презентации. Это будет простая игра «rpg», где персонаж игрока бродит по миру, сражаясь с монстрами и собирая предметы.Какую модель следует использовать для браузера?

Моя проблема в том, что я застрял в конструкции двигателя. В текущем проекте большая часть движка доминирует в объекте «персонаж игрока» - есть такие вещи, как местоположение, монстр или элемент, но это персонаж, который выполняет большую часть действий: путешествует, атакует, покупает предметы и т. Д. Я знаете, есть, вероятно, другие способы разработки такого движка, но почему-то я не могу понять это, поэтому я прошу вас здесь дать несколько советов или советов.

О, и серверный сервер будет php + mysql, если это в любом случае имеет значение.

ответ

5

«но это символ, который делает большинство действий:»

Да, но ...

Во-первых, отделить человека-пользователя («игрок») от их характера. Персонаж не игрок.

У вас есть большое количество объектов. Места, пассивные вещи, активные вещи (монстры) и персонаж. Все они взаимодействуют друг с другом.

Вы должны полностью изолировать ответственность. Характер не доминирует, персонаж просто участвует.

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

Сбор что-то или возложение его вниз каждый подкласс Command, который перемещает вещи от персонажа к местоположению или место для символа. Игрок выдает команду; команда обновляет местоположение, элемент и символ.

Характер пассивный. Вещи в основном пассивные. Местоположения в основном пассивны. Объекты Command имеют алгоритмы для обновления состояния и ассоциации между всеми различными элементами вашей модели.

Если вы хотите провести это шаг вперед, каждый Command может быть Memento с возможностью отмены, а также способность делать. Тогда история игры - история этих Mementos.

+0

Я разделяю персонаж с игроком, главным образом потому, что я хотел разрешить несколько персонажей, - но я не думал о том, чтобы зайти так далеко , поэтому спасибо за совет. – 2008-11-11 17:47:33

0

Я немного смущен о вашем вопросе.

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

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

0

Символ является частью модели, но этот символ является абстрактным - это просто объект или структура данных на сервере. Один метод, который я использую, чтобы сохранить себя честным w.r.t. MVC имеет способ управлять моделью без графических представлений и контроллеров. Для веб-приложения вы можете управлять им через текстовые запросы GET или через XMLRPC и т. Д.

Смежные вопросы