Редактирование движка X-Ray - Страница 70 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

@Дизель, А там havok или nvidia physx?

Кстати статейка http://www.uraldev.ru/articles/28

Изменено пользователем nikita_nz1986

nikita_nz1986.gif
9JX0t72.jpg
XqgE6.png

Концептуальные вопросы:

Я, потренировавшись на компиляторе, решил потихоньку пилить многопоточность в игре... Суть такая  - разбить всё, что можно делать параллельно, на кусочки, "работы".

Многопоточность в игре есть. Изучил? А прикинул что и на какие кусочки будешь разбивать, ну кроме того, что аи в один поток, рендер в 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: телепортация сквозь порталы

Изменено пользователем abramcumner

@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% без добавления жуков" :D

Кто нибудь мне объяснит как работают инклюды? Почему спавн секции не инклюдятся ни откуда кроме сустема? Кто разгадает эту тайну мадридского двора - тому пачку китикета.

  • Не нравится 1

@Карлан, ну у тебя же исходники есть...

Как вариант, когда делается инклуд, то содержимое подключаемого файла просто вставляется, а препроцессинг на нем не вызывается.

То есть типа только один уровень вложенности инклудов.

Havok_Physics_and_Havok_Animation_SDKs_5.5.0_6652.zip 223 мб.

 

Нашел, уже даже не помню где, движок Хавка 5.5, есть  в доступе открытом, а вот где бы найти 5 версию - глухо.

andreyholkin.gif

rod_cccp.gif

 

@abramcumner, я в них мало что смыслю, я далеко не программист, поэтому прошу помощи. Ну а смотри, глянь в тот же stalkers.ltx или monsters.ltx, там инклуды же работают, во многих модах в items.ltx подключают новые секции, и они тоже все работают, тут что не так может быть?  

Как реализуется разрушение стекл?У меня есть модель я на неё назначаю шейдер window и получаю полноценное стекло с разрушением или как?

nikita_nz1986.gif
9JX0t72.jpg
XqgE6.png

upd:
Ох :facepalm: , это какой-то идиотизм, сейчас попробовал просто заинклудить и все заработало. Вопрос закрываю.

Изменено пользователем Карлан
  • Согласен 1

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.

Изменено пользователем Shadows
  • Спасибо 2
  • Нравится 1

Telegram-канал RayTwitty Space

 

 

геймдате OGSE.

 

OGSE0693 gamedata весит 4 433 453 243 b. Я для себя отсеял не нужные db архивы, Жаль нет трафика, а то мог бы скинуть вам распаковку.

 

Shadows, а как дополнение скинул бы свою правленую папку bin, а то по вашему Репозиторию, не каждый может разобраться.

 

Хотя мне не нужно это, так как, я вхожу в число тех людей, которые не понимают, что и как это хавают. Ведь ваши правки движка, только вам понятны и единицам. Надо доводить и gamedata до полной интеграции с bin.

  • Не согласен 1

andreyholkin.gif

rod_cccp.gif

 

Заинтересован правками от тов. Kolmogor-а. Попытался хоть както добиться визуализации слотов в игре, но так и не смог. Может кто разжует, что нужно сделать, кроме добавления их статиков в ui_invetory_new и ui_invetory_new_16

Тепло приветствую всех!

Искал помощи на многих форумах, но увы не помогли...) Ребята, подскажите, пожалуйста, возможно ли перенести настройки вида от 3го лица из Лост Альфы в оригинальные Тень Чернобыля и Зов Припяти? Если да, то как? Вероятно эти правки как-то завязаны на бинарниках. Но что, как, где и чем не знаю. И ещё, как заставить оружие висеть за спиной? Очень нужно. Пилю свой мод и хотел бы использовать данные наработки.

 

Заранее благодарю.

Изменено пользователем Budwe1seR

Shadows, не та ли dll от Kolmogor'a опубликована, с которой артефакты работают с инвенаря, а пояс служит контейнером?

Ребят! Нужна DLL от Kolmogor'a, реализуящая езду на авто в ЗП. Носом в XrEx не тыкать, нужна оринальная DLL.

Ребята, у меня просьбочка небольшая Давно от malandrius'a появилась заплатка, позволяющая обойтись без mp_ranks. Существует она только на 4 и 6 версиях игры (другие не нашёл). Так вот, может ли кто-то сделать тоже самое с моим файлом? Он от 1.005 патча (взял из мода ОГСЕ).

http://rghost.ru/11667531

Осталась эта DLL у кого-нть? Изменено пользователем Forser

, закинь луа хелп обновленный на репо. Ты вроде тут один активный оттуда.

Я смотрю тут либу одну, для Task-Based Threading

https://github.com/RichieSams/FiberTaskingLib

там есть и книжка, и презентация с GDC

EA STL отпиливается легко(Сам уже отпилил)

Так же есть подобная либа в составе физикса (см. в исходниках)

P.S привел пример,что бы не изобретать велосипед(TBB уже предлагали)

 

@Tron,

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

И всё равно не в ту степь :russian_ru:

Ответа на мой вопрос там нет...

 

Попробую описать обобщённо и отделить половину задачи.

Итак,

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", но только я бы хотел сделать более быстрый вызов, без туплей и подобного с последующей рекурсивной "распаковкой аргументов"

 

 

П.С. Порой полезно запилить свой велосипед, дабы научиться и сделать мопед ;)

Изменено пользователем -StalkMen-

 

 

Попробую описать обобщённо и отделить половину задачи.

std::function не подойдет? Или я не понял проблему

Freedom

В Унити скрипты на С# пишут. Хе-хе.

 

И когда же до меня дойдёт хотя бы часть написанного в том движке.

 

Завидую вам, тем кто шарит. Толи мать-природа меня обидила - нифига не понимаю. :wacko:

andreyholkin.gif

rod_cccp.gif

 

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...