Страницы

суббота, 14 декабря 2013 г.

Семинар Unity3D

В первые за полгода прочел семинар, на котором рассказал о нововведениях в Unity 4.3, в частности о появившемся нативном 2D.
В ходе почти пятичасового экспромта, была разработана крайне неадекватная игра. Изначально, задались целью разработать игру про «злых птичек» в классическом понимании этого жанра, однако вышло чуть иначе..

Ссылки (играть обязательно со звуком!) :
Играть онлайн (web-player): http://mrimsh.ucoz.ru/some2d/index.html
Скачать игру (win): http://yadi.sk/d/Xv2bPYp4EKRod
Скачать игру (mac): http://yadi.sk/d/5UHqTSstEKRee
Скачать игру (linux): http://yadi.sk/d/zNf9fpZHEKawn
Скачать проект: http://yadi.sk/d/gjEtk6PZEKRmP

Фото:


понедельник, 4 ноября 2013 г.

Инди – больше чем просто мода

Чем больше я играю в игры, тем менее интересными мне кажутся новинки. Следует оговориться, что по большей части мое мнение сформировалось на опыте мобильных игр, хотя на рынке «больших» платформ ситуация обстоит аналогичная.

Дело даже не в том, что гиганты типа Gameloft (что еще со времен J2ME именуют «клонолофтом») или Mobage (насколько мне известно, это всего лишь издатель, но ситуация похожая) чаще всего выпускают однообразные игры. Нет, бывают и очень даже оригинальные игры, разнящиеся геймплеем..однако, не в последнюю очередь благодаря вопросу монетизации, совершенно разные игры становятся заложниками клише крохотных элементов геймплея.
Столько игр, но в каждой есть что-то, что я уже видел где-то..ах да, среди ваших же игр, Gameloft!
Перелистывая страницы на AppStore или Steam, я зачастую оставляю без внимания игры большинства крупных издательств/разработчиков. Максимум – посмотрю скриншоты, почитаю описание и комментарии, чтобы в лишний раз убедиться, что в итоге столкнусь с чем то похожим и приевшимся. Немудрено, что я так часто нахожу утешение в очень старых играх.
О, старые игрушечки! Столько необычного... Сейчас, в большом геймдеве так не принято.
Вот тут-то инди-разработчики и проявляют себя во всей красе! Известное дело – в последнее время термин Indie стал мейнстримом, частенько несущим негативный окрас, из-за разработчиков, что твердят о своей независимости, но предлагают все тот же геймплей наполненный теми же ключами, с которыми мы знакомы уже много лет. Но среди толп этих волков в овечьей шкуре, нередко попадаются и истинные бриллианты, способные удивить чем-то необычным: симулятор енота, игра про кошмарный сон, где ты мерзнешь и голодаешь или игра про игроков в настолку?! Они смогли удивить меня! А это что-то да значит.
Shelter
Don't starve
Knights Of Pen And Paper

среда, 25 сентября 2013 г.

Age Of Glory. Dungeon step

Прошло несколько дней и проект стал обретать некоторые формы.

По крайней мере я действительно продвинулся вперед: возможно, я и не очень хорошо моделю (мягко говоря), однако я уже научился самостоятельно удовлетворять свою потребность в примитивных моделях! А ведь в этом то и заключается цель сей затеи.

На данный момент есть код генерирующий уровни. Каждый уровень (пещера) это: случайное количество комнат, случайного размера, в случайных местах случайно соединенные случайными коридорами. Хотя все стены сейчас однообразны, не очень сложно будет улучшить код, чтобы генератор не менее процедурно декорировал все стены и создавал комнаты с различными тематиками (банная/бойня/бойлерная и т.п. и все в одном подземелье!).

Генератор, кстати, написан на основе замечательного туториала: http://gamedev.tutsplus.com/tutorials/game-design/create-a-procedurally-generated-dungeon-cave-system/

Работающий код и все ресурсы можно скачать https://github.com/MindEdg3/AgeOfGlory

 

воскресенье, 22 сентября 2013 г.

AgeOfGlory. init commit.

Решил я научиться моделить недавно. Maya, студенческая лицензия, все дела.. Осваиваю уроки один за другим.

Но, как показала жизнь, все должно иметь свою цель. И мои полу-теоретические повторения уроков не принесут столько пользы, сколько реальная нужда в моделировании чего либо.

В связи с этим я ставлю себе цель: Модели для игры! В свое свободное время, с крайней низким приоритетом, я буду делать классическую пещерную RPG, что уведена в героическую тематику, чуть ли не до пародийной степени. И название соответствующее: Age of Glory.

