Сохранен 102
https://2ch.hk/b/res/307674669.html
Домен arhivach.hk временно не функционирует! Используйте адрес ARHIVACH.SITE.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Итак! Призываю C/C++/SDL/NCURSES разрабов которые достаточно ебанутые для того чтобы тратить своё вр

 Аноним 20/07/24 Суб 15:07:22 #1 №307674669 
1721477223888.png
1721477223888.png
Итак! Призываю C/C++/SDL/NCURSES разрабов которые достаточно ебанутые для того чтобы тратить своё время в выходные дни!

Дано:
- Опенсурсная игра Cataclysm BN (форк Cataclysm DDA)
- Желание добавить вывод тайл c превью игрока на вкладку трейтов при создании персонажа
- Очень поверхностное знание об экосистеме плюсов и процессе разработки на них
- ОП-долбоёб. IQ: -1. Род деятельности: SHIT-TIER вебмакака
- Видео с пояснительными (нет) комментариями от вашего любимого долбоёба

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

Информаци много, так что буду выкладывать видосики с тем что я нашел в сурсах игры. Свой голос заменил на RVC с Внуком Елькина, чтобы вы не терпели плебейское визжание очередняры. Попробуем разобраться как заставить отрисовать хотя бы какой-то тайл на вкладке создания персонажа. Мы я обязательно проиграем!
Аноним 20/07/24 Суб 15:07:49 #2 №307674687 
1721477249890.mp4
В общем создал тред на случай того если вдруг кому-то будет внезапно интересно а также если какой-то гениальный человек вдруг подскажет как мне именно отрисовать тайл персонажа на экране создания.
По сути мне нужно осуществить рендеринг персонажа здесь, на этой строчке (там хендлер отрисовки ui). wnoutrefresh отвечает за отрисовку окна:
https://github.com/cataclysmbnteam/Cataclysm-BN/blob/1fe48d4c44b87ddddaf2cda8002910d96f5b8338/src/newcharacter.cpp#L1227

Сейчас я застопорился немного, так что просто выложу +- то что мне удалось найти в мп4. Выложу сюда приколюшки, а сам выйду немного в АФК и разогрею себе поесть.

Вот прикрепляю место где я хочу добавить вывод.
Аноним 20/07/24 Суб 15:08:25 #3 №307674711 
1721477284895.mp4
Пытаюсь показать где требуется выполнить отрисовку персонажа.
Аноним 20/07/24 Суб 15:08:59 #4 №307674728 
1721477319650.mp4
Как вообще в целом в коде представлен запуск игры - дохожу до мейн лупа.
Аноним 20/07/24 Суб 15:09:43 #5 №307674749 
1721477362289.mp4
Разбираемся то как происходит отрисовка, т.е. на каком этапе после загрузки игры она вообще выполняется, кто её выполняет. (Часть1)
Аноним 20/07/24 Суб 15:10:08 #6 №307674773 
1721477388492.mp4
Часть2
Аноним 20/07/24 Суб 15:10:50 #7 №307674794 
1721477429717.mp4
Пытаемся разобраться как происходит отрисовка окна в меню создания персонажа (ч.1)
Аноним 20/07/24 Суб 15:11:23 #8 №307674818 
>>307674669 (OP)
>C/C++/SDL
Ну хуй знает, ОП, не мог на Java, C# или лучше Godot что-то притащить? Твои ся++ с сдлом совсем для задротов, застрявших в прошлом веке.
Аноним 20/07/24 Суб 15:11:30 #9 №307674822 
1721477469920.mp4
Часть 2.
Аноним 20/07/24 Суб 15:11:56 #10 №307674837 
1721477496178.mp4
Часть 3.
Аноним 20/07/24 Суб 15:12:34 #11 №307674859 
1721477534025.mp4
>>307674818
Сам хуею с кода. Собственное косолобие не позволяет в полной мере осознать местный код.

Разбираюсь как происходит отрисовка текста в окне создания персонажа.
Аноним 20/07/24 Суб 15:13:01 #12 №307674891 
1721477561544.mkv
Апдейт по фреймбафферу.
Аноним 20/07/24 Суб 15:13:33 #13 №307674908 
Собственно что мы имеем в итоге:
1. Отрисовка окон производится посредством SDL (почему не курсес? я не видел проверки на то используем мы курсес версию либо обычную с рендерингом в момент отрисовки)
2. На экране создания персонажа текст хранится напрямую в инстансе окна
3. invalidate_framebuffer используется для обнуления переданного буфера terminal_buffer либо oversized_buffer - глобальные вектора cursesline. terminal_buffer вроде как используется для хранения информации которую нужно вывести в самой игре (тайлы и прочее), оверсайзд - для отрисовки окошек в меню. Но это не точно, потому что при отрисовке окон в меню создания персонажа я заметил что юникод символы берутся непосредственно из инстанса окна, а в буффер запихивается их значение из окошка, т.е. по сути сохраняется результат последнего рендера
4. Не понятно как происходит сама отрисовка. Допустим у нас есть глобальное окно игры. Внутри него curses окна. Есть два разных буфера отрисовки (?). Перед любой отрисовкой один из этих буферов обязательно обнуляется (инвалидейт фреймбаффер) в переданной области (ширина/высота)
5. Что характерно - после обновлением тайлов глобальная переменна need_updateу станавливается как true. Но не очень понятно что он там будет пытаться обновить когда при том же обновлении окна напрямую вызывалить методы геометрии SDL для отрисовки текста/линий/ректанглов. Хотя возможно он потом где-то в конце как раз финальный рефреш экрана сделает, хз.

