Cfyz писал(а):Справедливости ради, про слои и функции -- это было про детали уже имеющейся реализации UI. В общем же виде -- либо приводим сетку к некоторому общему множителю, либо отказываемся от нее вовсе.
Приводить сетку к общему множителю - не обязательно: если два шрифта между собой кратны (8*8 тайл и 8*16 шрифт, или 16*16 тайл и 8*16 шрифт), то можно достаточно легко перейти на следующую систему. Все методы терминала оставляем как есть с точки зрения интерфейса и вводим дополнительный метод для переключения шрифтов. А вот уже в методе write(x, y, char) или write(x, y, string) - пересчитываем позицию на координатную сетку соответствующего шрифта. Как-то так. Надо попробовать.
Cfyz писал(а):Ну, вообще-то можно пойти и в обратную сторону. 8x8 тайл карты и 8x16 размер текста? Например, так:
Выведенные на экран три строковые константы демонстрируют как раз такие размеры тайла/символа. И какую-то ватненькую растеризацию ttf, а вроде не ломал ничего =_=.
Более того, вся эта пляска с равностью и кратностью, в общем-то, только для упрощения жизни самому себе в разметке UI. Если выбрать в качестве базиса 4 пикселя, то в 1020 пикселей по ширине укладываются 65 тайлов карты (12x12) и 30 тайлов текста (8x16). Тут лишь бы все элементы интерфейса без щелей стыковались, что несложно.
Яркий пример незашоренного мышления. Мой поклон

Ты в очередной раз выдаешь мысли, до которых я не дотумкал

Совсем я видать заварился в своём соку...
Cfyz писал(а):И пара моментов о производительности. Во-первых, оказывается оно себя по-разному ведет на практически идентичных машинах, но под Linux и Windows. Даже последняя версия под Linux, как я говорил, съедает много. Она же под Windows -- 2-10%, однако! Во-вторых, проскакивание тайлов -- это я имел в виду что в процессе бега игрок перемещается по несколько тайлов за кадр. Ровно, равномерно, одинаково на любой машине, при небольшой в общем-то загрузке CPU -- так что это похоже так и задумано. Но FPS почему-то низкий, на глаз ~10, и выглядит это немного слайдшоу.
Тому, что всё это будет работать по разному на идентичных машинах в разных осях - я не удивлен. Не могу точно сформулировать, но из прочитанного про ява-машину вытекает, что у них и от версии к версии что-то сильно в ядре меняется, и между осями большая разница в реализации ядра и еще какие-то тонкости есть. Например я точно помню статью, где писали про большую работу Microsoft по модификации ядра Win7 в плане многозадачности, из-за чего на одной и той-же машинке разница по сравнению с XP должна быть колоссальная. Или взять то, что я нигде распараллеливание специально не вводил. Но ведь раскидывает Ява выполнение и по ядрам и как-то распараллеливает похоже...
А FPS действительно низкий

Там сейчас таймер стоит на 100 мс. Я просто в начале работ поставил себе задачу - бить в одну точку, гнать прототип вперед не задерживаясь на фреймворках, проработке графики, гуя, мелких деталях. Только новые функции, самый необходимый рефакторинг и снова вперед... Просто подгоняет то, что до сих пор нет внятной архитектуры будущего эмулятора города а также генератора ситуаций из которых будут возникать квесты. Есть только ряд идей, как сделать, чтобы город не просчитывался до последнего тайла в невидимых игроку областях и не вешал проце нагрузкой. Но пока я доберусь до эмулятора - еще столько сделать надо....
Сейчас вот увидел твою картинку-пример и наконец придумал хорошую идею, как приемлимо генерировать здания произвольной формы
З.Ы. Насчет проскакивания нескольких тайлов за кадр - так не было задумано и я вроде такого не наблюдал. Косяк какой-то, пока непонятный. При том, что каждый шаг бега выполняется в том-же потоке, что и обновление экрана - это вдвойне не понятно.