А вот и скетч, что задаст мне направление:
Скетч Age of Glory нарисованный за несколько минут.
Да я пока не умею рисовать, но у меня еще есть время)
Здесь видно Героя управляемого игрока, с видом от первого лица. Он вооружен простенькой секирой и сражается с Жабо-человеком, которого встретил на развилке в запутанной пещере.
Над Жабо-человеком висит окошко с минимумом информации. Больше можно получить нажав на кнопочку со знаком вопроса. Ниже кнопки-стрелочки для переключения текущей цели. В данном случае они не работают.
Справа панель игры с кнопкой выхода в меню, картой покрытой туманом войны в местах, где игрок еще не побывал, линейки его текущих/максимальных здоровья и маны, кнопки для открытия окон Персонажа, Инвентаря, Магии и Журнала. Так же на панели можно увидеть лог последних действий в игре:

  • Жабо-человек атаковал игрока на 7 ед
  • Настал ход игрока
Таким образом игра является пошаговой, что традиционно для подобных игр.

Говорят начать что-то делать – значит сделать это наполовину. Ну вот, игра наполовину готова! Осталось еще немного.

Скрывать мне нечего, буду все держать в открытом виде на GitHub: https://github.com/MindEdg3/AgeOfGlory

суббота, 21 сентября 2013 г.

[Перевод] “0 – 60 fps за 14 дней!” Чему мы научились, оптимизируя игру на Unity3D.