В ОБЩЕМ НЕ МОГУ ПОНЯТЬ МЕХАНИКУ ОТРИСОВКИ И КАК МНЕ НА КОНКРЕТНОМ ОКНЕ ОТРИСОВАТЬ СДЛ ТЕКСТУРУ ТАЙЛА! ААА!!!
пойду отойду
Аноним 20/07/24 Суб 15:14:29 #14 №307674943 
1721477649918.mp4
>>307674891
Забыл видрил в мп4 конвернтнуть, пардон.
Аноним 20/07/24 Суб 15:16:31 #15 №307675018 
>>307674943
Какая-то совсем лоулевел хуета. Буфферы блять. В нормальных играх на современных движках все такое абстрагировано, и пишешь чисто игровой код.
Аноним 20/07/24 Суб 15:24:06 #16 №307675314 
>>307675018
Есть такое. Там костяк кода - чистая сися 2009 год. Так что я терплю
Аноним 20/07/24 Суб 15:26:08 #17 №307675382 
>>307674669 (OP)
Абдуль на выдумки хитра!
Аноним 20/07/24 Суб 15:27:36 #18 №307675447 
>>307675382
НА ЖЕНУ ДОНАТЬТЕ
Аноним 20/07/24 Суб 15:35:20 #19 №307675736 
Так, я поел. Пойду дальше путешествовать по коду, вдруг что-нибудь пойму внезапно.
sage[mailto:sage] Аноним 20/07/24 Суб 15:36:36 #20 №307675792 
>>307675736
Sage
sage[mailto:sage] Аноним 20/07/24 Суб 15:37:33 #21 №307675825 
Sage
Аноним 20/07/24 Суб 15:39:46 #22 №307675923 
>>307675825
Сагатель, зачем сагаишь?
sage[mailto:sage] Аноним 20/07/24 Суб 15:41:19 #23 №307675989 
>>307675923
Я ебал рот всех анальников, гандон бля.
Аноним 20/07/24 Суб 15:42:49 #24 №307676042 
1000034082.webp
>>307674669 (OP)
Анон, как вкатиться? Игрушка много весит? Сложное?
Аноним 20/07/24 Суб 15:42:59 #25 №307676046 
>>307674669 (OP)
охуенная тема! в свое время начал ц++ учить потому что хотел понять, как эта игра работает. правда бросил потом и игру, и изучение, но иногда возвращаюсь. правда в dda в основном. круто, что ката еще живет
Аноним 20/07/24 Суб 15:44:54 #26 №307676122 
>>307674687
мда, так этого додяна я и представлял

Вы только вслушайтесь в этот голос. Настоящий додик. Шанс на тянку 0%
Аноним 20/07/24 Суб 15:45:03 #27 №307676131 
>>307676042
Ебнутый что-ли, зачем вкатываться в анальный доисторический код с буферами и чуть ли не ассемблером. Бери Godot какой-нибудь и туда вкатывайся.
Аноним 20/07/24 Суб 15:45:50 #28 №307676166 
>>307676131
Я про игру, а не про кодинг.
Аноним 20/07/24 Суб 15:46:14 #29 №307676184 
>>307676122
Щас код надрочит, устроится на 300к и наймет шлюху содержанку. Она будет ему хуй сосать, а ты дальше про додиков рассуждать.
Аноним 20/07/24 Суб 15:49:44 #30 №307676339 
1721479765254.png
1721479765254.png
1721479765254.png
1721479765254.png
А, вот зачем этот needupdate нужен. В том самом гетинпуте пользователя в мейн лупе когда мы каждый ход пользователя обрабатываем проверяется эта переменная и вызывается обновление стандартного окна. Только я подозреваю что стандарнтое окно это не окно создания персонажа. Правда он в цикл как будто ебучий попадает, там же апдейт тру опять ставится. Хотя возможно это так и задумано.

>>307676042
В вг есть тред по этой игре
https://2ch.hk/vg/res/48608472.html

