
- •Предисловие
- •Введение
- •Благодарности
- •О книге
- •Перспективы
- •Условные обозначения, требования и доступные для скачивания данные
- •Автор в Интернете
- •Об авторе
- •Глава 1. Знакомство с Unity
- •1.1. Достоинства Unity
- •1.1.1. Сильные стороны и преимущества Unity
- •1.1.2. Недостатки, о которых нужно знать
- •1.1.3. Примеры игр на основе Unity
- •1.2. Как работать с Unity
- •1.2.1. Вкладка Scene, вкладка Game и панель инструментов
- •1.2.2. Работа с мышью и клавиатурой
- •1.2.3. Вкладка Hierarchy и панель Inspector
- •1.2.4. Вкладки Project и Console
- •1.3. Готовимся программировать в Unity
- •1.3.1. Запуск кода в Unity: компоненты сценария
- •1.3.2. Программа MonoDevelop — межплатформенная среда разработки
- •1.4. Заключение
- •Глава 2. Создание 3D-ролика
- •2.1. Подготовка…
- •2.1.1. Планирование проекта
- •2.1.2. Трехмерное координатное пространство
- •2.2. Начало проекта: размещение объектов
- •2.2.1. Декорации: пол, внешние и внутренние стены
- •2.2.2. Источники света и камеры
- •2.2.3. Коллайдер и точка наблюдения игрока
- •2.3. Двигаем объекты: сценарий, активирующий преобразования
- •2.3.1. Схема программирования движения
- •2.3.2. Написание кода
- •2.3.3. Локальные и глобальные координаты
- •2.4. Компонент сценария для осмотра сцены: MouseLook
- •2.4.1. Горизонтальное вращение, следящее за указателем мыши
- •2.4.2. Поворот по вертикали с ограничениями
- •2.4.3. Одновременные горизонтальное и вертикальное вращения
- •2.5. Компонент для клавиатурного ввода
- •2.5.1. Реакция на нажатие клавиш
- •2.5.2. Независимая от скорости работы компьютера скорость перемещений
- •2.5.4. Ходить, а не летать
- •2.6. Заключение
- •3.1. Стрельба путем бросания лучей
- •3.1.1. Что такое бросание лучей?
- •3.1.2. Имитация стрельбы командой ScreenPointToRay
- •3.1.3. Добавление визуальных индикаторов для прицеливания и попаданий
- •3.2. Создаем активные цели
- •3.2.1. Определяем точку попадания
- •3.2.2. Уведомляем цель о попадании
- •3.3. Базовый искусственный интеллект для перемещения по сцене
- •3.3.1. Диаграмма работы базового искусственного интеллекта
- •3.3.2. «Поиск» препятствий методом бросания лучей
- •3.3.3. Слежение за состоянием персонажа
- •3.4.1. Что такое шаблон экземпляров?
- •3.4.2. Создание шаблона врага
- •3.4.3. Экземпляры невидимого компонента SceneController
- •3.5. Стрельба путем создания экземпляров
- •3.5.1. Шаблон снаряда
- •3.5.2. Стрельба и столкновение с целью
- •3.5.3. Повреждение игрока
- •3.6. Заключение
- •Глава 4. Работа с графикой
- •4.1. Основные сведения о графических ресурсах
- •4.2. Создание геометрической модели сцены
- •4.2.1. Назначение геометрической модели
- •4.2.2. Рисуем план уровня
- •4.2.3. Расставляем примитивы в соответствии с планом
- •4.3. Наложение текстур
- •4.3.1. Выбор формата файла
- •4.3.2. Импорт файла изображения
- •4.3.3. Назначение текстуры
- •4.4. Создание неба с помощью текстур
- •4.4.1. Что такое скайбокс?
- •4.4.2. Создание нового материала для скайбокса
- •4.5. Собственные трехмерные модели
- •4.5.1. Выбор формата файла
- •4.5.2. Экспорт и импорт модели
- •4.6. Системы частиц
- •4.6.1. Редактирование параметров эффекта
- •4.6.2. Новая текстура для пламени
- •4.6.3. Присоединение эффектов частиц к трехмерным объектам
- •4.7. Заключение
- •5.1. Подготовка к работе с двухмерной графикой
- •5.1.1. Подготовка проекта
- •5.1.2. Отображение двухмерных изображений (спрайтов)
- •5.1.3. Переключение камеры в режим 2D
- •5.2. Создание карт и превращение их в интерактивные объекты
- •5.2.1. Создание объекта из спрайтов
- •5.2.2. Код ввода с помощью мыши
- •5.2.3. Открытие карты по щелчку
- •5.3. Отображение различных карт
- •5.3.1. Программная загрузка изображений
- •5.3.3. Создание экземпляров карт
- •5.3.4. Тасуем карты
- •5.4. Совпадения и подсчет очков
- •5.4.1. Сохранение и сравнение открытых карт
- •5.4.2. Скрытие несовпадающих карт
- •5.4.3. Текстовое отображение счета
- •5.5. Кнопка Restart
- •5.5.1. Добавление к компоненту UIButton метода SendMessage
- •5.5.2. Вызов метода LoadLevel в сценарии SceneController
- •5.6. Заключение
- •Глава 6. Двухмерный GUI для трехмерной игры
- •6.1. Перед тем как писать код…
- •6.1.1. IMGUI или усовершенствованный 2D-интерфейс?
- •6.1.2. Выбор компоновки
- •6.1.3. Импорт изображений UI
- •6.2. Настройка GUI
- •6.2.1. Холст для интерфейса
- •6.2.2. Кнопки, изображения и текстовые подписи
- •6.2.3. Управление положением элементов UI
- •6.3. Программирование интерактивного UI
- •6.3.1. Программирование невидимого объекта UIController
- •6.3.2. Создание всплывающего окна
- •6.3.3. Задание значений с помощью ползунка и поля ввода
- •6.4. Обновление игры в ответ на события
- •6.4.1. Интегрирование системы сообщений
- •6.4.2. Рассылка и слушание сообщений сцены
- •6.4.3. Рассылка и слушание сообщений проекционного дисплея
- •6.5. Заключение
- •7.1. Корректировка положения камеры
- •7.1.1. Импорт персонажа
- •7.1.2. Добавление в сцену теней
- •7.1.3. Облет камеры вокруг персонажа
- •7.2. Элементы управления движением, связанные с камерой
- •7.2.1. Поворот персонажа лицом в направлении движения
- •7.2.2. Движение вперед в выбранном направлении
- •7.3. Выполнение прыжков
- •7.3.1. Добавление вертикальной скорости и ускорения
- •7.3.2. Распознавание поверхности с учетом краев и склонов
- •7.4. Анимация персонажа
- •7.4.1. Создание анимационных клипов для импортированной модели
- •7.4.2. Создание контроллера для анимационных клипов
- •7.4.3. Код, управляющий контроллером-аниматором
- •7.5. Заключение
- •8.1. Создание дверей и других устройств
- •8.1.1. Открывание и закрывание дверей
- •8.1.2. Проверка расстояния и направления перед открытием двери
- •8.1.3. Управление меняющим цвет монитором
- •8.2. Взаимодействие с объектами путем столкновений
- •8.2.1. Столкновение с препятствиями, обладающими физическими свойствами
- •8.2.2. Управление дверью с помощью триггера
- •8.2.3. Сбор разбросанных по игровому уровню элементов
- •8.3. Управление инвентаризационными данными и состоянием игры
- •8.3.1. Настраиваем диспетчеры игрока и инвентаря
- •8.3.2. Программирование диспетчеров
- •8.3.3. Сохранение инвентаря в виде коллекции: списки и словари
- •8.4. Интерфейс для использования и подготовки элементов
- •8.4.1. Отображение элементов инвентаря в UI
- •8.4.2. Подготовка ключа для открытия двери
- •8.4.3. Восстановление здоровья персонажа
- •8.5. Заключение
- •9.1. Создание натурной сцены
- •9.1.1. Генерирование неба с помощью скайбокса
- •9.1.2. Настройка управляемой кодом атмосферы
- •9.2. Скачивание сводки погоды из Интернета
- •9.2.1. Запрос веб-данных через сопрограмму
- •9.2.2. Парсинг текста в формате XML
- •9.2.3. Парсинг текста в формате JSON
- •9.2.4. Изменение вида сцены на базе данных о погоде
- •9.3. Добавление рекламного щита
- •9.3.1. Загрузка изображений из Интернета
- •9.3.2. Вывод изображения на щите
- •9.3.3. Кэширование скачанного изображения
- •9.4. Отправка данных на веб-сервер
- •9.4.1. Слежение за погодой: отправка запросов POST
- •9.4.2. Серверный код в PHP-сценарии
- •9.5. Заключение
- •Глава 10. Звуковые эффекты и музыка
- •10.1. Импорт звуковых эффектов
- •10.1.1. Поддерживаемые форматы файлов
- •10.1.2. Импорт аудиофайлов
- •10.2. Воспроизведение звуковых эффектов
- •10.2.1. Система воспроизведения: клипы, источник, подписчик
- •10.2.2. Присваивание зацикленного звука
- •10.2.3. Активация звуковых эффектов из кода
- •10.3. Интерфейс управления звуком
- •10.3.1. Настройка центрального диспетчера управления звуком
- •10.3.2. UI для управления громкостью
- •10.3.3. Воспроизведение звуков UI
- •10.4. Фоновая музыка
- •10.4.1. Воспроизведение музыкальных циклов
- •10.4.2. Отдельная регулировка громкости
- •10.4.3. Переход между песнями
- •10.5. Заключение
- •Глава 11. Объединение фрагментов в готовую игру
- •11.1. Построение ролевого боевика изменением назначения проектов
- •11.1.1. Сборка ресурсов и кода из разных проектов
- •11.1.2. Элементы наведения и щелчка
- •11.1.3. Замена старого GUI новым
- •11.2. Разработка общей игровой структуры
- •11.2.1. Управление ходом миссии и набором уровней
- •11.2.2. Завершение уровня
- •11.2.3. Проигрыш уровня
- •11.3. Обработка хода игры
- •11.3.1. Сохранение и загрузка достижений игрока
- •11.3.2. Победа в игре при прохождении всех уровней
- •11.4. Заключение
- •Глава 12. Развертывание игр на устройствах игроков
- •12.1. Создание приложений для настольных компьютеров: Windows, Mac и Linux
- •12.1.1. Построение приложения
- •12.1.2. Настройки проигрывателя: имя и значок приложения
- •12.1.3. Компиляция в зависимости от платформы
- •12.2. Создание игр для Интернета
- •12.2.1. Проигрыватель Unity и HTML5/WebGL
- •12.2.2. Создание файла Unity и тестовой веб-страницы
- •12.2.3. Обмен данными с JavaScript в браузере
- •12.3. Сборки для мобильных устройств: iOS и Android
- •12.3.1. Настройка инструментов сборки
- •12.3.2. Сжатие текстур
- •12.3.3. Разработка подключаемых модулей
- •12.4. Заключение
- •Приложение А. Перемещение по сцене и клавиатурные комбинации
- •А.1. Навигация с помощью мыши
- •А.2. Распространенные клавиатурные комбинации
- •Б.1. Инструменты программирования
- •Б.1.1. Visual Studio
- •Б.1.2. Xcode
- •Б.1.3. Android SDK
- •Б.1.4. SVN, Git или Mercurial
- •Б.2. Приложения для работы с трехмерной графикой
- •Б.2.1. Maya
- •Б.2.3. Blender
- •Б.3. Редакторы двухмерной графики
- •Б.3.1. Photoshop
- •Б.3.2. GIMP
- •Б.3.3. TexturePacker
- •Б.4. Звуковое программное обеспечение
- •Б.4.1. Pro Tools
- •Б.4.2. Audacity
- •Приложение В. Моделирование скамейки в программе Blender
- •В.1. Создание сеточной геометрии
- •В.2. Назначение материала

