Буду рад, качайте на здоровье.
Yood19, да, в игре представлены 12 уровней (правда не очень большие во избежание тормозом), + есть уровень, где нужно управлять грузовиком и уровень, где управлять космических кораблем главной героини.Добавлено (28.03.2013, 22:19)
---------------------------------------------
Решил описать, как я делал Derrek Quest 5 и с какими проблемами столкнулся в процессе разработки.
Модели:
Итак, по плану мне нужно было создавать ландшафты стандартными средствами Unity3D и размещать на них объекты. Начал я с тестовой локации с простым ландшафтом, деревьями, травой, озерами и прочим. Эта локация потом переросла в уровень номер один.
Постараюсь рассказать на примере зданий. Запускаю 3Ds Max 2013, создаю в нем модель дома, базы, корабля или подземного уровня. После наложения текстур (никогда не использовал UV-развертку, только текстурировал примитивы), экспортирую готовую модель в FBX формат. Далее следует импорт в Unity со всеми текстурами. В импортере движка выставляю generate colliders, для автоматического создания коллизий с игроком и другими объектами. Здесь я сделал себе одно замечание. Если модель высокополигональная, например, как автомобиль, то автоколлизию лучше не выставлять, а добавлять компонент bpox collider. Стало быть модель для обработчика коллизий будет квадратная. Если этого не сделать, то при столкновении с такой моделью, процессор задумается надолго, к какому именно полигону применять столкновение. Возникает вопрос, как тогда же быть с подземными уровнями, целиком созданными в Максе? Оказалось все просто: уровень не надо заполнять мебелью и прочим барахлом прямо в максе, а создавать отдельные объекты для них и вставлять прямо в юнити. Тогда обработчик столкновений реагирует вполне приемлимо. А еще лучше, как я понял, создавать отдельный объект для каждой комнаты или корридора.
Ко всем физическим объектам применил компонент rigidbody, выствил вес, материалы, гравитацию и вуаля, юнити прекрасно справляется с эмуляцией физических законов.
Spore не игра, но 3D редактор? Collada export, нужен ли он?
Да, я использовал Spore для создания нескольких зданий и основного космического корабля главного героя. Всем известно, что в новом патче споры, существует возможность с помощью консольной команды colladExport создать DAE файл модели существа. Но только существа! Кроме того, для нормального импорта такой модели в макс потребуется много "ленивых" действий. А как тогда быть с техникой и зданиями? 3D Riper прекрасно справился со своей работой. Однако его нужно запускать только в режиме трея, иначе spore напрочь виснет. В итоге я получаю OBJ модель, скажем, автомобиля. Импортирую в макс и... ужас - не модель, а расплюснутая коровья лепешка. Здесь следует аккуратно поудалять все лишнее, пока лепешка сцены не превратится в лепешку нужной модели. Затем изменяем scale на 75% с двух сторон и... вот она! Целенька и аккуратная модель у нас в максе. Особенностю граба 3D Ripper является то, что он распределяет модель на объекты, которые можно легко выкрасить прямо в маске (и без UV-развертки).
Итак, модель легко конвертируется в FBX и вставляется в Unity. Это как раз тот случай, когда нужно высталять box collider, вместо generate colliders в импортере FBX Unity.
Диалоги и NGUI:
Диалоги в рятом Дерреке я реализовал при помощи обычного триггера, выведенного из куба. Т.е. при заходе игрока в зону триггера, на экране появляется картинка с заготовленным заранее текстом. После выхода игрока из зоны триггера, картинка исчезает. Так и подавал сюжет. NGUI пришлось доустановить и использовать его исключительно для отображения патронов и жизней.
Анимация и лифты:
Я столкнулся с проблемой импорта аниамации с FBX модели, когда писал эту игру. Сейчас уже разобрался, но тогда решил эту проблему следующим способом. Я создавал анимацию лифтов, летающих кораблей и прочей массовки прямо в юнити. Это неудобно, но для лифтов самое оно. Понравилось, что создание анимации схожа по принципу с тем, как это делается в максе. Т.е. например, создать автобус, который приходил бы на остановку, ждал пару секунд, давая игроку время сесть в него, и отправлялся бы далее, совершенно не составило труда.
Оружие:
В Derrek Quest 5 есть два вида оружия. Один бесконечный медленный, второй быстрый, но конечный. При нажатии на кнопку выстрела, в координатах ствола создается объект пули, направленный по оси Х оружия и разогнанный на определенную скорость. Во время полета пуля мониторит свою коллизию с коллизией врага, при положительном результате отнимает у него жизнь и самоуничтожается через пару секунд, давы не заполнять карту всякой мелочевкой. Пуля имет вес, скорость и подчиняется всем законам физики. За что юнити еще одно спасибо.
Враги:
Каждый враг имеет определенную зону обзора, радиус обзора, угол обзора, при котором он запускает скрипт атаки. Враг напрявляет свою рожу с определенной скорость в сторону плеера, двигается в его сторону до зоны выстрела, останавливается и генерит пули в сторону игрока. Враги имеют жизнь, вес, скорость, атаку и прочие мелочи. Важно, что для врагов обязательно нужно создавать box collider (ну или sphere), вместо generate colliders. Как только жизнь врага становится <= 0, он уничтожается, разбрасывая при этом кишки, детали, кровь "или что у них есть, еще там" М.Влади ©.
Звук:
Звук летает вместе с пулями, врагами и игроком. Музыка бэкграунда тоже висит на игроке как источник и двигается вместе с ним, во избежании непонятных глюков юнити со звуком. Знаю, что есть другой, более профессиональный способ, но тогда я его не нашел.
Музыку писал в Guitar Pro, драм-партии создавал в Dance Ejay, эффекты делал в Fl Studio, и сводил все в Audacity. Всю музыку писал сам лично.
Звук из лого записывала моя жена на простой микрофон в том же Audacity.
Освещение и скайбоксы:
Проблема с освещением была только одна. Оружие игрока отбрасывало тени, а это выглядело со стороны так, как будто эти самые оружия летают сами по себе (что по сути и есть правда, так как игрок - это невидимая капсула). Решить проблему удалось довольно легко: я создал специальный слой (layer) для тех объектов, тени которых не нужно создавать солнцу и лампам. В настройках теней объектов освещения просто выключил этот layer.
Для создания скайбоксов использовал программку Skybox Maker - очень милая и удобная, рекомендую.
Сохранение:
Впервые решил не делать сохранение и открыть доступ ко всем уровням, кроме последнего - победного. Игроку нужно посетить и пройти каждый из восьми начальных уровней, чтобы попасть в последний. Для такой стрелялки как деррек 5, этот вариант подошел отлично. Конечно, для РПГ это не приемлимо.
Видео в 3Ds Max:
Видео делал стандартным средством макса make preview. Выставляем разрешение, настраиваем камеры, создаем простую анимацию и, все гениальное просто, получаем отличнейший видеоролик. К слову, вместо бэкграуна ставил огромный примитив plane и выкрашивал его в текстуру неба или чего там еще...
На чем писал:
Несмотря на то, что в Unity есть возможность писать на Java Script и на C Sharp, я старался выбрать что-то одно. Это связано с тем, что глобальные переменные разных языков не распознаются друг другом. Так что, мой быров C#. К слову, для глобальных переменных использовал невидимый объект CsGlobals с приклеенным к нему скриптом с объявлением переменных, таких как жизнь, патроны и прочее.
Конечно, многое я не описал, нюансов было миллион, спасибо за внимание.
Добавлено (31.03.2013, 18:45)
---------------------------------------------
ВНИМАНИЕ! Новая ссылка на игру: http://yadi.sk/d/AB-va1ma3g6QD