Current time: 23.03.2024, 04:29 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Новая реализация виртуальной файловой системы
» Тестирование
Author Message
wessonsm Offline

Posts: 779
Post: #31

С последним вариантов тестов у меня все зеленое на 32-битной 7 и на 64-битной 8.1.
15.05.2019 07:54
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #32

wessonsm, отлично! Ab


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.05.2019 14:51
Find all posts by this user Quote this message in a reply
AlexeevAV Offline

Posts: 175
Post: #33

Привет, на Windows XP SP3 все зеленые, тоже последний вариант.
22.05.2019 11:46
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #34

AlexeevAV, привет, прекрасно! )


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.05.2019 14:48
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #35

Реализовал наблюдение за папкой с модами в отдельном потоке с автообновлением, ручные тесты прошли на Win 7, XP, Win 10, Lubuntu.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
24.05.2019 14:28
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #36

Делюсь радостью Ab. После долгой отладки и подетальной доработки запустил VFS с редактором карт в многопоточном режиме. Тормозов нет (!), при этом несуществующие папки и файлы работают, даже диалог свойств говорит, что файл расположен в D:\Heroes 3:
https://yadi.sk/i/WKoGBK9AvI5XcA

Работа идёт на уровне Native API (Родные функции ОС). WinAPI (Высокоуровневый интерфейс для пользователей) основан на Native API (ntdll).


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
25.05.2019 19:22
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #37

(25.05.2019 19:22)Berserker Wrote:  Делюсь радостью Ab. После долгой отладки и подетальной доработки запустил VFS с редактором карт в многопоточном режиме. Тормозов нет (!), при этом несуществующие папки и файлы работают, даже диалог свойств говорит, что файл расположен в D:\Heroes 3:
https://yadi.sk/i/WKoGBK9AvI5XcA

Работа идёт на уровне Native API (Родные функции ОС). WinAPI (Высокоуровневый интерфейс для пользователей) основан на Native API (ntdll).

Это вот сейчас был анонс более плавной работы эры на многоядерных машинах?Ab
В любом случае поздравляю с полученным результатом)
25.05.2019 21:01
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #38

daemon_n, спасибо. Это поддержка Юникода, работа Lua, работа Lua с файловой системой.
Многопоточность несколько опасна по причине того, что ЕРМ однопоточен (частично решаемо). Бараторч в HD-моде по странной причине тоже форсирует однопоточность. Узнать бы, почему. С редактором карт проблем нет )


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
25.05.2019 21:42
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #39

Проверил и отладил работу потока слежения за изменениями в VFS, например, создаваемыми и редактируемыми скриптами, картами и другими ресурсами, которые разработчики любят менять при запущенных приложениях. Поскольку теперь VFS держит весь кэш в памяти (слепок иерархии папок с атрибутами), то такое обновление позволяет предотвращать программные ошибки, когда файл в реальной папке имеет актуальные имя, размер, атрибуты, а в виртуальной — устаревшие.

Обновлённая DLL: http://rgho.st/64PdyF6Kf

type
    (*
    Specifies the order, in which files from different mapped directories will be listed in virtual directory.
    Virtual directory sorting is performed by priorities firstly and lexicographically secondly.
    SORT_FIFO - Items of the first mapped directory will be listed before the second mapped directory items.
    SORT_LIFO - Items of The last mapped directory will be listed before all other mapped directory items.
    *)
    TDirListingSortType = (SORT_FIFO = 0, SORT_LIFO = 1);

(* Loads mod list from file and maps each mod directory to specified root directory.
    File with mod list is treated as (BOM or BOM-less) UTF-8 plain text file, where each mod name is separated
    from another one via Line Feed (#10) character. Each mod named is trimmed, converted to UCS16 and validated before
    adding to list. Invalid or empty mods will be skipped. Mods are mapped in reverse order, as compared to their order in file.
    Returns true if root and mods directory existed and file with mod list was loaded successfully *)
function MapModsFromList (const RootDir, ModsDir, ModListFile: PWideChar; Flags: integer = 0): LONGBOOL; stdcall; external 'vfs.dll';

(* Runs all VFS subsystems, unless VFS is already running *)
function RunVfs (DirListingOrder: TDirListingSortType): LONGBOOL; stdcall; external 'vfs.dll';

(* Spawns separate thread, which starts recursive monitoring for changes in specified directory.
    VFS will be fully refreshed or smartly updated on any change. Debounce interval specifies
    time in msec to wait after last change before running full VFS rescanning routine *)
function RunWatcher (const WatchDir: PWideChar; DebounceInterval: integer): LONGBOOL; stdcall; external 'vfs.dll';

(* Allocates console and install logger, writing messages to console *)
procedure InstallConsoleLogger; stdcall; external 'vfs.dll';

Пример чернового использования в любом проекте:
Code:
MapModsFromList('D:\Heroes 3', 'D:\Heroes 3\Mods', 'D:\Heroes 3\Mods\list.txt');
RunVfs(SORT_FIFO);
RunWatcher('D:\Heroes 3\Mods', 250);
Теперь файл с модами в кодировке UTF-8. Для латинских названий ничего не изменилось. Поток наблюдателя обновляет ВФС в фоне, если ресурсы изменяются. Задержка полного рескана — 250 мс.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
25.05.2019 23:00
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #40

Добавил поддержку генерации отчёта о применённых отображениях папок.

Пример вывода:
Code:
$ <= $\Mods\WoG Native Dialogs         [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\#Dlg_ExpaMon *MISS*        [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\#WoG Native Dialogs *MISS* [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Phoenix                    [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\#New Music Pack *MISS*     [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\#BattleHeroes *MISS*       [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Morn battlefields          [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Big Spellbook              [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Vallex Portraits           [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\WoG Rus                    [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Secondary Skills Scrolling [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Yona                       [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Fast Battle Animation      [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\Quick Savings              [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]
$ <= $\Mods\WoG                        [Overwrite = 0, Flags = 0, $ = "D:\Heroes 3"]

(* Returns text with all applied mappings, separated via #13#10. If ShortenPaths is true, common part
    of real and virtual paths is stripped. Call MemFree to release result buffer *)
function GetMappingsReport: {O} PWideChar; stdcall; external 'vfs.dll';
function GetMappingsReportA: {O} pchar; stdcall; external 'vfs.dll';

(* Frees buffer, that was transfered to client earlier using other VFS API *)
procedure MemFree ({O} Buf: pointer); stdcall; external 'vfs.dll';


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2019 15:54
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #41

Опубликован исходный код библиотеки и тестов: https://github.com/ethernidee/vfs
Там же доступен первый релиз (dll).


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2019 17:09
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #42

Здесь можно скачать обновлённую DLL редактора карт
https://github.com/ethernidee/era-editor...EraMap.dll

А здесь библиотеку виртуальной файловой системы
https://github.com/ethernidee/vfs/releas....0/vfs.dll

С ними двумя в корне должен открываться редактор карт из Эры 2.7.7.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2019 17:21
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4333
Post: #43

А будет поддерживать теперь генерацию xxl карт?
Или я совсем не по теме?)
26.05.2019 19:56
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16449
Post: #44

Нет, функционал редактора не дорабатывался. Тут либо автором h3mapedpatch (GrayFace), либо сторонними плагинами.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2019 20:29
Find all posts by this user Quote this message in a reply
RDV Offline

Posts: 23
Post: #45

ссылку, на тест пл3, первые 2 не работают
хоть чем-то помогу Image: awesome.png
02.12.2019 19:54
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group