Рейтинг
0.00
голосов:
0
avatar

Создание игр  

GUI для игры



Пришло время немного поговорить о GUI. Или даже, по возможности, много поговорить о реализации GUI на различных движках.

Современные игровые движки обычно дают несколько возможностей для реализации GUI в игре. Например, в Unity изначально встроено целых два варианта построения GUI — это GUITexture для создания интерфейсов при помощи обычных текстур, а также набор специальных классов UnityGUI, уже реализующих большинство стандартных контролов (элементов пользовательского интерфейса), таких как окна, кнопки, текстовые поля и полосы прокрутки.

Также некоторые или большинство — даже не знаю:),- современных движков позволяют использовать Scaleform для создания пользовательского интерфейса (GUI и HUD). Если кто не знает — Scaleform позволяет использовать Adobe Flash для создания интерфейсов AAA-класса (по крайней мере так написано на самом сайте Scaleform). В их число входит Unreal Engine (UDK), где Scaleform можно использовать без дополнительного лицензирования (т.е. бесплатно), CryEngine и Unity. В последней Scaleform предоставляется за скромное вознаграждение ~$240 для мобильных платформ и до $8000 за выпуск консольной или PC-игры (цены актуальны только на момент написания этой статьи).

Мы постараемся рассмотреть все возможности для построения GUI в играх и оценим их достоинства и недостатки.


( Читать дальше )

Маркетинг и продвижение игры. Вступление.

Маркетинг и PR инди-игрКоль скоро мы приближаемся к выпуску первой играбельной альфа-версии нашей игры (ну, или хотя бы у нас есть хоть что-то, что можно показать потенциальным игрокам), нужно начинать задумываться о маркетинге. Лично я только и делаю, что задумываюсь о маркетинге :) Я начал изучать этот вопрос даже раньше, чем вести этот блог и вообще, делать игры.

Существует огромное количество инди-разработчиков игр, которые считают маркетинг неким злом, которое может испортить карму истинному гейм-девелоперу. Есть даже экстремисты, считающие, что если ты собираешься продавать игру, то ты вообще не инди! Я же из тех, кто ставит маркетинг во главу угла. Более того, я выбирал жанр для игры исходя из некоторого поверхностного анализа рынка: старался не окунаться в изготовление чего-то крайне нишевого (изучив информацию по продажам нишевых продуктов), но и в тоже время не лез особо на территорию ААА-разработчиков. Вернее, сперва полез, выбрав движок UDK ради красивой визуальной составляющей, но потом отказался от этой идеи в пользу более широких возможностей по дистрибуции, которые дает Unity. Ну и, соответственно, сменил жанр с 3D-шутера на более казуальный платформер с puzzle-элементами.

На практике мой опыт маркетинга близок к нулю, не считая приложения для ВКонтакте, набравшего 600.000 установок и порядка 50-70 тыс. DAU (daily active users), которое я делал пару лет назад. На нем я заработал 2 голоса на рекламе :) Оно было бесплатным и никак не монетизировалось. Это был мой первый опыт продвижения своего творения в массы. Неожиданно получив такую популярность, я решил использовать этот трафик для прокачки следующего приложения. Так и родилась идея создания своей игры. Игру я так и не сделал в тот раз, зато исписал много тетрадок и породил множество идей.

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


( Читать дальше )
  • 0
  • 09 января 2013, 14:05
  • dimanjy
  • 3

Ретопология в Blender: используем модификатор Shrinkwrap

Ретопология в Blender
Снова занимаюсь ретопологией High-Poly модели в Blender'е. Я уже немного рассказывал о методе создания низкополигональной (low-poly) модели на основе высокополигональной в статье о создании персонажа для компьютерной игры. Там я использовал встроенный инструмент Sculptris для снижения числа полигонов. Также на практике я применял метод ручной ретопологии в Blender, когда low-poly поверхность отрисовывается заново с нуля с привязкой к высокополигональной high-poly модели.

Сейчас же я напишу пару строк о крайне полезном модификаторе, который позволяет значительно упростить процесс ретопологии High-Poly модели в Blender.


( Читать дальше )

Unity и публикация для Flash-плеера

Экспорт из Unity во FlashЯ не спешу переходить на Unity 4. Причиной тому служит полученная по акции прошлой весной лицензия на Unity 3.5 с возможностью публикации под Android и iOS, а также превью-версия экспорта во Flash. Думаю, нет необходимости рассказывать, зачем нужно игру на Unity публиковать под Flash-плеер. Все мы знаем о существовании просто немыслимого количества порталов с бесплатными Flash-играми. Грех не воспользоваться такой широкой сетью для дистрибуции своей игры.

Но, к сожалению, при попытке публикации во Flash из Unity часто вылезают совершенно неожиданные ошибки. Здесь я опишу некоторые из них, а также способы их устранения.


( Читать дальше )
  • 0
  • 02 января 2013, 13:47
  • dimanjy
  • 1

Гравитация в Unity

Гравитация в Unity

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

