[C++] Модули для работы с файлами Стима

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

#31 Сообщение 09.03.2012, 23:51

Зачем среда для написания либ? Я вот пишу с использованием обычных блокнотов (Notepad++/gedit) и командной строки, но если бы я пользовался средой - это была бы NetBeans или Eclipse.

Под Qt - конечно QtCreator, но в либах лучше на использовать классы Qt, а будет соблазн, - только чистый C++, врапперы для Qt потом написать труда не составит.

А вот для GUI Qt (несмотря на размер) - самое то. Но это уже отдельная и объёмная тема - на чём делать GUI.

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

#32 Сообщение 10.03.2012, 00:06

Code::Blocks - графическая среда. Особенных требований к коду не имеет.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

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

#33 Сообщение 10.03.2012, 01:00

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

Аватара пользователя
ArsNG
Полковник
Полковник
Сообщения: 3059
Зарегистрирован: 20.12.2007
Благодарил (а): 1069 раз
Поблагодарили: 2893 раза

#34 Сообщение 10.03.2012, 01:33

andreil
себя обманул
Кодблокс так кодблокс, абы работало нормально.

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

#35 Сообщение 10.03.2012, 09:17

andreil
Ты Кармака напоминаешь...в том плане, что "я сделаю лучший движок в игровой индустрии...и плевать мне на всё остальное [имеется в виду на дизайнеров, мапперов, текстурщиков, аниматоров и т.п.]".

Вот ты пишешь/переписываешь это всё в своё удовольствие, такое ощущение...или для кого-нибудь ещё? Без обид.

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

#36 Сообщение 10.03.2012, 10:09

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

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

#37 Сообщение 10.03.2012, 11:10

andreil
У меня программа из 2-х частей (даже 3-х, но не важно). Пока держусь. Не революционно - эволюционно.

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

#38 Сообщение 10.03.2012, 11:44

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

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

#39 Сообщение 10.03.2012, 13:23

andreil
Ну разве что. У меня например, есть Wrapper для работы с DLL-ками на С++ . Интерфейсы использую...милая вещь, кстати.

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

#40 Сообщение 10.03.2012, 13:42

$t@t!c_V()1D писал(а):Вот ты пишешь/переписываешь это всё в своё удовольствие, такое ощущение...или для кого-нибудь ещё? Без обид.
Я дельфи не знаю, пишу только на C++, иногда на C
Так, что мне бы код пригодился.

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

#41 Сообщение 16.03.2012, 19:47

Итак, процесс идет и идет вполне бодренько - уже написаны и отлажены модули для PAK и VDF, сейчас обновляю старый модуль для BLOB-файлов (по сути переписываю, так как много быдло-кода было). Потом возьмусь за CDR и GCF (тут уже не так много обновлять придется все-таки :) ). Утечки памяти имеются, но незначительные - около 1-4кб при загрузке VPK (думаю, что мелочь... Может это не моя вина, а компилятора? ведь все, что выделял, удаляю...).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

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

#42 Сообщение 16.03.2012, 20:46

andreil, если будешь делать возможность создания GCF файлов, то обрати внимание на контент-сервер из SteamWorks

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

#43 Сообщение 16.03.2012, 21:56

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

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

#44 Сообщение 22.03.2012, 15:44

Мда, загрузку BLOB'ов надо оптимизировать - при загрузке ClientRegistry.blob программа автоматически распаковывает и полностью считывает и CDR, находящуюся в нем, а это =120Мб памяти на дофигища информации %) . Надо доделать класс для работы с CDR'ом и сделать автоматический подхват (будет считаться, что сжатый элемент в BLOB-файле 100% является CDR'ом). Но тут надо будет еще покрутить работу с сетевыми протоколами - там вроде как участвуют как раз-таки сжатые BLOB'ы - тогда запись будет вылаливаться по имени (тут один косяк - если загружать ее не из BLOB-контейнера, а напрямую - из отдельного файла -, то загрузка будет происходить по-другому).
Из-за высшеописанного загрузка ClientRegistry.blob занимает 3-5сек, а выгрузка - 1-2сек (почему так долго? там же ведь просто delete для всех выделенных указателей %) ).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

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

#45 Сообщение 28.03.2012, 21:14

Апдейт:
  1. [FIX]Завершено написание модуля для BLOB-файлов. Оптимизировал все, что мог;
  2. Добавлен модуль для CDR - основа готова, осталось доработать напильником;
  3. Добавлен модуль для PKG (архивы Стима) - напильником пока и не проходил. Считывание работает, а распаковка/упаковка - нет. Все-таки за час переписал с дельфы;
  4. Добавлен модуль для работы с INI-файлами - на будущее + пока только для Windows - буду смотреть, как работать с этими файлами (или чем-то аналогичным) под линуксом;
  5. В main.cpp имеется код, на котором тестились все форматы (включаются директивами компилятора в начале файла).
В ближайшее время допилю модуль CDR и PKG, после чего примусь за обновление старой версии модуля для GCF-файлов.

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

Ответить Вложения 3