Перейти к контенту

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


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

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

Изменено пользователем Shadows
  • Согласен 2
  • Полезно 1
Ссылка на комментарий

@-StalkMen-, отстоиная проприеритарщина, жрущая процессорное время (ну не на вк же ее цеплять, все-таки амд'шников много) и использующая DXUT в своих демках... Ну... В X-Ray видеть не хотел бы. Плюс согласен с Евгением - никто не будет переделывать горы моделей и переписывать алгоритмы.

@Romz, это где собранные движки 1.6. два нуля и 01-02? Поздравляю, это nodvd.

1.6.03 (компил engine.vs2008.fixed) + xpath03.db в папке на яндекс.диске

Изменено пользователем HESH
Ссылка на комментарий
Кто, что думает по поводу PhysX'a ?

 

HESH, кажется просто не осилил его..

 

-StalkMen-, отстоиная проприеритарщина, жрущая процессорное время (ну не на вк же ее цеплять, все-таки амд'шников много) и использующая DXUT в своих демках... Ну... В X-Ray видеть не хотел бы. Плюс согласен с Евгением - никто не будет переделывать горы моделей и переписывать алгоритмы.

Сидорович, ты иногда выходи из своего бункера.

Хорошая скорость-первая в мире, аргумент про AMD'шников не состоятелен, т.к там на CUDA только обработчик тканей(который кажется тоже является партиклом - во всяком случае в PVD он отображется как партикл) и партиклов, относительно легкая интеграция(дальше твердых тел не копался). Большая часть CUDA кода была удалена в 2.8х версиях.

Спрашивается, как давно ты его смотрел?

 

DXUT в своих демках.

 

Встречный вопрос,что плохого в DXUT? - тебе дали уже готовый отлаженный код, который кстати говоря даже в CE используется

Еще один встречный вопрос, как давно ты крутил его? - там уже с версии 3.0 свой фреймворк.

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

 

У меня были проблемы с Character Controller, а именно когда я делал FPS камеру - было продавливание геометрии, но там было сделано на скорую руку. Но вот готового класса,как в Havok, с уже готовыми методами Jump и т.д не жди. Все делать ручками.

Изменено пользователем Tron
  • Полезно 2
Ссылка на комментарий

 

 

Romz, это где собранные движки 1.6. два нуля и 01-02? Поздравляю, это nodvd.
Нет, вот эту

 

 

1.6.03 (компил engine.vs2008.fixed) + xpath03.db в папке на яндекс.диске
Утянул, на всякий случай. А что менялось? Описание есть?

Шаман - СисАдмин

Всяко-разно: для ЧН

Ссылка на комментарий
Кто, что думает по поводу PhysX'a ?

Ну думаю о бунте AMD'шников.  Я лучше с обновлением OpenDE повожусь. 

Изменено пользователем Forser
Ссылка на комментарий

,

И чего же там мифического? Я уже частично впилил PhysX в xrLC - есть прирост.

 

Я бы пока не ковырялся с этим, но у нас слишком большая карта. На коллизию уходит слишком много памяти (половина от всей используемой, это только на 1/4 карты)

Начал пилить чанки, но понял, что с физикой слишком много заморочек...

 

 

Никто не будет

Никто кроме нас не пилит агроменную карту.
Никто кроме нас не пилит кооп.

Если мы запилим PhysX, то мы и будем под него всё настраивать ©логика

 

 

 

бунте AMD'шников

PhysX запилин в A3, но где там бунты? Я не видел.

Ссылка на комментарий

@Romz, changelog'а нет, ибо это просто билдодвижок. Хотя можешь на гм поискать, может и есть, я не копал, мне не интересно.

@Tron, CE у нас отличается оптимизированностью? Я не про С3, который пилила ЕА - та ради копейки все оптимизирует, а 1 крузис, 2-ой? Да и если Вы имели ввиду именно перый CE, то там вроде как физикса нет, а если четвертый - то я его код не видел.

Плюс я не про твердые тела, а про флюиды. Качал недавнюю демку от нв - на моем древнем 1900ХТХ она даже не запустилась. А HairWorks? Тоже партиклы? Хотя шерсть меня не интересует. Суть в том, что если и легко его впилить, то это не значит, что он freeware. Я не болею за опен-сорсь, но все же...

Сам же подключить физикс к хрею не пытался, паспорт российский когда получу и в вузе получу озможность обучаться - тогда и буду копать, никто же учить меня не будет. А MSDN - это больше WinAPI, чем C++. Что, в принципе, тоже полезно (хотелось бы видеть редакторы на WinAPI, а не на классах борланда).

Ссылка на комментарий
CE у нас отличается оптимизированностью? Я не про С3, который пилила ЕА - та ради копейки все оптимизирует, а 1 крузис, 2-ой?

EA-ничего не пилила, про рендер CE3 я ссылочку приложил

 

CE2 - forward rendering+ ubershader(если верить gd просто ветвления шейдеров сделаны через дефайны, [управление дефайнами идет через код плюсов])

CE3-crysis2 - deferred lighting(aka light pre-pass, двойное рисование геометрии - сильная нагрузка на шину памяти[беда всех deferred техник])

CE3-crysis3 - deferred shading(единожды рисуется геометрия+притом gbuffer удалось "ужать")

CE-Rome - там уже появился некий hybrid render, презентацию я помню смутно, а саму игру не смотрел. По коду, мне встречались упоминания Forward Shading техники, но мне кажется, они его "рядом" реализовали

 

CE4-го поколения, действительно очень "чистый" по сравнению с предыдущими версиями. И читать его приятнее.

 

 

 

Да и если Вы имели ввиду именно перый CE, то там вроде как физикса нет, а если четвертый - то я его код не видел.

А я не говорил, что там используется PhysX. У них свой физ. движок. PhysX, да прилагался как аддон(Edit: по слухам), при лицензировании CE3, но его как правило никто не брал(я таких случаев не знаю).(Не считая демок с партиклами от NV)

 

 

Плюс я не про твердые тела, а про флюиды.

Так они недавно появились и официально в PhysX сейчас не входят. ( Не путайте пакеты расширения Apex/Flex и Core версию).

 

HairWorks? Тоже партиклы? Хотя шерсть меня не интересует.

 

 

Волосы сейчас делают тесселяцией

 

 

 

Суть в том, что если и легко его впилить, то это не значит, что он freeware. Я не болею за опен-сорсь, но все же...

Эм.. вы лицензионное соглашение читали хоть раз?

 

 

А MSDN - это больше WinAPI, чем C++.

В корне неправильное утверждение

 

 

Что, в принципе, тоже полезно (хотелось бы видеть редакторы на WinAPI, а не на классах борланда).

WinApi уже deprecated и потихоньку выпиливается

Изменено пользователем Tron
  • Согласен 1
  • Полезно 1
Ссылка на комментарий

Никто кроме нас

Тогда зачем спрашивать мнение окружающих? Если сможете грамотно интегрировать и сделать контент под новый физический движок - молодцы, что еще сказать.
  • Согласен 2
Ссылка на комментарий

,

Ой ну всё :)

Я не говорил, и не считаю нас ultimate кодерами.

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

С чего бы мне спрашивать мнения знающих...

Ссылка на комментарий

@Tron, спасибо за исчерпывающий ответ. Спорить я не пытался, просто высказал свои мысли.

А можно узнать, почему WinAPI-редакторы неодобряются? Чем он плохи?

Ссылка на комментарий

@Tron, спасибо за исчерпывающий ответ. Спорить я не пытался, просто высказал свои мысли.

А можно узнать, почему WinAPI-редакторы неодобряются? Чем он плохи?

Ну первая очевидная мысль - непереносимый код.

 

Вторая это громоздкость кода. - много писать повторяющегося кода.

Что из себя представляют элементы интерфейса WinAPI приложения? - это окна. Да-да, даже простая в понимании кнопка это окно, просто созданная с определенным дескриптором(числовая константа описывающая внешний вид).

Например,обработку событий надо проводить в главной функции обработки событий. Epic Games писали под это свой фреймворк(WWindow), но потом забросили его и в 3ей версии все портировали на wxWidgets.

Я в этом году, в плане типового расчета писал похожий(тема на выбор), но там не все предусмотрено(нет диалогов и т.д).

 

Я не видел, что бы на чистом Wa делали, что-то сложное/красивое.

Да и смысла нет писать сейчас на чистом WinAPI, ведь можно взять MFC/WxWidgets.

Но MFC я бы тоже не советовал. (Аргументировать не могу, ибо ничего сильно сложного(не считая CryEngine Editor, но он написан на коммерческой реализации MFC-codejock) я лично не делал/ не видел на нем.)

 

Можно с MFC портировать на wxWidgets, благо отличия не сильные.

Что-то еще хотел написать, но вылетело из головы.

 

Edit:

WxWidgets по сути представляет собой враппер над WinAPI(под виндой), оконными системами под *nix (точно не знаю, надо посмотреть)

Изменено пользователем Tron
Ссылка на комментарий

Решил проблему в ЗП, вылет в авто, после смерти ГГ.  Просто ГГ не умирает, и его не выкидывает из авто - наступает гамеовер как только, так сразу.

Кстати, в ЗП, авто может переезжать на другую локу с ГГ через левелченджер, это так к слову.

 

Осталось решить проблему со сменой векторов после сохранения (в управлении меняются  координаты на 180 градусов)


https://yadi.sk/d/GqZCPJwQia8kq1.6 Мб. xrGame.dll для Зова Припяти

 

Исправления касаются только ГГ в авто:

 

1. Посадка в авто.

2. Анимация в авто.

3. Визуал ГГ от первого вида, вместо худа, в авто.

4. Вылет, при смерти в авто, исправлен.

 

Можно закинуть в шапку темы, так как этот файл будет востребован.

 

Автор правок: Дизель.

Изменено пользователем Дизель
  • Нравится 2
  • Полезно 2

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Привет все ребят я тут новенький)) помогите хочу сборку движка X-ray в Microsoft Visual Studio 2010  надо настроить пути но не знаю где и как объясните пожалуйста ) 

