Сегодня исполняется 10 лет с момента выхода S.T.A.L.K.E.R.: Тень Чернобыля |
Здравствуйте, гость ( Авторизация | Регистрация )
Сегодня исполняется 10 лет с момента выхода S.T.A.L.K.E.R.: Тень Чернобыля |
21.03.2017, 21:23
Сообщение
#41
|
|
TECHNOSLAV 80 уровня Репутация: 379 Группа: Участник Сообщений: 5758 Награды: 6 Регистрация: 26.01.2014 |
Я только в январе 2008 начал играть - как раз родители купили "новый" комп - Athlon 64X2 3600+, Radeon HD2400 1GB DDR. За ~12К деревянных. Но ничего - кукурузис прошёл на этой жестянке и CoD 4 отлично работал))
Сталкер только на статике и вроде как 1024х768 на 1440х900 мониторе - с билдовской растяжкой. Ещё жёсткий диск на 160 гигов был форматирован в FAT32 и столкир безудержно зависал после продолжительной игры, аж каждые 10 минут. Причём, стоило поиграть в крузис как зависания в сталкере исчезали часов на 5 - наверняка дело в файле подкачки. Вылеты с зелёным жуком проскакивали один раз на 100 зависаний из-за файловой системы (и это на первом патче). Но это не останавливало меня и папаню - продолжали рубиться. Папан вообще в сингловые игры со времён HL2 не играл, а в сталкера сильно завис. Не знаю, как он осилил ЧН на третьем патче, а ЗП вообще не понравился - вышел через 10 минут. Надо видос запилить по поводу десятилетия. Сообщение отредактировал Cossack-HD - 21.03.2017, 21:25 -------------------- Ryzen 3700X
Arctic Freezer 33 eSports Duo 16GB DDR4 3600MHz Strix GTX 1080 TI |
 
|
|
|
|
21.03.2017, 21:42
Сообщение
#42
|
|
Босс Репутация: 950 Группа: Участник Сообщений: 4230 Награды: 2 Регистрация: 27.09.2010 |
Athlon 64X2 3600+, Radeon HD2400 1GB DDR. За ~12К деревянных. Ну комп новый, а вот ценник... как-то дороговато за сие железо) Яндекс показал с одного сайта (трилогии тоже 10 лет, так что актуально): "Получить стабильные 60 FPS на максимальных настройках я смог лишь пройдя целый цикл видеокарт: GeForce 8800 GT, GeForce GT 240, Radeon HD 7750, GeForce GTX 670 и GeForce GTX 1060. Только последняя смогла обеспечить стабильный уровень производительности, да и то в 1366х768. " Что же за игра такая, кто угадает? PS: Эхх, а X-18 при первом прохождении... такие эмоции были в этой же лабе (именно локации, а не индекса в названии) только в OLR и LA. А этот страшный скрежет застрявших ящиков. Сообщение отредактировал Билдоман - 21.03.2017, 21:46 -------------------- I NEED A BRAAAAAAAAAAAAAAAAAAAAAAP!!!!11
|
 
|
|
21.03.2017, 22:13
Сообщение
#43
|
|
Кандидат Игровых Наук Репутация: 546 Группа: Участник Сообщений: 3016 Награды: 8 Регистрация: 21.04.2010 |
Билдоман, ЧН до сих пор на DX10.1 не дает 60 фпс на ПЕЧ970
Тень Чернобыля вроде как нормально идет. -------------------- |
 
|
|
22.03.2017, 00:49
Сообщение
#44
|
|
Игровой Эксперт Репутация: 328 Группа: Участник Сообщений: 2399 Награды: 5 Регистрация: 09.11.2009 |
Блин, так интересно читать комментарии к новостям о Сталкере)))
ща читаю 4pda коменты к новости и угораю, что некоторые считают Сталка аналогом фоллаута)))) -------------------- Фотография - это единственный язык, который понятен в любой точке мира. (С)
|
 
