Skocz do zawartości

Kompilowanie silnika X-Ray (SoC)


LVutner

Rekomendowane odpowiedzi

Siema. Ktoś się zastanawiał skąd w np. w Lost Alphie czy moim modzie jest gunbobbing lub więcej slotów na broń?

Postanowiłem Wam wyjaśnić jak skompilować patch 1.0007 dla naszego stalkera.

 

Wymagana podstawowa wiedza o silnikach gier, kompilatorach oraz językach C/C#/.

A więc zaczynamy...

 

Co będzie potrzebne?:

Zainstalowane Visual Studio 2010 (NIE EXPRESS) oraz KONIECZNIE Service Pack 1 dla tegoż kompilatora.
Paczka stąd: https://yadi.sk/d/6GDogIZbiVx8v
Pobrane repozytorium stąd: https://xp-dev.com/svn/xray oraz skopiowane do osobnego folderu
Sporo czasu, cierpliwości i nerwów ze stali


Ściągamy repozytorium o rewizji numer 189 (najnowsze 193 jest zbugowane).

Kopiujemy je w inny folder, potem kasujemy plik "mount.bat".

Teraz musimy ściągnąć "Paczkę" z niezbędnymi SDK i dwoma plikami .bat. Gdy 

ściągniemy paczkę wypakowujemy ją na pulpit. Otrzymujemy dwa foldery z SDK DirectX oraz

dwa niewielkie pliki potrzebne do zrobienia wirtualnego dysku dla Visual Studio.

Powracamy do naszego skopiowanego repozytorium z silnikiem i wrzucamy dwa pliki bat z paczki. Później

wchodzimy kolejno w foldery "trunk", "3rd party". Do folderu "3rd party" wrzucamy foldery z paczki.

 

Konfiguracja ogólna oraz definiowanie funkcji w silniku:

Mamy przygotowany kod źródłowy do kompilacji, teraz wchodzimy w folder z silnikiem (repozytorium).

Mamy dwa pliki, "mountDisks.bat" oraz "unmountDisks.bat". Klikamy "mountDisks.bat" wnet powinien nam się

pojawić w komputerze wirtualny dysk. Nosi on nazwę "x:". Wchodzimy w ten dysk teraz i widzimy nasze repozytorium

z silnikiem: http://scr.hu/1ib2/p8of3

Będąc nadal na dysku "X:" wchodzimy w folder "trunk". Znajdujący się w nim plik "build_config_defines.h" otwieramy

najlepiej Notepadem++. Widzimy sporo funkcji do zdefiniowania. Po krótce omówię za co one odpowiadają.

 

#pragma once
// ==================================== Правки от alpet ======================================= 
#define HLAMP_AFFECT_IMMUNITIES            // rozmaite zmiany dla klasy lamp (CHangingLamp)
// #define LUAICP_COMPAT                // ?
#define SCRIPT_ICONS_CONTROL            // setup_game_icon w Lua
#define SCRIPT_EZI_CONTROL                // kontrola effectoru CEffectorZoomInertion \
#define SPAWN_ANTIFREEZE                // antifreez podczas spawnowania obiektow
#define ECO_RENDER                        // zmniejszenie FPS w menu
// #define MT_OPT                        // wielowatkowosc 
#define AF_SHOW_DYNAMIC_PARAMS            // ?
#define SCRIPT_VARS_STORAGE                // ?

