вторник, 19 марта 2013 г.

Небольшой апдейтик

Нет, я все еще жив, и все еще работаю над своими проектами.

Отличительный процесс: создание нового PH персонажа, для моих и не совсем игр:


Да, я сделал его в MakeHuman. Риг пришлось доделывать, IK костей небыло, впрочем это не заняло много времени.
Лицевой риг шел в комплекте, да вот только он на шейповой системе. Т.е. в Unity он не будет работать.
Документация SCP-470 закончена, провожу GL тесты (рисования линий в редакторе). Нехватает опыта чтобы сразу взять и сделать сложную генерацию уровня. В принципе система такая:
  • Сначала по заданому объему (boundary box) расставляются блоки. На начала генерации все имеют тип EMPTY
  • У каждой модели есть свои объем занимаемых блоков (к примеру у моей тестовой стены 16 блоков). некоторые модели имеют не квадратную форму (проломы), поэтому такая система имеет смысл
  • Генератор определяет потолок и стены исходя и объема. Все нужные блоки получают тип WALL и FLOOR соответственно. Кроме того комнаты помечаются особыми флагами (к примеру "комната из завода", "комната из дома будущего" и т.д.). Разумеется есть множество других типов блоков, но я не буду всех их рассписывать
  • На следующей фазе он начинает размещать модели, исходя из расстановки блоков и флагов комнат. К примеру возле комнаты из будущего он будет размещать только модели стен из будущего (ваш КЭП). В зависимости от рандома и обстановки будут размещаться некоторые детальные объекты (стена с дыркой, куча мусора, пролом в потолке). Все действия согласуются с блоковой системой.
  • Лестницы скорее всего будут в виде большой прямоугольной области. Лестничные области будут вычисляться в первую очередь, поскольку они являются ключевой частью геймплея.
  • Третия фаза: исходя из флагов комнат, начинается спаун пропмоделей. Скорее всего флаги уже будут содержать информацию о типе комнаты (например "класс") и спаунить соответствующие модели из заготовленого enum'а. В корридорах иногда будут спаунится модели общего типа и корридорного. В основном это будет сломанные (или не сломанные) батарей отопления, всяческий мусор и прочая шняга.
  • Четвертая фаза: Расставляем свет. Ну как. За зданием работает "солнце", что немного облегчает работу, но около каждого окна надо ставить волюметрический источник, just for beauty. Большинство лампочек в SCP будут либо разбиты либо просто не гореть, но.... бывают исключения. В принципе эта фаза короткая, поскольку большей части работает с волюметрическим светом и партиклами.
  • И наконец пятая фаза, и пожалуй одна из самых сложно реализуемых. Старая версия уровня плавно перетекает в новую. Все дело в том, что предыдущие фазы вычисляются за кадром в отдельном потоке, который имеет низкий приоритет (по сравнению с игровым потоком). Когда вычисление закончено, то срабатывает скрипт, который врубает пятую фазу. И она должна работать RealTime и желательно не вешать компы вусмерть. А сие не так просто.
Еще существует тысяча и одна мелочь (к примеру я совсем не рассказал о записках, декалей на стенах, обитателях сия строения и много другого). Сюжет.... возможно он даже будет :D . Я уже придумал 4 историй что произошли в стенах SCP-470, но к финалу я там нафантазирую гораздо больше. Учитывая что при моей системе регистрировать новые модели или декали будет просто, то на фантазию я скупится не буду. 
Еще проблема - генерация NavMesh риалтайм - тоже болезненый процесс. И без глюков и приколов не обоидется. LightMap мне юзать нельзя, но хорошего света хочется, поэтому буду долго фигарить шейдеры, пытаясь сделать виртуальный свет на моделях.
Пока что все. Генерация и смена уровня realtime - не единственная фишка. Но подробнее вы узнаете попозже. 

Комментариев нет:

Отправить комментарий