Urho3DФорумОФФТОП

Болталка (420 стр)

Страницы: 1419 420 421 422424 Следующая »
#6285
17:36, 30 сен 2024

https://lunduke.locals.com/post/6171454/godot-game-engine-enacts-… ke-supporters

#6286
13:33, 7 окт 2024

ёж
> Да купи ты уже пэйджер :)
На что ты намекаешь?

#6287
14:24, 7 окт 2024

ёж
> Да купи ты уже пэйджер :)
> Или печатай что хотел сказать.
Тут такой кринж, что не надо слов.

#6288
16:40, 7 окт 2024

ёж
> Да купи ты уже пэйджер :)

ёж
> Что лучше только читать чем таким образом "писать".

Это уж точно

#6289
(Правка: 23:57) 23:54, 7 окт 2024

https://www.youtube.com/watch?v=Dai48KJFU48
https://www.youtube.com/watch?v=k3s72sxWPSg

#6290
0:19, 8 окт 2024

Вы в rbfx вроде ECS хотели? Есть какие-то движения?

Я ща леталку (https://github.com/dviglo2d-learn/mini_games) с иерархии классов на entt переписываю, че-то вообще не нравится. Но доведу уже до конца как эксперимент, выложу.

Писать неудобно, читать полотна си-подобного кода еще неудобнее. Хотя я мб по неопытности что-то не так делаю

#6291
13:22, 8 окт 2024

1vanK
> Вы в rbfx вроде ECS хотели? Есть какие-то движения?

Я в своей игре на rbfx примотал EnTT, полет нормальный, очень сильно упрощает жизнь.

Интеграция висит как плагин, мержить в движок не хочу, потому что движок — не мусорка для кода, там и так его хватает.

> Писать неудобно, читать полотна си-подобного кода еще неудобнее. Хотя я мб по неопытности что-то не так делаю

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

#6292
14:47, 8 окт 2024

А как с синглтонами по феншую сделать? Я щас так делаю, но мб есть способ покрасивше

    auto player_view = reg.view<CObject, CPlayerMarker>();
    entity player_ent = player_view.front(); // Игрок всегда один
    CObject& player_obj = player_view.get<CObject>(player_ent);

CPlayerMarker - это пустая структура, просто обозначает игрока

#6293
14:56, 8 окт 2024

1vanK
В общем-то так и делаю. Компонент, который тянет логику игрока, если их больше одного — что-то пошло не так. Если один, работаю с единственным. Если ноль, то ничего не делаю.

#6294
15:12, 8 окт 2024

1vanK
> Писать неудобно, читать полотна си-подобного кода еще неудобнее. Хотя я мб по неопытности что-то не так делаю

Вещи, в которых EnTT выигрывает, в моей игре:

- Логика и данные объектов, которые из сцены вообще выгружены. Как только появляется какая-то подгрузка вещей, сразу приходится придумывать, а где хранить штуки, если не в основной сцене. EnTT это естественным образом решает.

- Очень дешевая итерация по наборам компонентов. Итерация по view<A, B, C>() имеет линейную сложность от количества А. Поэтому мне очень легко написать логику, которая работает только на тех объектах, которые реализуют конкретные черты — и я понимаю, насколько это будет дорого. Очень часто я первым делом фильтрую только загруженные в сцену объекты, или только получатели события. А если надо и незагруженные — то выбираю самый узкий компонент.

- События через компоненты более безопасные, но ценой лага. Если я хочу уничтожить объект, я вешаю на него компонент OnDestroyed. Это позволяет мне произвести все уничтожения в одном месте игрового цикла, что упрощает логику. Когда события зависят от других событий (урон - уничтожение - реакция на уничтожение - и так далее), опасно вызвать всю цепочку синхронно — никогда не знаешь наверняка, какой именно код ты вызовешь и как он тебе сломает состояние.

- Дешево делать много мелких компонентов, что само по себе почти бесполезно, но зато очень хорошо сочетается с view. Мне не надо проверять, что я нашел нужный мне объект. Я делаю критерий компонентом, и если я смог найти объект, значит он и есть нужный.

#6295
15:29, 8 окт 2024

Eugene
> Итерация по view<A, B, C>() имеет линейную сложность от количества А.

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

> События через компоненты более безопасные, но ценой лага. Если я хочу уничтожить объект, я вешаю на него компонент OnDestroyed.

Ну я так и без entt делал (чистил списки от уничтоженных объектов в конце апдейта):

https://github.com/dviglo2d-learn/mini_games/blob/main/letalka/sr… cpp#L190-L193

Лага в кадр при этом нет в принципе, просто в каждой функции работающей в с объектом проверяешь, что он не мертв.

В entt еще легче, так как можно при фильтрации исключать мертвые:

    // Ищем столкновения корбаля игрока с кораблями противника
    auto enemy_view = reg.view<CObject, CEnemy>(exclude<CDestroyedMarker>);
#6296
19:50, 8 окт 2024

дискорд забанили в рф кста седня, переезд не планируете? или неактуально

#6297
19:57, 8 окт 2024

1vanK
> переезд не планируете?
А куда ехать то? Везде и так всякими беженцами и релокантами переполнено, тут ещё какие-то игроделы приедут...

#6298
(Правка: 21:35) 21:32, 8 окт 2024

be_hip
> А куда ехать то? Везде и так всякими беженцами и релокантами переполнено, тут ещё какие-то игроделы приедут...

я про другой сервис вообще-то) физически они уже переехали, я им новости из рф сообщаю)

#6299
21:38, 8 окт 2024

1vanK
> я про другой сервис вообще-то
Про сервис для покупки дешёвых авиабилетов?

Страницы: 1419 420 421 422424 Следующая »
Urho3DФорумОФФТОП