Another Way — LFS, Multi User и текущий прогресс инди Action/RPG

image

Всем привет! Прошло немногим больше месяца и по традиции я спешу поделиться прогрессом нашей авантюры, серии под названием «Через тернии к игре мечты». Хочу напомнить, что же тут происходит. Мы разрабатываем игру Another way — Нелинейная Action/RPG от третьего лица с элементами интерактивного кино, выполненная в лучших традициях средневекового Fantasy, на базе собственной вселенной. Разработка ведется на Unreal Engine 4 усилиями небольшой, но очень вдохновленной команды.

Предыдущие части этого длинного, но безумно интересного пути вы можете найти у меня в профиле.

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

w2zxg84-uhynt7wr51ssbnt_1ec.jpeg

В этот заход решались многие организационные вопросы, среди прочих был вопрос совместной работы над проектом. Для хранения репозитория мы используем гитхаб с подключенным Git LFS. Здесь, для тех кто хотя-бы раз пользовался GIT для версионирования, не будет никаких сюрпризов, за исключением дополнительной установки GIT LFS (Large File Storage). Также, по желанию, можно установить дополнительный GIT LFS плагин в сам редактор Unreal Engine. По-умолчанию Github не способен хранить столь большие проекты (50GB+ на данный момент), поэтому за каждые дополнительные 50 гигабайт трафика или места на диске необходимо отдавать дополнительные $5.

Казалось бы на этом всё, победа. Но открытыми оставались вопросы совместной, единовременной работы и merge конфликтующих карт. Для локальной команды работающих из одного офиса все было бы куда проще, включая собственное железо в качестве сервера и использование Multi User по-умолчанию в локальной сети.

После небольшого ресерча и бесполезных попыток использования p2p сетей было найдено единственное упоминание рабочего варианта с использованием Softether VPN Server. Приобретен VDS с очень скромными характеристиками, достаточными для того чтобы поднять на борту Ubuntu и виновника торжества Softether, максимально развернутую инструкцию по настройке можно найти здесь.

На клиенте устанавливаем Softether VPN Client и подключаемся к удаленной машине с реквизитами которые мы настроили ранее.

ajr-tes9rbsz0dr7ainvxamoaas.jpeg

Примечание: При настройке клиента необходимо установить галочку в Advanced Settings: No Adjustments of Routing Table, иначе на машине пропадает интернет и будет доступно только локальное соединение с VPN сервером.

dqslmzigiib7dvfnozihpbjfede.jpeg

В самом Unreal Engine необходимо предварительно включить плагин Multi User Editing и перезагрузить редактор.

9221yumugypix6uuswhikfngks8.jpeg

После чего в настройках указать полученный локальный VPN адрес.

Примечание: в конце всегда идет :0 для прослушивания порта по-умолчанию.

9oap0lgfvhmj8iluun7ozzayrwo.jpeg

Итоговый пайплайн выглядит примерно так: хост открывает сессию, пользователи присоединяются к ней. По завершению работ пользователи покидают сервер, хост коммитит изменения и заливает. Все клиенты синхронизируют состояние локальных репозиториев (pull/fetch). В совокупности это позволяет полностью избавиться от проблем с отсутствием возможности адекватно мерджить конфликтующие изменения, уменьшить используемый трафик LFS и позволяет вести совместную работу над проектом. Более подробно о работе Multi-User Editing можно почитать в самой документации Unreal Engine.

Разумеется все описанное не более чем личный опыт. Меня все время не покидает ощущение что мы изобретаем какой-то велосипед, и наверняка есть что-то удобнее для подобного формата работы удаленных команд в рамках работы с UE4, а возможно и нет, даже если есть, к сожалению, мне они неизвестны.

Как я уже и говорил ранее, команда значительно выросла как качественно, так и количественно, если ранее было достаточно передавать документацию посредством личных сообщений и общения, то для масштабирования нам нужно было привести это в единый формат. Jira — удобно для тех кто работал с ней ранее, дорого и слишком объемно для наших целей. Asana — еще один монстр. Trello — хороший и простой канбан боард и наконец HacknPlan — открытие, которое подвернулось под руку в тот момент когда это было действительно нужно.

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

keiv5vlnrsod7fjpo6wmqlhcobc.jpeg

И что более интересно, создавать задачи прямо из каждого отдельного элемента дизайн документа. А далее стандартный набор хорошего issue tracker, логирование времени, линкование задач, назначение пользователей, прикрепление файлов и изображений удобнейшая канбан доска по категориям и многое другое.

0mjb_mz2qu_93lwiuekhwzr45yc.jpeg

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

Мы как и прежде уделяем большое внимание деталям, поэтому референсы для пропсов приходится искать в самых разных местах, так как отрисовывать все в 2D не представляется возможным. Но на выходе получается довольно интересно.

nceqwfhrjni2dw1_mgp93gpxpmi.png

ilvdxragfmxstzt_ynh2md1delm.jpeg

3h0ysg5esw0crivsbmelszjw3rq.png

Но иногда отрисовывать просто необходимо, и тогда получаются неплохие референсы для будущих 3D моделей

2-oumefv3dfdm6zn8khmjqkowjm.jpeg

В прошлый раз я показывал наработки концепта главного героя, с тех пор он приобрел финальный вид.

jgw3ti_vgmzd3ro81w7lqhlmyfq.jpeg

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

oii9rga5rn8fyc5fhzce6bzirak.jpeg

vyicpow9hrqyu-qlnpctxpnrsly.jpeg

Те, кто успел познакомиться с прологом, могут вспомнить дочь Рогира — маленькую девочку Ниалу, которая является одним из самых ключевых персонажей.

nnc-o6m20xcsqlspycriharxe9y.jpeg

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

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

9g-zo3xecvaughugnhfe3vwjqhq.png

Морское чудо-юдо  — практически никто не возвращался живым после встречи с ним, или его марионетками — прекрасными девами, которые манят своей красотой изголодавшихся морских волков.

ulgqh2dq4g-duazteujzr5w_bio.jpeg

Наш мир состоит из множества разных территорий, и к каждой из них мы относимся с особым трепетом. Поэтому мы начали прорабатывать определенное настроение разных локаций. В данный момент в работе Мармид — место с которого начинается наше приключение, его цветовую палитру вы можете наблюдать на всех прошлых и текущих скриншотах. И недавно мы начали отрабатывать настроение леса тысячи теней.

4ahokpf0chb-s020vs-0t_gnmjo.png

bpxndh-4i0g4alke75kawe0n5z8.png

Помимо визуального, нарративного и геймплейного восприятия — огромную важность играет звук, уже сейчас у нас есть общее представление картины будущего звучания и наработка по главной теме Another Way.

Я как и прежде буду рад вашим вопросам, комментариям и мы все еще ждем вас в нашем сообществе Вконтакте в любое время. Закончить я хочу видом на озеро, где-то возле лесопилки деревни Мармид. Всем спокойствия и умиротворения.

2e9wvvhlfr0kcnfdvnavlmqnaai.jpeg

© Habrahabr.ru