[Evaporation Project] Система дистрибуции файлов
-
- Сержант
- Сообщения: 34
- Зарегистрирован: 15.08.2008
ИМХО, передавать лучше с помощью своего созданного протакола, в этом много плюсов, но есть и минусы, главный это хорошая реализация...
Автор темы, я так понял, хочет создать аналог стима?
Автор темы, я так понял, хочет создать аналог стима?
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
Нет, Evaporation Project пока что не имеет задачи заменить стим полностью. Только скачивание защищённого контента игр и быстрое и удобное изменение Steam Crack движка.
-
- Сержант
- Сообщения: 34
- Зарегистрирован: 15.08.2008
Немного подумал и придумал вот что....
Положим нужно качать гкф файлы...
Придумал такую систему, каждый файл делиться на части определенного размера, по 256-512 кб не больше. Далее считается каждого файла хеш мд5, он составит 128 бит, т.е. 16 байт, итак один гкф весит не более 2х гигов, если сделать часть по 400 кб(в среднем) то полный набор хешей для всех частей составит 80-150 кб, что согласитесь не так много. Соответственно обновление осушествляется путем скачивания измененных кусочков файла. Узнать об изменении файлов можно путем получения общего хеша файла.
Могут быть проблемы.
1. Ресурсоемкость подсчета всех хешей, на клиентской машине.
2. Может возникнуть проблема что изменения будут в каждок кусочке, и тогда придется качать файл целиком.
3.Проблема передача самого кусочка.Его впринчипе можно передать через сокеты, в несколько потоков, в общем это проблема решаема.
Вот как то так.
Положим нужно качать гкф файлы...
Придумал такую систему, каждый файл делиться на части определенного размера, по 256-512 кб не больше. Далее считается каждого файла хеш мд5, он составит 128 бит, т.е. 16 байт, итак один гкф весит не более 2х гигов, если сделать часть по 400 кб(в среднем) то полный набор хешей для всех частей составит 80-150 кб, что согласитесь не так много. Соответственно обновление осушествляется путем скачивания измененных кусочков файла. Узнать об изменении файлов можно путем получения общего хеша файла.
Могут быть проблемы.
1. Ресурсоемкость подсчета всех хешей, на клиентской машине.
2. Может возникнуть проблема что изменения будут в каждок кусочке, и тогда придется качать файл целиком.
3.Проблема передача самого кусочка.Его впринчипе можно передать через сокеты, в несколько потоков, в общем это проблема решаема.
Вот как то так.
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
Как вариант, хотя и недостатки имеются...
А вообще я думаю, нужно изменить систему вообще вкорне. Ведь GCF имеют заголовки с хешами всех файлов, так? Можно сделать HTTP сервер, на котором хранить все файлы GCF в распакованном виде и с делать специальный интерфейс для сверения хешей файло на клиенте и на сервере. Для обновления кеша придётся качать уже не сам гцф или файл к нему, а его содержимое (тоесть файлы в нём). Потом как-то их совать в GCF на клиенте, но если сам не смогу это реализовать, я думаю кто-нибудь поделится кодом ;)
А вообще я думаю, нужно изменить систему вообще вкорне. Ведь GCF имеют заголовки с хешами всех файлов, так? Можно сделать HTTP сервер, на котором хранить все файлы GCF в распакованном виде и с делать специальный интерфейс для сверения хешей файло на клиенте и на сервере. Для обновления кеша придётся качать уже не сам гцф или файл к нему, а его содержимое (тоесть файлы в нём). Потом как-то их совать в GCF на клиенте, но если сам не смогу это реализовать, я думаю кто-нибудь поделится кодом ;)
- Pr0Ger
- Модератор
- Сообщения: 1829
- Зарегистрирован: 16.01.2009
- Благодарил (а): 17 раз
- Поблагодарили: 214 раз
- Контактная информация:
MOZGIII, ты почетный баянист
и не пытайся мои идеи выдавать за свои, я это давно предлагал, только я предложил формировать на клиенте archive файл, а на сервере апдейт, но делать это не тулбоксом, а php скриптом(надо что-бы можно было можно было php_time_limit 0 поскольку апдейт долго делать)
забить в GCF тоже несложно, только для первоначальной скачки нужно быдет MiniGCF(что это такое думаю все знают :crazy: ) там у меня даже немного технической реализации было, только сейчас пост найти не могу что
и не пытайся мои идеи выдавать за свои, я это давно предлагал, только я предложил формировать на клиенте archive файл, а на сервере апдейт, но делать это не тулбоксом, а php скриптом(надо что-бы можно было можно было php_time_limit 0 поскольку апдейт долго делать)
забить в GCF тоже несложно, только для первоначальной скачки нужно быдет MiniGCF(что это такое думаю все знают :crazy: ) там у меня даже немного технической реализации было, только сейчас пост найти не могу что
-
- Сержант
- Сообщения: 34
- Зарегистрирован: 15.08.2008
Да я бы сам не прочь поучавствовать в реализации данной системы, идею ведь хорошая, я и сам о ней давно думал, просто реализовывать одному лень как то было...
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
Pr0Ger
Я об этом знаю (о твоём посте). Только зачем извращаться с апдейтами? Это много кода на PHP, а ведь можно сделать только простой HTTP с распаками GCF. Делать скачку как кфтулбокс, по одному файлу. А насчёт боянизма - это всё уже придумали в Valve. :)
Добавлено спустя 1 минуту 24 секунды:
WishMaster1234
Довай, помощь нужна. Тоесть пригодиться. Ты что умееш?
Я об этом знаю (о твоём посте). Только зачем извращаться с апдейтами? Это много кода на PHP, а ведь можно сделать только простой HTTP с распаками GCF. Делать скачку как кфтулбокс, по одному файлу. А насчёт боянизма - это всё уже придумали в Valve. :)
Добавлено спустя 1 минуту 24 секунды:
WishMaster1234
Довай, помощь нужна. Тоесть пригодиться. Ты что умееш?
-
- Сержант
- Сообщения: 34
- Зарегистрирован: 15.08.2008
Могу копать, могу не копать :DMOZGIII писал(а):WishMaster1234
Довай, помощь нужна. Тоесть пригодиться. Ты что умееш?
А вообще я так очень даже не плохой программист...
-
- Сержант
- Сообщения: 34
- Зарегистрирован: 15.08.2008
Да я много языков знаю, основный это С/С++ и С#, знаю PHP, Делфи тоже оцень хорошо знаю...VB учил...
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
Оочень хорошо! Мне нужна помощь теоритического больше характера. Я буду писать протокол, в частности, и программу связи на дельфи. Если у вас есть время, поищите код для дельфей по запихиванию файлов в гцф. Я понимаю, что его то и искать собственно негде т. к. он весь тут, либо в других местах но уже на сях. Хотя, это больше не к вам двоим, а к тем, кто с этим вплотную работает... А вообще, тут помощь нужна на самом то деле не в написании кода, хотя и в нём тоже, а также и в необходимости понимания работы протоколов стима. Поэтому, если у кого есть опыт в создании дампов трафика сетевых приложений, они бы очень пригодились. Кстати я до сих пор работал только с HTTP дампами - на него итак есть докуменнтация. И ещё - возможно я не в тему использую термин дамп, но я не знаю просто как ещё сказать :)
Кароче надо узнать как подменить сервера стима. Это поможет не только мне, но и ещё кое-кому ;)
Кароче надо узнать как подменить сервера стима. Это поможет не только мне, но и ещё кое-кому ;)
- impulse666
- Полковник
- Сообщения: 7405
- Зарегистрирован: 08.12.2005
- Откуда: Atman
- Благодарил (а): 2340 раз
- Поблагодарили: 590 раз
MOZGIII
обратись к andreil он много чего на дельфи портировал..
обратись к andreil он много чего на дельфи портировал..