В Unity для управления персонажем создан специальный упрощенный контроллер Character Controller, который представляет собой капсулу с заданной высотой и радиусом. Эта капсула позволяет персонажу перемещаться в пространстве, отслеживая столкновения с другими объектами, к которым присоединен какой-либо Collider. Благодаря этому наш персонаж не проваливается в стены и под пол. Но вся проблема в том, что о гравитации в данном случае приходится заботиться самому, т.к. Character Controller ничего о ней не знает. На то он и упрощенный компонент.

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


( Читать дальше )

Программная генерация Mesh в Unity

Программная генерация Mesh в Unity

Что ни говори, а все-таки приятно в Unity программировать. Документация самая полная и хорошо структурирована. Практически на каждый метод и свойство класса есть свой небольшой пример. И даже если вы задумали генерировать модели объектов программно (т.е. работать напрямую с объектом Mesh и его вершинами), то и здесь можно разобраться самому при помощи одной только документации. Помнится, первый опыт программной работы с Mesh в Unity у меня был, когда я разбирался с созданием разрушаемого окружения в Unity. Тогда, правда, сам код я так и не дописал.

Но вот теперь снова столкнулся с необходимостью программной генерации Mesh в Unity. На сей раз мне это понадобилось для отрисовки отладочных объектов (кубиков). При помощи этих кубиков я разбиваю игровое пространство на кластеры, создавая таким способом BSP-дерево. Что получается, видно на рисунке в начале статьи. А сам код идет далее…


( Читать дальше )

BSP-дерево и индексация объектов игрового уровня

Кубическое BSP-дерево в Unity

В этом топике я хочу немного поразмышлять над практическим применением BSP-дерева для индексации игрового пространства для дальнейшего осуществления быстрого поиска игровых объектов, определения коллизий и других полезных вещей.

За примерами далеко ходить не надо — в бесплатной версии Unity нету встроенного механизма Occlusion Culling (автоматического отсечения перекрытых объектов). Если вы создаете город, и камера смотрит на какой-либо квартал, то рендерится будут не только ближайшие дома, но и дома, расположенные за ними, даже если они полностью закрыты близлежащими строениями. Владельцам Unity Pro беспокоиться на этот счет не стоит, но не у каждого есть лишняя пара тысяч долларов на лицензию. Использование же BSP-дерева позволит самостоятельно реализовать механизм Occlusion Culling и сэкономить немалые деньги :)

Но, как я уже писал ранее, применение BSP-дерева не ограничивается реализацией алгоритма Occlusion Culling и быстрым поиском столкновений между объектами. В частности, без индексации игрового пространства невозможна программная генерация уровней. Да и вообще, трудно блуждать в потемках без карты :)


( Читать дальше )

Редактор шейдеров Strumpy Shader Editor в Unity

Редактор шейдеров Strumpy для UnityВ движке Unity 3D версии 3.5 нет встроенного редактора материалов, такого, как, например, в UDK. Но на помощь игроделам пришли коллеги по цеху и создали бесплатный инструмент, который позволяет в визуальном редакторе создавать свои собственные шейдеры (shaders) для Unity без необходимости разбираться с языком написания шейдеров. Инструмент этот называется Strumpy Shader Editor (редактор шейдеров Strumpy), который доступен бесплатно в Unity Asset Store.

Однако хороших примеров и документации по Strumpy, к сожалению, нету. Есть одна огромная ветка на форуме Unity, но там чаще всего выкладывают шейдеры с вопросом «Подскажите, где у меня тут ошибка?», поэтому приходится разбираться самому.

Тут я постараюсь немного осветить самые часто задаваемые (мною) вопросы по созданию шейдеров в Strumpy Shader Editor. Это и создание эффекта свечения (Light Shafts — такие красивые лучики), и имитация объемного локализованного тумана (Fog Volume). А начнем мы, пожалуй, с самого простого — создания прозрачного материала.


( Читать дальше )

Экспорт из Blender в Unity: расположение осей

При экспорте персонажа из Blender в Unity обнаружил, что когда я это делал в прошлый раз, то мне просто повезло с правильным расположением осей, и этого вопроса не возникало. Теперь же повторил процесс снова и наткнулся на грабли: импортировал модель из Blender в Unity, повесил на нее стандартный скрипт Third Person Controller, и обнаружил, что персонаж идет задом наперед.

Правильное расположение осей показано на картинке: при этом стандартный контроллер направляет персонажа в нужную сторону (идет лицом вперед).

Экспорт из Blender в Unity

Как видно из рисунка, +Z в Unity соответствует -Y в Blender'е; +X в Unity соответствует -X в Blender'е; и Y в Unity соответствует Z в Blender'е.
Речь идет о прямом использовании .blend-файлов в Unity, т.к. Unity отлично их поддерживает без какой-либо необходимости в экспорте из Blender.

По поводу единиц измерения — они в Blender и Unity совпадают.

Нормали вершин и рендеринг в 3D играх

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

Все, на что у меня хватило ума в тот раз — это отказаться от использования освещения в Unity и применять Unlit-шейдеры, да и вообще, отказаться от Unity и перейти на UDK:), в котором на первый взгляд таких проблем с модульными конструкциями не наблюдалось. Потом, правда, оказалось, что и в UDK эта проблема имеет место быть, в частности при создании травы. Теперь же хочу поделиться решением этой проблемы, да и вообще, немного погрузиться в теорию нормалей вершин в рендере 3D движков.


( Читать дальше )