Ссылка на комментарий

 

 

хорошо бы еще и исходники правки выкладывать или ссылку на репозиторий

 

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

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий
@Дизель, зря. С критиков просто требуешь сделать их вариант. Сделают - посмотришь на "стандартное" мышление, не сделают - попозоришь критиков.
Ссылка на комментарий

Пожалуйста, можете сами сделать. Раз просите.

 

Вылет в ЗП при смерти в авто

 

 

001B:09CC7A3A xrGame.dll, CCharacterPhysicsSupport::EndActivateFreeShell(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 1191
001B:09CC9A7D xrGame.dll, CCharacterPhysicsSupport::KillHit(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 516
001B:09CC9C48 xrGame.dll, CCharacterPhysicsSupport::in_Hit(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 545
001B:09CCA0C0 xrGame.dll, CCharacterPhysicsSupport::in_Die(), x:\stalker_cop\project\engine.vc2008\xrgame\characterphysicssupport.cpp, 1436
001B:09A620A3 xrGame.dll, CEntityAlive::Die(), x:\stalker_cop\project\engine.vc2008\xrgame\entity_alive.cpp, 328
001B:09A46DFE xrGame.dll, CActor::Die(), x:\stalker_cop\project\engine.vc2008\xrgame\actor.cpp, 730
001B:09A5EFF8 xrGame.dll, CEntity::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\entity.cpp, 67
001B:09A4C275 xrGame.dll, CActor::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\actor_events.cpp, 28
001B:09A4C25A xrGame.dll, CActor::OnEvent(), x:\stalker_cop\project\engine.vc2008\xrgame\actor_events.cpp, 26
001B:09A18907 xrGame.dll, CLevel::cl_Process_Event(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 429
001B:09A19BD6 xrGame.dll, CLevel::ProcessGameEvents(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 491
001B:09A19F89 xrGame.dll, CLevel::OnFrame(), x:\stalker_cop\project\engine.vc2008\xrgame\level.cpp, 625

 

 

ссылается на CharacterPhysicsSupport.cpp на функцию void    CCharacterPhysicsSupport::    CreateShell  

Что я сделал?

Закомментировал всю функцию после начала вылета:

 

void CCharacterPhysicsSupport:: CreateShell ( CObject* who, Fvector& dp, Fvector & velocity )
{
xr_delete( m_collision_activating_delay );
xr_delete( m_interactive_animation );
destroy_animation_collision( );
//DestroyIKController( );
IKinematics* K=smart_cast( m_EntityAlife.Visual( ) );
//animation movement controller issues
bool anim_mov_ctrl =m_EntityAlife.animation_movement_controlled( );
CBoneInstance &BR = K->LL_GetBoneInstance( K->LL_GetBoneRoot( ) );
Fmatrix start_xform; start_xform.identity( );
CBlend *anim_mov_blend = 0;
if( anim_mov_ctrl )
{
m_EntityAlife.animation_movement( )->ObjStartXform( start_xform );
anim_mov_blend = m_EntityAlife.animation_movement( )->ControlBlend( );

m_EntityAlife.destroy_anim_mov_ctrl( );
BR.set_callback_overwrite (TRUE);
}
//
u16 anim_root = K->LL_GetBoneRoot();
u16 physics_root = anim_root;

if( m_eType != etBitting )
{
physics_root = K->LL_BoneID( "bip01_pelvis" );
K->LL_SetBoneRoot( physics_root );

}
//
if( !m_physics_skeleton )
CreateSkeleton( m_physics_skeleton );

if( m_eType == etActor )
{
CActor* A=smart_cast( &m_EntityAlife );
R_ASSERT2( A, "not an actor has actor type" );
if( A->Holder( ) ) return;
if( m_eState==esRemoved )return;
}


//////////////////////this needs to evaluate object box//////////////////////////////////////////////////////
if( m_eType != etBitting )
K->LL_SetBoneRoot( anim_root );

for( u16 I = K->LL_BoneCount( )-1; I!=u16(-1); --I )
K->LL_GetBoneInstance( I ).reset_callback( );
//
if( anim_mov_ctrl ) //we do not whant to move by long animation in root
BR.set_callback_overwrite (TRUE);
//
K->CalculateBones_Invalidate();
K->CalculateBones (TRUE);
if( m_eType != etBitting )
K->LL_SetBoneRoot( physics_root );
////////////////////////////////////////////////////////////////////////////

if( m_pPhysicsShell )
return;

m_PhysicMovementControl->GetCharacterVelocity ( velocity );


if( !m_PhysicMovementControl->CharacterExist( ) )
dp.set( m_EntityAlife.Position( ) );
else m_PhysicMovementControl->GetDeathPosition( dp );
m_PhysicMovementControl->DestroyCharacter( );

//shell create
R_ASSERT2(m_physics_skeleton,"No skeleton created!!");
m_pPhysicsShell=m_physics_skeleton;
m_physics_skeleton=NULL;
m_pPhysicsShell->set_Kinematics(K);
m_pPhysicsShell->RunSimulation();
m_pPhysicsShell->mXFORM.set(mXFORM);
m_pPhysicsShell->SetCallbacks( );
//

if(anim_mov_ctrl) //we do not whant to move by long animation in root
BR.set_callback_overwrite (TRUE);


if(!DoCharacterShellCollide())
m_pPhysicsShell->DisableCharacterCollision();

if( m_eType != etBitting )
K->LL_SetBoneRoot( anim_root );


K->CalculateBones_Invalidate();
K->CalculateBones (TRUE);


if( m_eType != etBitting )
K->LL_SetBoneRoot( physics_root );
//reset_root_bone_start_pose( *m_pPhysicsShell );

m_flags.set(fl_death_anim_on,FALSE);
m_eState=esDead;
m_flags.set(fl_skeleton_in_shell,TRUE);

if(IsGameTypeSingle())
{
m_pPhysicsShell->SetPrefereExactIntegration ();//use exact integration for ragdolls in single
m_pPhysicsShell->SetRemoveCharacterCollLADisable();
}
else
m_pPhysicsShell->SetIgnoreDynamic();
m_pPhysicsShell->SetIgnoreSmall();
AddActiveWeaponCollision();
}
void CCharacterPhysicsSupport:: EndActivateFreeShell ( CObject* who, const Fvector& inital_entity_position, const Fvector& dp, const Fvector & velocity )
{
VERIFY ( m_pPhysicsShell );
VERIFY( m_eState==esDead );
#ifdef DEBUG
if( dbg_draw_ragdoll_spawn )
{
DBG_OpenCashedDraw();
m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 255, 100, 0 ) );
DBG_ClosedCashedDraw( 50000 );
}
#endif

CollisionCorrectObjPos( dp );
// m_pPhysicsShell->SetGlTransformDynamic(mXFORM);

#ifdef DEBUG
if( dbg_draw_ragdoll_spawn )
{
DBG_OpenCashedDraw();
m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 255, 0, 100 ) );
DBG_ClosedCashedDraw( 50000 );
}
#endif
//fly back after correction
//FlyTo(Fvector().sub(inital_entity_position,m_EntityAlife.Position()));


#ifdef DEBUG
if( dbg_draw_ragdoll_spawn )
{
DBG_OpenCashedDraw();
m_pPhysicsShell->dbg_draw_geometry( 0.2f, D3DCOLOR_XRGB( 100, 255, 100 ) );
DBG_ClosedCashedDraw( 50000 );
}
#endif
Fvector v = velocity;
m_character_shell_control.apply_start_velocity_factor( who, v );

#ifdef DEBUG
if( death_anim_debug )
{
Msg( "death anim: ragdoll velocity picked from char controller =(%f,%f,%f), velocity applied to ragdoll =(%f,%f,%f) ", velocity.x, velocity.y, velocity.z, v.x, v.y, v.z );
}
#endif

//m_pPhysicsShell->set_LinearVel( v );
//actualize
//m_pPhysicsShell->GetGlobalTransformDynamic(&mXFORM);
//m_pPhysicsShell->mXFORM.set(mXFORM);



//if( false && anim_mov_ctrl && anim_mov_blend && anim_mov_blend->blend != CBlend::eFREE_SLOT && anim_mov_blend->timeCurrent + Device.fTimeDelta*anim_mov_blend->speed < anim_mov_blend->timeTotal-SAMPLE_SPF-EPS)//.
//{
// const Fmatrix sv_xform = mXFORM;
// mXFORM.set( start_xform );
// //anim_mov_blend->blendPower = 1;
// anim_mov_blend->timeCurrent += Device.fTimeDelta * anim_mov_blend->speed;
// m_pPhysicsShell->AnimToVelocityState( Device.fTimeDelta, 2 * default_l_limit, 10.f * default_w_limit );
// mXFORM.set( sv_xform );
//}
//IKinematics* K=smart_cast( m_EntityAlife.Visual( ) );
//u16 root =K->LL_GetBoneRoot();
//if( root!=0 )
//{
// K->LL_GetTransform( 0 ).set( Fidentity );
//
// K->LL_SetBoneVisible( 0, FALSE, FALSE );
//}

//K->CalculateBones_Invalidate();
//K->CalculateBones (TRUE);

}

*>*>*>

 

и еще я раскоментировал #include "../xrphysics/Physics.h" на всякий случай.

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

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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