Witam
Odpowiadając na post w innym temacie wpadłem na pomysł napisania poradnika jako że już trochę zaczynam tą grę rozgryzać od strony mechaniki.
A więc aby zrozumieć o co kaman, należy wejść do folderu gdzie mamy grę zainstalowaną i tam będzie folder GameData. Do niego pakujemy wszystkie mody, ale jest też w nim folder Squad a w nim:
- Flags - flagi
- Parts - części
- FX - płomienie
- Props - najprawdopodbniej wskaźniki np. prędkościomierz
- Spaces - wnętrza pojazdów
- Resources - folder zasobów a w nim :
-Science defs - określa za co i ile dostajemy science, nie tykać bo psuje całą zabawę z kariery.
- ResourcesGeneric - tu zmieniamy i dodajemy własne surowce myślę że jest to tak proste że nie muszę tłumaczyć. Gdy chcemy dodać nowy surowiec po prostu kopiujemy jeden z nich i wprowadzamy swoją nazwę i ew. zmieniamy gęstość, oczywiście należy go potem wprowadzić również do zbiorników, silników itp. ale o tym później.
Podczas ładowania gry widzimy taki paseczek który ładuje się dłuższą chwilę i przelatują w nim nazwy plików - gra ładuje się do ramu a że jest tylko 32 bitowa to może obsłużyć maks 3,5GB, trochę mało. Nie raz ściągnie się mod który ma 500 części a używamy z 3-4 a reszta zawala ram, ścina grę i wkurza w hangarze bo trzeba szukać interesującego nas elementu wśród śmieci. Aby temu zaradzić decydujemy co zostawiamy a co wywalamy, w folderze gamedata znajdujemy interesujący nas mod, w nim elementy do usunięcia i po prostu je wywalamy.Nie spowoduje to żadnych błędów z grą a usprawni jej działanie. (statki na orbicie z usuniętym elementem, przepadną przy kolejnym ładowaniu save`a). Każda część ma swój folder, a w nim pliki tekstur, siatki i plik cfg, upewnij się że nie wywalasz całej kategorii
WSTĘP DO CFG
Teraz trochę o tunningu.
Wchodzimy do folderu parts, w nim jest parę folderów odpowiadających typowi części, wchodzimy w Command, otwieramy Mk1-2Pod i widzimy 5 plików. Pliki model są nieedytowalne przynajmniej dopóki ktoś nie rozgryzie jak je odkodować, natomiast cfg jest i otwieramy go notatnikiem.
Widzimy dużo różnych dziwnych angielskich słów i cyferek.
Aby je ogarnąć trzeba zrozumieć jak taki plik działa. Wyróżniamy
moduł MODULE i
zasób RESOURCE oraz wartości. Plik można w zasadzie podzielić na 2 części. Pierwsza cześć zawiera zwykle to samo, czyli wypisane wartości takie jak masa, nazwa, opis itp. i są to wartości stałe, a moduły i zasoby są zmiennymi.
Dodawanie stałych jest proste, wystarczy wpisać np. mass = 10 i program już wie że pojazd waży 10 ton.
W zmiennych już tak łatwo nie jest. Każda zmienna zawarta jest w klamrze :
{
zmienna
}
Klamry rozmiar liter i spacja przed oraz po znaku = są bardzo ważne, nieraz brak jednej klamry potrafi crashować grę !Poprzedza się ją komendą mówiącą czy jest to moduł czy zasób np.
MODULE
{
zmienna
}
Na przykład chcąc dodać do modelu sterowanie, dodajemy moduł który nazywa się ModuleCommand i robimy to tak :
MODULE
{
name - ModuleCommand
}
W tym momencie pojazdem można sterować. Ale można też wprowadzić warunki i parametry np.
MODULE
{
name = ModuleCommand
minimumCrew = 1
RESOURCE
{
name = ElectricCharge
rate = 1
}
}
W tym momencie sterować można jedynie gdy wewnątrz znajduje się minimum 1 kerbal, sterowanie pobiera 1 ładunek elektryczny na sekundę, a po wyczerpaniu baterii przestaje działać.
Przykład dla zasobu:
RESOURCE
{
name = LiquidFuel
amount = 100
maxAmount = 100
Teraz w części możemy zmieścić 100 jednostek paliwa, i na starcie bak jest pełny. Dalsza część powinna to nieco rozjaśnić
KONSTRUKCJA CFG
(dodając // na początku powodujemy że komputer ignoruje daną linijkę )
// --- general parameters ---
name = Mark1-2Pod
module = Part
author = C. Jenkins
name - nazwa
module - rodzaj pliku zwykle nie zmieniamy
author autor
// --- asset parameters ---
mesh = model.mu
scale = 1
rescaleFactor = 1
model.mu - siatka, czyli docelowo plik siatki modelu .mu
rescaleFactor = 1 - skala modelu, zmieniając zmieniamy faktyczny rozmiar elementu
scale = 1 - skala punktów mocowania, zmieniamy tylko po modyfikacji rescalefactor gdy punkty mocowania nie pokrywają się z modelem
// --- node definitions --- -
// definition format is Position X, Position Y, Position Z, Up X, Up Y, Up Z
node_stack_bottom = 0.0, -0.47924, 0.0, 0.0, 1.0, 0.0, 2
node_stack_top = 0.0, 1.19319, 0.0, 0.0, 1.0, 0.0, 1
Określa pozycję punktów mocowania
// --- editor parameters ---
TechRequired = specializedControl
entryCost = 7600
cost = 3800
category = Pods
subcategory = 0
title = Mk1-2 Command Pod
manufacturer = Kerlington Model Rockets and Paper Products Inc. - Producent
description = This modern cockpit is designed to be fully re-useable. Its spacious cabin can hold a maximum of 3 crew.
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,0,1,1,0
TechRequired - Kategoria na drzewku tech w karierze
entryCost - Koszt wybadania
cost - Koszt kupna, póki co jeszcze hajsu w grze nie ma
category - Kategoria w hangarze
subcategory - Póki co wpisujemy 0, brak funkcji
title - tytuł w grze
manufacturer - Producent
description - Opis
// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,0,1,1,0
Zasady mocowania, W górnej linijce wypisane są typy a w dolnej 1-tak 0-nie
-Stack -czy pozwalamy elementowi być umocowanym na innych w "stosie"
-Allow Stack - czy pozwalay innym elementom być mocowanym na naszym modelu
-srfAttach - czy element może być mocowany na powierzchni innego
-AllowsrfAttach - analogicznie do 2
-AllowCollision - czy element może być zamocowany jeśli on lub inny element przecinają jakąś część
// --- standard part parameters ---
mass = 4
dragModelType = default
maximum_drag = 0.20
minimum_drag = 0.15
angularDrag = 2
crashTolerance = 45
maxTemp = 3400
Mass - Masa
dragModelType - Model symulacji oporu, zostawiamy
maximum_drag - maksymalny opór aerodynamiczny
minimum_drag - minimalny opór aerodynamiczny
angularDrag - opór kątowy ??
crashTolerance - wytrzymałość na uderzenie w m/s
maxTemp - maksymalna temperatura, po przekroczeniu wybucha
vesselType = Ship
vesselType - typ statku, z grubsza określa ikonkę w mapie orbity
// --- internal setup ---
CrewCapacity = 3
CrewCapacity = 3 - ilość załogi, niezależna od wnętrza, choć we wnętrzu będzie ich jedynie tyle ile określił squad, dodatkowych można wyciągnąć przez kliknięcie na właz
{
name = PodCockpit
}
name - tu nazwa pliku wnętrza
MODULE
name = ModuleCommand
minimumCrew = 1
MODULE - moduł, określa można powiedzieć nową zmienną (funkcję\zadanie)
name - nazwa modułu, określa jaki moduł ma być aktywowany, tu ModuleCommand czyli moduł umożliwiający sterowanie.
minimumCrew - minimalna ilość kerbali do działania modułu, działa tylko z ModuleCommand
RESOURCE
{
name = ElectricCharge
amount = 150
maxAmount = 150
}
RESOURCE - określa zasób, jedna zakładka na jeden zasób
name = ElectricCharge -typ zasobu
amount = 150 - ilość początkowa na starcie misji
maxAmount = 150 - ilość maksymalna
MODULE
{
name = ModuleSAS
}
name - dodaje funkcję SAS
MODULE
{
name = ModuleReactionWheel
PitchTorque = 15
YawTorque = 15
RollTorque = 15
RESOURCE
{
name = ElectricCharge
rate = 1.2
}
name = ModuleReactionWheel - dodaje nawigację żyroskopową czyli ten system który obraca statki kosztem prądu
PitchTorque = 15 - moment obrotowy steru wysokości
YawTorque = 15 - steru kierunku
RollTorque = 15 - i obrotu
name = ElectricCharge - zasób potrzebny do pracy
rate = 1.2 - ilość pobierana na 1s
name = ModuleScienceExperiment
experimentID = crewReport
experimentActionName = Crew Report
resetActionName = Discard Crew Report
reviewActionName = Review Report
useStaging = False
useActionGroups = True
hideUIwhenUnavailable = True
rerunnable = True
xmitDataScalar = 1.0
name = ModuleScienceExperiment -moduł eksperymentu
experimentID = crewReport - typ raport załogi
experimentActionName = Crew Report - akcja wyświetlana
resetActionName = Discard Crew Report - akcja resetująca (wyrzucenie raportu
reviewActionName = Review Report - akcja przeglądu ( przegląd raportu)
useStaging = False - używanie stopniowania (spacja) chyba chodzi o to że nic nie robi po wciśnięciu spacji
useActionGroups = True - grupy akcji czyli np. raport załogi
rerunnable = True - można użyć wielokrotnie
xmitDataScalar = 1.0 - bodaj mnożnik science
name = ModuleScienceContainer
reviewActionName = Review Stored Data
storeActionName = Store Experiments
evaOnlyStorage = True
storageRange = 2.0
ModuleScienceContainer - moduł wprowadzający można powiedzieć zbiornik science, określa ile eksperymentów można przechowywać
reviewActionName - nazwa akcji odczytania eksp.
storeActionName - nazwa akcji zapisania eksp.
evaOnlyStorage - przechowywanie tylko przez kerbali EVA
storageRange = 2.0 - ilość
RESOURCE
{
name = MonoPropellant
amount = 30
maxAmount = 30
}
name = MonoPropellant - nazwa zasobu tu, monopropelant
amount - ilość na starcie
maxAmount - ilość maksymalna
Tworząc wpis zaczynamy dużymi MODULE dla czynności lub RESOURCE dla zasobu. Pamiętamy też o znakach { }. Plik należy zakończyć znakiem } przylegającym do lewej krawędzi.
Dobra mam nadzieję że już w miarę coś rozumiecie, teraz pasowało by coś zmienić. Na ten przykład dodam do poda ogniwo paliwowe. W założeniu po kliknięciu na moduł ma być dostępna opcja aktywacji, a ogniwo pobierając paliwo będzie robić prąd. Gotowy wpis wygląda tak :
MODULE
{
name = ModuleGenerator
activateGUIName = Activate Fuel Cell
shutdownGUIName = Shutdown Fuel Cell
isAlwaysActive = false
Efficency = 95
requiresAllinputs = true
INPUT_RESOURCE
{
name = Oxidizer
rate = 0.2
}
INPUT_RESOURCE
{
name = Fuel
rate = 0.1
}
OUTPUT_RESOURCE
{
name = ElectricCharge
rate = 0.2
}
Słowem wyjaśnienia :
name = ModuleGenerator - nazwa modułu zawartego w grze, tu generator
isAlwaysActive = false - jest zawsze aktywny = fałsz
requiresAllinputs = true - wymaga wszystkich zasobów wejściowych = tak
resourceThreshold = 0.05 - limit produkowanego zasobu na sekundę
activateGUIName = Activate Fuel Cell - ikona aktywacyjna i jej treść
shutdownGUIName = Shutdown Fuel Cell - ikona dezaktywacyjna
efficiency = 95 - wydajność
INPUT_RESOURCE - zasób wejściowy
{
name = Oxidizer - utleniacz
rate = 1 - ilość 1
}
{
name = LiquidFuel - wacha
rate = 1 - ilość 1
{
OUTPUT_RESOURCE - zasób wyjściowy
{
name = ElectricCharge - prąd
rate = 5 - ilość 5
}
Podsumowując zużywając 1 paliwa i 1 utleniacza otrzymamy 4,75 prądu (efektywność 95%).
Generator można też użyć do stałego dodawania lub odejmowania jakiegoś zasobu dla przykładu wyciąg z generatora RTG :
MODULE
{
name = ModuleGenerator
isAlwaysActive = true
OUTPUT_RESOURCE
{
name = ElectricCharge
rate = 0.75
}
}
Teraz pewnie większość zapyta a skąd ja mam wiedzieć jakie moduły są w grze i co wpisać. A no możecie poczekać do kolejnego posta bo mi już paluchy odpadają, albo tak jak ja, zacząć chodzić po plikach, czytać cfg i wiedząc co dany element robi w grze możemy kopiować różne moduły.
W następnym odcinku postaram się opisać poszczególne typy modułów, wprowadzić do gry nowy zasób w postaci tlenu i CO2, zrobić plik który zaaplikuje zasoby do kilkunastu plików od razu bez zbędnej zabawy, i postaram się stworzyć moduł symulacji oddychania kerbali
( czyt. zamiana O2 na CO2)
Proszę też o komentarze, mówcie co wam się podoba a co nie, i co chcielibyście w następnym poście
Dzięki za uwagę i pozdrawiam.