Дядя Миша а за new потом самому подчищать в деструкторе, или автоматом делается при выгрузке либы меню? И потом, так и не пойму, если и так есть конвертор шрифтов из ttf, то почему бы не грузить из деномически прямо из движка? Все шрифты после загрузки кэшировать и потом переюзать, по типу setFont(CFontFactory->getFont("Arial.ttf", 20, FLAG_BOLD));
Дядя Миша писал: Для скриптовых меню довольно много будет разных ограничений. Ну к примеру как делать условные кнопки, которые показываются не всегда?
Например кнопку консоли. Значит придётся городить целый язык, зачем это надо.
Речь идёт об разметке.
Цитата:
Дядя Миша писал: ты готов писать для менюх такие же сложные скрипты-замены, как и для материалов? При том, что материалы стремятся к унификации, а менюхи наоборот - каждую заново приходится создавать. Этот скрипт по объему будет сопоставим с сходным кодом и смысл полностью потеряется.
Обычный язык разметки вроде того же html'a с этим неплохо справляется. Тут даже ничего выдумывать нового не надо.
Сиерра в своё время даже делала WON подобное меню для своего сайта по халфе, с анимациями, озвучкой и прочими финтиплюшками.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Обычный язык разметки вроде того же html'a с этим неплохо справляется.
Либа для поддержки html весит почти 19 мегабайт. Думаю, ДМ на такое не пойдёт. Писать собственный парсер - такое себе удовольствие. Тем не менее, идея неплохая.
KiQ писал: а за new потом самому подчищать в деструкторе
всё автоматически.
Цитата:
KiQ писал: то почему бы не грузить из деномически прямо из движка?
ну потому что это непортабельное решение. К тому же шрифт у меня это более широкое понятие. В нём хранятся и буквы и кнопки меню и иконки худа. И спрайты будут в шрифтах и лайтмапы, если я всё же надумаю к ним вернуться.
Добавлено 30-03-2020 в 12:35:
Я вот всё думаю, как бы решить вопрос с масштабированием. Наверное отрендерю меню в FBO, а потом растяну его на весь экран.
Ku2zoff писал: Либа для поддержки html весит почти 19 мегабайт. Думаю, ДМ на такое не пойдёт. Писать собственный парсер - такое себе удовольствие. Тем не менее, идея неплохая.
У валвы вроде был свой парсер. html всеголишь как пример, можно какие то более простые языки разметок попробовать.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
По вадам, если еще не писал, расскажу как обстоят дела.
Итак, как вы наверное уже поняли - вадов в XashNT больше не будет. Но остаётся открытым вопрос - создана целая куча карт, где текстуры прописаны как имя без пути. Что же с ними делать? Сидеть в блокноте выполнять автозамену на каждую текстуру, меняя её имя на имя с путём?
Это дико неудобно. В движке останется поддержка механизма загрузки таких текстур в виде двух элементов. Первое - это конечно поле "wad" в ворлдспавне. Отсюда движок и другие утилиты смогут узнать список использованных вадов. Точнее говоря, в новых условиях, это уже не имена вадов, а неймспейсы. Эти неймспейсы подгружаются в особую переменную <wadname>. А уж как использовать эту переменную - это полностью дело юзера.
В дефолтном шаблоне загрузки материалов для уровня можно задать вот такую строчку:
это просто как пример. И вот уже у нас начальное имя текстуры разворачивается в textures/<wadname>/<texname>. Но не всё так просто.
<texname> - это имя текущей текстуры. А <wadname> будет перебираться из всего списка, заданного в поле "wad" в том же самом порядке, в котором оно перебиралось и для настоящих вадов. Т.е. меняя порядок следования имён вадов в поле "wad" вы точно также сможете регулировать, откуда грузить ту или иную текстуру, если она продублирована в разных вадах. Это полностью копирует поведение халфы в отношении загрузки текстур из вадов и в то же время абсолютно ни к чему не обязывает пользователя, поскольку для каждого материала можно прописать абсолютно любое поведение. Здесь <wadname> лишь одна из доступных переменных в пути. Её можно вообще не использовать.
Можно прописать пути жёстко, можно выбрать какие-то иные правила загрузки, я напоминаю, что addImageLocation можно задать несколько раз.
Можно, к примеру сделать вот так
и вот уже текстуры будут искаться в папке по имени уровня, а если их там нету - то в папке common. Вообщем вариантов масса.
Реальные вады останутся лежать в папке с игрой, до тех пор, пока они требуются редактору. В дальнейшем, я надеюсь, будет сделан плагин для джека, который будет парсить мои материалы, их абстрактная часть уже выделена в особый шареный фреймворк, который например, использует компилятор уровней. Ну и плагин к редактору сможет точто так же.
Добавлено 30-03-2020 в 13:54:
Цитата:
FiEctro писал: html всеголишь как пример
я не вполне понимаю как html будет отображать кнопки из моего формата шрифтов. Может тогда уже встроить редактор меню прямо в само меню? Запустил с ключом -editmenu и переставляй-добавляй элементы. Потом нажал кнопку Save и новые скрипты записались в папку. Встроить такой редактор гораздо проще, чем городить отдельный. Благо все элементы для его создания по совместительству и элементы меню.
Дядя Миша писал:
Может тогда уже встроить редактор меню прямо в само меню? Запустил с ключом -editmenu и переставляй-добавляй элементы. Потом нажал кнопку Save и новые скрипты записались в папку. Встроить такой редактор гораздо проще, чем городить отдельный. Благо все элементы для его создания по совместительству и элементы меню.
Как вариант. Но по мне самих скриптов с разметкой вполне достаточно, нет особого смысла городить ещё и редактор.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Битмаповые шрифты - атавизм. Но вообще что то вроде такого:
Понимаешь, любые попытки заимстововать современные наработки где "все проблемы уже решены" приводят к необходимости вложить тысячу долларов, перейти на WebGL, поставить 2017 студию итд а результат будет требовать для работы Windows 7.
Дядя Миша
Ну ты перерисуй хотя бы половину дефолтных виндовых шрифтов в битмапу, чтобы хватило всем. Но на деле это просто халтура, которая сваливается на плечи художников, которых нет. Плюс - огромные проблемы с локализацией, и кастомизацией, где под каждый эффект надо хранить свою картинку, как анимации кнопок в WON меню.
Я понимаю если бы это для пиксельной игры делалось, где графика заточена под олдскульность, пиксельность и тайлы. Тогда да, битмапа решает.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: Но на деле это просто халтура, которая сваливается на плечи художников, которых нет.
Программу же можно сделать. Или вообще растеризовать вектор при загрузке. Хотя это стрёмно - на разных системах разные растеризаторы. Я например под виндой никак не могу добиться красивых битмап-шрифтов, поэтому делаю их под макосью. Вот там красота.