Создание небольшого гейм-проекта для Asset Store

    Эпилог

    У нашей студии появилось свободное время, поскольку работа над основным проектом 3d MMORPG для мобильных платформ, в плане контента, была закончена.

    Пока программисты продолжают писать код для основного проекта, мы с остальной командой решили сделать мини-игру в стиле 3D FPS Tower Defense, с множеством ре-юзабильных объектов, и самого кода, то есть фактически Third-Person Shooter KIT. Штуку для разработчиков которую можно использовать, как Starter темплейт с кодом, или же просто использовать отдельные объекты для своего проекта или игры. Для разработки, как многие возможно поняли из названия, мы использовали Unity3d.


    Продакшн

    Идея появилась 07.12.2012, и по плану весь контент и код занимал 2-3 недели. Забегая вперед скажу, что мы практически уложились.

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

    Первой проблемой стал выбор стиля и графики, решено было делать более яркие цвета, разукрашивать все в Toon стиль, но без Toon-shading и других новомодных вещей. Количество полигонов 1000-1500 на модель, что как бы подходит для мобильных платформ и для инди-проектов, а так же для прототипов.

    В итоге получились довольно забавные и яркие персонажи, по два вида каждого: Zombie, Big-Mutant и Mutant больше похожий на зерглинга-динозавра, чем на мутанта.

    image

    Главный герой был выбран из двух вариантов: бугай с большими бицепсами и в майке как Serious-Sam и второй вариант Ranger в плаще, в стиле Fallout New Vegas: Ranger, Postal: Main Hero. В итоге остановились на втором варианте, и сделали его более мультяшным.

    image

    Подумали над названием, было понятно, что он не жертва, значит охотник, так появилось название Hunter, приставку X добавили потом, мы просто не знали, какое у него может быть имя. Мистер Икс, было самым очевидным. Так появилось и название HunterX –Third-Person Zombie Shooter.

    UI работа висела на одном программисте, поскольку он еще пишет код для основного проекта. На втором программисте висела работа по всему остальному A.I., Path-finding, Animation Parser, Particle Collision, Targeting, Behaviors, Wave manager, Spawn Manager, Scores, Animation и Sound синхронизация при помощи Event System, и конечно оптимизации этого всего.
    Конечно же были проблемы оптимизации и сложности в использовании очень удобных популярных модулей, и для чистоты мы написали мини UI management систему, которая хоть и ест больше draw call, но является независимым модулем. Так же были написаны парсеры анимации и так далее, что очень помогло при импорте моделей и проекта в целом.

    От себя добавлю что для UI конечно было бы разумнее использовать NGUI, но поскольку мы продаем Asset KIT, а не игру, было решено использовать свое решение.

    Для A.I., Path-finding были использованы бесплатные Assets от AngryAnt – Path, Behave, под них и была разработана вся система передвижения и поиска пути монстров. Конечно же, в Pro версии Unity3d есть более удобный NavigationMesh, но наш таргеттинг был на более широкую аудиторию, мы хотели, что бы наш проект поддерживал Unity3d Free.

    Параллельно шло создание всего контента, а это без малого:
    -Строения
    -Монстры
    -Главный герой
    -Автомобили
    -Дорожное покрытие, тротуары и бордюры
    -Оружие
    -а так же множество мелких вещей — знаков, ливневок, мусорников и т.д.
    -Анимации и UV
    -Партикл Эффекты и звуки
    -UI + шрифт

    Ура, релиз!

    Первый полностью рабочий билд под Unity3d 3.5 появился как раз 29.12.2012, с рабочим, правда немного кривым кодом и парой бессонных ночей, но, к сожалению или счастью получили reject. Поскольку проект не компилировался под Unity3d 4.0.
    В срочном порядке пришлось исправлять баги, но проект упорно не хотел подходить под Unity3d 3.5 + 4.0 одновременно, в итоге было принято волевое решение паблишить на Unity3d 4.0. Что мы успешно и сделали, прошло несколько недель, и позавчера, то есть 17.01.2013 мы получили долгожданный аппрув. К этому моменту мы уже сделали более новую версию, где провели полную оптимизацию кода с комментариями, она кстати будет доступна в ближайшем обновлении.



    Послесловие

    От себя хочу добавить, что игрушка получилась довольно забавной, монстры сильные и не дают расслабиться, игровой процесс понятный и легкий.
    Несколько видов оружия: кулаки, катана, шотган, ак47. Постоянно прущие монстры, которые нападают на ларек с хот-догом или главного героя, что, кстати, зависит от действий главного героя, и довольно не плохой контент.
    Все это получилось в команде из 6 человек за четыре полные рабочие недели. Честно признаться, мне казалось это нереальным, но оказывается что Unity3d и правильный рабочий workflow, а так же слаженная команда могут творить чудеса. Для людей, которые будут покупать этот KIT, возможно будет более легко обучиться каким-то вещам в Unity3d или создать что-то свое на этой платформе.
    Спасибо за внимание. На вопросы с радостью отвечу в комментариях.

    P.S.: После долгих раздумий в итоге решили выпустить игру, так что кроме ассета скоро появится и полноценная игра основанная на нем.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 13

      0
      А что за глюк в конце ролика?
        0
        Да, не пояснил. Цель аттакующих разрушить будку или убить главного героя, тогда высвечивается надпись Game Over. Справа находится жизнь будки, слева жизнь главного героя.
        +1
        Никогда не понимал, зачем выкладывать в ассет стор полностью готовую игру? Отдельные модельки, шейдера — понятно, какой-нибудь упрощающий жизнь разработчику плагин или скрипт — отлично. Все равно скачавшему человеку игру надо будет тотально перепилить под свои нужды и сделать его совершенно непохожим на старый. Я, как разработчик, имеющий про лицензию, ngui и playmaker и прочие плагины, без которых тяжело писать быстро и качественно, должен буду перепилить почти абсолютно все, оставив разве что модельки.

        Не лучше ли выкладывать все по частям?

        Да, какое у вас лицензионное соглашение? Можно ли использовать отдельные ваши части в своих проектах?
          0
          Конечно, для этого и делали, все ассеты и модели можно и нужно! :) использовать в своих проектах. Кроме перепродажи самих моделей или кода конечно же.
          Идея была очень простой — сделать модели, и небольшой геймплей, для хорошей темплейт-заготовки. Очень многие начинающие девелоперы сталкиваются с отсутствием места откуда начинать. Например вы используете PlayMaker и это хороший use case в данном случае, весь воркфлоу готов, осталось его разобрать и добавлять что-то свое. Как вы понимаете, вы уже можете работать с графикой-анимацией и сразу поймать все проблемы которые могут вам встретится когда вы делаете проект с нуля. Плюс сейчас мы максимально оптимизировали и описали код, так что в ближайшем обновлении это тоже будет доступно.
          0
          А зачем делать Animation Parser? В юнити то вроде все есть, форматы поддерживаются.
            0
            solver,20 января 2013 в 03:29# А зачем делать Animation Parser? В юнити то вроде все есть, форматы поддерживаются.

            Так как аниматору удобнее делать анимацию в одном треке, анимацию при импорте надо разбивать анимацию в Unity3d. Так как мы привыкли работать с большим количеством анимаций, разделение анимации при импорте каждой модели становиться проблемой. В результате когда аниматор создал все анимации, он записывает кадры и названия в CSV файл из которого в свою очередь данные считывается при импорте моделей.
            Наша игра в большой степени основываться на анимационных ивентах.
            Проигрывание звуков ходьбы, нанесение урона при ударе, вызов particle effects при выстреле, все эти действия планировалось проигрывать в идеальной синхронизации с анимацией. Так как использование простых задержек это не вариант, мы решили использовать AnimationEvents, которые поддерживаются в Unity. Если вы сталкивались с имплементацией вышеупомянутых AnimationEvents, вы знаете сколько времени уходит на прописывание их используя стандартный Unity3d GUI. А что если моделей не 2-3 а 10, 20, 30. Мы решаем эту проблему тем же самым способом что и разделение анимации, и прописываем кадры event прямо в самой таблице анимаций. Кадр в котором должен быть проигран звук или вылететь particle, вписывает аниматор. Кстати events тоже ограничены в своем функционале и наша система анимационных событий очень расширена и соответствует всем требованиям выдвинутым нами, для достижения абсолютной синхронности анимации и всех событий связанных с анимацией.
            В результате мы имеем полностью автоматизированный процесс(aka workflow) для максимально эффективного взаимодействия аниматоров и программистов.
              0
              Вы используете систему контроля версий? Если да, то как работаете со сценами и префабами Unity3D?
                0
                Да используем. Скрипты и префабы надо обязательно заливать с метафайлами. Сцены тоже можно заливать, но мы это не делаем(хотя наверное зря). Почитайте про роль метафайлов в юнити.
                  0
                  Метафайлы и текстовые сцены включили, но как мерджить конфликты так и не поняли. Пока просто разделили работу со сценами и префабами на уровне комуникации — «Я взял мейн сцену!». Но с этим как то тяжеловато)
                    0
                    Зачем часто перезаливать сцену?
                    Префабы надо заливать вместе с их метой и вместе с скриптами и метой.
                      0
                      Видимо у нас разный процесс.
                      Я создал сцену, добавил в нее объекты с префабов. А на следующий день мне нужно добавить в сцену ещё несколько объектов из новых префабов. Параллельно, другой разработчик удаляет уже не нужный объект из сцены. В итоге сцена меняется у обоих если оба сделают commit(или push для git) один из них получит конфликт в файле сцены. А сцена хоть и текстовая, все равно хранит не читаемые идентификаторы объектов и не понятно какой объект был добавлен какой удалён…
                        0
                        Префабы надо заливать вместе с их метой и вместе с скриптами и метой.

                        Так и делаем, но там подобная сцене ситуация есть идентификаторы и положение объектов в пространстве глядя на diff которых в нельзя понять какой вариант актуальный…
                          0
                          Хм, со сценой может работать только один человек, т.е. в любое время есть только одна верная версия.

            Only users with full accounts can post comments. Log in, please.