Достаточно интересная, затягивает. Это как пошаговый зомбоид с кучей механик: мутагены, подземные лаборатории, огромная гора крафта, свои машины можно делать и кататься на них. Куча видов зомбиков, куча модов. В БН тайлсет встроен по умолчанию, саундпак (чтобы музыка и звуки работали) качаешь отдельно, в треде есть ссылки. А вообще там есть ссылка на лаунчер, через него все накатить можно.)

Игра не особо сложная если выучить хоткеи, дальше автоматически игровой процесс идёт. Хоткеи сначала неочевидны, но быстро запоминаются. Обязательно в настройках включи движение по часовой стрелке чтобы зажав стрелочки + шифт ты мог по диагонали двигаться, а то на нумпаде вообще не удобно как мне кажется. Гайды по хоткеям в треде вроде где-то имеются.

>>307676046
Игра кайфовая это точно. Правда разбираться в её коде это надолго...

>>307676122
Голос заменил на RVC с Внуком Елькина бтв, мой реальный голос ещё хуже.
Аноним 20/07/24 Суб 15:50:54 #31 №307676385 
>>307676339
Это что-то типа Dwarf Fortress? По описанию похоже.
Аноним 20/07/24 Суб 15:55:06 #32 №307676554 
1721480087142.png
1721480087146.mp4
>>307676042
У меня игра под гиг весит с тайлсетом + саундпаком и модпаком от Кенана (куча разных модов сразу). Но когда ты будешь играть она до 5 гигов может спокойно разрастись и больше, т.к. карта мира бесконечная и на ходу генерится. Прикрепил второй видрил - настройка которую тебе нужно включить чтобы при зажатии шифт + стрелочка ты мог по диагонали ходить, вместо нумпада.
>>307676385
Я не играл особо в дворфов, но напоминает на адвенчур режим дворфов, только тут всё вокруг адвенчура сделано. Ну и как по мне хоткеи здесь удобнее чем в дворфах.
Аноним 20/07/24 Суб 16:02:12 #33 №307676894 
>>307674669 (OP)
>NCURSES
>игра
Зачем?
Аноним 20/07/24 Суб 16:03:57 #34 №307676973 
>>307676894
Это для шизиков которые очень любит ASCII и терминальчики, игра изначально с ncruses была сделана, потом внедрена поддержка тайлов и sdl по идее. Сейчас 99% играет с тайлами. Правда я сейчас не могу понять как они ncurses вместе с sdl смешали, я вот смотрю и как будто бы все обновление экрана через SDL реализовано.
Аноним 20/07/24 Суб 16:04:49 #35 №307677003 
>>307676973
В терминальчик можно и без ncurses бодренько срать.
Аноним 20/07/24 Суб 16:05:25 #36 №307677029 
>>307677003
Можно но ncurses вроде полезное апи предоставляет чтобы упростить жизнь, насколько я это вижу.
Аноним 20/07/24 Суб 16:05:34 #37 №307677040 
>>307676339
>В вг есть тред по этой игре
Че-то читнул и проиграл, такое то количество форков на говно мамонта с нулевым графоном, срущиеся разрабы, лошение в стиме, изгнания, призывы не покупать. Пиздец они там ебнутые конечно, своя атмосфера.
Аноним 20/07/24 Суб 16:06:09 #38 №307677065 
>>307676184
Хорошая сказочка, да только смысла в этом нет

Любовь за деньги не купишь, а остальное - и так ничего не стоит. Не имеет никакой ценности.
Аноним 20/07/24 Суб 16:06:26 #39 №307677076 
>>307677029
Норм посоны ещё в 90-х ANSI-последовательности наизусть задрочили.
Аноним 20/07/24 Суб 16:07:26 #40 №307677130 
>>307677065
И что в этом сказочного? Хуй сосать после зарплаты в 300к легче легкого купить. Любовь тебе содержанка тоже изобразить может, не хуже бытовой шлюхи с браками и личинками.
Аноним 20/07/24 Суб 16:07:36 #41 №307677138 
>>307677040
Лмао, когда форкнули DDA было то ещё веселье. Разраб текущего тайлсета (сидел в треде бтв) потом перешёл в BN а потом посрался и с BN когда ему что-то не понравилось, в итоге выпилился вообще. Но его тайлсет другие люди подхватили и обновляют.
Аноним 20/07/24 Суб 16:10:46 #42 №307677278 
>>307677040
Да, забыл добавить что актуальных форков катаклизма считай только два - DDA который является оригинальным форком Cataclysm и BN который является форком Cataclysm DDA когда части комьюнити не зашёл подход к разработки. Остальное всё мёртвое, вроде как.
Аноним 20/07/24 Суб 16:11:33 #43 №307677311 
>>307677278
>Остальное всё мёртвое, вроде как.
Шизики устали сраться и разбежались.
Аноним 20/07/24 Суб 16:13:50 #44 №307677411 
>>307677130
Про брак и личинок никто и не говорил