1.1. Достоинства Unity 21
навыков программирования. В этом смысле Unity представляет собой замечательную среду разработки игр.
ПРЕДУПРЕЖДЕНИЕ ПО ПОВОДУ ТЕРМИНОЛОГИИ
Эта книга посвящена программированию в Unity и поэтому будет интересна в основном кодерам. Существует множество ресурсов, где обсуждаются другие аспекты разработки игр вообще ив Unity в частности, но в нашем случае основной упор делается именно на программировании.
Хотелось бы обратить ваше внимание на то, что в контексте разработки игр слово «разработчик» имеет несколько отличный от привычного нам смысл. В таких областях, как веб-разработка, это синоним слова «программист», в то время как в данном случае разработчиком называется любой человек, работающий над созданием игры, а программистом называется разработчик, выполняющий конкретные обязанности. К разработчикам игр относятся также художники и дизайнеры, но в рамках этой книги рассматривается только работа программистов.
Первым делом вам нужно зайти на сайт www.unity3d.com и скачать саму программу. Я пользовался версией Unity 5.0, которая на момент написания этой книги была наиболее новой. В URL-адресе отражен тот факт, что изначально инструмент Unity предназначался для создания трехмерных игр; их поддержка по-прежнему остается главной, но теперь Unity замечательно подходит и для разработки двухмерных игр. В платной версии программы доступны расширенные функциональные возможности, но базовая версия распространяется бесплатно. Все примеры из этой книги прекрасно работают в бесплатной версии, так что Unity Pro вам не потребуется. Разница между этими версиями состоит в уже упомянутых мной расширенных функциональных возможностях (рассмотрение которых выходит за рамки темы данного издания) и коммерческих условиях лицензирования.
1.1. Достоинства Unity
Посмотрим более внимательно на данное в начале этой главы определение: Unity — профессиональный игровой движок, который используется при создании видеоигр для различных платформ. Это достаточно прямой ответ на прямой вопрос «Что такое Unity?». Но что конкретно он означает? И чем примечателен инструмент Unity?
1.1.1. Сильные стороны и преимущества Unity
Любой игровой движок предоставляет множество функциональных возможностей, которые задействуются в различных играх. Реализованная на этом движке игра получает все эти функциональные возможности, кроме того, добавляются ее собственные игровые ресурсы и код игрового сценария. Unity предлагает моделирование физических сред, карты нормалей, преграждение окружающего света в экранном пространстве (Screen Space Ambient Occlusion, SSAO), динамические тени… список можно продолжать долго. Подобным набором функциональных возможностей могут похвастаться многие игровые движки, но у Unity есть два основных преимущества перед другими передовыми инструментами разработки игр: чрезвычайно производительный визуальный рабочий процесс и мощная межплатформенная поддержка.

