Разработка метода передачи gcf

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#16 Сообщение 02.06.2010, 01:50

Если работать с gcf как с фс - тоже пойдёт, тока надо будет следить за тем, чтобы хедер менялся... версия там итд
Закачка по HTTP - не вариант, т.к. в чистом виде он не подходит, а надстраивать его до нормального п2п тяжело
Закачка не по п2п не рулит потому что сервера нужны мощьные, а у нас такого нету (сервер симба с таким не справится)
Ну и обновление будет происходить простой перекачкой файлов внутри гцфок или распака (тоесть не самих гцф)

Технический воопрос - как можно проверить актульность гцф кроме версии и полного спска файлов с хешами crc

Добавлено спустя 4 минуты 14 секунд:
Кстати насчёт сжатия - протокол р2р можно сделать и сжимающим на лету - тут особой проблемы нет (сжимать поток при самой передаче, а не весь файл заранее)

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#17 Сообщение 02.06.2010, 02:55

MOZGIII писал(а):актульность гцф
Ну, версии GCF и та, что в CDR...и, наверное, всё. Проблема в том, что CDR может быть не обновлена, но это тоже можно отследить, собственно, по дате последнего обновления CDR.

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#18 Сообщение 02.06.2010, 08:33

[user] писал(а): На FTP Simbiat'а файлы без сжатия лежат...
только ftp при передаче умеет сжимать
у меня однажды скачивало со скоростью ~250 кб/с, когда максимальная скорость инета ~40

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#19 Сообщение 02.06.2010, 11:38

Pr0Ger
На HTTP можно поставить GZip, только но проц тормозить чутка больше будет... У Simbiat'а а до сих пор мой скрипт ведь?)

$t@t!c_V()1D
Проблема возникает при импорте вайлов в gcf, но я уже прдумал как её решить: так как gcf должен быть последней версии, всегда прописывать в хедере ему последнюю версию, а файлы тупо докачивать до полного совпадения всего дерева хешей и не давать запускать пока всё не скачали/обновили

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#20 Сообщение 02.06.2010, 14:29

MOZGIII
Тогда это велосипед. Я уже указывал Риновские разработки.

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#21 Сообщение 02.06.2010, 14:55

$t@t!c_V()1D
Чем плохи велосипеды?
Лучше использовать _только_ нужный функционал, чем брать чужие вещи, которые умеют то что нужно, плюс ещё кучу непонятно-чего.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#22 Сообщение 02.06.2010, 15:47

Хех, ну и я тут уже отпишусь для приличия, что бы авторы действительно не изобретали велосипед ;)

Насчет самого процесса - кто внимательно всматривался в последние версии программы MiniSteam (aka SteamLite), тот увидел волшебную кнопочку "#P2Pxxxxxxx". Так вот, в этой программе я 100% буду реализовывать p2p обмен данными при скачивании кэша с целью уменьшения нагрузки на сервер. Сам протокол у меня уже есть (правда только в голове и в общих чертах). Сегодня вечером я его оформлю нормально и завтра-послезавтра выложу для рассмотрения.
Насчет записи в GCF - нет проблем, т.к. я то же работаю над этим (если конкретно, то я добавляю некоторые функции в мою библиотеку GCFFiles.pas - TGCF.Delete, TGCF.AddFile, TGCF.OpenFile, TGCF.Read, TGCF.Write, TGCF.Close). Так что в следующей ревизии данной библиотеки будет возможность проводить основные операции с файлами (функция TGCF.Close будет пересчитывать контрольные суммы для измененных файлов и записывать изменения в заголовках).

Так что вывод отсюда один - надо подождать конца сессии у меня (это всего 3 недели) и я примусь активно разрабатывать все это каждый день (у меня наконец будет возможность находится за компьютером более 3-х часов в день :) ).

PS: Новой ревизии библиотеки GCFFiles.pas следует ждать через месяц-полтора, а SteamLite с полной поддержкой запуска большинства игр и полным патчингом кэша - в то же время ;)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#23 Сообщение 02.06.2010, 15:50

NiGHt-LEshiY
Ну, может ты и прав, но вот я опробовал CFT. NET. По-моему, классно %). По крайней мере, для локальной сети, определенно.

andreil
Ну, что ж, ждем-с..

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#24 Сообщение 02.06.2010, 17:12

andreil
Может опишеш свой протокол в двух словах? Мне просто интересно до чего другие люди дошли :)
Раз так, то я писать ничего не буду, разве что, если проект будет открытый, гуи красивый замучу ;)

$t@t!c_V()1D
По поводу велосипеда - это ты о чём? На рине же вроде наработки есть, но они немного не те, что нам нужны? Исключая конечно либы для работы с GCF, хотя если andreil свой модуль допишет - то и либы не понядобятся ;)

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#25 Сообщение 02.06.2010, 18:07

MOZGIII
Да вот в том-то и дело, что я вижу, как их можно заюзать уже сейчас.

[user]
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 3501
Зарегистрирован: 18.07.2008
Благодарил (а): 2 раза
Поблагодарили: 17 раз
Контактная информация:

#26 Сообщение 04.06.2010, 20:18

и не давать запускать пока всё не скачали/обновили
Не надо стим копировать :(
Достаточно просто уведомить пользователя, что есть апдейт.
© [user]

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#27 Сообщение 06.06.2010, 11:55

гм, эта тема натолкнула меня на мысль, правда p2p тут не причем.
мысль сильно вредная, но все же польза от нее может быть польза.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#28 Сообщение 06.06.2010, 18:58

fire64
Уж не о блоке запуска игр ты говоришь?))

Fire666
Эксперты no-Steam
Эксперты no-Steam
Сообщения: 2600
Зарегистрирован: 15.02.2007
Откуда: Москва
Благодарил (а): 2 раза
Поблагодарили: 43 раза
Контактная информация:

#29 Сообщение 06.06.2010, 19:44

MOZGIII писал(а):fire64
Уж не о блоке запуска игр ты говоришь?))
Я говорю о системе загрузки и шаринга GCF файлов.

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#30 Сообщение 07.06.2010, 07:27

Итак, насчёт моего варианта протокола - всё будес реализовано на оригинальном steam-протоколе, с тем отличием, что в качестве контент-серверов будут выступать и сами клиенты. так же будет реализована бонусная система - новые (и некторые из платных игр) можно будет загружать либо за символическую плату (аренда сервера, покупка игр), либо в счет раздаваемого - за объём в графе "отдано".
вот такие вот планы на данный момент.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Ответить