Хранение картинок, звуков и других ресурсов
22.07.2007 Квиринг АлексейСложно представить игру без картинок, музыки и других видов ресурсов.
Более того, типичная игра потребует достаточно большое количество разнообразных ресурсов, да и еще и в разных форматах.
Для примера возьмем простой ресурс — изображение. С одной стороны дизайнерам удобно рисовать в PhotoShop-е, а с другой — Flash не умеет читать и показывать такие файлы. Да и для оптимизации трафика лучше из PSD формировать две картинки JPG для изображения и GIF для хранения карты прозрачности. Если такую задачу возложить на дизайнеров, то большая часть их рабочего времени будет уходить на конвертирование файлов. А после конвертирования файлы еще надо скопировать в папку, доступную серверу по протоколу FTP.
Для экономии времени, сил и нервов дизайнеров была придумана следующая схема работы: дизайнер создает PSD-файл и сохраняет его в своей локальной папке, далее, используя контекстное меню проводника, перемещает файл в SVN (операция в один клик). Все, после этого спокойно идет читать свой любимый форум — всю остальную работу за него делает сервер.
Сервер отслеживает изменения в SVN и, как только видит, что требуемые ресурсы изменились, получает изменения и преобразует исходный файл в нужный формат. Например, из PSD получаем JPG и GIF. После преобразования перемещает полученные файлы в каталог, доступный Flash клиенту. Кроме того, мы получили возможность в любой момент вернуться к старым версиям исходного файла.
Технические аспекты решения
Задача делится на два этапа:
Получить оповещения об изменении ресурса:
svnlook changed /data/svn|sed -e "s/^U /http://*/svnupdate/?url=/g" | wget -i -
Данная команда размещается в файле hooks/post-commit.
И получить собственно содержимое файла, да и еще с учетом ревизии:
Для работы с SVN используем HTTP DAV протокол. Долго искали какие же команды он понимает, и вот что нашли:
В качестве библиотеки используется jakarta-slide-webdavlib-2.1.jar — http://jakarta.apache.org/slide/.
Пример работы с DAV
HttpURL url = new HttpURL("http://*"); WebdavResource wr = new WebdavResource(url, new UsernamePasswordCredentials("arts80", "****"), 0, 0); wr.setPath(wr.getPath()+"Alternativa/server/com/alternativagame/parentmodel/ParentModelExecutor.java"); Enumeration propfindMethod = wr.propfindMethod("DAV:creationdate"); while (propfindMethod.hasMoreElements()) { System.out.println(propfindMethod.nextElement()); }
Свойства
DAV:comment комментарий
DAV:creator-displayname имя пользователя, создавшего ресурс
DAV:creationdate дата создания
DAV:version-name версия
Checkout
Для получения файла с нужной версией используется следующий путь
/!svn/ver/номер ревизии/путь к файлу

14.08.2007 в 23:27
У Вас очень интересный сайт! Мне очень понравилось!