Ты же знаешь что она изображает, самого себя - то не наебешь, лол

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

Секс - это не просто движение в мокрой дырке, это в первую очередь различного рода эмоции, привязанность и так далее.

Это еще раз повторяю - ни за какие бабки не купишь. И самого себя так же - никак не наебешь.

Учи матчасть сына корзина

Бабки это нихуя не решение этого вопроса, а просто попытки перекрыть то чего за деньги не купишь. В долгосрочной перспективе - очень провальные
Аноним 20/07/24 Суб 16:14:23 #45 №307677435 
>>307676131
Если ты не -ААА- создаешь, то своё двигло написать дело пары недель.
Ну, если с нуля учить, то месяца 3 точно.
Аноним 20/07/24 Суб 16:15:37 #46 №307677483 
>>307677411
Еще раз повторяю - бытовая шлюха ничем не отличается от шлюхи за деньги. Только во втором случае тебе не придется вливать годами бабок в нее и личинок, заниматься разводами и дележом имущества. И выглядеть будет намного лучше, за собой следить. Все остальное твои коупинги, мол я не лошара, что себе тупую пизду на шею повесил.
Аноним 20/07/24 Суб 16:18:40 #47 №307677584 
>>307677435
Но нахуя? Если тот же курс по Годоту занимает те же пару недель, а потом можно игры уже почти ААА качества генерить, был бы художник. И с вменяемым разделением кода, справочками на любой чих, кучей продуманных хелперов, инструментами, и все в опенсорсе. Короч свое двигло пишут сейчас только аутисты.
Аноним 20/07/24 Суб 16:19:24 #48 №307677609 
>>307676385
Короче это старомодный roguelike, только с открытым миром и про зомби
>>307677040
Там форка всего два, но разработка это реально пиздец, основной целью разрабы видимо сделали полный реализм всего и во всем, из-за чего со временем играть в это стало еще более неудобно, персонаж из-за одного укуса грустит и не может воду вскипятить, зато можно найти флаг аутистов и флаг Таджикистана
А насчет форков - древний как говно мамонта nethack наверное рекордсмен, там их штук двадцать или тридцать. Но его коммунити в России уж точно окончательно заглохло. Охуеть, сколько еще такого теневого контента в мире, который никому неизвестен или неинтересен
Аноним 20/07/24 Суб 16:20:00 #49 №307677630 
>>307677584
Ну в контексте игры это оправдано, потому что она древняя достаточно, так что имеем такое вот легаси.
Мимо.
Аноним 20/07/24 Суб 16:21:04 #50 №307677660 
>>307677483
Бля ну как с шизом общаться, ему говоришь одно - а он продолжает свою хуйню нести по кругу, пиздец конеш
Аноним 20/07/24 Суб 16:22:25 #51 №307677710 
>>307677609
Nethack как раз помню, в него интересно играть было, когда лет 17 было. Сейчас уже вряд ли конечно, такие игры нужно пробовать в соответствующем возрасте. Не знал, что там гора форков, я думал он вообще помер.
Аноним 20/07/24 Суб 16:23:12 #52 №307677739 
>>307677660
>Ряяя, все кто на тупую пизду с личинками не вкалывает шизы
Аноним 20/07/24 Суб 16:26:33 #53 №307677887 
1721481974739.png
1721481974740.png
1721481974741.png
1721481974742.png
Окей, вот оно. Отрисовка видимо в одном месте везде происходит из SDL буффера уже. Надо будет дебагером пройтись чтобы убедиться точно будет ли оно на экране создания персонажа это вызывать или нет.
Аноним 20/07/24 Суб 16:26:47 #54 №307677899 
>>307677739
Хахах, я тебе еще в прошлом ответе сказал, что про личинок и вкалывание - никто не говорил) охуеть ты реально псих

У меня очень много отношений было где я даже копейки не тратил лол, ну реал инцел со своей шизой смачно залетел в тред
Аноним 20/07/24 Суб 16:28:45 #55 №307677993 
>>307677899
А вот и фантазии бабораба пошли, нихуя он не тратил, ага, знаем таких. Сам там уже на алиментах кругом сидит, судебные иски за ним гуляют, тюрьма за долги пездам светит, квартира в залоге у ашотов, но все туда же, инцелы, инцельчики, эот не просто движение в мокрой дырке, такие-то эмоции!
Аноним 20/07/24 Суб 16:30:44 #56 №307678096 
>>307677993
Бро без шуток, ты сумашедший - сходи пусть тебе таблетки какие - то хоть выпишут

Я вижу что ты на мир обиделся и извратил его в своем сознании, чтобы не чувствовать себя ущербом и жить дальше, но в реальности все по другому, начни лечение пока не поздно

