Tactic Handler - держи файлы в порядке
о было два года назад. Решили мы втроём мультик запилить. И мой кореш подумал, что надо бы что-то для упорядочивания файлов сделать. Тулзу, наподобие студийной. А то ведь мультик - дело непростое и комплексное, файлов будет много и за ними надо как-то следить и всячески держать в порядке.
Мультик похоронили, когда второй товарищ уехал и вообще с ним как-то не заладилось. Но то совсем другая история. А вот первый кореш оказался не пальцем деланный - сел, и начал пилить тулзу. Зовут его Леша.
Поначалу я не очень обращал внимание на то, что он там пишет. Хотя мы обсуждали это дело, кто как видит и все такое. Пока для меня это было на бумажке, то заинтересованность была средняя.
Но шло время, и Алексей добавлял потихоньку функционал. И однажды закинул мне билд потестить. Я потестил. Аппетит пришел во время еды. Я на деле увидел потенциал этой штуки и начал пользоваться ею дома. Так я стал тестировщиком Лешиной тулзы. Ну и по связям с общественностью, заодно. И с тех пор заваливаю его хотелками и переделками, которые он терпеливо впиливает. За что ему большое спасибо, ибо теперь без этой тулзы я свой рабочий процесс просто не представляю. Итак, Tactic Handler!
Что такое, этот ваш Tactic Handler?
TH – GUI, основанный на xmlrpc api Тактика. Другими словами, это диалоговая оболочка для работы с базой данных опенсорсного Тактика. А сам Тактик — это фреймворк, написанный на питоне, который нужен тем, кто хочет организовать свою работу, или работу своей конторы, вести задачи, организовывать файловые архивы, вести учет рабочего времени, переписку и т.д. Сам Тактик управляется на сервере через веб интерфейс. Для сижи-артиста ворочать этим неудобно. А для вашего удобства и есть Tactic Handler.
Не понял. Так это не просто скрипт, типа установил, открыл и работаешь?
Нет. TH не завязан на какую-то программу. Он может быть и стендэлоном. С помощью него юзер коммитит (делает записи в базу данных) абсолютно разные файлы из разных программ, с которыми ему приходится рабортать, исходя из пайплайна.
А что нужно, чтобы это юзать?
Вам понадобится сервер, небольшие знания тактика, чтобы сделать шаблон проекта и сам клиент. Сервер может быть и локальным. На нем запускается тактик и хранится база данных. По сути, надо скачать тактик-сервер с сайта тактика, запустить его и закинуть в него шаблон проекта, над которым вы планируете работать. Шаблон, в свою очередь — это схема проекта, весь ваш пайплайн. Т.е. в нем как бы задаются правила, как будут называться файлы, какие процессы будут задействованы (моделирование, текстурирование, композ и т.д.), какие ассеты в нем планируются (props, chars, sets и т.д.). Вобщем, шаблон — это структура проекта, его скелет.
Блин, сложняк. А не проще просто по папочкам файлики вручную сохранять?
Нет. :) По крайней мере за те полтора года, пока Леша пишет, а я тестирую, я для себя с уверенностью это решил. Тем более суть не только в сохранении файлов, а в том, чтобы помнить, где и какая работа велась. Давайте я на примере работы с одним пропсом вам все покажу подробнее и с картинками.
Итак, так выглядит Tactic-Handler.
Сверху можно видеть нескрытые табы блоков проекта, которые тянутся как раз из заранее созданного шаблона. Это то, как мы с Лехой видим структуру комплексного проекта, исходя из работы над подобными вещами в студии. Естественно, каждый в будущем сможет сделать свой шаблон проекта в самом тактике в админке. К сожалению сейчас, как по мне, обычному юзеру непросто будет разобраться с этим шагом. В будущем планируется добавить функционал редактирования шаблона через диалоговое окно, чтобы было доступно всем без особого напряга. Кстати, даже если уже есть начатый проект, под него можно собрать шаблон и править его по ходу дела.
Слева внизу можно разглядеть два таба - это открытые проекты. Можно переключаться между разными проектами (которые могут иметь разные шаблоны) в любой удобный момент. Или скрыть все и оставить только один проект, над которым идет работа.
Так же есть диалоговое окно разбито на три главных части. Но все настраивается и перетаскивается индивидуально. Все блоки плавающие. Слева — список ассетов (в данном случае я открыл пропсы, но это также может быть что угодно: аниматики, сцены, текстуры, сборные локации или сеты). В данный момент "развернут" пропс Opel Blitz. Это грузовик, который я когда-то моделил для себя. У каждого ассета есть свои процессы. Мы решили, что для пропса эти процессы будут: Reference, Sculpting, Modeling, Texturing, Render, Geometry, Rigging. Они отражают этапы работы. Все говорят сами за себя, лишь Geometry было впилено, чтобы коммитить экспортированную геометрию. Бывает ведь, что нужны разные версии обэжэх или чего другого, что есть геометрия.
Остановимся тут ненадолго. Любой процесс может быть разбит на субпроцессы. Ветвление неограничено. Но нафиг кому такое надо будет? Мы решили тормознуть на одной вложенности. К примеру, процесс поиска и сбора референсов (Reference) имеет субпроцессы: Pics (для коммита туда просто разных картинок по сабжекту), Sketches (это если художник спецом нарисовал картинку с конкретным ТЗ) и Blueprints (для коммита чертежей по объекту).
Sourcetex и Textures в данном случае — это своеобразные типы объектов в самом тактике. Их вы могли видеть отдельными табами на первом скрине. В Textures, к примеру, можно создавать отдельные параллельные процессы, над которыми могут работать несколько человек, где каждый будет решать свою задачу. Один рисует текстуры для целого грузовика, другой - сгоревшего. Соответсвенно, в этом типе Textures есть две записи: Clean и Damaged, к примеру. И результат их работы в виде текстурных файлов путем коммита через скрипт попадает в папку именно к этому пропсу. Понимаю, сложно понять на словах, но я хотел бы просто описать в общих чертах возможности скрипта, чтобы у вас было примерное представление о том, как с ним можно организовать свою работу. Так это выглядит:
И в самом пропсе существует линк Parent-Child, где Parent - пропс, а Child - процесс текстур.
А так, к примеру, выглядит нынешний фриланс Алексея. Это детский сериальчик. Организовал он его следующим образом: (картинка удалена, извините)
Эпизод разделен на шоты. В каждом шоте свои процессы и версии файла.
Прежде чем работать с ассетом любого рода, его надо создать. Диалоговое окно создание ассета может выглядеть иначе для разных видов ассетов. Для пропса оно выглядит так.
В дальнейшем можно вести поиск по ключевым словам, по имени и другим параметрам. После создания записи в базе данных, скрипт так же создает структуру там, где вы указали быть проекту. И после все файлы при коммите будут сохраняться в соответствующие папки автоматически.
На процессе Modeling хотел бы раскрыть некоторые подробности организации файлов и записей. Информация ниже относится к любому процессу.
Тут мы видим, что юзер может создать версии своей работы, добавляя контекст при коммите. В данном случае в специальное поле context я добавил следующее: lowpoly, sketchfab01, blocking. Т.е. тем самым я разделил свои майские файлы, т.к. в одном файле у меня геометрия для скетчфаба, в другом начал делать лоупольку, а в третьем был блокинг. И чтобы все в куче это не держать, я разделил это на такие своеобразные этапы, которые преследуют разные цели.
У каждого такого файла есть версии. Они как раз отображаются в соседней части окна, посередине:
Нейминг задается автоматически. Настраивается все в админке Тактика. Если при сохранении создается новый файл, то это версия и она подписывается как Ver.###, если пользователь пересохраняет имеющийся файл, то к версии добавляется пометка Review.### с возможностью оставить новый комментарий, чтобы потом знать, что было сделано при сохранении. Камент писать не обязательно. Local говорит о том, что файл сохранен в локальной директории. В префах скрипта можно указать разные пути, к примеру, для сохранения на сервер или себе на компьютер. Это сделано для командной работы, чтобы у всех был доступ к файлам. Из плюшек - каждый раз делается снапшот, что мне очень нравится.
Справа выводится информация о всех файлах по конкретной записи (по конкретному контексту), также окошко с дескрипшном, который можно поправить или просмотреть полностью, если там много букв.
Drop Plate - крутая штука для коммита извне. Т.е. вы можете закоммитить абсолютно любые файлы, секвенции, юдимы и т.д. Дроп плейт считывает поступающую инфу по своим правилам и распознает, что именно вы хотите ему скормить.
Лично я пока только коммитил брашевские и мудбоксовские файлы. Очень удобно иметь историю и описание своей работы, чтобы вернувшись к ней позже, сразу понимать что к чему.
Сейчас скрипт потихоньку развивается, и в будущем планируем добавить много чего полезного, попутно допиливая то, что есть. К примеру, форум по каждой задаче, где можно будет предметно общаться, назначать исполнителя и всякое такое.
В этой статье я постарался дать краткую информацию о Tactic Handler'е (думаю, можно назвать его проджект-менеджером), над которым сейчас плотно трудится Алексей и скромно помогаю я :)
Спасибо за внимание. Если есть какие-то вопросы, спрашивайте! С удовольствием будем в каментах на них отвечать. Думаю, сам разработчик подключится, чтобы не было глухого телефона. Также скрипт уже можно качнуть бесплатно и подписаться, если вы видите в этом потенциал: https://github.com/listyque/TACTIC-Handler