WarCraft 3: Организация командной работы над проектом

» Раздел: Основы

Введение

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

Решение

Теперь немного отдалимся от темы WC3. Давай те подумаем какие средства есть для упрощения работы в команде. Мне на ум приходит только система контроля версий (SVN, GIT). Что это такое? А это специальные системы, которые отслеживают изменения содержимого файлов, ведут счет ревизий, а так же предоставляют обширные возможности для работы в команде. Все это называется репозиторием.
Представим типичный простой проект на java, например. По стандарту надо создавать отдельный файл для каждого нового класса. Ну вот допустим, несколько человек работают над проектом, каждый пишет свой класс, дальше он подтверждает изменения и его измененный файл отправляется на репозиторий - это хранилище для всех изменений проекта. Другой обновляет свои файлы и так же работает. В принципе у каждого получается своя рабочая копия, но каждый раз перед началом работы, вы её обновляете и после окончания работы (или во время работы, лично я это делаю в конце рабочего времени) подтверждаете изменения.
Таким образом все участники проекта имеют доступ к последним версиям файлов проекта. Надеюсь теперь понятен принцип данных систем. Теперь расскажу, что хорошего в системе помимо удобной работы в команде:
  • в любой момент можно получить доступ к нужной версии файла
  • система логирования
  • возможность ответвления проекта (например для глобальных изменений или выхода в новый проект)
Вернемся к нашей проблеме. Одна карта. А система хорошо работает только для большего количества файлов. Но постойте ка, что такое карта в WC3? А это архив. Вы уже поняли мою идею? Нет? Так вот, распаковываем карту и получаем все файлы, которые нужно отслеживать и пользуемся репозиторием.
А как же работать со всем этим, когда редактор может работать только над цельной картой. Поэтому перед подтверждением мы распаковываем карту с файлами, а перед началом мы её собираем и работаем с ней. В ручную это делать не приятно, поэтому надо все это дело автоматизировать.

Как работать

Теория конечно это хорошо, но практика лучше. Теперь приступим к практической части. Сперва нам необходимо установить нужный софт. Лично я пользуюсь TortoiseSVN, но никто не запрещает использовать git, поэтому смотрите и выбирайте чем удобно вам пользоваться. Так же нам потребуется небольшой консольный архиватор, для того чтобы упростить процесс сборки\разборки карты mapbuilder. Предположим, что клиент для репозитория готов. Дальше вам нужно выбрать где будет храниться ваш репозиторий. Можно использовать локально, или же разместить на каком либо внешнем сервере. По скольку у меня есть свой личный сервер, то у меня не возникает ни каких проблем с вопросом о размещении таких вещей, а вот вам придется либо хостить на своей машине или использовать codeplex. Для git'овцев можно использовать github, да и вообще можете сами поискать, ниже будет как поднять свой svn сервер. Заходим на наш аккаунт, создаем новый репозиторий, добавляем участников и устанавливаем им права.

Дальше надо связать папку в ФС с репозиторием. Для этого откройте проводник и нажмите правой кнопкой мыши в свободном месте и выберите пункт "SVN Checkout...". Появиться такое окно
  • URL of repository - путь к вашему репозиторию, например 192.168.1.100/svn/test
  • Checkout directory - папка репозитория
Дальше клиент потребует авторизоваться. И если все пройдет успешно то появиться папка с именем вашего репозитория, у меня это "test". Дальше закидываем туда какие угодно файлы, карту, документацию и помните, что правильная структура файлов залог успеха ведения проекта. Дальше создайте папку "Source", там будут располагаться распакованные файлы. Теперь распаковываем нашу карту в эту папку. Теперь надо залить все это на наш репозиторий. Для этого жмем правой кнопкой по папке "test" и жмем пункт "SVN Commit...". Появиться окошко с 2 полями. В первом предлагается указать информацию о вносимых изменениях, советую вам её заполнять, чтобы потом не путаться и легко можно было составить changelog для публики. Ниже предлагается выбрать какие файлы стоит включить в данную ревизию. Смотрите сами, что нужно заливать, но могу сказать, что нет смысла заливать карту, т.к. она будет собираться в ручную, но если хотите иметь под рукой готовую версию карты для теста, то можете и оставить, это ваше дело.
Перед началом работы стоит делать "SVN Update", чтобы иметь последнюю версию файлов у себя в рабочей копии.
Еще хочу показать вот такую вот замечательную функцию у SVN, статистика проекта
Данное дело доступно тут: ПКМ по любой папке репозитория -> "Tortoise SVN->Show Log...", дальше кнопка "Statistics"
Ну вот в принципе основы я вам показал. Остальное смотрите опять же в документации, там есть еще много интересных вещей, которые я вам не описал.
Теперь поговорим о mapbuilder'е. Это приложение собранное на коленке на основе моей очень старой проги CampaingEditor. Она консольная и простая. Работает очень просто. Сперва указываем, что надо сделать, затем путь до карты и папку. Использование:
mapbuilder -e map.w3x Source\
mapbuilder -i map.w3x Source\
Первая экспортирует файлы в указанную папку, вторая импортирует. При этом вложенность папок остается и все пути доступны для редактирования и просмотра в редакторе импорта.
Для удобства можно поместить 2 простых скриптовых файла, один для распаковки, другой для запаковки. А если вы еще и установили консольную версию SVN, то можно даже и так
build.bat - обновление рабочей копии до последней ревизии, а так же сборка карты
svn update --username USERNAME --password PASSWORD
mapbuilder -i map.w3x Source\
commit.bat - разборка карты, а так же коммит
mapbuilder -e map.w3x Source\
svn update --message %1 --username USERNAME --password PASSWORD
Внимание: данный способ коммита не рекомендуется, т.к. указывать список изменений придется через аргументы при запуске, например
commit "new weather system"
поэтому лучше только распаковывать через скрипт, а коммитить уже через интерфейс коммита.

