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

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

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

Цель

BaMnup16 03.05.14 в 10:39

0
+1

Позволить классу соединить несколько доменов без завязывания доменов друг на друга.

marapper 04.05.14 в 12:32

1
+1

Мотивация

BaMnup16 03.05.14 в 10:39

0

Предположим, мы делаем платформер.

BaMnup16 03.05.14 в 10:40

0

Демография итальянских сантехников уже покрыта, так что нашим главным героем будет датский пекарь Бьёрн.

BaMnup16 03.05.14 в 10:41

0

Разумеется, у нас будет класс, в котором будет находится наш друг-кондитер, и он (класс) будет содержать всё что Бйорн делает в игре.

BaMnup16 03.05.14 в 10:43

0

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

kamillxiii 04.05.14 в 14:47

1

Блестящие игровые идеи как эта - причина, по которой я - программист, а не дизайнер.

BaMnup16 03.05.14 в 10:45

0

Игрок управляет им - управляющие команды читаются и приводятся в движение.

BaMnup16 03.05.14 в 10:49

0

И, конечно же, ему надо взаимодействовать с уровнем, так что появляется физика и контакт между объектами.

BaMnup16 03.05.14 в 10:51

0

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

BaMnup16 03.05.14 в 19:06

0

Он, вероятно, также захочет услышать звук.

BaMnup16 03.05.14 в 19:08

0

Постой на минутку; это выходит из под контроля.

BaMnup16 03.05.14 в 19:09

0

Софтверная Архитектура 101 гласит: разные домены в программе должны быть изолированы друг от друга.

BaMnup16 03.05.14 в 19:11

0

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

BaMnup16 03.05.14 в 19:13

0

Игра не имеет те же домены, что и деловое приложение, но правила работают также.

BaMnup16 03.05.14 в 19:13

0

У игры нет доменов бизнес-приложения, но правила остаются те же.

kamillxiii 04.05.14 в 14:51

1

По возможности, мы не хотим чтобы ИИ, физика, рендеринг, звуки и остальные домены знали друг о друге, но теперь они все впихнуты в один класс.

BaMnup16 03.05.14 в 19:16

0

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

BaMnup16 03.05.14 в 19:24

0

Это хорошая защита для той пары человек, кто может "приручить" его, но сущий ад для остальных.

BaMnup16 03.05.14 в 19:26

0

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

adm244 11.03.15 в 01:04

0

Вскоре класс начинает обрастать ошибками быстрее, чем набирать функционал.

adm244 11.03.15 в 01:05

0

Запутанный узел.

adm244 11.03.15 в 01:06

0
+1

Куда большей проблемой, чем банальное разрастание, является спутывание.

adm244 11.03.15 в 01:17

0

Все отдельные системы нашей игры оказались связанными в огромный клубок кода, подобно этому:

adm244 11.03.15 в 01:14

0

if (collidingWithFloor() && (getRenderState() != INVISIBLE))

adm244 11.03.15 в 00:55

0

{

adm244 11.03.15 в 00:55

0

playSound(HIT_FLOOR)

adm244 11.03.15 в 00:55

0

;

adm244 11.03.15 в 00:55

0

}

adm244 11.03.15 в 00:55

0

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

adm244 11.03.15 в 00:59

0
Минутку...

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