22 Глава 1. Знакомство с Unity
Визуальный рабочий процесс представляет собой достаточно уникальную вещь, выделяющую данный инструмент из большинства других сред разработки игр. В то время как остальные инструменты разработки игр зачастую представляют собой мешанину разрозненных частей, которые требуется контролировать, или, возможно, библиотеку, для работы с которой нужно настраивать собственную интегрированную среду разработки (Integrated Development Environment, IDE), цепочку сборки и прочее в этом роде, рабочий процесс в Unity привязан к тщательно продуманному визуальному редактору. В этом редакторе вы будете компоновать сцены будущей игры, связывая игровые ресурсы и код в интерактивные объекты. Именно он позволяет быстро и рационально создавать профессиональные игры, обеспечивая невиданную продуктивность труда разработчиков и предоставляя в их распоряжение исчерпывающий перечень самых современных технологий в области видеоигр.
ПРИМЕЧАНИЕ Большинство других инструментов, оснащенных центральным визуальным редактором, страдают от ограниченной и недостаточно гибкой поддержки возможности написания сценариев, но инструмент Unity лишен этого недостатка. Несмотря на то что все создаваемое для Unity в конечном счете проходит через визуальный редактор, основной интерфейс включает в себя множество связанных проектов с нестандартным кодом, запускаемым в игровом движке Unity. Это своего рода аналог связывания классов в параметрах проекта для таких интегрированных сред разработки, как Visual Studio или Eclipse. Поэтому опытные программисты не должны пренебрегать средой Unity, считая, что это чисто визуальный инструмент создания игр с ограниченной возможностью программирования!
Особенно полезен этот редактор при разработке проектов с последовательным улучшением, например в циклах создания прототипов или тестирования. Корректировать объекты в редакторе и двигать элементы в сцене можно даже при запущенной игре. Кроме того, Unity позволяет настраивать и сам редактор при помощи сценариев, добавляющих новые функциональные особенности и элементы меню к интерфейсу.
В дополнение к значительным преимуществам в плане производительности, которые нам дает редактор, у набора инструментов Unity существует еще и сильная межплатформенная поддержка. В данном случае под этим словосочетанием подразумеваются не только места развертывания (вы можете развернуть игру на персональном компьютере, в Интернете, на мобильном устройстве или на консоли), но и инструменты разработки (создание игры может осуществляться на машинах, работающих под управлением как Windows, так и Mac OS). Эта независимость от платформы явилась результатом того, что изначально инструмент Unity предназначался исключительно для компьютеров Mac, а позднее был перенесен на машины с операционными системамисемействаWindows.Перваяверсияпоявиласьв2005году,нокнастоящемумоменту вышли уже пять основных версий (с множеством небольших, но частых обновлений). Изначально инструмент Unity поддерживал разработку и развертывание только для машин Mac, но через несколько месяцев вышло обновление, позволяющее работать и на машинах с Windows. В следующих версиях постепенно добавлялись все новые платформыразвертывания,например:межплатформенныйвеб-плеерв2006-м,iPhone в 2008-м, Android в 2010-м и даже такие игровые консоли, как Xbox и PlayStation. Совсем недавно появилась возможность развертывания в WebGL — новом фреймворке для трехмерной графики в веб-браузерах. Найдется немного игровых движков,