|
|
22.03.2017, 01:00
Сообщение
#45
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
давай сорцы А сможешь восстановить? Тогда на тебе подарок в честь юбилея! У меня так и не получилось, залезать в вертушку можно, но летит куда попало, кувыркается, короче отстой. Flyer.cpp Код // CustomFlyer.cpp: implementation of the CCustomFlyer class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Flyer.h" #include "../CameraLook.h" #include "CameraFirstEye.h" #include "../environment.h" #include "../skeletoncustom.h" #define FLY_ACCEL 10.0f #define YAW_ACCEL 0.75f #define RUN_COEF 4.0f #define MAX_CAM_YAW 1.75f #define FRICTION_AIR 1.75f #define FRICTION_WALL 5.f #define FRICTION_GROUND 10.f //#define AIR_RESIST (1.f-0.01f) #define MIN_CRASH_SPEED 15.f #define MAX_CRASH_SPEED 30.f IC float sign(float t) { return (t>=0)?1.f:-1.f; } ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CFlyer::CFlyer() : inherited() { m_PhysicMovementControl->SetCrashSpeeds (MIN_CRASH_SPEED,MAX_CRASH_SPEED); m_PhysicMovementControl->SetParent (this); m_PhysicMovementControl->SetMass (2000); m_PhysicMovementControl->SetApplyGravity(FALSE); m_PhysicMovementControl->SetFriction (FRICTION_AIR,FRICTION_WALL,FRICTION_GROUND); cameras[efcFrontView] = xr_new<CCameraFirstEye> (this, pSettings, "heli_front_cam", true); cameras[efcLookAt] = xr_new<CCameraLook> (this, pSettings, "heli_look_cam", false); cameras[efcFreeLook] = xr_new<CCameraLook> (this, pSettings, "heli_free_cam", false); cam_active = efcFrontView; eState = fsWork; new_mstate = 0; cur_mstate = 0; mYaw = 0; mYawVelocity= 0; // vOldVel.set(0,0,0); // Device.seqRender.Add (this); } CFlyer::~CFlyer() { // Device.seqRender.Remove (this); for (int i=0; i<efcMaxCam; ++i) xr_delete(cameras[i]); } void CFlyer::Load(LPCSTR section) { Msg("Loading flyer: %s",section); inherited::Load(ini,section); Fbox aabb; aabb.set (CFORM()->GetBBox()); // m_PhysicMovementControl->SetBox (aabb); Fvector vfC,vfE; vfE.set (1.f,.25f,1.f); vfC.set (0.f,.2f,0.f); m_PhysicMovementControl->SetFoots (vfC,vfE); m_PhysicMovementControl->CalcMaximumVelocity(mMaxAirVelocity,FLY_ACCEL*RUN_COEF,FRICTION_AIR); m_PhysicMovementControl->CalcMaximumVelocity(mMaxYawVelocity,YAW_ACCEL*RUN_COEF,FRICTION_AIR); // R_ASSERT (Visual()->Type==MT_SKELETON); // smart_cast<CKinematics*> (Visual())->PlayCycle("work"); } void CFlyer::UpdateState(){ // проверить живой или нет eState = (1)?fsWork:fsDead; } void CFlyer::CheckControls(Fvector &vControlAccel, float& fYawAccel) { // control accel vControlAccel.set(0,0,0); fYawAccel = 0; // update player accel if (cur_mstate&mcUp) vControlAccel.y = 1; if (cur_mstate&mcDown) vControlAccel.y = -1; if (cur_mstate&mcFwd) vControlAccel.z = 1; if (cur_mstate&mcBack) vControlAccel.z = -1; if (cur_mstate&mcLStrafe) vControlAccel.x = -1; if (cur_mstate&mcRStrafe) vControlAccel.x = 1; if (cur_mstate&mcLeft) fYawAccel = -1; if (cur_mstate&mcRight) fYawAccel = 1; if ((cam_active==efcFrontView)&&(fYawAccel==0)){ CCameraBase* cam = cameras[efcFrontView]; float val = cam->CheckLimYaw(); float sgn = sign(val); if ((val>-.05f)&&(val<0.05f)) val = 0; fYawAccel = val;//sgn*val*val; } // fMouseYawMoving *= 0.8f; vControlAccel.normalize_safe(); vControlAccel.mul (FLY_ACCEL); fYawAccel *= YAW_ACCEL; if (isAccelerated()) { vControlAccel.mul (RUN_COEF); fYawAccel *= RUN_COEF; } if (m_PhysicMovementControl->Environment()==CMovementControl::peOnGround){ vControlAccel.x*=0.1f; vControlAccel.z*=0.1f; fYawAccel*=0.1f; } vControlAccel.y *= 0.75f; //if (_abs(vControlAccel.y)>EPS_L) vControlAccel.y -= psGravity*.25f; } void CFlyer::SetAnimation( ) { } #define BANK_FACTOR 1.25f void CFlyer::Update(u32 DT) { if (!bEnabled) return; float dt = float(DT)/1000.f; // enabled & disabled motion state on current frame cur_mstate = new_mstate; // update controls Fvector vControlAccel; float fYawAccel; CheckControls (vControlAccel,fYawAccel); // prepare safe translate object Fvector accel; /* switch(m_PhysicMovementControl->Environment()) { case CMovementControl::peInAir: pApp->pFont->Out(-1.f,0.5f,"Env: air"); break; case CMovementControl::peAtWall: pApp->pFont->Out(-1.f,0.5f,"Env: wall"); break; case CMovementControl::peOnGround: pApp->pFont->Out(-1.f,0.5f,"Env: ground"); break; default: NODEFAULT; } */ // rotation mYaw = mYaw + mYawVelocity*dt + fYawAccel*dt*dt*0.5f; mYawVelocity = mYawVelocity + fYawAccel*dt; mYawVelocity -= dt*mYawVelocity*m_PhysicMovementControl->GetCurrentFriction(); Fvector D,N; D.set(_sin(mYaw),0.f,_cos(mYaw)); N.set(0,1,0); mRotate.rotation(D,N); // movement mRotate.transform_dir(accel, vControlAccel); m_PhysicMovementControl->SetPosition(Position()); m_PhysicMovementControl->Calculate (accel,mYawVelocity,0,dt,false); m_PhysicMovementControl->GetPosition(Position()); //--------------------------------------------------------- // рассчитаем крен //--------------------------------------------------------- const Fvector& VM = m_PhysicMovementControl->GetVelocity(); Fvector V; // V.set (vOldVel); // V.inertion (VM,0.999f); // vOldVel.set (VM); Fmatrix M; M.transpose (mRotate); M.transform_dir(V,VM); // pApp->pFont->Out(-1,0.8f,"Vel: %.2f, %.2f, %.2f",V.x,V.y,V.z); // рассчитаем возможный крен по скорости V.div (mMaxAirVelocity*2.f*BANK_FACTOR); Fmatrix Rbank; Fquaternion Q; // рассчитаем крен по повороту float bank = mYawVelocity/(mMaxYawVelocity*BANK_FACTOR); bank*=_abs (V.z*4.f); bank+=V.x; // повернем модель Q.rotationYawPitchRoll(bank,0,-(V.z)); Rbank.rotation (Q); mRotate.mulB_43 (Rbank); // crop yaw angle if (mYaw>PI_MUL_2){ mYaw-=PI_MUL_2; cameras[efcLookAt]->yaw-=PI_MUL_2; } if (mYaw<-PI_MUL_2){ mYaw+=PI_MUL_2; cameras[efcLookAt]->yaw+=PI_MUL_2; } // look camera delay computing float vm = V.magnitude()*BANK_FACTOR*2; clamp(vm,0.f,1.f); { float Yo, k, Ay, z, f; Yo = cameras[efcLookAt]->yaw; z = 1.6f; f = 1.2f+vm; k = PI_MUL_2*f; Ay = (mYaw-Yo)*k*k - Vy*k*z; cameras[efcLookAt]->yaw = Yo + Vy*dt + Ay*dt*dt*0.5f; Vy = 0.99f*Vy + Ay*dt; } //--------------------------------------------------------- // test nearest object // Fvector C; float R; // m_PhysicMovementControl->GetBoundingSphere(C,R); // g_pGameLevel->ObjectSpace.TestNearestObject(CFORM(), C, R); // check state UpdateState (); // Check ground-contact if (m_PhysicMovementControl->gcontact_Was) { } // update motions SetAnimation (); UpdateTransform (); // smart_cast<CKinematics*>(Visual())->Update(); inherited::Update (DT); if (IsMyCamera()) UpdateCamera(); // HUD update // pApp->pFont->Out(-1,0.88f,"Fly P: %.3f, %.3f, %.3f",Position().x,Position().y,Position().z); // pApp->pFont->Out(-1,0.93f,"Fly D: %.3f, %.3f, %.3f",mRotate.k.x,mRotate.k.y,mRotate.k.z); } #ifdef DEBUG void CFlyer::OnRender () { if (!bDebug) return; m_PhysicMovementControl->dbg_Draw (); } #endif Flyer.h Код // CustomFlyer.h: interface for the CCustomFlyer class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_) #define AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_ #pragma once #include "entity.h" #include "actor_flags.h" // refs class CCameraBase; class CFlyer : public CEntity { enum EMoveCommand{ mcFwd = 0x0001, mcBack = 0x0002, mcLStrafe = 0x0004, mcRStrafe = 0x0008, mcUp = 0x0010, mcDown = 0x0020, mcAccel = 0x0100, mcLeft = 0x0200, mcRight = 0x0400 }; enum EFlyerCameras { efcFrontView = 0, efcLookAt, efcFreeLook, efcMaxCam }; enum EFlyerState{ fsWork, fsDead }; private: typedef CEntity inherited; private: // State machine EFlyerState eState; // +644 u32 new_mstate, cur_mstate; // +648, +652 float mYaw; // +656 float mYawVelocity; // +660 float mMaxYawVelocity; // +664 float mMaxAirVelocity; // +668 IC BOOL isAccelerated () { if (cur_mstate&mcAccel) return psActorFlags.test(AF_ALWAYSRUN)?FALSE:TRUE; else return psActorFlags.test(AF_ALWAYSRUN)?TRUE :FALSE; } // Cameras CCameraBase* cameras[efcMaxCam]; // +672 EFlyerCameras cam_active; // +684 void ChangeCamStyle (EFlyerCameras style); void UpdateState (); void UpdateCamera (); void SetAnimation (); void CheckControls (Fvector &vControlAccel, float& fYawAccel); public: CFlyer (); virtual ~CFlyer (); virtual void Load (LPCSTR section); // Fire control virtual void g_fireParams (const CHudItem* /**pHudItem/**/, Fvector& /**P/**/, Fvector& /**D/**/) {}; virtual void HitSignal ( int /**iHitAmount/**/, Fvector& /**vLocalDir/**/, CEntity* /**E/**/, s16 /**element/**/){;} virtual void Update ( u32 DT ); virtual void IR_onMouseMove (int x, int y); virtual void IR_OnKeyboardPress (int dik); virtual void IR_OnKeyboardRelease (int dik); virtual void IR_OnKeyboardHold (int dik); #ifdef DEBUG virtual void OnRender (); #endif }; #endif // !defined(AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_) FlyerCameras.cpp Код #include "stdafx.h" #include "Flyer.h" #include "../CameraBase.h" void CFlyer::UpdateCamera() { Fvector point, dangle; // get calc eye point 90% from player height Fvector R; m_PhysicMovementControl->Box().getsize (R); point.set (0.f,R.y*0.55f,0.9f); XFORM().transform_tiny (point); dangle.set(0,0,0); switch (cam_active){ case efcFrontView: break; case efcLookAt: break; case efcFreeLook: break; default: NODEFAULT; } CCameraBase* C = cameras[cam_active]; C->Update (point,dangle); g_pGameLevel->Cameras().Update (C); } void CFlyer::ChangeCamStyle (EFlyerCameras style){ CCameraBase* old_cam = cameras[cam_active]; cam_active = style; CCameraBase* new_cam = cameras[cam_active]; old_cam->onDeactivate(); new_cam->onActivate(old_cam); switch(cam_active){ case efcFrontView: bVisible = true; new_cam->yaw=0; break; case efcLookAt: bVisible = true; break; case efcFreeLook: bVisible = true; break; } } FlyerInput.cpp Код #include "stdafx.h" #include "flyer.h" #include "../xr_input.h" #include "../CameraBase.h" void CFlyer::IR_OnKeyboardPress(int cmd){ if (eState==fsDead) return; switch(cmd){ case kACCEL: new_mstate |= mcAccel; break; case kR_STRAFE: new_mstate |= mcRStrafe; break; case kL_STRAFE: new_mstate |= mcLStrafe; break; case kFWD: new_mstate |= mcFwd; break; case kBACK: new_mstate |= mcBack; break; case kJUMP: new_mstate |= mcUp; break; case kCROUCH: new_mstate |= mcDown; break; case kLEFT: new_mstate |= mcLeft; break; case kRIGHT: new_mstate |= mcRight; break; // case kFIRE: FireStart(); break; case kCAM_1: ChangeCamStyle(efcFrontView);break; case kCAM_2: ChangeCamStyle(efcLookAt); break; case kCAM_3: ChangeCamStyle(efcFreeLook);break; } } void CFlyer::IR_OnKeyboardRelease(int cmd){ switch(cmd){ case kACCEL: new_mstate &=~mcAccel; break; case kR_STRAFE: new_mstate &=~mcRStrafe; break; case kL_STRAFE: new_mstate &=~mcLStrafe; break; case kFWD: new_mstate &=~mcFwd; break; case kBACK: new_mstate &=~mcBack; break; case kJUMP: new_mstate &=~mcUp; break; case kCROUCH: new_mstate &=~mcDown; break; case kLEFT: new_mstate &=~mcLeft; break; case kRIGHT: new_mstate &=~mcRight; break; // case kFIRE: FireEnd(); break; } } void CFlyer::IR_OnKeyboardHold(int cmd){ if (eState==fsDead) return; switch(cmd){ case kCAM_ZOOM_IN: case kCAM_ZOOM_OUT: case kUP: case kDOWN: cameras[cam_active]->Move(cmd); break; case kLEFT: case kRIGHT: // if (cam_active==efcFreeLook) // cameras[cam_active]->Move(cmd); break; } } void CFlyer::IR_onMouseMove(int dx, int dy) { float scale = psMouseSens * psMouseSensScale/50.f; if (efcLookAt!=cam_active) if (dx){ float d = float(dx)*scale; cameras[cam_active]->Move((d<0)?kLEFT:kRIGHT, _abs(d)); // fMouseYawMoving = 1.f; } if (dy){ float d = ((psMouseInvert.test(1))?-1:1)*float(dy)*scale*MouseHWScale; cameras[cam_active]->Move((d>0)?kUP:kDOWN, _abs(d)); } } В этот вертолёт не залезают, а переключают управление на него, короче, этот код относится приблизительно к ЗЫ В билде 1098 этот вертолёт не работает, отключён. Я так же пытался его реанимировать, но получилось не очень. Сообщение отредактировал NanoBot-AMK - 22.03.2017, 01:21 -------------------- СТАЛКЕР только для ПК!
|
 