Гарантией плавного и приятного процесса игры является высокая частота кадров и достижение 60 кадров в секунду на обычных iPhone и iPad устройствах было важным достижением в разработке нашей новой игры, Shadow Blade. (http://shadowblade.deadmage.com)

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

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

Итак, здесь начинается наш рассказ о том, что мы узнали во время замеров, оптимизации и повторных замеров производительности, которые в конце концов позволили достигнуть желаемых и стабильных 60 fps на целевых устройствах.

понедельник, 2 сентября 2013 г.

Летняя практика студентов в FOSS Labs Gamedev

Вот и завершилась летняя производственная студенческая практика 2013 года, посвященная разработке игр, что прошла в организации FOSS Labs.

Условия были следующими:
  • студенты, не имеющие опыта (или совсем крохотный опыт) в разработке игр объединялись в группы по 3 человека
  • с помощью Game Idea Slot Machine для каждой группы генерировалось задание
    • выбирались только проекции 2D и 3D
    • если команду не устраивал результат первой рандомизации, они могли сгенерировать задание еще 1 раз
  • 2 недели на разработку прототипа
  • строго рекомендуемое условие: использование VCS, давались некоторые инструкции и рекомендации по использованию Git и GitHub (хотя все равно находились те, кто считал, что они справятся и без VCS)
  • 10 из 14 дней (будние дни, ПН-ПТ) необходимо было проводить в офисе, минимум по 6 часов, включая перерыв на обед. По желанию, участники могли задержаться еще на пару часиков, а так же устраивать встречи по выходным

суббота, 31 августа 2013 г.

Как написать концепцию игры

Игровая концепция – это короткое описание игры. Она описывает цели игрока и и средства, с помощью которых эти цели будут достигнуты. Если описать только художественную часть, то концепция игры выглядит как сценарий. На самом же деле, геймплей описывается с помощью кусочков истории.

Например:
В "Trick or Treat", персонажи игрока оказались в ловушке лабиринта, старого дома с привидениями. Они должны сбежать из дома, уничтожая встречающихся монстров, избегая ловушек и решая загадки. "Trick or Treat" это игра жанра action, с видом от третьего лица.

Цель этого текста состоит в том, чтобы дать читающему понять смысл игры. Он должен отвечать на несколько основных вопросов:
  • Каковы цели игры?
  • Как можно будет достичь этих целей?
  • В чем будет сложность игры?
  • Где происходит действие игры? 

Коллективная разработка на Unity3D и GitHub

Данная статья рассматривает подготовку проекта
Unity3D к работе с GitHub на Windows.

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

Один из вариантов - это Unity Asset Server, однако для его использования, каждому пользователю необходимо купить Team License, стоимостью $500. По понятным причинам, это не является лучшим решением для начинающих команд и компаний с малым бюджетом.

Вторым вариантом, является использование бесплатных систем контроля версий, а Unity3D с некоторых пор, как раз таки начала их поддерживать во Free версии. По статистике, лучшим, на данный момент, себя показывает Git.

пятница, 30 августа 2013 г.

Unity3D.basic.Step_1 – Создание/Открытие проекта

 [<]назад[<] -- [^]оглавление[^] -- [>]вперед[>]

Терминология:

  • Ассеты (Assets) – ресурсы игры любых типов: файлы кода, текстуры, музыка, модели, шейдеры и т.д.;
  • Пакет (Package) – набор ассетов(в т.ч. различных типов), упакованных в один файл, для удобства процесса импорта-экспорта;
  • Проект – набор файлов, состоящий из ассетов, метаинформации, настроек и других данных, которые будут влиять на создание конечного приложения. В узком смысле проект – это файлы и свойства нескомпилированной игры;
  • Папка проекта – корневая папка, в которой находятся все файлы проекта.


После запуска Unity3D откроет диалоговое окно, состоящее из двух вкладок.

В первой "Open project" можно открыть готовый проект, выбрав из списка последних или нажав на "Open other..."

Unity3D.basic.Step_2 – Взаимодействие с окнами Unity3D

Терминология:

  • Сцена (Scene) – условно это игровой уровень. Это список игровых объектов находящихся в данный момент в памяти. Подробнее о структуре объектов читайте на следующей странице;
  • Камера – объект сцены, который выполняет роль настоящей кинокамеры. То что видит в пространстве камера, то и будет выведено на экран пользователя.


После того, как проект откроется, вы увидите рабочее пространство Unity3D, состоящее из нескольких областей:

Каждая область имеет свою иконку и название на вкладке в верхнем левом углу. Вы всегда можете переместить любую из этих областей в другое место.
В верхнем правом углу каждой области есть маленький символ стрелочки с выпадающим меню(это меню можно открыть и нажатием правой кнопки мыши по вкладке области), через которое область можно развернуть на все окно(Maximize), закрыть (Close Tab), либо добавить новую (Add Tab).

Unity3D.basic.Step_3 – Структура приложения Unity3D

Перед тем как приступить к созданию игры на Unity3D, необходимо понять каким же образом тут все устроено:

В основе всего лежит Игровой объект (Game Object, часто сокращаемый до аббревиатуры GO). Объекты следует ассоциировать с физическими объектами из реального мира.

Unity3D.basic.Step_4 - Создание и расстановка объектов

 [<]назад[<] -- [^]оглавление[^] -- [>]вперед[>]

Терминология:

  • Материал (Material) - это компоненты Unity3D, обеспечивающие связку шейдера с текстурами. Почти все компоненты прорисовывающие графику, принимают не текстуры, а именно материалы. Подробнее о материалах в конце статьи(чтобы лучше понять их смысл - посмотрите изображение в статье по ссылке);
  • Меш (Mesh) - "набор вершин и многоугольников, определяющих форму трёхмерного объекта". Проще говоря - трехмерная модель;
  • Рендеринг (англ. rendering — «визуализация») - превращение неких данных(даже не обязательно изначально графических), в изображение сохраняемое или выводимое, к примеру, на экран;
  • Спрайт (Sprite) - это не напиток, а "графический объект в компьютерной графике". Проще говоря картинка;
  • Шейдер (Shader) - программная инструкция видеокарте, о том как именно нужно прорисовывать картинки. Обычная текстура, в зависимости от выбранного шейдера, может оказаться размыта, деформирована или изменена намного более сложными алгоритмами, однако обо всем этом заботится шейдерный программист. Это редкий случай, когда необходимо писать свой шейдер, а не пользоваться готовыми.


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

четверг, 29 августа 2013 г.

Менеджеры в Unity3d, новый подход

Как я уже говорил в предыдущем посте, разработчикам использующим Unity3d, свойственно использовать игровые объекты в их сценах, содержащие компоненты, которые действуют, как синглтоны, не так ли?
Обычно нам нужно, чтобы этот игровой объект был на сцене изначально, чтобы мы успели провести инициализацию(например найти все нужные инстансы на сцене) и после этого он будет готов принимать запросы. Кроме того, хотелось бы, чтобы этот объект существовал все время, для этого мы можем вызвать DontDestoyOnLoad(this); в нем.

Файловое I/O в Unity3D

В настоящее время, не существует платформенно-независимого способа сохранения данных в Unity3D. Если вам необходимо открыть файл для чтения или записи, то нужно задавать правильный путь. Описанный ниже трюк будет работать на PC, Mac, iOS и Android:

среда, 28 августа 2013 г.

Первонах aka Hello World!

Окей. Переезжаю на новую блоговую платформу.
Теперь буду постить статейки и переводы сюда.
В основном о GameDev, IT и возможно немного личных оффтоп бредней..