Вопрос по созданию патчей

Общие вопросы о Unity3D

Вопрос по созданию патчей

Сообщение RomanW 18 июл 2011, 13:04

Не очень понятно, как сделать удобную систему патчей в онлайн игре.

Насколько я понимаю, обычно процесс создания патча выглядит так:
Изменили настройки нескольких материалов, поправили модельку -> изменился префаб -> нужно пересобрать весь проект и все ресурсы -> натравили что-то типа Visual patch -> размер патча непредсказуем, впоть до размера всей игры.

Хочется иметь возможность патчить графический контент минимальными объемами, например, имея приоритет по загрузке ресурсов из пак-файлов (то есть выложили патч-файл, при загрузке модельки игра смотрит, есть ли измененная модель/префаб в патч файле, если есть, грузит ее, нет - грузит из изначальных ресурсов). Не нашел возможности в юнити сделать что-то подобное, без перебилда всего проекта. Хотя если каждый ресурс выгрузить в ассет бандл, все сцены создавать динамически на основе своих инишников (или чего-то подобного) то теоретически это можно сделать... но как то неудобно - куча файлов, необходимо писать либо свой редактор, или уметь из сцены в редакторе юнити генерить некий скрипт создания сцены из бандлов... Или я за деревьями не вижу леса :(
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: Вопрос по созданию патчей

Сообщение Zaicheg 18 июл 2011, 13:23

Я никаких "специально для Unity"-решений кроме M2H-патчера не видел. Как он работает — не знаю.
http://forum.unity3d.com/threads/62326-M2HPatcher
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Вопрос по созданию патчей

Сообщение Lestar 18 июл 2011, 14:06

https://xakepy.cc/showthread.php?t=49375&page=1 .Я бы рекомендовал dup2
Lestar
UNIт
 
Сообщения: 114
Зарегистрирован: 05 июн 2011, 02:36

Re: Вопрос по созданию патчей

Сообщение RomanW 18 июл 2011, 14:12

Zaicheg писал(а):Я никаких "специально для Unity"-решений кроме M2H-патчера не видел. Как он работает — не знаю.
http://forum.unity3d.com/threads/62326-M2HPatcher

Да, видел. Насколько я понял, он просто позволяет автоматизировать обновление игры - скачивает заархивированный архив и распаковывает его.

Lestar писал(а):https://xakepy.cc/showthread.php?t=49375&page=1 .Я бы рекомендовал dup2

Спасибо, посмотрю.
Но это все тулзы для генерации патча из двух версий игры сравнением. А все-таки хотелось бы этого избежать, умея обновлять ресурсы другим способом. К примеру, взять из логов SVN список измененных материалов и просто положить в патч-файл, а в игре новые материалы подцепятся вместо старых.
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: Вопрос по созданию патчей

Сообщение DbIMok 18 июл 2011, 14:31

в [unity 3D] всего два механизма загрузки ресурсов: "сцена/шаред" и бандли. причем бандли только в про и без скриптов. для целей "патчинга" бандли выглядят предпочтительнее.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Вопрос по созданию патчей

Сообщение RomanW 18 июл 2011, 14:37

DbIMok писал(а):в [unity 3D] всего два механизма загрузки ресурсов: "сцена/шаред" и бандли. причем бандли только в про и без скриптов. для целей "патчинга" бандли выглядят предпочтительнее.

Тогда подробнее расскажите, как можно использовать бандлы без скриптов? По примерам понял, что сначала смотрится, если ли ассет в бандле и потом грузится. Если всю сцену выгрузить с помощью BuildPipeline.BuildPlayer то при изменении ассета придется заново выгружать сцену и натравливать на результат патчер.
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: Вопрос по созданию патчей

Сообщение DbIMok 18 июл 2011, 14:52

вопрос не понял. для начала скачайте посмотрите:
http://unity3d.com/support/resources/ex ... setbundles
http://unity3d.com/support/resources/ex ... tomization
убедитесь, что прочитали все что касается бандлей:
http://unity3d.com/support/documentatio ... undle.html
http://unity3d.com/support/documentatio ... nload.html
и т.д.
потом попытайтесь сформулировать несколько небольших конкретных вопросов так, чтобы нам было понятно, что вы хотите спросить.
К примеру, взять из логов SVN список измененных материалов и просто положить в патч-файл, а в игре новые материалы подцепятся вместо старых.

так это не проблема. получите список, подгрузите новые текстурки и замените ими старые, профит! да, что-то я умолчал о третьем, подходящем не для всех ресурсов пути: прямой подгрузки через www/файловые операции.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Вопрос по созданию патчей

Сообщение Neodrop 18 июл 2011, 15:42

Любая программа создания бинарных патчей вполне подходит. К примеру - PatchWise Free.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопрос по созданию патчей

Сообщение RomanW 18 июл 2011, 16:24

DbIMok писал(а):так это не проблема. получите список, подгрузите новые текстурки и замените ими старые, профит! да, что-то я умолчал о третьем, подходящем не для всех ресурсов пути: прямой подгрузки через www/файловые операции.

Насколько я понимаю, в этом случае сначала загрузиться то, что было изначально в ресурсах, а потом замениться на новую. Двойная работа.

Возьмем пример AssetBundles. Там отдельно в бандлы выгружаются и моделька и используемая ей текстура. Казалось бы все хорошо. Но вот захотели мы изменить текстуру, изменили ее настройки, выгрузили в бандл и подложили в предыдущий клиент и... текстура не подгрузилась. То есть чтобы изменить текстуру, надо еще выгрузить и модельку. Или после загрузки модели посмотреть, если текстура в отдельном файле, загрузить ее и прицепить к модели. Этот вариант плох также тем, что все ресурсы лежат в отдельных файлах (это получается тысячи их).

Что хотелось бы в идеале - иметь некий формат пак-файлов (типа как mpq в играх Близзарда). Пусть это будет asset bundles (unity3d), или еще что-то, не важно. Иметь возможность указать движку, в каком приоритете грузить ресурсы из этих пак файлов (например, в первую очередь посмотреть в файле patch.unity3d, если там ресурса нет, грузить из стандартного). Причем без изменения в патче тех ресурсов, которые ссылаются на измененный ресурс. Например, вот очень надо изменить настройки всех материалов в игре. Взяли, создали patch.unity3d, куда поместили все материалы игры, отдали игрокам (а получился патч очень небольшого размера, файлы материалов же мелкие) - и все. Игра подцепила новые материалы. Максимум, что может потребоваться - еще и скрипты в патч добавить, а они тоже небольшие. Но похоже, так сделать нельзя. Это получиться, только если изначально все объекты в сценах создавать руками из кода (при этом мы сами можем вставить проверку на наличие патча и грузить из него). Этот способ сразу отметает создание сцены в редакторе юнити. Или можно создавать в редакторе, но потом натравить некий скрипт, который выгрузит сцену в какой-либо наш формат, которую игра и создаст, грузя ассеты вручную, из нужных мест... Плохо тем, что разработчики и игроки используют сильно разные версии игры, чревато дополнительными ошибками. И еще пока непонятно, можно ли подключить свой пак-архив (например, на основе того-же zlib), чтобы все файлы ресурсов не лежали по отдельности...

Neodrop писал(а):Любая программа создания бинарных патчей вполне подходит. К примеру - PatchWise Free.

Но при этом, насколько я понимаю, не предсказуем размер патча, так как все зависит от того, как юнити создаст тот же sharedassets0.assets (сколько там будет различий? какой получится дифф-файл? Я не знаю, так как пока нигде не встретил принцип создания sharedassets0.assets, по которому можно было-бы строить какие-то предположения).
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: Вопрос по созданию патчей

Сообщение Neodrop 18 июл 2011, 16:34

Размеры очень маленькие. Я проверял в своё время. К примеру, если меняется только код, то размер патча (вместе с ехе упаковкой) 40 килобайт.
Медиа, конечно, сильно увеличит размер. Но, бинарные патчи, в принципе, актуально передают только новое.
Я использовал их для своего прототипа ММО игры. Было вполне удобно.

Можно написать свой кодярник, который в тени скачает бинарный патч, выгрузит Unity-приложение, запустит патч и заново загрузит Unity приложение. Это не титаническая работа. Вот и будет вам автоапдейтер.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопрос по созданию патчей

Сообщение DbIMok 18 июл 2011, 16:44

RomanW писал(а):в этом случае сначала загрузиться то, что было изначально в ресурсах

нет, речь про отдельную папочку содержимое которой напрямую не используется, в сцену/ресурсы не попадает (лежащие "рядом" изменяемые текстуры, звуки и т.п.)
RomanW писал(а):Этот вариант плох также тем, что все ресурсы лежат в отдельных файлах

нужно соблюдать баланс, сильно не "мельчить". в чем проблема загрузить персонажа целиком.
RomanW писал(а):Или можно создавать в редакторе

можно
RomanW писал(а):можно ли подключить свой пак-архив (например, на основе того-же zlib)

конечно
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Вопрос по созданию патчей

Сообщение Neodrop 18 июл 2011, 16:49

Я выкладывал тут на форуме dll для зипов. Отлично работает. ZIP your project кажется тема называлась
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Вопрос по созданию патчей

Сообщение RomanW 18 июл 2011, 17:22

Neodrop писал(а):Размеры очень маленькие. Я проверял в своё время. К примеру, если меняется только код, то размер патча (вместе с ехе упаковкой) 40 килобайт.
Медиа, конечно, сильно увеличит размер. Но, бинарные патчи, в принципе, актуально передают только новое.
Я использовал их для своего прототипа ММО игры. Было вполне удобно.

Можно написать свой кодярник, который в тени скачает бинарный патч, выгрузит Unity-приложение, запустит патч и заново загрузит Unity приложение. Это не титаническая работа. Вот и будет вам автоапдейтер.


При изменении скриптов меняется только Assembly-CSharp.dll, вот и небольшой размер. В основном, конечно, арт интересует. Пробовал тестировать на демке bootcamp - изменил настройки нескольких материалов, подвинул несколько объектов, чуть изменил ландшафт - 2.6 МБ патч. Вроде и мало, но и изменений не особо много. Просто сильно не нравится, когда не могу спрогнозировать размер патча, так как на него влияют вещи, на которые я не могу воздействовать (в данном случае это алгоритм создания asset-файла юнити).

А про автоапдейтер пока вопросов нет, там вроде все понятно, вопросы пока с содержимым патчей :)