|
|
22.03.2017, 03:53
Сообщение
#46
|
|
Опытный Игрок Репутация: 4 Группа: Участник Сообщений: 54 Награды: 2 Регистрация: 26.07.2015 |
|
 
|
|
22.03.2017, 06:41
Сообщение
#47
|
|
Опытный Игрок Репутация: 77 Группа: Участник Сообщений: 55 Награды: 4 Регистрация: 20.02.2009 |
Как время то летит,во всех деталях помню день,когда полетел покупать заветный диск Сколько дней и ночей было проведено в мире Зоны... Эх,были времена
|
 
|
|
22.03.2017, 07:16
Сообщение
#48
|
|
Почти Мастер Репутация: 174 Группа: Участник Сообщений: 1052 Награды: 5 Регистрация: 11.10.2006 |
А я купил диск через пару дней после выхода игры. Тогда еще в нашем зажопинске сталкера не завезли :-) А теперь это игра - живая классика. Вот недавно хотел снова пройти с каким-нибудь хорошим модом ТЧ. Что посоветуете поставить? Билды не предлагать, они и так у меня есть :-)
А игра версии 1.0 у меня так вообще тогда чуть не спалила мою 7600GS Сообщение отредактировал xroft - 22.03.2017, 07:19 -------------------- |
 
