nikita_nz1986 130 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 (изменено) @Дизель, А там havok или nvidia physx? Кстати статейка http://www.uraldev.ru/articles/28 Изменено 29 Июля 2015 пользователем nikita_nz1986 Ссылка на комментарий
abramcumner 1 157 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 (изменено) Концептуальные вопросы: Я, потренировавшись на компиляторе, решил потихоньку пилить многопоточность в игре... Суть такая - разбить всё, что можно делать параллельно, на кусочки, "работы".Многопоточность в игре есть. Изучил? А прикинул что и на какие кусочки будешь разбивать, ну кроме того, что аи в один поток, рендер в 5 потоков и все залетает?Почему не взять готовые библиотеки, типа интеловской TBB(вроде вообще, что ты хочешь) или какой-нибудь на агентах. Код поскипан, идеи кода не понял: передается объект работы, рабочая функция и параметры - зачем? Есть классический кондовый вариант: struct IWork { virtual ~IWork(); virtual void Do() = 0; }; struct Work1 : public IWork { Work1(...){} //нужные параметры virtual void Do() { //делаешь то, что нужно } } //где-то в коде auto work = new Work1(...); mng.AddWork(work); //где-то в другом потоке вызывается work->Do(); Или так: auto workLambda = [/*захватываешь что нужно*/] () -> void { /*делаешь что нужно*/ }; mng.AddWork(workLambda); //где-то в другом потоке вызывается workLambda(); Причем это вообще не главное - тебе надо как-то в вызывающем коде дождаться завершения и получить результаты из твоей "работы".Хочешь почитай цикл статей: Асинхронность: назад в будущее Асинхронность 2: телепортация сквозь порталы Изменено 29 Июля 2015 пользователем abramcumner Ссылка на комментарий
-StalkMen- 159 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 @abramcumner, Изучил? По тому и делаю, что там ГГ какое то, два основных потока, которые, по большому счёту, работают друг за другом. вызывающем коде дождаться завершения Я не хочу так делать, это скорей к компилю... Вызывающий код добавляет работу в очередь и идёт дальше. volatile long iterator = 0; MultiThread::MultiThreadWork2([&](volatile float& prog) { float p_cost = 1.0f / float(mu_models().size()); Interlocked_for(pos, iterator, mu_models().size()) { calc_ogf(*mu_models()[pos]); export_geometry(*mu_models()[pos]); prog = pos*p_cost; } }); Я не про такое говорю (когда надо ждать завершения). Есть классический кондовый вариант: У меня и так сделано подобным образом. Я же не спросил, как мне ВСЁ это сделать, я уже сделал, но стало любопытно как сделать лучше. TBB OpenMP ещё, смотрел уже. Но там нигде нет кнопки "Автоматически распараллелить на 100% без добавления жуков" Ссылка на комментарий
Карлан 1 049 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 Кто нибудь мне объяснит как работают инклюды? Почему спавн секции не инклюдятся ни откуда кроме сустема? Кто разгадает эту тайну мадридского двора - тому пачку китикета. 1 Ссылка на комментарий
abramcumner 1 157 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 @Карлан, ну у тебя же исходники есть... Как вариант, когда делается инклуд, то содержимое подключаемого файла просто вставляется, а препроцессинг на нем не вызывается. То есть типа только один уровень вложенности инклудов. Ссылка на комментарий
Expropriator 2 118 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 Havok_Physics_and_Havok_Animation_SDKs_5.5.0_6652.zip 223 мб. Нашел, уже даже не помню где, движок Хавка 5.5, есть в доступе открытом, а вот где бы найти 5 версию - глухо. Ссылка на комментарий
Карлан 1 049 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 @abramcumner, я в них мало что смыслю, я далеко не программист, поэтому прошу помощи. Ну а смотри, глянь в тот же stalkers.ltx или monsters.ltx, там инклуды же работают, во многих модах в items.ltx подключают новые секции, и они тоже все работают, тут что не так может быть? Добавлено RayTwitty, 29 Июля 2015 Посмотри как движок читает эти спавн секции, возможно есть отличия. Хотя, я не думаю, что эти секции\файлы чем-то отличаются от других - возможно ошибка в путях файлов, такое иногда бывает. Ссылка на комментарий
nikita_nz1986 130 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 Как реализуется разрушение стекл?У меня есть модель я на неё назначаю шейдер window и получаю полноценное стекло с разрушением или как? Добавлено RayTwitty, 29 Июля 2015 Разбить стекло на полики - дальше двиг все сделает сам. Добавлено RayTwitty, 29 Июля 2015 в редакторе разбить* Ссылка на комментарий
Карлан 1 049 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 (изменено) upd:Ох , это какой-то идиотизм, сейчас попробовал просто заинклудить и все заработало. Вопрос закрываю. Изменено 29 Июля 2015 пользователем Карлан 1 Ссылка на комментарий
RayTwitty 502 Опубликовано 29 Июля 2015 Поделиться Опубликовано 29 Июля 2015 (изменено) http://www.amk-team.ru/forum/index.php?showtopic=10339&p=910493Дополнил FAQ описанием классов: matrix, CTime, CALifeSimulator, CSE_Abstract, CSE_ALifeObject, а также оконными классами: CUIWindow, CUIStatic, CUIListWnd, CUIComboBox, CUITrackBar. Таким образом, описаны практически все скриптовые правки, за исключением пространства level и колбеков.Однако есть пару пробелов в FAQ - в частности методы класса matrix и метод use_ai_locations класса CSE_ALifeObject.Также, не на 100% уверен на счет описания методов класса CTime...Если у кого-нибудь есть какая-нибудь инфа по этому материалу - прошу написать в теме З.Ы. печально, что почти все правки делались без описания в коммите, и их назначение приходится искать практически везде по движку и геймдате OGSE. Изменено 30 Июля 2015 пользователем Shadows 2 1 Ссылка на комментарий
Expropriator 2 118 Опубликовано 30 Июля 2015 Поделиться Опубликовано 30 Июля 2015 геймдате OGSE. OGSE0693 gamedata весит 4 433 453 243 b. Я для себя отсеял не нужные db архивы, Жаль нет трафика, а то мог бы скинуть вам распаковку. Shadows, а как дополнение скинул бы свою правленую папку bin, а то по вашему Репозиторию, не каждый может разобраться. Хотя мне не нужно это, так как, я вхожу в число тех людей, которые не понимают, что и как это хавают. Ведь ваши правки движка, только вам понятны и единицам. Надо доводить и gamedata до полной интеграции с bin. Добавлено RayTwitty, 30 Июля 2015 "Жаль нет трафика, а то мог бы скинуть вам распаковку." Скрипты ОГСЕ у меня итак есть, спасибо. "Ведь ваши правки движка, только вам понятны и единицам." Вот для того FAQ и создавался, чтобы всем было понятно. 1 Ссылка на комментарий
PrizZzraK 2 Опубликовано 30 Июля 2015 Поделиться Опубликовано 30 Июля 2015 Заинтересован правками от тов. Kolmogor-а. Попытался хоть както добиться визуализации слотов в игре, но так и не смог. Может кто разжует, что нужно сделать, кроме добавления их статиков в ui_invetory_new и ui_invetory_new_16 Добавлено RayTwitty, 30 Июля 2015 Видимо стоит убрать "неточное" описание, ибо уже не первый раз спрашивают... Скорее всего, слоты в движке не реализованы до конца. Поэтому в инвентаре не отображаются. Ссылка на комментарий
Budwe1seR 0 Опубликовано 30 Июля 2015 Поделиться Опубликовано 30 Июля 2015 (изменено) Тепло приветствую всех!Искал помощи на многих форумах, но увы не помогли...) Ребята, подскажите, пожалуйста, возможно ли перенести настройки вида от 3го лица из Лост Альфы в оригинальные Тень Чернобыля и Зов Припяти? Если да, то как? Вероятно эти правки как-то завязаны на бинарниках. Но что, как, где и чем не знаю. И ещё, как заставить оружие висеть за спиной? Очень нужно. Пилю свой мод и хотел бы использовать данные наработки. Заранее благодарю. Изменено 30 Июля 2015 пользователем Budwe1seR Ссылка на комментарий
Forser 47 Опубликовано 30 Июля 2015 Поделиться Опубликовано 30 Июля 2015 (изменено) Shadows, не та ли dll от Kolmogor'a опубликована, с которой артефакты работают с инвенаря, а пояс служит контейнером? Ребят! Нужна DLL от Kolmogor'a, реализуящая езду на авто в ЗП. Носом в XrEx не тыкать, нужна оринальная DLL. Ребята, у меня просьбочка небольшая Давно от malandrius'a появилась заплатка, позволяющая обойтись без mp_ranks. Существует она только на 4 и 6 версиях игры (другие не нашёл). Так вот, может ли кто-то сделать тоже самое с моим файлом? Он от 1.005 патча (взял из мода ОГСЕ). http://rghost.ru/11667531 Осталась эта DLL у кого-нть? Изменено 30 Июля 2015 пользователем Forser Добавлено RayTwitty, 30 Июля 2015 Она. Ссылка на комментарий
Карлан 1 049 Опубликовано 31 Июля 2015 Поделиться Опубликовано 31 Июля 2015 , закинь луа хелп обновленный на репо. Ты вроде тут один активный оттуда. Добавлено RayTwitty, 31 Июля 2015 Тот репо скоро примет ислам, поэтому не имеет смысла. Ссылка на комментарий
Tron 53 Опубликовано 1 Августа 2015 Поделиться Опубликовано 1 Августа 2015 Я смотрю тут либу одну, для Task-Based Threadinghttps://github.com/RichieSams/FiberTaskingLibтам есть и книжка, и презентация с GDCEA STL отпиливается легко(Сам уже отпилил)Так же есть подобная либа в составе физикса (см. в исходниках)P.S привел пример,что бы не изобретать велосипед(TBB уже предлагали) Ссылка на комментарий
-StalkMen- 159 Опубликовано 1 Августа 2015 Поделиться Опубликовано 1 Августа 2015 (изменено) @Tron, Любопытно, "свой" аллокатор для каждого потока. Я тоже про это думал. Надо будет по изучать... И всё равно не в ту степь Ответа на мой вопрос там нет... Попробую описать обобщённо и отделить половину задачи. Итак, foo<int,float,bool> ggg(123, 123.f, true); //Сие должно "разворачиваться" в такое -> //типо template<typename...Args> class foo { int arg_1; float arg_2; bool arg_3; foo(int _arg_1, float _arg_2, bool _arg_3) : arg_1(_arg_1), arg_2(_arg_2), arg_3(_arg_3){}; }; template<typename Arg_1, typename Arg_2, typename Arg_3> class foo { Arg_1 arg_1; Arg_2 arg_2; Arg_3 arg_3; foo(Arg_1 _a1, Arg_2 _a2, Arg_3 _a3) : arg_1(_a1), arg_2(_a2), arg_3(_a3){}; }; http://habrahabr.ru/post/228031/ *ещё не весь хабр перекопал* в конце есть про "Defer", но только я бы хотел сделать более быстрый вызов, без туплей и подобного с последующей рекурсивной "распаковкой аргументов" П.С. Порой полезно запилить свой велосипед, дабы научиться и сделать мопед Изменено 1 Августа 2015 пользователем -StalkMen- Ссылка на комментарий
-StalkMen- 159 Опубликовано 1 Августа 2015 Поделиться Опубликовано 1 Августа 2015 http://en.cppreference.com/w/cpp/utility/integer_sequence Второй пример, тоже, что и у меня но вызов без рекурсии. Ссылка на комментарий
_Призрак_ 11 Опубликовано 1 Августа 2015 Поделиться Опубликовано 1 Августа 2015 Попробую описать обобщённо и отделить половину задачи. std::function не подойдет? Или я не понял проблему Freedom Ссылка на комментарий
Expropriator 2 118 Опубликовано 1 Августа 2015 Поделиться Опубликовано 1 Августа 2015 В Унити скрипты на С# пишут. Хе-хе. http://habrahabr.ru/post/116088/ И когда же до меня дойдёт хотя бы часть написанного в том движке. Завидую вам, тем кто шарит. Толи мать-природа меня обидила - нифига не понимаю. Добавлено RayTwitty, 1 Августа 2015 Надо не с реализации техники начинать, а с чего-нибудь попроще и постепенно увеличивать сложность. Естественно, с наскоку что-то сложное новичок не сделает. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти