Game Programming Patterns / Паттерны программирования в играх: 4.1 Component
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Цель BaMnup16 03.05.14 в 10:39 |
+1 |
|
Позволить классу соединить несколько доменов без завязывания доменов друг на друга. marapper 04.05.14 в 12:32 |
+1 | |
|
Мотивация BaMnup16 03.05.14 в 10:39 |
||
|
Предположим, мы делаем платформер. BaMnup16 03.05.14 в 10:40 |
||
|
Демография итальянских сантехников уже покрыта, так что нашим главным героем будет датский пекарь Бьёрн. BaMnup16 03.05.14 в 10:41 |
||
|
Разумеется, у нас будет класс, в котором будет находится наш друг-кондитер, и он (класс) будет содержать всё что Бйорн делает в игре. BaMnup16 03.05.14 в 10:43 Разумеется, у нас будет класс, воплощающий нашего дружелюбного кондитера, и он будет описывать все, что Бьёрн может делать в игре. kamillxiii 04.05.14 в 14:47 |
||
|
Блестящие игровые идеи как эта - причина, по которой я - программист, а не дизайнер. BaMnup16 03.05.14 в 10:45 |
||
|
Игрок управляет им - управляющие команды читаются и приводятся в движение. BaMnup16 03.05.14 в 10:49 |
||
|
И, конечно же, ему надо взаимодействовать с уровнем, так что появляется физика и контакт между объектами. BaMnup16 03.05.14 в 10:51 |
||
|
После этого он хочет увидеть это на экране, пора бросить силы на анимацию и рендеринг. BaMnup16 03.05.14 в 19:06 |
||
|
Он, вероятно, также захочет услышать звук. BaMnup16 03.05.14 в 19:08 |
||
|
Постой на минутку; это выходит из под контроля. BaMnup16 03.05.14 в 19:09 |
||
|
Софтверная Архитектура 101 гласит: разные домены в программе должны быть изолированы друг от друга. BaMnup16 03.05.14 в 19:11 |
||
|
Если мы делаем текстовый редактор, код, который отвечает за печать не должен быть подвержен влиянию кода, который загружает и сохраняет документы. BaMnup16 03.05.14 в 19:13 |
||
|
Игра не имеет те же домены, что и деловое приложение, но правила работают также. BaMnup16 03.05.14 в 19:13 У игры нет доменов бизнес-приложения, но правила остаются те же. kamillxiii 04.05.14 в 14:51 |
||
|
По возможности, мы не хотим чтобы ИИ, физика, рендеринг, звуки и остальные домены знали друг о друге, но теперь они все впихнуты в один класс. BaMnup16 03.05.14 в 19:16 |
||
|
Мы знаем куда ведёт эта дорога: пятитысячистрочный загруженный, фрагментированный исходный файл, настолько большой, что самые храбрые ниндзя-кодеры осмеливаются только подойти к нему. BaMnup16 03.05.14 в 19:24 |
||
|
Это хорошая защита для той пары человек, кто может "приручить" его, но сущий ад для остальных. BaMnup16 03.05.14 в 19:26 |
||
|
Настолько большой класс указывает на то, что даже очевидно небольшие изменения могут иметь далеко идущие последствия. adm244 11.03.15 в 01:04 |
||
|
Вскоре класс начинает обрастать ошибками быстрее, чем набирать функционал. adm244 11.03.15 в 01:05 |
||
|
Запутанный узел. adm244 11.03.15 в 01:06 |
+1 | |
|
Куда большей проблемой, чем банальное разрастание, является спутывание. adm244 11.03.15 в 01:17 |
||
|
Все отдельные системы нашей игры оказались связанными в огромный клубок кода, подобно этому: adm244 11.03.15 в 01:14 |
||
|
if (collidingWithFloor() && (getRenderState() != INVISIBLE)) adm244 11.03.15 в 00:55 |
||
|
{ adm244 11.03.15 в 00:55 |
||
|
playSound(HIT_FLOOR) adm244 11.03.15 в 00:55 |
||
|
; adm244 11.03.15 в 00:55 |
||
|
} adm244 11.03.15 в 00:55 |
||
|
Любой программист пытающийся изменить подобный код должен знать как реализованы физика, графика и звук, дабы не поломать ничего. adm244 11.03.15 в 00:59 |
||