|
|
22.03.2017, 07:36
Сообщение
#49
|
|
какой жим, вы о чем?) Репутация: 1523 Группа: Участник Сообщений: 7234 Награды: 10 Регистрация: 30.05.2009 |
|
 
|
|
22.03.2017, 12:12
Сообщение
#50
|
|
Почти Игроман Репутация: 96 Группа: Участник Сообщений: 594 Награды: 3 Регистрация: 26.10.2012 |
Цитата(kasper) можно было распаковать и юзать бинарники от английской версии да ладно, в то время был ужасный dual-up по карточкам(и то в конце 2007-го), дальше уж не буду писать - что это значило, по кр.мере для отдельных ю-зверей. Вообще имхо: грех гонять тч с модами, и зачем из ТЧ пытаюца сделать ЗП, грешно это. -------------------- Будиш маму-папу слушать
Будиш ты канфеты кушать! © Операция «Ы» |
 
|
|
22.03.2017, 12:18
Сообщение
#51
|
|
Продвинутый геймер Репутация: 24 Группа: Участник Сообщений: 223 Награды: 5 Регистрация: 01.02.2006 |
давай сорцы А сможешь восстановить? Тогда на тебе подарок в честь юбилея! У меня так и не получилось, залезать в вертушку можно, но летит куда попало, кувыркается, короче отстой. Flyer.cpp Код // CustomFlyer.cpp: implementation of the CCustomFlyer class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Flyer.h" #include "../CameraLook.h" #include "CameraFirstEye.h" #include "../environment.h" #include "../skeletoncustom.h" #define FLY_ACCEL 10.0f #define YAW_ACCEL 0.75f #define RUN_COEF 4.0f #define MAX_CAM_YAW 1.75f #define FRICTION_AIR 1.75f #define FRICTION_WALL 5.f #define FRICTION_GROUND 10.f //#define AIR_RESIST (1.f-0.01f) #define MIN_CRASH_SPEED 15.f #define MAX_CRASH_SPEED 30.f IC float sign(float t) { return (t>=0)?1.f:-1.f; } ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CFlyer::CFlyer() : inherited() { m_PhysicMovementControl->SetCrashSpeeds (MIN_CRASH_SPEED,MAX_CRASH_SPEED); m_PhysicMovementControl->SetParent (this); m_PhysicMovementControl->SetMass (2000); m_PhysicMovementControl->SetApplyGravity(FALSE); m_PhysicMovementControl->SetFriction (FRICTION_AIR,FRICTION_WALL,FRICTION_GROUND); cameras[efcFrontView] = xr_new<CCameraFirstEye> (this, pSettings, "heli_front_cam", true); cameras[efcLookAt] = xr_new<CCameraLook> (this, pSettings, "heli_look_cam", false); cameras[efcFreeLook] = xr_new<CCameraLook> (this, pSettings, "heli_free_cam", false); cam_active = efcFrontView; eState = fsWork; new_mstate = 0; cur_mstate = 0; mYaw = 0; mYawVelocity= 0; // vOldVel.set(0,0,0); // Device.seqRender.Add (this); } CFlyer::~CFlyer() { // Device.seqRender.Remove (this); for (int i=0; i<efcMaxCam; ++i) xr_delete(cameras[i]); } void CFlyer::Load(LPCSTR section) { Msg("Loading flyer: %s",section); inherited::Load(ini,section); Fbox aabb; aabb.set (CFORM()->GetBBox()); // m_PhysicMovementControl->SetBox (aabb); Fvector vfC,vfE; vfE.set (1.f,.25f,1.f); vfC.set (0.f,.2f,0.f); m_PhysicMovementControl->SetFoots (vfC,vfE); m_PhysicMovementControl->CalcMaximumVelocity(mMaxAirVelocity,FLY_ACCEL*RUN_COEF,FRICTION_AIR); m_PhysicMovementControl->CalcMaximumVelocity(mMaxYawVelocity,YAW_ACCEL*RUN_COEF,FRICTION_AIR); // R_ASSERT (Visual()->Type==MT_SKELETON); // smart_cast<CKinematics*> (Visual())->PlayCycle("work"); } void CFlyer::UpdateState(){ // проверить живой или нет eState = (1)?fsWork:fsDead; } void CFlyer::CheckControls(Fvector &vControlAccel, float& fYawAccel) { // control accel vControlAccel.set(0,0,0); fYawAccel = 0; // update player accel if (cur_mstate&mcUp) vControlAccel.y = 1; if (cur_mstate&mcDown) vControlAccel.y = -1; if (cur_mstate&mcFwd) vControlAccel.z = 1; if (cur_mstate&mcBack) vControlAccel.z = -1; if (cur_mstate&mcLStrafe) vControlAccel.x = -1; if (cur_mstate&mcRStrafe) vControlAccel.x = 1; if (cur_mstate&mcLeft) fYawAccel = -1; if (cur_mstate&mcRight) fYawAccel = 1; if ((cam_active==efcFrontView)&&(fYawAccel==0)){ CCameraBase* cam = cameras[efcFrontView]; float val = cam->CheckLimYaw(); float sgn = sign(val); if ((val>-.05f)&&(val<0.05f)) val = 0; fYawAccel = val;//sgn*val*val; } // fMouseYawMoving *= 0.8f; vControlAccel.normalize_safe(); vControlAccel.mul (FLY_ACCEL); fYawAccel *= YAW_ACCEL; if (isAccelerated()) { vControlAccel.mul (RUN_COEF); fYawAccel *= RUN_COEF; } if (m_PhysicMovementControl->Environment()==CMovementControl::peOnGround){ vControlAccel.x*=0.1f; vControlAccel.z*=0.1f; fYawAccel*=0.1f; } vControlAccel.y *= 0.75f; //if (_abs(vControlAccel.y)>EPS_L) vControlAccel.y -= psGravity*.25f; } void CFlyer::SetAnimation( ) { } #define BANK_FACTOR 1.25f void CFlyer::Update(u32 DT) { if (!bEnabled) return; float dt = float(DT)/1000.f; // enabled & disabled motion state on current frame cur_mstate = new_mstate; // update controls Fvector vControlAccel; float fYawAccel; CheckControls (vControlAccel,fYawAccel); // prepare safe translate object Fvector accel; /* switch(m_PhysicMovementControl->Environment()) { case CMovementControl::peInAir: pApp->pFont->Out(-1.f,0.5f,"Env: air"); break; case CMovementControl::peAtWall: pApp->pFont->Out(-1.f,0.5f,"Env: wall"); break; case CMovementControl::peOnGround: pApp->pFont->Out(-1.f,0.5f,"Env: ground"); break; default: NODEFAULT; } */ // rotation mYaw = mYaw + mYawVelocity*dt + fYawAccel*dt*dt*0.5f; mYawVelocity = mYawVelocity + fYawAccel*dt; mYawVelocity -= dt*mYawVelocity*m_PhysicMovementControl->GetCurrentFriction(); Fvector D,N; D.set(_sin(mYaw),0.f,_cos(mYaw)); N.set(0,1,0); mRotate.rotation(D,N); // movement mRotate.transform_dir(accel, vControlAccel); m_PhysicMovementControl->SetPosition(Position()); m_PhysicMovementControl->Calculate (accel,mYawVelocity,0,dt,false); m_PhysicMovementControl->GetPosition(Position()); //--------------------------------------------------------- // рассчитаем крен //--------------------------------------------------------- const Fvector& VM = m_PhysicMovementControl->GetVelocity(); Fvector V; // V.set (vOldVel); // V.inertion (VM,0.999f); // vOldVel.set (VM); Fmatrix M; M.transpose (mRotate); M.transform_dir(V,VM); // pApp->pFont->Out(-1,0.8f,"Vel: %.2f, %.2f, %.2f",V.x,V.y,V.z); // рассчитаем возможный крен по скорости V.div (mMaxAirVelocity*2.f*BANK_FACTOR); Fmatrix Rbank; Fquaternion Q; // рассчитаем крен по повороту float bank = mYawVelocity/(mMaxYawVelocity*BANK_FACTOR); bank*=_abs (V.z*4.f); bank+=V.x; // повернем модель Q.rotationYawPitchRoll(bank,0,-(V.z)); Rbank.rotation (Q); mRotate.mulB_43 (Rbank); // crop yaw angle if (mYaw>PI_MUL_2){ mYaw-=PI_MUL_2; cameras[efcLookAt]->yaw-=PI_MUL_2; } if (mYaw<-PI_MUL_2){ mYaw+=PI_MUL_2; cameras[efcLookAt]->yaw+=PI_MUL_2; } // look camera delay computing float vm = V.magnitude()*BANK_FACTOR*2; clamp(vm,0.f,1.f); { float Yo, k, Ay, z, f; Yo = cameras[efcLookAt]->yaw; z = 1.6f; f = 1.2f+vm; k = PI_MUL_2*f; Ay = (mYaw-Yo)*k*k - Vy*k*z; cameras[efcLookAt]->yaw = Yo + Vy*dt + Ay*dt*dt*0.5f; Vy = 0.99f*Vy + Ay*dt; } //--------------------------------------------------------- // test nearest object // Fvector C; float R; // m_PhysicMovementControl->GetBoundingSphere(C,R); // g_pGameLevel->ObjectSpace.TestNearestObject(CFORM(), C, R); // check state UpdateState (); // Check ground-contact if (m_PhysicMovementControl->gcontact_Was) { } // update motions SetAnimation (); UpdateTransform (); // smart_cast<CKinematics*>(Visual())->Update(); inherited::Update (DT); if (IsMyCamera()) UpdateCamera(); // HUD update // pApp->pFont->Out(-1,0.88f,"Fly P: %.3f, %.3f, %.3f",Position().x,Position().y,Position().z); // pApp->pFont->Out(-1,0.93f,"Fly D: %.3f, %.3f, %.3f",mRotate.k.x,mRotate.k.y,mRotate.k.z); } #ifdef DEBUG void CFlyer::OnRender () { if (!bDebug) return; m_PhysicMovementControl->dbg_Draw (); } #endif Flyer.h Код // CustomFlyer.h: interface for the CCustomFlyer class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_) #define AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_ #pragma once #include "entity.h" #include "actor_flags.h" // refs class CCameraBase; class CFlyer : public CEntity { enum EMoveCommand{ mcFwd = 0x0001, mcBack = 0x0002, mcLStrafe = 0x0004, mcRStrafe = 0x0008, mcUp = 0x0010, mcDown = 0x0020, mcAccel = 0x0100, mcLeft = 0x0200, mcRight = 0x0400 }; enum EFlyerCameras { efcFrontView = 0, efcLookAt, efcFreeLook, efcMaxCam }; enum EFlyerState{ fsWork, fsDead }; private: typedef CEntity inherited; private: // State machine EFlyerState eState; // +644 u32 new_mstate, cur_mstate; // +648, +652 float mYaw; // +656 float mYawVelocity; // +660 float mMaxYawVelocity; // +664 float mMaxAirVelocity; // +668 IC BOOL isAccelerated () { if (cur_mstate&mcAccel) return psActorFlags.test(AF_ALWAYSRUN)?FALSE:TRUE; else return psActorFlags.test(AF_ALWAYSRUN)?TRUE :FALSE; } // Cameras CCameraBase* cameras[efcMaxCam]; // +672 EFlyerCameras cam_active; // +684 void ChangeCamStyle (EFlyerCameras style); void UpdateState (); void UpdateCamera (); void SetAnimation (); void CheckControls (Fvector &vControlAccel, float& fYawAccel); public: CFlyer (); virtual ~CFlyer (); virtual void Load (LPCSTR section); // Fire control virtual void g_fireParams (const CHudItem* /**pHudItem/**/, Fvector& /**P/**/, Fvector& /**D/**/) {}; virtual void HitSignal ( int /**iHitAmount/**/, Fvector& /**vLocalDir/**/, CEntity* /**E/**/, s16 /**element/**/){;} virtual void Update ( u32 DT ); virtual void IR_onMouseMove (int x, int y); virtual void IR_OnKeyboardPress (int dik); virtual void IR_OnKeyboardRelease (int dik); virtual void IR_OnKeyboardHold (int dik); #ifdef DEBUG virtual void OnRender (); #endif }; #endif // !defined(AFX_FLYER_H__06360CF2_1B3F_4F82_814D_F7BF5E4F601C__INCLUDED_) FlyerCameras.cpp Код #include "stdafx.h" #include "Flyer.h" #include "../CameraBase.h" void CFlyer::UpdateCamera() { Fvector point, dangle; // get calc eye point 90% from player height Fvector R; m_PhysicMovementControl->Box().getsize (R); point.set (0.f,R.y*0.55f,0.9f); XFORM().transform_tiny (point); dangle.set(0,0,0); switch (cam_active){ case efcFrontView: break; case efcLookAt: break; case efcFreeLook: break; default: NODEFAULT; } CCameraBase* C = cameras[cam_active]; C->Update (point,dangle); g_pGameLevel->Cameras().Update (C); } void CFlyer::ChangeCamStyle (EFlyerCameras style){ CCameraBase* old_cam = cameras[cam_active]; cam_active = style; CCameraBase* new_cam = cameras[cam_active]; old_cam->onDeactivate(); new_cam->onActivate(old_cam); switch(cam_active){ case efcFrontView: bVisible = true; new_cam->yaw=0; break; case efcLookAt: bVisible = true; break; case efcFreeLook: bVisible = true; break; } } FlyerInput.cpp Код #include "stdafx.h" #include "flyer.h" #include "../xr_input.h" #include "../CameraBase.h" void CFlyer::IR_OnKeyboardPress(int cmd){ if (eState==fsDead) return; switch(cmd){ case kACCEL: new_mstate |= mcAccel; break; case kR_STRAFE: new_mstate |= mcRStrafe; break; case kL_STRAFE: new_mstate |= mcLStrafe; break; case kFWD: new_mstate |= mcFwd; break; case kBACK: new_mstate |= mcBack; break; case kJUMP: new_mstate |= mcUp; break; case kCROUCH: new_mstate |= mcDown; break; case kLEFT: new_mstate |= mcLeft; break; case kRIGHT: new_mstate |= mcRight; break; // case kFIRE: FireStart(); break; case kCAM_1: ChangeCamStyle(efcFrontView);break; case kCAM_2: ChangeCamStyle(efcLookAt); break; case kCAM_3: ChangeCamStyle(efcFreeLook);break; } } void CFlyer::IR_OnKeyboardRelease(int cmd){ switch(cmd){ case kACCEL: new_mstate &=~mcAccel; break; case kR_STRAFE: new_mstate &=~mcRStrafe; break; case kL_STRAFE: new_mstate &=~mcLStrafe; break; case kFWD: new_mstate &=~mcFwd; break; case kBACK: new_mstate &=~mcBack; break; case kJUMP: new_mstate &=~mcUp; break; case kCROUCH: new_mstate &=~mcDown; break; case kLEFT: new_mstate &=~mcLeft; break; case kRIGHT: new_mstate &=~mcRight; break; // case kFIRE: FireEnd(); break; } } void CFlyer::IR_OnKeyboardHold(int cmd){ if (eState==fsDead) return; switch(cmd){ case kCAM_ZOOM_IN: case kCAM_ZOOM_OUT: case kUP: case kDOWN: cameras[cam_active]->Move(cmd); break; case kLEFT: case kRIGHT: // if (cam_active==efcFreeLook) // cameras[cam_active]->Move(cmd); break; } } void CFlyer::IR_onMouseMove(int dx, int dy) { float scale = psMouseSens * psMouseSensScale/50.f; if (efcLookAt!=cam_active) if (dx){ float d = float(dx)*scale; cameras[cam_active]->Move((d<0)?kLEFT:kRIGHT, _abs(d)); // fMouseYawMoving = 1.f; } if (dy){ float d = ((psMouseInvert.test(1))?-1:1)*float(dy)*scale*MouseHWScale; cameras[cam_active]->Move((d>0)?kUP:kDOWN, _abs(d)); } } В этот вертолёт не залезают, а переключают управление на него, короче, этот код относится приблизительно к ЗЫ В билде 1098 этот вертолёт не работает, отключён. Я так же пытался его реанимировать, но получилось не очень. все понял откуда файлы, там и вертолет нормальный есть но нифига не реализовано |
 
