[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!

Check this out!

Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 10 | 10 | 2
Назад Вниз Каталог Обновить

Аноним 20/03/17 Пнд 23:35:44  149249786  
photo.jpg (126Кб, 900x900)
Сап двач. Смотивируй разобраться с ебучими трансформами в движке с мультитредингом.
Аноним 20/03/17 Пнд 23:38:50  149249995
14461428484810.jpg (73Кб, 600x800)
Короче, блядь, есть геймобджекты, есть компоненты. Это мейн тред.
В сабсистем тредах вертятся, очевидно, подсистемы. У них есть тред-локал реализации компонентов, на каждый компонент в мейне создаётся его тред-локал внутренности в одной или нескольких подсистемах.
Аноним 20/03/17 Пнд 23:40:07  149250066
14691329949490.png (67Кб, 380x264)
https://www.youtube.com/watch?v=EyFSL30vikM
Аноним 20/03/17 Пнд 23:41:52  149250181
serious discuss[...].png (323Кб, 604x533)
Подсистемы общаются между собой через сообщения. У каждой из них есть почтовый ящик с мьютексом, раз в итерацию своего цикла она проверяет почтовый ящик.
Ах да, каждой подсистеме можно указать, сколько раз в секунду дёргать анус свой цикл обработки.
Аноним 20/03/17 Пнд 23:47:56  149250555
14516456406980.jpg (159Кб, 880x1247)
У каждого Компонента и Внутренностей есть какие-то данные, которыми было бы неплохо обмениваться.
И вот тут начинается пиздец.

Короче, есть Трансформ с xyzw позицией вращением и скейлом.
Его могут читать и записывать все потоки.

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

Проблема: рассинхрон, одна подсистема может утащить объект в ебеня, а потом посчитается физон — и хуяк, объект снова на месте. Нереалтаймово.
Аноним 20/03/17 Пнд 23:54:03  149250937
14462253799360.png (204Кб, 1000x1000)
Вариант второй:
Сделать компоненты не-тред-локал и поместить в глобальный сторейдж. Тогда нахуй идёт половина плюсов почтового ящика, ибо можно синкать традиционно мьютексом.
Проблема: потоки работают с данными по очереди. Отрисовка может тормознуться, пока физон считается.
Решение: локать, копипастить ВЕСЬ стейт движка в свой поток, анлокать и работать со стейтом.
Проблема: рассинхрон, если давать компоненты на запись больше, чем одной подсистеме.
Решение: запись идёт в почтовый ящик, чтение идёт напрямую.
Аноним 20/03/17 Пнд 23:59:44  149251334
14400292402870.gif (3953Кб, 1024x768)
Проблема: насколько жирным будет стейт?
Решение: Сделать стейты у каждой из подсистем, она будет владеть им и заодно рулить записью. Понадобился стейт трансформов — вытащил его из подсистемы и работаешь.
Конкретно трансформы — 60 Кб копирования за кадр. Пфф, изи.

В целом норм вариант. Заодно, синхронизацию записей можно инкапсулировать в SubsystemState.
Такс, надо ещё подумоть.
Аноним 21/03/17 Втр 00:07:46  149251927
14601386642920.jpg (138Кб, 1240x1659)
В пизду думоть, так и сделаю.
Аноним 21/03/17 Втр 00:10:17  149252083
14741434375470.png (515Кб, 960x960)
Попощу аниме за успешность говнокода. Слава Омниссии!
Аноним 21/03/17 Втр 00:11:21  149252159
QlcO1lZgtt8.jpg (95Кб, 500x658)
Аноним 21/03/17 Втр 01:59:28  149257729
Опчинский, за шейдеры пояснишь?

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 10 | 10 | 2
Назад Вверх Каталог Обновить

Топ тредов
Избранное