Компонент(Component)

Задача Позволяет одной сущности охватывать несколько областей, не связывая их между собой. Мотивация Предположим, мы создаем платформер. Биография итальянских водопроводчиков и так всем хорошо известна, так что мы возьмем Датского пекаря Бьйорна (Bjørn). Разумеется у нас будет класс, представляющий нашего…

Читать далее

Объект тип (Type Object)

Задача Сделать более гибким создание новых «классов» с помощью создания класса, каждый экземпляр которого может представлять собой другой тип объекта. Мотивация Давайте представим себе, что мы работаем над фентезийной ролевой игрой. Нам нужно написать код для орд разнообразных монстров, которые…

Читать далее

Подкласс песочница (Subclass Sandbox)

Задача Определение поведения в подклассе с помощью набора операций, предоставляемых базовым классом. Мотивация Каждый мальчишка хотел в детстве быть супергероем, но к сожалению с космическими лучами у нас на Земле не густо. Игры помогают хотя бы немного почувствовать себя супергероем.…

Читать далее

Байткод (Bytecode)

Задача Обеспечить поведению гибкость данных, декодируемых в виде инструкций для виртуальной машины. Мотивация Создавать игры бывает весело, но не очень то и легко. Современные игры требуют гигантской сложнейшей кодовой базы. Производители консолей и владельцы магазинов приложений постоянно ужесточают требования к…

Читать далее

Метод обновления (Update Method)

Задача Симуляция коллекции независимых объектов с помощью указания каждому объекту обработки одного кадра поведения за раз. Мотивация Могучая валькирия игрока выполняет квест по краже прекрасных украшений с трупа давно умершего короля-волшебника. Она приближается ко входу величественной усыпальницы и ее атакует… ничего.…

Читать далее

Игровой цикл(Game Loop)

Задача Устранить зависимость игрового времени от пользовательского ввода и скорости процессора. Мотивация Если бы меня спросили, без какого шаблона из этой книги я не смог бы жить, я вспомнил бы именно об этом. Игровой цикл — это квинтэссенция примера «шаблона…

Читать далее

Строки. Операции над строками, StringBuilder

Объединение строк Конкатенация строк или объединение может производиться как с помощью операции +, так и с помощью метода Concat: Метод Concat является статическим методом класса string, принимающим в качестве параметров две строки. Также имеются другие версии метода, принимающие другое количество параметров. Для объединения строк…

Читать далее

Двойная буферизация (Double Buffering)

Задача Дать возможность ряду последовательных операций выполняться мгновенно или одновременно. Мотивация В своем сердце компьютер отсчитывает последовательность ударов. Его мощь заключается в способности разбивать громадные задания на мелкие шаги, которые можно выполнять один за другим. Однако пользователю зачастую нужно видеть…

Читать далее

UniRx Реактивность

Всем привет! Давно уже хотел написать статью о UniRx на Unity3d. Начнем с небольшой философии RX программирования. Например, разрабатывая игру, мы создаем кнопку, наблюдаем событие клика этой кнопки и реагируем на это каким нибудь кодом. Реактивное программирование — это всё…

Читать далее

Dependency Injection

Dependency injection (DI) или внедрение зависимостей представляет механизм, который позволяет сделать взаимодействующие в приложении объекты слабосвязанными. Такие объекты связаны между собой через абстракции, например, через интерфейсы, что делает всю систему более гибкой, более адаптируемой и расширяемой. Нередко для установки зависимостей…

Читать далее