Поднятие SVN сервера

Качаем Visual SVN Server отсюда и устанавливаем. Там в принципе все просто и понятно. После установки появиться приложение для управления репозиториями VisualSVN Server Manager и там уже создаем репозитории, пользователей, группы и настраиваете им права для каждого репозитория.

Использование облака в качестве репозитория

Так же можно использовать облачные технологии для хранения вашего репозитория. Рассмотрим на примере SVN и DropBox. Сперва нужно перейти в папку DropBox. Затем создайте пустую папку, например "SVNRepository" и создайте в нем репозиторий с помощью TortoiseSVN, так: ПКМ по созданной папке, затем "TortoiseSVN->Create repository here". Для связи рабочей копии с этой папкой в качестве URL репозитория используйте "file:///~Dropbox/SVNRepository"
» или это можно сделать так
Создание репозитория
cd ~Dropbox
mkdir SVNRepository
cd SVNRepository
svnadmin create .
Создание рабочего пространства
mkdir MyWorkspace
cd MyWorkspace
svn checkout "file:///~Dropbox/SVNRepository"

Итог

Вот и подошла к концу моя статья. Надеюсь она будет вам полезна и работа над проектом упроститься и ускориться. Удачи в ваших проектах!
Спасибо ShadoWDeamoN'у за когда-то предоставленную библиотеку по работе с MPQ архивами.
svn, контроль версий, dropbox

Просмотров: 4 780

H #1 - 5 лет назад 2
Лол у тебя репозитории прямо с компа хостятся?
Не самый лучший вариант, ибо файлы будут недоступны при его выключении, ну или работа будет идти только тогда когда твой комп будет работать.
Вообщем для больших проектов лучше иметь свой vpn сервер, там и держать все что нужно
А для маленьких рекомендую использовать dropbox, он куда проще для обычных недалеких юзеров, кинул файл и он появился у всех участников.
Кстати у репозеториев есть очень крутая фича - возможность потом визуализировать весь процесс разработки проекта =)
alexprey #2 - 5 лет назад 0
Лол у тебя репозитории прямо с компа хостятся?
Не самый лучший вариант, ибо файлы будут недоступны при его выключении, ну или работа будет идти только тогда когда твой комп будет работать.
у меня свой сервак под боком
Faion #3 - 5 лет назад 0
Не понял, результат работы команды мерджится в единый проект, или нет?
alexprey #4 - 5 лет назад 0
Faion, ну да что-то типа того
H #5 - 5 лет назад 1
Ну актуально не только для вар3, а вообще к любым проектам.
alexprey #6 - 5 лет назад 1
Hellcore, я рассмотрел данную проблему именно для вар3, потому что там проект обычно представляется в виде одной карты. Так же можно использовать и для SC2.
Faion #7 - 5 лет назад 0
Ну если мерджит, то это актуально.
Doc #8 - 5 лет назад -1
Школьникам это не нужно.
Назовите мне 5 живых вк3 проектов в которых больше одного активного (внимание на это слово) кодера и я поверю, что это актуально.
alexprey #9 - 5 лет назад 0
Doc, ты не прошарил фишку. Код занимает 1 файл, ланд другой, РО еще один и т.д.
DragonSpirit #10 - 5 лет назад 0
на восьмёрке что-то твой mapbuilder не взлетел :/
alexprey #11 - 5 лет назад 0
DragonSpirit, интересненько, ну сегодня посмотрим, что там с восьмеркой
VladViper #12 - 5 лет назад 0
А если над одним файлом одновременно несколько человек работает, то что? Получаться 2 разные версии? В общем я так понимаю возможности коллективно разрабатывать что-то одновременно это не даёт.
ScorpioT1000 #13 - 5 лет назад (отредактировано ) 0
Проверьте орфографию в ворде уже.
И вообще мало кому нужен геморрой с репо, если дропбокса вполне достаточно.
VladViper, файлы соединяются умным zdiff-ом
репозитории советую xp-dev.com
не у каждого дома белый айпи
++Doc;
VladViper #14 - 5 лет назад -1
ScorpioT1000, что такое "умный zdiff"? Гугл говорит что он(она, оно) сравнивает архивы. Ещё говорит про функцию, непонятно чего, сравнивающую высоту положения чара с высотой объекта-аргумента...
ScorpioT1000 #15 - 5 лет назад 0
скопируй влево и вправо какоенить сочинение, потом в одном месте поменяй что-либо и нажми compare
alexprey #16 - 5 лет назад 0
ну как хотите, я подал вам хорошую мысль как пользоваться другими технологиями, а не только JNPG + Notepad + MdlVis + WC3ME. В общем я вам дал идею, ковыряйте дальше сами если вам это интересно, а если нет, ну и ладно.
Aptas #17 - 4 года назад 0
Я не нашёл статей посвящённых этому, короче я тут делаю одну небольшую карту и мне в бескорыстную помощь нужны ландшафтер и тот кто шарит в тригерах. Кому интересно добавляйтесь в френдс в ВК vk.com/artasm.
nvc123 #18 - 4 года назад 0
Aptas,
  1. создай проект
  2. создай в нём ресурс вакансии
  3. покажи примеры работы