Пушыстый (_winnie) wrote,
Пушыстый
_winnie

Category:

VFS case

Регулярно вижу в виртуальных файловых системах для игр один и тот же фейл.
Когда VFS смонтирована на реальной файловой системе, то функции "проверь сущестование файла" или "открой файл" реализованы просто через вызовы OS. В результате под windows файлы 'y.' и 'y' или 'y' и 'Y' и '.\.\y' считаются существующими если есть хотя бы один. Когда же VFS монтируется на zip-файле или на unix - то файл который раньше существовал - перестаёт сущестовать.

Решение "является ли VFS case-sensitive" - это интерфейс VFS, и оно не должно меняться от реализации под интерфейсом. Или везде case-sensitive или везде case-insensitive.
Как оно ИМХО должно быть в VFS игр/игровых редакторах: во всех операциях VFS, результат которых зависит от существования файла - не полагаться на нижележащую FS/VFS. Сначала получать листинг директории, смотреть есть ли файл в этом списке и только после этого принимать решение о существовании файла. Для read-only immutable систем такие листинги можно сгенерировать при старте/экспорте. В частности, решение "есть ли файлик под svn" тоже должен браться из .svn/entries и функций svn, а не из функций os.

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

Не понимаю так же людей, которые в игровых проектах форсят именование файлов с больших букв - типа 'Data\Models\Unit.model'. На двух проектах так именовали, в обоих были регулярные фейлы "путь запоменый в xml-ке - на другой VFS не существует". Можно подумать что это дело вкуса, на самом деле это портит карму проекта (всякие 3rd party тулзы при экспорте или наколенные скрипты чаще подкидывают сюрпризы с NameCase)

Про VFS которые монтируются в os а не в игре - сказать как надо не могу, но подозреваю что там такие проблемы тоже всплывают. И блин, учитывайте что файлы с расширением .PNG - это тоже рисунки (пусть и рождённые c плохой кармой).
Tags: soft-dev, tips
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments