MysteriesRL

NorseWorld: Ragnarok; MysteriesRL

Модератор: Alchemist

Аватара пользователя
Cfyz
Сообщения: 761
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: MysteriesRL

Сообщение Cfyz » 16 фев 2015, 16:25

Alchemist писал(а):Пробовал использовать ttf шрифт с юникодом, но даже у лучших моноширинных шрифтов нет равенства ширины и высоты, не подходят, т.к. мне обязательно нужны квадратные символы. Буду собирать мысли и силы в кучку, и рисовать новый шрифт.
Тебе обязательно нужны квадратные кириллические символы? Может использовать для карты и текста разные шрифты: квадратная латиница и псевдографика для карты, нормальный шрифт для текста? Обычно достаточно несложно, взяв размер символа карты чуть побольше, подобрать кратный шрифт специально для текста, скажем 16x16 и 8x16 или даже 20x20 и 10x20. Это несколько ограничит минимальный размер тайла карты, но смотреться должно заметно лучше, чем сплошной квадратный шрифт. В качестве наглядного примера того, как по-моему не надо делать, могу привести The Temple of Torment: скриншоты.
Cfyz теперь - наглая морда.

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 16 фев 2015, 16:48

Мысль для меня совершенно новая. Такого варианта мне в голова не приходило. Сразу ничего не отвечу, надо подумать и попробовать прикрутить какую-нибудь заплатку к моему терминалу... потестить. Не представляю пока, как это будет выглядеть.

Я, кстати, думал над твоим прошлым вопросом. Посчитал разные варианты. Получается, что мне нужно ориентироваться на минимальное разрешение в 1024*768 и минимальный размер терминала в 80*60 символов. При использовании шрифта, к примеру 12*12 - такой терминал как раз будет хорошо заполнять экран. По идее, области просмотра карты в таком терминале будет вполне достаточно. Но с твоим новым предложением - нужно хорошенько все проверить.
Совершенство - это не тогда, когда уже нечего добавить,
но тогда, когда уже ничего нельзя убрать.
Антуан де Сент-Экзюпери.

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 17 фев 2015, 19:24

Вчера думал, прикидывал, просматривал в инете инфу, покопался по форуму...
Нашел пример, где автор уже реализовал эту идею: игра Cogmind, http://www.gridsagegames.com/.
И тему, где всё это уже обсуждалось: http://rlgclub.ru/forum/viewtopic.php?f=7&t=1035.

Пока однозначного решения не принял. В отличии от собеседников в последней теме, чисто алгоритмически, даже с точки зрения уже сделанного у меня эмулятора терминала - совершенно не вижу проблемы в реализации двойной сетки с двумя шрифтами: один для тайлов со своей сеткой, другой для текста со своей сеткой знакомест. Всё эти трудности для людей с использованием двух координатных слоев, разделение функций... по моему это надуманные проблемы.

Прошерстил частым гребнем инет, вбухал весь вчерашний вечер и не нашел подходящих шрифтов для пар: 6x12 - 12x12, 7x14 - 14x14. Пара для 5x10 - 10x10 уже отпадает, т.к. символ с шириной в 5 - фигня какая-то. Если смотреть больше - нашлась готовая пара только под один размер - 8x16 - 16x16. В ближайшее время может быть попробую под это сделать реализацию. Но игра с тайлом 16x16 мне не нравится :( Я теряю большие карты на разрешениях ниже 1280x600...
Хоть каких-то кириллических растровых шрифтов 6x12 и 7x14 найти не удалось. Только если ttf к этому делу подключить...
Совершенство - это не тогда, когда уже нечего добавить,
но тогда, когда уже ничего нельзя убрать.
Антуан де Сент-Экзюпери.

Аватара пользователя
Oreyn
Сообщения: 297
Зарегистрирован: 07 авг 2013, 14:59

Re: MysteriesRL

Сообщение Oreyn » 17 фев 2015, 20:24

Дошли руки посчупать. Тормозов не заметил, все летает 6% загрузка проца. Винда 64 битная чего-то там древнее и двуядерное.
Общее впечатление - а обязательно ли так мельчить? Ну если не дань терминалам 80х25. Сейчас все поле зрения занимает ну от силы восьмую часть, все остальное - черный экран. Я бы предпочел, чтобы поле видимости занимало весь экран и пусть шрифт будет сколько угодно крупнее.

Может прикрутишь SDL (биндинг под джаву есть) да выводи любой ТТФ шрифт покрупней по центру ячеек? Размер каждого глифа в шрифте он скажет чтобы можно было отцентрировать. Описательный текст же сплошным рядом без центрирования, чтобы читабельнее был.

И да, если еще не видел - посмотри рогалик Cataclysm. Визуально город мне его напомнил.

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 17 фев 2015, 20:53

Oreyn писал(а):Дошли руки посчупать. Тормозов не заметил, все летает 6% загрузка проца. Винда 64 битная чего-то там древнее и двуядерное. Общее впечатление - а обязательно ли так мельчить? Ну если не дань терминалам 80х25. Сейчас все поле зрения занимает ну от силы восьмую часть, все остальное - черный экран. Я бы предпочел, чтобы поле видимости занимало весь экран и пусть шрифт будет сколько угодно крупнее.

Может прикрутишь SDL (биндинг под джаву есть) да выводи любой ТТФ шрифт покрупней по центру ячеек?
<...>
И да, если еще не видел - посмотри рогалик Cataclysm. Визуально город мне его напомнил.
Рад, у тебя всё летает :) Очень :)
Мельчить не обязательно, увеличивать по-любому буду. У самого тоже глаза не казенные :) Но у меня нет, и пока не придумывается вменяемого алгоритма генерации миникарты. То, что есть - полный отстой. А без возможности обозреть как можно больший кусок территории - город отлаживать тяжело. Я генератор еще и на половину задумок не реализовал... А вообще, через версию или две - буду увеличивать конечно...

SDL-биндинг у меня даж свой есть под яву. Но он и TTF пойдут в дело только как последнее решение. Это такой глупый бзик ;)

Катаклизм как-то мельком видел, посмотрю еще, может какую интересную идейку подхвачу :)
Совершенство - это не тогда, когда уже нечего добавить,
но тогда, когда уже ничего нельзя убрать.
Антуан де Сент-Экзюпери.

Аватара пользователя
Cfyz
Сообщения: 761
Зарегистрирован: 30 ноя 2006, 10:03
Откуда: Санкт-Петербург
Контактная информация:

Re: MysteriesRL

Сообщение Cfyz » 17 фев 2015, 21:51

Alchemist писал(а):В отличии от собеседников в последней теме, чисто алгоритмически, даже с точки зрения уже сделанного у меня эмулятора терминала - совершенно не вижу проблемы в реализации двойной сетки с двумя шрифтами: один для тайлов со своей сеткой, другой для текста со своей сеткой знакомест. Всё эти трудности для людей с использованием двух координатных слоев, разделение функций... по моему это надуманные проблемы.
Справедливости ради, про слои и функции -- это было про детали уже имеющейся реализации UI. В общем же виде -- либо приводим сетку к некоторому общему множителю, либо отказываемся от нее вовсе.
Alchemist писал(а):Прошерстил частым гребнем инет, вбухал весь вчерашний вечер и не нашел подходящих шрифтов для пар: 6x12 - 12x12, 7x14 - 14x14. Пара для 5x10 - 10x10 уже отпадает, т.к. символ с шириной в 5 - фигня какая-то. Если смотреть больше - нашлась готовая пара только под один размер - 8x16 - 16x16. В ближайшее время может быть попробую под это сделать реализацию. Но игра с тайлом 16x16 мне не нравится :( Я теряю большие карты на разрешениях ниже 1280x600...
Ну, вообще-то можно пойти и в обратную сторону. 8x8 тайл карты и 8x16 размер текста? Например, так:
Скрытый текст: ПОКАЗАТЬ
mockup-1.png
mockup-1.png (43.18 КБ) 4051 просмотр
Выведенные на экран три строковые константы демонстрируют как раз такие размеры тайла/символа. И какую-то ватненькую растеризацию ttf, а вроде не ломал ничего =_=.

Более того, вся эта пляска с равностью и кратностью, в общем-то, только для упрощения жизни самому себе в разметке UI. Если выбрать в качестве базиса 4 пикселя, то в 1020 пикселей по ширине укладываются 65 тайлов карты (12x12) и 30 тайлов текста (8x16). Тут лишь бы все элементы интерфейса без щелей стыковались, что несложно.

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

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 18 фев 2015, 07:02

Cfyz писал(а):Справедливости ради, про слои и функции -- это было про детали уже имеющейся реализации UI. В общем же виде -- либо приводим сетку к некоторому общему множителю, либо отказываемся от нее вовсе.
Приводить сетку к общему множителю - не обязательно: если два шрифта между собой кратны (8*8 тайл и 8*16 шрифт, или 16*16 тайл и 8*16 шрифт), то можно достаточно легко перейти на следующую систему. Все методы терминала оставляем как есть с точки зрения интерфейса и вводим дополнительный метод для переключения шрифтов. А вот уже в методе write(x, y, char) или write(x, y, string) - пересчитываем позицию на координатную сетку соответствующего шрифта. Как-то так. Надо попробовать.
Cfyz писал(а):Ну, вообще-то можно пойти и в обратную сторону. 8x8 тайл карты и 8x16 размер текста? Например, так:
Скрытый текст: ПОКАЗАТЬ
mockup-1.png
Выведенные на экран три строковые константы демонстрируют как раз такие размеры тайла/символа. И какую-то ватненькую растеризацию ttf, а вроде не ломал ничего =_=.

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

А FPS действительно низкий :) Там сейчас таймер стоит на 100 мс. Я просто в начале работ поставил себе задачу - бить в одну точку, гнать прототип вперед не задерживаясь на фреймворках, проработке графики, гуя, мелких деталях. Только новые функции, самый необходимый рефакторинг и снова вперед... Просто подгоняет то, что до сих пор нет внятной архитектуры будущего эмулятора города а также генератора ситуаций из которых будут возникать квесты. Есть только ряд идей, как сделать, чтобы город не просчитывался до последнего тайла в невидимых игроку областях и не вешал проце нагрузкой. Но пока я доберусь до эмулятора - еще столько сделать надо.... :(

Сейчас вот увидел твою картинку-пример и наконец придумал хорошую идею, как приемлимо генерировать здания произвольной формы :)

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

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 18 фев 2015, 07:10

Погоди! Я только сейчас подумал... У меня и тех, кто писал про проскакивание кадров наверное нестыковка в методах! Ты бег делал клавишами управления курсором? Зажатой клавишей движения? Или нажатием "w" - перемещение в точку назначения по поиску пути? Если зажатой клавишей - то вопрос разрешился :) Я-то так вообще почти не передвигаюсь в прототипе ))))) И клавиатура явой в отдельном потоке обрабатывается, из-за чего может быть куча перемещений между кадрами!
Совершенство - это не тогда, когда уже нечего добавить,
но тогда, когда уже ничего нельзя убрать.
Антуан де Сент-Экзюпери.

Аватара пользователя
Alchemist
Мастер
Сообщения: 203
Зарегистрирован: 13 дек 2006, 09:15
Откуда: Нижний Тагил, Иваново
Контактная информация:

Re: MysteriesRL

Сообщение Alchemist » 09 апр 2015, 06:44

Опубликована новая версия прототипа игры (v0.0.4). С прошлого релиза добавлено немного:
(+) Подключена генерация подвалов.
(+) Добавлена заготовка обработки преступлений.
(+) Внедрена подсистема локализации, начало локализации прототипа игры на английский и русский.
(*) Рефакторинг части классов интерфейса.
(*) Улучшена индикация основных показателей игрока.
(*) Незначительно развиты предметы и части тела, экипировка, первые несколько предметов.
(*) Простенькая система передачи событий игрового пространства, события взлома окон.
(+) Реализована заготовка взаимодействия с окружающими объектами;
предварительно на новой системе сделаны действия открытия/закрытия дверей, взлом окон.
(+) Добавлена заготовка частей и атрибутов тела, обработка голода и усталости.
Части тела должны будут поддерживать отработку предметов экипировки.
(*) Подключены XP, HP и расчет максимального веса.
(+) Добавлен экран просмотра характеристик игрока, клавиша 'c'.

Скачать дистр можно по этой ссылке: https://github.com/Serg-Norseman/Myster ... v0.0.4.zip.

Следующие версии будут выходить через большие интервалы, т.к. сейчас у меня большая загрузка и сил на разработку "для себя" почти не остается. Желающие могут смотреть код на гитхабе или присоединиться со своими исправлениями.
Совершенство - это не тогда, когда уже нечего добавить,
но тогда, когда уже ничего нельзя убрать.
Антуан де Сент-Экзюпери.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость