Pull to refresh

Comments 7

Я сделал по другому:

1) Извлек все ресурсы ( пока это спрайты) утилитой в формат BMP.

2) Конвертнул все в GIF с учетом прозрачности.

3) Запихнул все в собственный файл ресурса.

Использовать информацию напрямую из оригинального файла данных игры мне показалось достаточно ресурсоемко. Особенно если приходится подгружать одновременно большое количество текстур. А распаковывать и держать в памяти - достаточно объёмно получается.

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

В любом случае нужно думать и анализировать.

Дело в том, что графики в игре где-то на 600 мб. Таскать такой патч для установки, как то чрезмерно. Распаковать файл из архива + распарсить формат графики art, занимает 1000 строк. Проще это реализовать, чем заниматься таким шаманством.

Особенно если приходится подгружать одновременно большое количество текстур. А распаковывать и держать в памяти - достаточно объёмно получается.

Нет не много. Даже для старых GPU с объемом меньше 32 мб, все влезет.

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

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

К примеру есть мод котрый изменяет только баланс оружия и предметов в игре. Теоритически его можно подключить к любому моду.

В любом случае нужно думать и анализировать.

Постоянно это делаю.

У кого есть мак,протестируйте плиз собираемость проекта на маке. Буду очень благодарен. Если есть ошибки, можете прямо сюда в комменты прислать. Я постараюсь поправить.

Прикрутите github actions к проекту и собирайте автоматом и на маке, и на винде и на линуксе.

Я даже прикручивал гитхаб экшоны со сборкой в т.ч. на маке к прошлому проекту автора по движку арканума. Возможно ему стоит просто взять файл как есть и переложить в новый проект.

вместо чтения по-полям

https://en.cppreference.com/w/cpp/types/integer.html
int32_t фиксированная ширина

подобные структуры могу читаться и писаться целиком примерно так как реализован формат BMP

https://graphics.stanford.edu/~mdfisher/Code/Engine/Bitmap.h.html
https://graphics.stanford.edu/~mdfisher/Code/Engine/Bitmap.cpp.html

BITMAPFILEHEADER bmfh;

fread(&bmfh, sizeof(BITMAPFILEHEADER), 1, file);

https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapfileheader

или так

https://solarianprogrammer.com/2018/11/19/cpp-reading-writing-bmp-images/

struct BMPFileHeader {
uint16_t file_type{0x4D42}; // File type always BM which is 0x4D42
uint32_t file_size{0}; // Size of the file (in bytes)
uint16_t reserved1{0}; // Reserved, always 0
uint16_t reserved2{0}; // Reserved, always 0
uint32_t offset_data{0}; // Start position of pixel data (bytes from the beginning of the file)
};

Sign up to leave a comment.

Articles