а я сижу и плачу
уже дошел до финала. импорт большого изображения есть, экспорт из редактора в игру есть, оптимизация после экспорта тоже есть... но тут случился мегаэпический облом
рассказываю: в карте тайлов значение состоит из двух байтов. то есть 16 бит. 1 бит - приоритет (то есть когда два изображения на заднем фоне - одно лежит поверх второго. вот этот бит за это отвечает), потом не точно - палитра 2 бита, и зеркала 2 бита. в итоге под номер тайла остается 11 бит. а 11 бит это %11111111111 или $7FF или 2047 тайлов. на одном экране может быть 64х28 тайлов = 1792. то есть если не делать никакой оптимизации изображения, то один экран худо бедно потянет. но у меня, ***, 4 экрана есть в трех местах. в итоге, когда я делаю экспорт (а это две разные операции экспорт и потом оптимизация экспорта), все естественно что плывет к чертовой бабушке. потому как 4 экрана это = 1792 * 4 = 7168. что несколько больше, чем 2047. так что я в расстройстве.
на ум приходит лепить костыль. делать 3 байтовые карты, вместо двух байтовых. научить редактор читать и 2 байтовую и 3 байтовую карту. сам экспорт делать во временную карту 3 байтовую, после измерять количество тайлов, сколько этот экран занял. если окажется что количество меньше 2047 - оставлять без оптимизации, и просто пересохранять 3 байтовую в 2 байтовую карту. если больше 2047, то делать оптимизацию, проверять сколько тайлов это дело занимает, если укладывается в 2047, то хорошо. если нет - ругаться пользователю, чтобы он изменил изображение на менее ресурсоемкое.
Добавлено позже:еще причем не 2047, а меньше. так как на экране могут быть моргающие тайлы. типа как в диалоге на заводе наверху красные полоски и кнопки моргают. их ведь тоже надо где-то хранить.