Хватит жить в своих иллюзиях
Аноним 20/07/24 Суб 16:30:54 #57 №307678104 
1721482236191.png
1721482236192.png
>>307677887
Как будто бы обновление экрана производится при обработке нажатия пользователя только, странно это. Не очевидно если просто взглянуть на вызов функции.
Аноним 20/07/24 Суб 16:31:11 #58 №307678118 
>>307678096
Долги-то как отдавать будешь? Посодют ведь.
Аноним 20/07/24 Суб 16:31:22 #59 №307678130 
>>307677710
>такие игры нужно пробовать в соответствующем возрасте
Мне наоборот стремно, что я тогда колды не нюхал, а пялился в эти буковки.
>Не знал, что там гора форков, я думал он вообще помер
Он и помер по крайней мере у нас, кроме /ro и пары форумов из нулевых я никаких тематических сообществ не нашел, но за годы форков там успело накопиться, чуть ли не с начала девяностых. Но он меня не особо зацепил, отсутствие вообще каких-либо тайлсетов, кроме пары платных (у того же катаклизма около десятка самых разных, которые идут прямо с игрой) и неудобное управление смутили. Особенно после DCSS, которая хоть и максимально оказуаленная, но довольно ламповая
Аноним 20/07/24 Суб 16:32:04 #60 №307678159 
>>307678130
смутили, блять, не подобрал выражения получше
Аноним 20/07/24 Суб 16:34:26 #61 №307678272 
>>307674669 (OP)
дискорд давай
Аноним 20/07/24 Суб 16:35:32 #62 №307678310 
>>307678104
Да, handle_input() обновляет экран и замораживает работу программы пока не будет получена обратная связь от пользователя. Надо сейчас разобраться как он отрисовывает.
>>307678272
Надо подготовить его, секунду.
Аноним 20/07/24 Суб 16:42:41 #63 №307678606 
>>307678272
Лол, дрискорд не даёт нормально создать аккаунт теперь на временную почту. Ладно, похуй.
@anonch
Аноним 20/07/24 Суб 16:44:50 #64 №307678704 
>>307674669 (OP)
> Призываю C/C++/SDL/NCURSES разрабов
ну допустим на месте
> Опенсурсная игра Cataclysm BN (форк Cataclysm DDA)
> можно ли каким-то образом отрисовать превью моего персонажа в окне выбора трейтов
что именно за форк не знаю, но в оригинальном CDDA просто собираешь данные о выборе игроком черт (ибо там это уже делается) нужных тебе по внешке, ну и выводи их куда тебе нужно и в каком виде, хоть окно с 3D рендером нейросеточкой
Аноним 20/07/24 Суб 16:49:33 #65 №307678880 
>>307674687
конкретно по твоему видео разбиваешься текущую вкладку черт как сделано во вкладке профессий (код прямо там смотри и копируй куски), получишь разбиение такое, что справа будет тебе еще область под какое угодно рисование, хоть тайлами, хоть как и сказал анимешных тянок через нейросеточки генерируй
Аноним 20/07/24 Суб 16:51:13 #66 №307678941 
>>307674908
> почему не курсес?
потому что от него открестились в пользу SDL2 ибо лучше по всем пунктам
Аноним 20/07/24 Суб 16:56:19 #67 №307679116 
>>307678704
Соррян анон сейчас не могу отвечать, человек в дискорд подключился и пытаемся разобраться.
Аноним 20/07/24 Суб 17:16:38 #68 №307679943 
А насколько сложно было бы кату перенести с терминала? Да, тайловая, да, пошаговая, но с нормальным интерфейсом и меньше прочих условностей
Аноним 20/07/24 Суб 17:27:30 #69 №307680427 
>>307679943
Она по идее уже не особо в терминале если ты скачал TILES версию, запускается процессом а не консолькой же. Просто рендерит ASCII чары часто если нужный тайлсет отсутствует. А так сейчас даже карта отрисовывается тайлами если нужные тайлы имеются (кроме минимапы лол).

Чтобы прикрутить мышку правда придётся постараться наверное так как философия игры вокруг ручного ввода построена.
Аноним 20/07/24 Суб 17:41:00 #70 №307680991 
1721486441743.png
Так, ладно, возвращаюсь в тред. Пока что всё ещё предпринимаю попытки вывести.

>>307678704
>CDDA просто собираешь данные о выборе игроком черт (ибо там это уже делается)
Там действительно это уже делается. Я нашёл конкретно место где. Но сама отрисовка там делается ебанутыми методами совершенно, либо мне IQ не хватает понять как просто.

