Страницы

пятница, 11 сентября 2009 г.

Совместимость с предыдущими версиями файла

Одной из фишек подсмотренной у профи было: версия файла.

Мелочь, но поможет вам выстроить какую-никакую совместимость. Смысл в том, чтобы оставить в сигнатуре файла его версию. Это позволит использовать скрипты загрузки соответственно с версией файла. Допустим, версия файла 1.2, тогда вы выбираете скрипт load_file_1_2, а для версий файла 1.1, выбираете load_file_1_1. Номер версий лучше использовать целочисленное не менее 2 байт(т.е. 65535), вам хватит за глаза. Реализовать такую систему просто - через switch.

switch(version_file())
{
    case 1: load_file_1(); break;
    case 2: load_file_2(); break;
    default: show_message('Ошибка. Неправильная версия.'); break;
}

Естественно, абсолютную совместимость вам не видать, но сделать программу намного стабильнее, возможно. Если вы читали "Азбуку геймдизайна" и помните часть про разъёмы, то вы поймёте как улучшить совместимость. Например, если в программе появилось важное, новое значение, а в файле его нет, то единственный вариант, сделать заглушку(если значения нет, то возвращается число заданное программистом). Сами понимаете, что при таком раскладе результат может быть непредсказуемый, но может всё пройти более ли менее гладко. Если в программе убралось значение, которое есть в файле, то здесь это значение читается из файла и сразу же выкидывается(т.е. пропускается). Этот вариант проще, ошибок никаких не должно быть.

Конечно, если у вас версий будет много, придётся делать много переходных функций. Если файл версий 1.1 загрузился в программе 1.2, то не факт, что он загрузиться в 1.3. Здесь уже, как говорится, везение и гемор на совести программиста.

Таким образом, что мы имеем? Мы имеем неплохую систему совместимости. Например, у вас есть огромная карта сделанная в редакторе для игры версий 1.0, потрачено много сил и времени. Но вот вы добавили кучу фичей в игру(версия 1.2) и, соответственно, скрипт загрузки карты изменился, но за счёт умнопродуманной системы совместимости, вам не надо переделывать карту с нуля, достаточно пересохранить в новый формат(что и предлагают вам многие современные программы, видя старый формат файла).

Комментариев нет:

Отправить комментарий