1.1. Достоинства Unity 23
поддерживающих такое количество целевых платформ развертывания, и ни один из них не делает операцию развертывания на разных платформах настолько простой.
Между тем в дополнение к этим основным достоинствам идет и третье, менее бросающееся в глаза преимущество, обеспечиваемое модульной системой компонентов, которая используется для конструирования игровых объектов. «Компоненты» в такой системе представляют собой комбинируемые пакеты функциональных элементов, поэтому объекты создаются как наборы компонентов, а не как жесткая иерархия классов. Другими словами, компонентная система являет собой альтернативный (и обычно более гибкий) подход к объектно-ориентированному программированию, в котором игровые объекты создаются путем объединения, а не наследования. Сравнение подходов демонстрирует диаграмма на рис. 1.1.
На а |
|
С а |
|
|
В а |
М |
М |
С а а |
|
|
а |
|
|
|
М а |
К |
К |
К |
|
|
а а |
|||
М |
а а |
К |
а а |
|
|
|
|
||
С а а |
К |
|
К |
|
К |
||||
|
|
а |
||
|
|
а |
|
О а а |
|
|
а а |
К |
|
а |
||
• а |
||
• а а |
||
а а : а , |
||
. Ка • |
||
а а • а а |
||
а а |
||
|
||
• а |
|
|
Рис. 1.1. Сравнение наследования и компонентной системы |
В компонентной системе объект существует в горизонтальной иерархии, поэтому различные объекты состоят из разных наборов компонентов, а не из структуры наследования, в которой разные объекты оказываются на разных ветвях дерева. Такая компоновка облегчает создание прототипов, потому что взять нужный набор компонентов куда быстрее и проще, чем перестраивать цепочку наследования при изменении каждого объекта.
Разумеется, ничто не мешает вам написать код, реализующий вашу собственную компонентную систему, но в Unity уже существует вполне надежный вариант такой системы, органично встроенный в визуальный редактор. Поэтому у вас есть возможность не только программно управлять компонентами, но и устанавливать и разрывать связи между ними в редакторе. Разумеется, ваши возможности не ограничиваются составлением объектов из готовых деталей; в своем коде вы можете воспользоваться наследованием и всеми наработанными на его базе паттернами проектирования.

24 Глава 1. Знакомство с Unity
1.1.2. Недостатки, о которых нужно знать
Инструмент Unity имеет множество достоинств, которые превращают его в замечательное средство разработки игр, но с моей стороны было бы упущением не упомянуть о его недостатках. В частности, сочетание визуального редактора со сложным кодом при всей его эффективности в рамках компонентной системы Unity является нетипичным и может вызвать затруднения. В сложных сценах можно потерять из виду некоторые из присоединенных компонентов. В Unity существует функция поиска, позволяющая обнаруживать присоединенные сценарии, но она могла бы быть и более надежной — порой возникают ситуации, когда для поиска связанных сценариев приходится вручную просматривать все элементы сцены. Такое случается не часто, тем не менее этой кропотливой и трудоемкой работы хотелось бы совсем избежать.
Другим неожиданным и обескураживающим для опытных программистов недостатком является тот факт, что Unity не поддерживает ссылки на внешние библиотеки кода. Все доступные библиотеки, которые вы планируете задействовать, следует вручную скопировать в проект, вместо того чтобы просто дать ссылку на одну папку общего доступа. Отсутствие единой папки с библиотеками затрудняет коллективное использование функционала разными проектами. Это неудобство можно обойти, рационально применяя системы контроля версий, но готовое решение данной проблемы в Unity отсутствует.
ПРИМЕЧАНИЕ Раньше существенным недостатком была сложность работы с системами контроля версий (такими, как Subversion, Git и Mercurial), но в более поздних версиях Unity все значительно упрощено. Вы можете наткнуться на устаревшие ресурсы, где утверждается, что Unity не работает с системами контроля версий, но на более новых ресурсах есть описание файлов .meta (механизма, который появился в Unity для работы с этими системами) и указания, какие папки проекта следует поместить в репозиторий. Начать лучше всего с чтения страницы документации http://docs.unity3d. com/ru/current/Manual/ExternalVersionControlSystemSupport.html.
Третий недостаток связан с использованием шаблонов экземпляров (prefabs). Эта концепция детально объясняется в главе 3; пока вам достаточно знать, что шаблоны экземпляров предлагают гибкий подход к визуальному созданию интерактивных объектов. Эта крайне мощная концепция существует исключительно в Unity (и, естественно, она связана с компонентной системой Unity), но редактирование таких шаблонов порой оказывается на удивление труднореализуемым. Я считаю шаблоны экземпляров полезным и важным аспектом работы с Unity и надеюсь, что в будущих версиях способ их редактирования будет усовершенствован.
1.1.3. Примеры игр на основе Unity
Итак, вы познакомились с сильными и слабыми сторонами Unity, но, возможно, пока до конца не уверены в том, что с помощью данного инструмента разработки можно получить первоклассные результаты. Зайдите в галерею Unity на странице http://unity3d. com/ru/showcase/gallery и полюбуйтесь постоянно обновляемым списком сотен игр и симуляций, созданных этим инструментом. В данном разделе перечислено небольшое количество игр, демонстрирующих разные жанры и платформы развертывания.

