Size: a a a

RU Rust GameDev — русскоговорящее сообщество

2020 October 05

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Artem Kanev
Здравствуйте! Пытаемся тут с ребятами вкатится в раст + геймдев. Амбициозные типа и хотим сделать пошаговый мультиплеер с сервером на расте, васмом в браузере и вебсокетом между. Пытаемся скрестить legion с вот этой статьей https://blog.logrocket.com/how-to-build-a-websocket-server-with-rust/ .

Столкнулся с тем, что не могу пошарить legion-овские Resources чтобы работало асинхронно. Сам Resources намеренно не имплементит`Send`, а его версия SyncResources<'a> не пропихивается в warp-овский вебсокет, там ожидается значение с 'static, а я не знаю как такое корректно сконструировать.

Сделал минимальную некомпилирующуюся версию https://github.com/nixorn/rust-mvp

Ну и отсюда 2 вопроса
1. Можно ли как-то сделать SyncResources<'staitc>, чтобы это заработало?
2. Мы легитимный стек вообще выбрали, или жабу с гадюкой скрещиваем?
Скрещивание аснка с ecs требует совать все сообщеньки из асинк-рантайма в очередь. А в системе из очереди их вычитывать уже не асинхронно
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Ну и в обратную сторону так же
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
Матрица правильная, в mesh view из вертексного шейдера всё правильно выходит, а рисует в итоге вообще не то.
http://pastexen.com/i/JHSGZh0p5J.png
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
То есть в системе используете flume::Sender::send и flume::Receiver::recv/try_recv. А в асинк-рантайме flume::Sender::send_async и flume::Receiver::recv_async
источник

AK

Artem Kanev in RU Rust GameDev — русскоговорящее сообщество
Roman
Скрещивание аснка с ecs требует совать все сообщеньки из асинк-рантайма в очередь. А в системе из очереди их вычитывать уже не асинхронно
Спасибо!
источник

AK

Artem Kanev in RU Rust GameDev — русскоговорящее сообщество
Это звучит как отличное направление.
источник

R

Roman in RU Rust GameDev — русскоговорящее сообщество
Пример вот у меня есть
https://github.com/zakarumych/wilds/blob/master/engine/src/engine.rs

Engine::load_prefab создает футуру, которая разрезолвится с загруженным префабом.
Engine::build_prefabs (который между каждым запуском систем вызывается) перенесет их на ecs
источник

AK

Artem Kanev in RU Rust GameDev — русскоговорящее сообщество
Roman
Пример вот у меня есть
https://github.com/zakarumych/wilds/blob/master/engine/src/engine.rs

Engine::load_prefab создает футуру, которая разрезолвится с загруженным префабом.
Engine::build_prefabs (который между каждым запуском систем вызывается) перенесет их на ecs
Благодарю!
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
qthree
Хм, опять на dx11 бэкэнде та же проблема что и раньше встречал, uniform buffer с матрицей не успевает обновляться к началу отрисовки.
мда, походу это баг dx11 драйвера для IntelHD 5500
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
Во всяком случае получилось написать minimal working example который этот баг воспроизводит, и на dx11 Intel, но не получается воспроизвести на dx11 gtx840m/gtx650. Dx12 и Vulkan везде норм работают.
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
Если кому интересно https://pastebin.com/qqxn1x5u
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
(за 1000 draw call'ов успевает поменяться матрица и рисуется 2 прямоугольника вместо одного)
источник

o

operator in RU Rust GameDev — русскоговорящее сообщество
kvark: так а чего сразу баг драйвера?
источник

o

operator in RU Rust GameDev — русскоговорящее сообщество
kvark: скорее баг в gfx-backend-dx11
источник

o

operator in RU Rust GameDev — русскоговорящее сообщество
kvark: закинь его, пожалуйста нам
источник

o

operator in RU Rust GameDev — русскоговорящее сообщество
kvark:  * закинь его, пожалуйста, нам
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
так на нвидии работает всё как надо
источник

q

qthree in RU Rust GameDev — русскоговорящее сообщество
я скорее поверю что драйвер dx11 у интела кривой, так же как и драйвер вулкана на винде
источник

o

operator in RU Rust GameDev — русскоговорящее сообщество
kvark: ты тестируешь подсистему памяти - там у каждого производителя свои причуды, разница в поведении, и т д
источник