Arctic EngineФорум

Нужна помощь в разработке (9 стр)

Страницы: 15 6 7 8 9 10 Следующая »
#120
13:52, 12 мая 2022

samrrr
> А что хочешь сказать, что где-то это нетак? Назовёшь проект где ААА нормально
> делают?
У ААА проектов над которымим я работаю на работе все очень хорошо.

#121
14:16, 12 мая 2022

Mephistopheles
> А что кроме рендера спрайтов "движок" вообще умеет?
Рендер спрайтов, линий/кругов/треугольников, вывод текста из спрайтовго фонта, GUI (окошки, кнопки, поля ввода и все такое), сеть TCP или UDP, 3д звук с soft clipping, ввод с мышки, клавиатуры и контроллеров, граф сцены для 2д, самый быстрый в мире лог, всякие полезности типа easing functions, библиотек для xml, csv и fbx.

#122
14:57, 12 мая 2022

Huldra
> Просто возьми SpriteNode2F вместо Sprite, вот тут про них можно посмотреть
> https://huldra.gitlab.io/arctic/classarctic_1_1_sprite_node2_f.html
По ссылке 404, но я разобрался и нашел всё. Я так понимаю если я хочу нормальную производительность, то надо ждать пока ты отдублируешь код в HwSpriteNode2F. Лул. А была бы возможность просто выбрать механизм рендера (хардвар/софтвар), то SpriteNode2F сразу бы заработали из коробки.

Ты так и не ответила на мой вопрос:
Как мне попытаться загрузить текстуру, и если не получилось - сообщить об этом пользователю?

#123
15:20, 12 мая 2022

Huldra
спасибо

#124
22:57, 12 мая 2022

Huldra
> У ААА проектов над которымим я работаю на работе все очень хорошо.
Ну так давай, расскажи, у кого это всё так прекрасно? Что за проект такой?

#125
22:58, 12 мая 2022

Что кстати по сказочному гигабайту в секунду?

#126
2:55, 13 мая 2022

MrShoor
> Как мне попытаться загрузить текстуру, и если не получилось - сообщить об этом
> пользователю?
Пытаешься загрузить с флажком "не фейлить при ошибке", проверяешь результат, если он пустой, загрузка не удалась, выводишь сообщение пользователю.

#127
5:25, 13 мая 2022

Huldra
> Пытаешься загрузить с флажком "не фейлить при ошибке"
А где этот флажок устанавливать то? Дополнительного параметра у функции нет.
https://gitlab.com/seaice/arctic/-/blob/master/engine/easy_sprite.cpp#L967
Функция возвращает void. Казалось бы, ведь никто не мешал на худой конец написать так:

+ Показать

Хотя бы появляется возможность узнать: да/нет. Получилось или нет загрузить. Без какого либо дополнительного оверхеда. Там где важно - проверяем, там где не важно - можем забить.
Но нет, такой возможности нет. Судя по коду единственный способ узнать "обосрамс" функция или нет - сходить в лог до вызова и после вызова. Если в логе появилась новая строчка - то функция зафейлилась.
И если так уж сильно не хочется возвращать код ошибки, то сделай хотя бы аналогично SetLastError GetLastError. Чтобы вызывающий код хоть как-то мог в критическом участке понять, что же пошло не так. Сейчас твоя обработка ошибок - это не обработка ошибок, это тупо заглушка, которая спамит в лог.

#128
7:00, 13 мая 2022

Можно смотреть по выбору либо на размер, либо проверять что не нулевой SpriteInstance()

Честно говоря, уже пару раз переделываю это место, в прошлый раз при ошибке выводился message box и происходил выход, и был bool аргумент у Load, позволяющий выбрать поведение (падать при остутствии файла или нет). Уже не помню чем мне не понравилось, но вот в новой версии не вылетает больше и окошек не показывает. Наверное действительно сделаю возврат статуса, только не хочу через bool, сделаю enum.

#129
14:05, 13 мая 2022

Huldra
> Можно смотреть по выбору либо на размер, либо проверять что не нулевой
> SpriteInstance()
Нельзя смотреть результат, потому что ты не очищаешь спрайт. Там могут быть старые данные (от предыдущего вызова Load).

#130
20:40, 13 мая 2022

MrShoor
> Нельзя смотреть результат, потому что ты не очищаешь спрайт. Там могут быть
> старые данные (от предыдущего вызова Load).
А ты не делай с одним спрайтом два вызова Load. Понятно что косяк, конечно.

Прошло более 11 месяцев
#131
9:25, 27 апр 2023

std::cin
я думал что Хулдра, Вий, Программина - это твинки ВарЗеса.

#132
7:16, 10 июня 2023

Мисс_Самец
  Нет это отдельный персонаж. Только там не Программина, а Повелительница

Прошло более 12 месяцев
#133
20:57, 8 июня 2024

Мне тут хотелки про движок скидывают:

Blueprint
Вий найди еще какую нибудь движкописательницу, пусть напишет некую абстракцию от спрайтов. Если я делаю игру, я не должен возиться с выводом спрайтов. Это должно быть спрятано гдето в глубине движка.
Ты когда на машине ездишь - ты же не крутишь вал двигателя ручкой сбоку, не нажимаешь в нужный момент кнопку подачи топлива и не пускаешь разряд для искры в нужном цилиндре. У тебя удобная педаль, твоя задача - ехать. Ты астрагирован от той сложности, которая происходит внутри двигателя. Вот также и игровой движок - он всю сложность прячет внутри сложноспроектированной системы. А наружу дается лишь класс - персонаж, блок препятствия. Персонажу ты просто ставишь - вот такому состоянию установлена вот такая анимация. Вот при таком то игровом событии выставлено что будет играть звук и вот тут появится источник частиц и проиграет анимацию.

В целом мысль то разумная

#134
0:07, 2 июля 2024

Продолжают писать мне:

MrShoor
Кстати заглянул вцелом в UI систему... и она же кривая...
Вот такие штуки: https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.h#L250
Я называю метод СделатьХорошо(). Потому что любой паблик метод, который не принимает параметров и не возвращает параметров - можно считать факапом дизайна.

Или вот еще. MakeCurrentTab пробегает по абсолютно всем контролам, рекурсивно, чтобы сбросить им is_current_tab_ :
https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.cpp#L267
При этом если я захочу сделать 2 незавимисмые панели (без общего родителя), то всё сломается, ибо фокус будет в каждом дереве (я уже молчу о производительности)

Или вот вирутальный метод SetCurrentTab:
https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.cpp#L344
Тут устанавливается поле. И пользователю нужно перегружать этот метод:
https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.cpp#L613
https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.cpp#L1696
И что будет если он забудет добавить is_current_tab_ = is_current_tab; ? А всё развалится. Это дизайн, который позволяет просто лишний раз отстрелить себе ногу.

ApplyInput вообще без поллитры не разберешься:
https://gitlab.com/seaice/arctic/-/blob/master/engine/gui.h#L232

В общем пока еще GUI далек от нормального

Страницы: 15 6 7 8 9 10 Следующая »
Arctic EngineФорум