Crystallize писал: ты же вроде писал пакер джипега который не артефачит?
Ты издеваешься штоли? Или ты тонко предполагаешь что я умнее всей JPEG?
Цитата:
thambs писал: А шрифты с альфа-каналом и размером побольше можно будет сгенерить?
А эти по твоему какие? Без альфа-канала штоли? Можно, конечно можно. Можно из ttf сгенерить абсолютно любой шрифт любого размера, сделать ему обводку, подчёркивание и размытие. Болды, италики, весь набор.
В новом ксаше я практикую вот какую концепцию: вся низкоуровневая часть пользовательской библиотеки является её же частью и находится в папке backend. Для меню - это соответственно базовые элементы интерфейса, для игровой части - физика, сейв-рестор, чейнджлевел. Всё это в пользовательских исходниках, обычно туда лезть и не надо, но если нужно, то можно переписать вообще полностью. А движок предоставляет на вход такие интерфейсы, которые точно никогда не поменяются - взаимодействие с консолью, файловой, механизм загрузки шрифтов и текстур.
То есть не возникнет ситуации, как в той же халфе, когда в API опять не хватает какой-то одной функции и придётся городить новые интерфейсы.
Меня это всегда ужасно бесило. До смешного доходит - в халфе даже запрет на сейв нельзя было сделать по нормальному.
Добавлено 27-03-2020 в 19:35:
Скролл-листы вообще были самой калечной частью старого меню. Тут предстоит много работы.
Добавлено 27-03-2020 в 21:02:
Я неоднократно говорил, что у меня работа со всеми этими менюшками вызывает отторжение. Но в данном случае работа идёт ровно. А почему? А потому что я работаю над бакэндом, мне не надо подбирать эти долбаные координаты положения окошек - они уже подобраны в старом меню.
Эх, так нормального скриптового меню и не будет. Только захардкоженное.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Я, если честно, не очень представляю как это так может быть.
Ну к примеру внешний вид и расположение элементов в окошке вполне можно в скрипты перенести. Но что делать с поведением-то? Ну вот прописали мы в скрипте кнопку, цвет ей прописали и размер, а что будет при нажатии происходить? Как это связать с кодом самой игры?
Для скриптовых меню довольно много будет разных ограничений. Ну к примеру как делать условные кнопки, которые показываются не всегда?
Например кнопку консоли. Значит придётся городить целый язык, зачем это надо.
>> Для скриптовых меню довольно много будет разных ограничений. Ну к примеру как делать условные кнопки, которые показываются не всегда?
Например кнопку консоли. Значит придётся городить целый язык, зачем это надо.
Не думаю что там что то сложнее материалов или ентитей.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
итак, вот у нас есть старое меню. Это меню, если кто забыл, взято из Quake 2 Evolved 0.40 и довольно серъезно адаптировано к стилю WON-меню.
Ну как адаптировано - структура его не менялась особо, костылей налепили всем миром, Крейзи Рашшен помогал его писать, Адамикс (царство ему небесное) и Альбатросс. Изначально это был код Кармака, который ребята из TeamBlur расширили и дополнили. И вот такая у нас исходная каша.
Очевидно что для перевода на кресты, надо создать объекты, но процессу в первую очередь мешает необходимость постоянно видеть конечный результат. Поэтому старое меню остается в неизменном виде, а рядом пишется новое. Максимально тупым способом - то что по смыслу можно инкапсулировать - инкапсулируется. А то что не очень - оформляется в виде костыля. Таким образом я уже сделал уже три менюшки - менюху сейвов, менюху выбора скилла и главное меню. Ну и заодно анимацию шапок. И MsgBox конечно жы. На этом этапе наиболее полно раскрываются недостатки выбранного подхода и попутно отмечается что и как надо переделать в будущем. Оно конечно выглядит неплохо, но встают разные вопросы - например как обновлять данные, если они изменились. Как перезагружать меню при входе-выходе. Как изменять его размеры, если поменяется разрешение. Наконец, неплохо бы предусмотреть возможность таскать окошки по экрану. Поэтому новое меню дописано уже не будет. Оно будет лишь использовано как источник для второй итерации. И вот здесь уже будет учтено абсолютно всё, что не было сделано для первой имплементации. Почему так получается? очень просто. Некоторые вещи, особенно если ты их пишешь впервые не создают у тебя в мозгу должного представления, это неизбежный процесс. Читать умные книги и общие советы бесполезно - это твой код и он организован определённым образом. То есть первая итерация восполняет недостающие фрагменты картины, а вторая уже пишется с учётом полного виденья. В плохих случаях итераций может быть более двух. К примеру скриптовая система для рендеринга получилась только с пятой попытки. Собственно здесь и возникает важное отличие - если программист недостаточно опытный или просто ленивый, он видит что реальный код уже не укладывается в придуманную им модель, но продолжит городить свои костыли, потому что переписывать лень.
Это имеет практическое значние в том случае, если у тебя почти всё уложилось кроме пары моментов. И ты точно знаешь что расширять ничего не придется. В противном случае подход должен быть итеративным и ничего страшного в этом нет.
Добавлено 28-03-2020 в 12:52:
Цитата:
FiEctro писал: Не думаю что там что то сложнее материалов или ентитей.
ты готов писать для менюх такие же сложные скрипты-замены, как и для материалов? При том, что материалы стремятся к унификации, а менюхи наоборот - каждую заново приходится создавать. Этот скрипт по объему будет сопоставим с сходным кодом и смысл полностью потеряется.