Game Programming Patterns / Паттерны программирования в играх: 1.4. Prototype

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Это выглядит примерно так:

GromHoll 11.10.14 в 18:32

0

Давайте подытожим:

Deo 25.08.14 в 15:02

0

Что бы создать объекты используется оператор "new", который вызывает объект, представляющий тип - функцию-конструктор.

GromHoll 11.10.14 в 18:35

0

Состояние хранится в самом экземпляре.

Deo 25.08.14 в 22:02

0

Поведение, проходит через уровень абстракции - делегирование прототипу, и хранится в отдельном объекте, представляющему набор методов, общих для всех объектов определенного типа.

Deo 25.08.14 в 22:08

0

Называйте меня психом, но это звучит почти как мое описание классов, данное ранее.

Deo 25.08.14 в 22:10

0

Можно писать код в стиле прототипирования в JavaScript (без клонирования),

Deo 25.08.14 в 22:12

0

но синтаксис и идиомы языка поощряют подход, основанный на классах.

Deo 25.08.14 в 22:12

0

Лично я считаю, что это хорошо.

Deo 25.08.14 в 22:13

0

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

Deo 25.08.14 в 22:17

0

Прототипы для Моделирования Данных

GromHoll 11.10.14 в 18:37

0

Ладно, я тут говорил о том, почему мне не нравятся прототипы, поэтому эта глава навевала депрессию.

Deo 25.08.14 в 22:20

0

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

Deo 25.08.14 в 22:22

0

Если Вы сравните объём занимаемой памяти в игре ответственный за код и за данные, то заметите, что последний стабильно растёт с самого зарождения программирования.

GromHoll 11.10.14 в 18:44

0

На заре игростроения, игры, чтобы уместиться на одну-две дискеты или картриджа процедурно генерировалось почти все.

Deo 26.08.14 в 11:40

0

Сегодня в большинстве игр, код - это всего лишь "движок", исполняющий игру, которая полностью определяется данными.

Deo 26.08.14 в 11:42

0

Это здорово, но запихивание кучи контента в файлы данных не решит волшебным образом организационные задачи в крупном проекте.

Deo 26.08.14 в 15:26

0

Вообще-то, даже усложнит.

Deo 26.08.14 в 15:26

0

Языки программирования используют по причине того, что в них есть инструменты для управления сложностью.

Deo 26.08.14 в 15:28

0

Вместо копирования-вставки участка кода в десяти местах, мы перемещаем его в функцию, которую сможем вызывать по имени.

Deo 26.08.14 в 15:37

0

Вместо копирования метода в кучу классов, мы поместим его в отдельный класс и отнаследуемся от него или используем его как "mix in".

GromHoll 11.10.14 в 18:46

0
+1

Когда объём данных в вашей игре достигает значительного размера, вы действительно захотите объединить некоторый функционал.

GromHoll 11.10.14 в 18:48

0

Моделирование Данных глубокая тема, так что я не хочу подробно обсуждать её, но я хочу донести одну идею - использование прототипов и делегирования позволяет повторно использовать данные.

GromHoll 11.10.14 в 18:50

0

Давайте поговорит о определении данных в бесстыдном плагиате Gauntlet, упомянутом ранее.

GromHoll 11.10.14 в 18:55

0

Игровые дизайнеры нуждаются в особых атрибутах для монстров и предметов в некоторых файлах.

GromHoll 11.10.14 в 18:56

0

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

GromHoll 11.10.14 в 19:01

0

Пожалуйста, не судите меня.

GromHoll 11.10.14 в 19:02

0

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

GromHoll 11.10.14 в 19:07

0

Мы так часто изобретали этот подход, что Steve Yegge назвал его "Универсальным шаблоном проектирования".

GromHoll 11.10.14 в 19:10

0
+1

Например, гоблин в игре будет представлен как-то так:

GromHoll 11.10.14 в 19:10

0

{

GromHoll 11.10.14 в 19:10

0

"name": "goblin grunt",

GromHoll 11.10.14 в 19:11

0

"minHealth": 20,

GromHoll 11.10.14 в 19:11

0

"maxHealth": 30,

GromHoll 11.10.14 в 19:11

0

"resists": ["cold", "poison"],

GromHoll 11.10.14 в 19:11

0

"weaknesses": ["fire", "light"]

GromHoll 11.10.14 в 19:11

0

}

GromHoll 11.10.14 в 19:11

0

Это крайне просто, и даже дизайнер, питающий отвращение к любому тексту сможет справиться с этим.

GromHoll 11.10.14 в 19:13

0

А таким образом вы сможете добавить несколько ветвей в Великое Семейное Древо Гоблинов:

GromHoll 11.10.14 в 19:14

0

{

GromHoll 11.10.14 в 19:15

0

"name": "goblin wizard",

GromHoll 11.10.14 в 19:15

0

"minHealth": 20,

GromHoll 11.10.14 в 19:16

0

"maxHealth": 30,

GromHoll 11.10.14 в 19:16

0

"resists": ["cold", "poison"],

GromHoll 11.10.14 в 19:16

0

"weaknesses": ["fire", "light"],

GromHoll 11.10.14 в 19:16

0

"spells": ["fire ball", "lightning bolt"]

GromHoll 11.10.14 в 19:16

0

}

GromHoll 11.10.14 в 19:16

0

{

GromHoll 11.10.14 в 19:16

0

"name": "goblin archer",

GromHoll 11.10.14 в 19:16

0

"minHealth": 20,

GromHoll 11.10.14 в 19:16

0
Минутку...

← Предыдущая страница

Следующая страница →