// ==================================== Правки от K.D. =======================================
#define KD_DETAIL_RADIUS                // wieksze rysowanie trawy w polu widzenia
// ==================================== Правки от Real Wolf ======================================= 
//#define INV_RUCK_UNLIMITED_FIX        // teraz plecak nie jest nieskonczony
#define INV_NEW_SLOTS_SYSTEM            // nowy ekwipunek ze slotami
#define SUN_DIR_NOT_DEBUG                // slonce dziala poprawnie
//#define ARTEFACTS_FROM_RUCK            // artefakty uzywane z plecaka
#define KNIFE_SPRINT_FIX                // fix biegania dla noza
#define KNIFE_SPRINT_MOTION                // mozliwosc animacji sprintu dla noza
#define MISSILE_THREAT_FIX                // animacje sprintu dla pozostalych itemow
//#define GRENADE_FROM_BELT                // granaty z pasa
//#define LOCK_RELOAD_IN_SPRINT            // blokada przeladowywania broni w sprincie
#define HIDE_WEAPON_IN_CAR                // chowanie broni w aucie
//#define BM16_ANIMS_FIX                    // fix animacji dla bm16
#define INV_OUTFIT_FULL_ICON_HIDE        // ukrycie ikony gg w zbroi w ekwipunku
#define UI_LOCK_PDA_WITHOUT_PDA_IN_SLOT // zakaz uzycia pda gdy nie ma go w slocie
#define CAR_SAVE_FUEL                    // auta zapamietuja paliwo
#define R1_EXCLUDE                        // wyciecie rendera statycznego
// ==================================== Правки от Red Virus ======================================= 
#define INV_NO_ACTIVATE_APPARATUS_SLOT  // brak mozliwosci aktywacji niektorych slotow
#define INV_MOVE_ITM_INTO_QUICK_SLOTS    // jedzenie moze byc przeniesione do szybkich slotow
#define WPN_BOBBING                        // gunbobbing z lost alphy
//#define INV_COLORIZE_AMMO                // kolorowanie amunicji z lost alphy
// ==================================== Правки от Karlan ======================================= 
//#define AMMO_FROM_BELT                    // amunicja uzywana z pasa

Co to znaczy zakontować zmianę? 

To znaczy dodać dwa ukośniki przed #. Oznacza to wyłączenie funkcji w silniku. 

Dwie rady odemnie:

Nigdy niezakomentowywuj dalszego rysowania trawy oraz ECO_RENDER'a. Nigdy, bo będą później kłopoty przy kompilacji
Nie włączaj amunicji na pasie ponieważ NPC mogą powodować problemy (uciekanie gdyż nie mają amunicji)


Zmieniamy wedle uznania i zapisujemy plik.

 

Kompilacja bibliotek oraz silnika:

 

Wchodzimy kolejno w: dysk x\trunk\xray\xr_3da i szukamy pliku .sln o nazwie "XR_3DA_2007". Klikamy na niego dwa razy i ukazuje nam się 

Visual Studio. Musimy odczekać pare minut aż na pasku w Visualu pokaże się napis "Ready"

Wygląda to tak: http://scr.hu/1ib2/quk5n

 

 

Klikamy prawym przyciskiem myszy na zakładkę "3rd party". Potem wybieramy "Build".

Po tym powinno nam się sześć bibliotek pomyślnie skompilować. Poinformuje nas o tym log: http://scr.hu/1ib2/mizrm

Oczywiście można by te dwa SDK dać do folderu na dysku C:\Program Files (x86) przez co niemusielibyśmy ustalać ścieżek dla nich tylko

od razu kompilować ale tego nietestowałem. Można spróbować, a może ułatwi pracę?

Mamy teraz biblioteki potrzebne do kompilacji silnika, więc zabierzymy się za silnik teraz...

W każdym pliku ustawiamy ścieżki do SDK DirectX June 2010 w każdym pliku silnika analogicznie jak w pierwszej bibliotece.

To są Include Directories i Library Directories, musimy tam ustawić odpowiednią ścieżkę dla SDK DirectX.

 

I potem tylko klikamy prawym przyciskiem myszy na plik silnika, potem "Project only" i "Build only NAZWAPLIKU".

Należy tylko pamiętać o kolejności kompilacji:

Biblioteki
xrD3D9-Null
Luabind oraz LuaJIT
xrCore
xrGameSpy
xrCDB
xrXMLParser
xrSound
xrNetServer
XR_3DA
xrCPU_Pipe
xrParticles
xrRender_r1
xrRender_r2

 

To tyle na dzisiaj. Testować, dawać relacje. Pytania mile widziane :)

  • Dodatnia 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Korzystając z tej strony, zgadzasz się na nasze Warunki użytkowania.