>что справа будет тебе еще область под какое угодно рисование, хоть тайлами, хоть как и сказал анимешных тянок через нейросеточки генерируй
Ну есть такое да. Я там и хочу отрисовать. Но код существующий отрисовки тайлов как будто бы завязан уже на то что ты работаешь в отдельном окне.
>потому что от него открестились в пользу SDL2 ибо лучше по всем пунктам
Окей, прикольно, значит везде с SDL2 по итогу работаем насколько я понимаю. Осталось понять как хотя бы что-то на экран создания персонажа вывести помимо очевидного текста. Вот сижу сейчас.
Аноним 20/07/24 Суб 17:47:11 #71 №307681236 
1721486812527.png
1721486812527.png
1721486812530.png
1721486812530.png
>>307680991
>уже на то что ты работаешь в отдельном окне.
Имею ввиду на окне непосредственной игры, оно там другое. А если вглубь покопаться то окно как будто и не нужно вообще, из него максимум координаты высчитывают и не используют в отрисовке (оно участвует в отрисовке только когда пытаются текст тех же трейтов к примеру вывести и границы экрана линиями, как на пикриле )
Аноним 20/07/24 Суб 18:12:59 #72 №307682368 
Идешь в
https://github.com/cataclysmbnteam/Cataclysm-BN/blob/main/src/output.cpp#L1314 - тут все функции по отрисовки окна, там пишешь свою функцию drawCharacter и смотришь как рисуются другие UI элементы.

Твоя задача с начала нарисовать просто прямоугольник например красным цветом в нужном месте, понять как позиционировать объекты в коне.

Далее есть https://github.com/cataclysmbnteam/Cataclysm-BN/blob/main/src/character_display.cpp который имеет методы отрсиовки различных статов персонажа это я так понимаю какраз то что тебе надо, и вроде в твоем newcharacter.cpp#L1227 ссылка на него уже есть, можешь просто попробовать эти методы подергать, хотя я так пониам что эти методы уже в каком то окне рисуют так что придется их адаптирвоать под свою задачу.

Либо отрисовать этот чарактер виндоу, отрисовать его в текстуру, а патом с свое окно
Аноним 20/07/24 Суб 18:18:00 #73 №307682571 
>>307682368
Отлично, посмотрю. До скроллбара в принципе доходил, попробую ещё раз глянуть тогда. Я пытался что-то с этим придумать:
https://github.com/cataclysmbnteam/Cataclysm-BN/blob/1fe48d4c44b87ddddaf2cda8002910d96f5b8338/src/cata_tiles.cpp#L3114

Там используется draw_entity_with_overlays для отрисовки нашего персонажа. Сама функция определяет какой тайл нужно нарисовать, определяет overlay предметы (я так понимаю это одежда, оружие и прочее), пытается отрисовать спрайт. Но не понятно правда куда он именно это отрисовывает, я пытался этот метод вызвать в newcharacter но он вообще ни на что не повлиял. В общем пройдусь по Output ещё.
Аноним 20/07/24 Суб 18:34:05 #74 №307683173 
>>307682571
Вообще ты можешь просто взять чарактер дисплей и еще 1 окно нарисовать с трейтами, если там конечно возможно 2 окна одновременно отображать, это был бы простой вариант, но и скорее всего сработал бы вариант взять чарактер дисплей, и передать в него текущее окно, оно отрисует трейты в текущее окно, но хз где это будет в плане позиционирования, так что вариант взять чарактер диплей и в нем сделать метод отрисовки в нужных координатах наврено тоже достаточно простой

Т.е там же методы отрисовки статов такого плана