|
|
22.03.2017, 14:42
Сообщение
#52
|
|
Босс Репутация: 950 Группа: Участник Сообщений: 4230 Награды: 2 Регистрация: 27.09.2010 |
ЧН до сих пор на DX10.1 не дает 60 фпс на ПЕЧ970 У меня идёт всё, кроме ЧН. Ну и игр с рендером ЧН (LA, привет ) -------------------- I NEED A BRAAAAAAAAAAAAAAAAAAAAAAP!!!!11
|
 
|
|
22.03.2017, 15:48
Сообщение
#53
|
|
Кандидат Игровых Наук Репутация: 546 Группа: Участник Сообщений: 3016 Награды: 8 Регистрация: 21.04.2010 |
Билдоман, это вообще не ясная фигня, билд который немецкий (пердрелиз чн) не лагает, а дефолт лагает
-------------------- |
 
|
|
23.03.2017, 01:34
Сообщение
#54
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Ура, вот этот день настал, 10 лет назад вышел С.Т.А.Л.К.Е.Р. Тень Чернобыля на прилавки СНГ!
А то по дате США как-то не патриотично. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
23.03.2017, 02:11
Сообщение
#55
|
|
разраб одиночка Репутация: 2132 Группа: Модератор Сообщений: 3413 Награды: 13 Регистрация: 06.05.2004 |
С праздничком, ребят.)
-------------------- |
 