1.1. Достоинства Unity 25
Игры для рабочего стола (WINDOWS, MAC, LINUX)
Так как редактор работает на одной платформе, зачастую наиболее очевидной платформой развертывания становится машина с операционной системой семейства Windows или Mac. Вот пара примеров игр для рабочего стола в различных жанрах:
Guns of Icarus Online (рис. 1.2) — шутер от первого лица, созданной независимым разработчиком Muse Games.
Gone Home (рис. 1.3) — квест от первого лица, разработанный независимой студией Fullbright Company.
Рис. 1.2. Guns of Icarus Online |
Рис. 1.3. Gone Home |
Игры для мобильных устройств (IOS, ANDROID)
Unity позволяет развертывать игры на мобильных платформах, таких как iOS (смартфонах iPhone и планшетах iPad) и Android (смартфонах и планшетах). Вот примеры мобильных игр в различных жанрах:
Dead Trigger (рис. 1.4) — шутер от первого лица, созданный разработчиком Madfinger Games.
Bad Piggies (рис. 1.5) — игра-головоломка от финской компании Rovio.
Рис. 1.4. Dead Trigger |
Рис. 1.5. Bad Piggies |

26 Глава 1. Знакомство с Unity
Tyrant Unleashed (рис. 1.6) — коллекционная карточная игра, созданная студией Synapse Games.
Рис. 1.6. Tyrant Unleashed
Игры для консолей (PLAYSTATION, XBOX, WII)
Unity поддерживает развертывание на игровых консолях, хотя разработчику потребуется лицензия от Sony, Microsoft или Nintendo. Из-за этого требования и возможности межплатформенного развертывания консольные игры часто доступны и на обычных компьютерах. Вот примеры таких игр в различных жанрах:
Assault Android Cactus (рис. 1.7) — аркадный шутер от независимого разработчика Witch Beam.
The Golf Club (рис. 1.8) — спортивный симулятор, созданный фирмой HB Studios.
Рис. 1.7. Assault Android Cactus |
Рис. 1.8. The Golf Club |
Как видно из этих примеров, Unity позволяет создавать игры хорошего товарного качества. Но даже при наличии значительных преимуществ Unity над другими инструментами разработки игр новички зачастую неверно понимают важность программирования. Зачастую Unity описывают как простой набор готовых программных компонентов, для использования которых программирование вообще не требуется. Но это неверная точка зрения, не дающая людям представления о том, как создать коммерчески успешный продукт. Нет, вы, конечно, можете создать из готовых компонентов интересный прототип, пользуясь одной только мышью, но перейти от прототипа к игре, готовой увидеть свет, без программирования не удастся.