Отделение персонажа от карты в библиотеке RPG - PullRequest
0 голосов
/ 07 декабря 2011

Я работаю над библиотекой RPG в Perl и хочу сделать каждую часть максимально взаимозаменяемой. В настоящее время я создаю подсистему Map и перейду к подсистеме Character. Как я должен обрабатывать взаимодействия между персонажем и картой?

$character->move('left'); # Character encapsulates a Map

или что-то вроде

$runtime->moveCharacter('left'); # Runtime encapsulates both Map and Character

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

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

Я знаю, что обдумываю это и хотел бы сделать эту систему гибкой, не будучи полностью переоснащенной. Спасибо!

1 Ответ

1 голос
/ 07 декабря 2011

Первая часть:

Зависит. Невозможно с уверенностью ответить на этот вопрос, не увидев проектных документов для игр, которые вы хотите, чтобы люди могли реализовать в вашей библиотеке. Если вы хотите вдохновения, Roguelike-Utils имеет глобальный объект World, от которого зависают зависимые биты.

Вторая часть:

Сделать плитку объектом. Графический аспект - это всего лишь один атрибут. Вы знаете, что делаете это правильно, когда вы развязали его настолько, чтобы передать плитки и другие вещи различным визуализаторам, что приводит к (масштабируемой или растровой) графике, roguelike выводу терминала ANSI или даже текстовому описанию типа АДВЕНТ .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...