|
|
23.03.2017, 02:22
Сообщение
#56
|
|
Игровой Бог Репутация: 648 Группа: Участник Сообщений: 5354 Награды: 9 Регистрация: 24.09.2010 |
-------------------- |
 
|
|
23.03.2017, 02:24
Сообщение
#57
|
|
Мастер Игры Репутация: 74 Группа: Участник Сообщений: 1454 Награды: 2 Регистрация: 28.05.2010 |
Да-а-а-а! Вот именно сегодня, 23 марта 2017-го в 16:44 (чек сохранился ) будет ровно 10 лет, как я купил пиратку. Конечно, потом взял и лицуху.
|
 
|
|
23.03.2017, 02:30
Сообщение
#58
|
|
Опытный Игрок Репутация: -3 Группа: Участник Сообщений: 63 Награды: 1 Регистрация: 19.02.2017 |
Это же Росток, да? На фотке. Это Григорович stalker team держит?
Сообщение отредактировал kir4aev - 23.03.2017, 02:32 -------------------- "Перо свободы. Независимые расследования. Альтернативное мнение."
Очерки, статьи и рассказы о "Новой России Будущего": |
 
|
|
23.03.2017, 02:40
Сообщение
#59
|
|
TECHNOSLAV 80 уровня Репутация: 379 Группа: Участник Сообщений: 5758 Награды: 6 Регистрация: 26.01.2014 |
ЧН не по видеокарте задыхается, а в первую очередь по процессору. Рендер однопоточный по большому счёту.
Что касается ТЧ - я там спалил GeForce 9800GT, играя с OGSE. Не мониторил температуры, не лочил FPS, вот и вскипятилась референсная зелёнка. С тех пор сижу только на красных картах Сообщение отредактировал Cossack-HD - 23.03.2017, 02:41 -------------------- Ryzen 3700X
Arctic Freezer 33 eSports Duo 16GB DDR4 3600MHz Strix GTX 1080 TI |
 
|
|
23.03.2017, 08:27
Сообщение
#60
|
|
Кандидат Игровых Наук Репутация: 546 Группа: Участник Сообщений: 3016 Награды: 8 Регистрация: 21.04.2010 |
Cossack-HD, странно что он задыхается от i5
-------------------- |
 
|
|
Текстовая версия | Сейчас: 26.04.2024, 22:19 |