Neodrop писал(а):Я выкладывал тут на форуме dll для зипов. Отлично работает. ZIP your project кажется тема называлась

Спасибо, посмотрю.


DbIMok писал(а):нет, речь про отдельную папочку содержимое которой напрямую не используется, в сцену/ресурсы не попадает (лежащие "рядом" изменяемые текстуры, звуки и т.п.)

Хотелось бы именно в редакторе сцену настраивать, в т ом числе и с такими объектами.

DbIMok писал(а):нужно соблюдать баланс, сильно не "мельчить". в чем проблема загрузить персонажа целиком.

Не получается не мельчить, к примеру художники не исключают возможность изменения настроек всех материалов на всех моделях. А саму модель по идее это затрагивать не должно. А затронет.

DbIMok писал(а):
RomanW писал(а):Или можно создавать в редакторе

можно

Можно - в смысле, как я там написал, с дополнительным генерирующим скриптом, или можно как то в сцене в редакторе использовать ассеты, которые потом каким-то образом подгрузить из нужного места?
RomanW
UNец
 
Сообщения: 7
Зарегистрирован: 29 июн 2011, 15:13

Re: Вопрос по созданию патчей

Сообщение Kavis 31 янв 2012, 10:02

RomanW,
Вы смогли что-нибудь придумать с обновлением ? Я тоже сейчас мучаюсь с этим делом.......
Аватара пользователя
Kavis
UNIт
 
Сообщения: 106
Зарегистрирован: 25 дек 2011, 17:25
Откуда: Воронеж
  • Сайт
  • ICQ


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13