void character_display::print_encumbrance( ui_adaptor &ui, const catacurses::window &win,
const Character &ch,
const int line, const item *selected_clothing )
{

Т.е ты передаешь ссылку на окно где рисовать, это будет текущее твое окно. Но рисует он по линиям я так понял

const int firstline = clamp( line - height / 2, 0, std::max( 0,
static_cast<int>( bps.size() ) - height ) );

Считает ферст лайн и к нему добавляет смещение линий которое передается в метод, может этого даже и достаточно будет я хз как оно там у тебя выглядит, но если хочется что бы прямо где угодно по X, Y Отрисовать то придется сделать копии этих методов с собственным просчетом координат.

Я кстати играл в эту игру но давно не помню что там как выглядит, и как должно это окно выглядить, может быть этого дейстительно достаточно.

Ну в целом да посмотри как чарактер виндоу рисуется.
draw_encumbrance_tab

Вон он там табами и линиями отрисовывает статы, и просто в своем окне точно так же отрисуй

disp_info вот этот метод смотри он фулл инфу рисует, нужно его модифицировать, оставить в нем то что надо что не надо убрать и рисовать в окне которое в него передаш.

Ну или типо того, лень качать проект смотреть что там за окно и где оно, но в общем есть же окно статов где то если это не оно просто найди его и спизди оттуда метод отрисовки статов, нарисуй свои табы и т.д
Аноним 20/07/24 Суб 18:37:16 #75 №307683302 
1721489817342.png
>>307683173
Я посмотрел карактер дисплей - это кажется не то. Видишь пикрил информацию о персонаже? Видимо карактер дисплей только этим и занимается - выводит базовую текстовую информацию, он не занимается рендерингом тайлов.
Аноним 20/07/24 Суб 18:40:23 #76 №307683420 
1721490004608.png
>>307683173
>Вон он там табами и линиями отрисовывает статы, и просто в своем окне точно так же отрисуй
Я пытаюсь тайл с персонажем вывести чтобы видеть как он выглядит, табы занимаются отрисовкой текста на окне вроде как. Собственно вот он энкумбренс таб на скрине.
Аноним 20/07/24 Суб 18:44:53 #77 №307683626 
1721490274353.png
1721490274355.png
>>307683173
Я сделал ретурн - окно. Собственно да, карактер дисплей это всё что касается этой менюшки по сути, видимо.
Аноним 20/07/24 Суб 18:58:36 #78 №307684176 
>>307683302
Если хочешь персонажа отрисовать то тут все вобщем просто.
Смотришь как рисуются персонажи в игре game.cpp
draw_creatures

Смотрим класс персонажа character.h - это кричер он наследуется от creature следовательно у нгео есть метод draw

character.draw( w, center.xy(), inverted );
Аноним 20/07/24 Суб 19:01:30 #79 №307684287 
1721491271956.png
>>307684176
Лол, не верю что все так просто. Почему-то эти штуки мимо меня проходили потому когда я в дебагере постоянно ходил персонаж не так рисовался. Тут ещё интернал отрисовка есть. Окей, сейчас попробую draw ебануть.
Аноним 20/07/24 Суб 19:04:51 #80 №307684390 
1721491472631.png
>>307684176
А, он нас нахуй пошлёт скорее всего. Эта функция кажется выводит UTF символ. Не совместим с тайлами.
Аноним 20/07/24 Суб 19:06:39 #81 №307684459 
1721491580720.png
1721491580720.png
>>307684176
Собственно да, опять ничего не вывелось, сработал ретурн. Здесь конечно поебаться придётся чтобы тайл какой-то поверх этого окна вывести видимо, пойду опять в дебаггере похожу что ли.
Аноним 20/07/24 Суб 19:07:33 #82 №307684496 
>>307674818
>Godot
Ты такие вещи не говори.
Аноним 20/07/24 Суб 19:07:36 #83 №307684502 
>>307684390
Не сама функция draw_critter_internal рисует персонажа на карте и в игре.

mvwputch( w, point( mx, my ), c_green_cyan, 'v' ); - это на карте

critter.draw( w, center.xy(), inverted );

это в игре

в твое мокне тебе нужно взывать character.draw( w, нужные координаты.xy(), inverted_or_not);
Аноним 20/07/24 Суб 19:09:36 #84 №307684576 
1721491757548.png
1721491757548.png
1721491757548.png
1721491757548.png
>>307684502
Вот, я в дебаггере прошёлся.
Аноним 20/07/24 Суб 19:10:11 #85 №307684606 
>>307674818
С++ это круто
сам пишу на С++ в фаанге

тоже хотелсоь бы свою игру сделать, но всё руки не дойдут
работы много
Аноним 20/07/24 Суб 19:10:52 #86 №307684632 
>>307684606
Жозовичок-базовичок...
Аноним 20/07/24 Суб 19:13:51 #87 №307684722 
>>307684459
Там координаты я так понимаю не то значат это координаты центра этого тейла будут т.е его origin а то где он на экране определяется окном т.е это точка смещения внутри персонажа, так что рисоватся он там должен но веряотно он где то за экраном
Аноним 20/07/24 Суб 19:14:51 #88 №307684757 
1721492072960.png
1721492072962.png
>>307684722
Так он вообще не рисуется, он не даёт это делать потому что используются тайлы. Он ретурнит из draw если true же.
Аноним 20/07/24 Суб 19:17:25 #89 №307684857 
1721492226957.png
>>307684722
А, если ты про draw_entity_with_overlays то возможно прав, ниже по стеку он вызывает draw_from_id_string и внутри делает уже приколы с переносом координат. Попробую закомментить посмотреть что выйдет.
Аноним 20/07/24 Суб 19:27:38 #90 №307685253 
1721492840147.png
1721492840147.png
>>307684857
Всё равно фигня. Он доходит конечно до момента ренедринга, но куда он рендерит, на какое окно - просто непонятно.
Аноним 20/07/24 Суб 19:30:39 #91 №307685368 
Ладно, возьму паузу. Попробую видосики посмотреть как SDL вообще работает, может поможет.
Аноним 20/07/24 Суб 19:54:20 #92 №307686324 
>>307684857
Так что подразумевается под тейлмодом? У тебя не тейлмод получается включен?

Если да то нужно искать где еще есть отрисовка помимо этого места, но это кажется не логично.

Возможно эта отрисовка вызвается 2 раза для 2х разных контекстов, текстового - краты, и тейлового - минимапа.
Вот попробуй закоментить эту отрисовку кричеров вообще будут ли они тогда в игре?

Тейлмод дважды выставляется
https://github.com/cataclysmbnteam/Cataclysm-BN/blob/7c8b20c66d808f71359232518ccb96151ba912f3/src/options.cpp#L2747 - тут если не загружен тейлсет

https://github.com/cataclysmbnteam/Cataclysm-BN/blob/7c8b20c66d808f71359232518ccb96151ba912f3/src/cached_options.cpp#L7 - тут я так пониамю если опция тейлов не выбрана вообще

Получается отрисовка отрисовка не тайлами это старая отрисовка а атйлами новая.
Т.е тебе нужен этот метод

cata_tiles.cpp cata_tiles::draw_critter_at

Но он рисует кричера, на его месте в мире, там нет возможности взятьи нарисовать его где угодно (ну или нет)

const player pl = dynamic_cast<const player >( &critter );
if( pl != nullptr ) {
draw_entity_with_overlays( pl, p, ll, height_3d );
result = true;
if( pl->is_player() ) {
is_player = true;
} else {
sees_player = pl->sees( g-> u );
attitude = pl->attitude_to( g-> u );
}
}

Вот эта часть кода овтечает за отрсиовку плеера видимо
Т.е нужна ссылка на плеера
const player
pl = dynamic_cast<const player >( &critter );
и нарисовать его в координатах P
draw_entity_with_overlays(
pl, p, ll, height_3d );

Но есть ли там доступ к этому классу вообще хз, там где ты окно рисуешь
Аноним 20/07/24 Суб 19:56:24 #93 №307686398 
>>307685368
Так тебе СДЛ вообще низачем не нужен СДЛ это что то вроде прокси между GL лейерами разного типа и твоим кодом, тут по верх СДЛ свой рендер енджайн написан, и тебе его и нужно юзать, хотя конечно ты можешь напрямую персонажа нарисовать на экране с помощью сдл или напрямую на ГЛ леере но тебе придется тайл сет извлечь и спрайты тебе нужн именно класс cata_tiles который за отрисовку тайлов отвечает
Аноним 20/07/24 Суб 20:00:27 #94 №307686545 
>>307685368
Лучше б Godot изучил, там можно такую игру заново написать как нехуй делать.
Аноним 20/07/24 Суб 20:04:09 #95 №307686684 
>>307686545
буквально за пол часа
Аноним 20/07/24 Суб 20:30:46 #96 №307687704 
image.png
фрембафер
Аноним 20/07/24 Суб 20:57:11 #97 №307688779 
1721498213019.png
>>307686324
Тайлы - графическое отображение в игре. Есть тайлсеты для игры чтобы она не была вся в ASCII. Соответственно мне нужно отобразить эту текстуру, чтобы я видел превью персонажа создаваемого.

>У тебя не тейлмод получается включен?
Включен, кидал картинки где тайлы видны.
>Если да то нужно искать где еще есть отрисовка помимо этого места, но это кажется не логично.
draw_critter_at работает с отрисовкой существ в тайлах по идее.

>>307686545
Такая игра годами пишется. Она ведь коммьюнити развивалась уже десятилетие как, если считать только форк DDA.

---
ПРОИЗОШЁЛ ВНЕЗАПНЫЙ ПРОРЫВ! Совместными усилиями удалось побороть порядок вывода. Теперь мы имеет нашего персонажа поверх UI! Там даже отрисовка в риалтайме меняется, охуеть.
Аноним 20/07/24 Суб 20:58:57 #98 №307688850 
1721498318455.png
Да уж, до идеала очень далеко ещё. Нужно переработать код вывода как-то. Сделать красивое окошко с надписью "Превью". И увеличить самого персонажа.
Аноним 20/07/24 Суб 21:02:20 #99 №307688988 
>мы имеет
мы имеем*
Аноним 20/07/24 Суб 21:03:46 #100 №307689038 
Пойду в качестве награды себе арбуз отрежу.
Аноним 20/07/24 Суб 21:22:32 #101 №307689715 
Фу блять, он подгнил как будто в местах. Мдаа. Ладно, 95% арбуза было нормальным.
Аноним 20/07/24 Суб 21:37:07 #102 №307690237 
1721500608239.png
1721500608241.png
Бля, какой же кайф. Правда лепить из этого что-то готовое к пулл реквесту ещё долго.
comments powered by Disqus

Отзывы и предложения