• Modowanie modów czyli o tunningu gry słów kilka 5 2
Aktualna ocena:  

Autor Wątek: Modowanie modów czyli o tunningu gry słów kilka  (Przeczytany 5403 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Pią, 03 Sty 2014, 21:00:41

Offline angorek

  • Sierżant
  • ****
  • Wiadomości: 520
  • Reputacja: 35
    • Zobacz profil
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 :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
{
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.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
MODULE
{
zmienna
}
Na przykład chcąc dodać do modelu sterowanie, dodajemy moduł który nazywa się ModuleCommand i robimy to tak :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
MODULE
{
name - ModuleCommand
}
W tym momencie pojazdem można sterować. Ale można też wprowadzić warunki i parametry np.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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:
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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ę )


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- general parameters ---
name = Mark1-2Pod 
module = Part
author = C. Jenkins

name  - nazwa
module - rodzaj pliku zwykle nie zmieniamy
author  autor


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- 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

Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- 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

Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- 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ęść


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- 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


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
vesselType = Ship

vesselType - typ statku, z grubsza określa ikonkę w mapie orbity

Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- 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


 
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
{
name = PodCockpit
}

name -  tu nazwa pliku wnętrza



   
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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




   
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
MODULE
{
name = ModuleSAS
}
name - dodaje funkcję SAS

Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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

   
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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




Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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ść


Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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 :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ

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 :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
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  8) ( 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  8)

Dzięki za uwagę i pozdrawiam.
« Ostatnia zmiana: Nie, 05 Sty 2014, 11:58:02 wysłana przez angorek »
Pozdrawiam Daniel
rakiety.org.pl In thrust we trust !

Pią, 03 Sty 2014, 21:39:01
Odpowiedź #1

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
Szybko napisałeś ten poradnik  ;D Jak dla mnie wporządku, ładnie opisany plik konfiguracyjny. Tak sobie myśle - czy taka modyfikacja moda nie jest jakoś niezgodna z licencją czy coś? Wkońcu edytujemy cudzą pracę.

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #1 dnia: Pią, 03 Sty 2014, 21:39:01 »

Pią, 03 Sty 2014, 21:55:40
Odpowiedź #2

Offline angorek

  • Sierżant
  • ****
  • Wiadomości: 520
  • Reputacja: 35
    • Zobacz profil
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
Szybko napisałeś ten poradnik  ;D Jak dla mnie wporządku, ładnie opisany plik konfiguracyjny. Tak sobie myśle - czy taka modyfikacja moda nie jest jakoś niezgodna z licencją czy coś? Wkońcu edytujemy cudzą pracę.
Dzięki ;) Raczej nie ma problemu, niezgodne z licencją byłaby dekompilacja plików modeli lub zmiany w silniku. Ogółem w plikach cfg po całej grze są porozrzucane informacje od squad, co to jest, jak to działa itp. Na przykład otwierając plik cfg choćby mk1 poda na wstępie jest notka od twórców, że plik może być wykorzystywany jako wzór do tworzenia modów i po krótce jest wyjaśnione że np. każde słowo ma swój odpowiednik we wbudowanym module, czyli jak wpiszemy mass, to program odczytuje z jakiejś tam swojej bazy że to ma być masa i wie co ma z tym zrobić, a jak wpiszemy wyraz który nie ma tam odpowiednika zostanie zignorowany.
Pozdrawiam Daniel
rakiety.org.pl In thrust we trust !

Pią, 03 Sty 2014, 23:25:48
Odpowiedź #3

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
W przypadku orginalnych plików Squad to jeszcze, ale jak w przypadku niezależnych od Squad modów? W sumie to na własny użytek chyba można zmodyfikować, przecież mody nie są płatne.

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #3 dnia: Pią, 03 Sty 2014, 23:25:48 »

Pią, 03 Sty 2014, 23:30:55
Odpowiedź #4

Offline Drangir

  • Major
  • *
  • Wiadomości: 1 631
  • Reputacja: 92
  • Smok rakietowy
    • Zobacz profil
    • DeviantArt
@up
Można zmieniać mody do woli, ale jeśli chcesz opublikować coś takiego, musisz bardzo wyraźnie oznaczyć kto jest autorem.
Cytat: Steven Universe
- Wasze obliczenia były niepoprawne.
- Nie mogły być niepoprawne, skoro żadnych nie robiliśmy.

Sob, 04 Sty 2014, 14:45:05
Odpowiedź #5

Offline Kadaf

  • Kapitan
  • ***
  • Wiadomości: 1 340
  • Reputacja: 145
    • Zobacz profil
Otóż to, możecie sobie dowolnie przerabiać KSP i ściągnięte mody do póki nie będzie tego publikować jako swoje dzieło, bądź nie daj Boże, próbować na tym zarabiać.

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #5 dnia: Sob, 04 Sty 2014, 14:45:05 »

Sob, 04 Sty 2014, 15:44:36
Odpowiedź #6

Offline DragonsNightmare

  • Sierżant
  • ****
  • Wiadomości: 505
  • Reputacja: 8
    • Zobacz profil
Tak też myślałem, dzięki za rozwianie wątpliwości. Poradnik dobry, czekam na drugą część.

Sob, 04 Sty 2014, 21:55:23
Odpowiedź #7

Offline angorek

  • Sierżant
  • ****
  • Wiadomości: 520
  • Reputacja: 35
    • Zobacz profil
CZĘŚĆ DRUGA
Teraz przerabiam mod Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ  ;) Miałem w planach zrobienie moda który doda do gry jedzenie, wodę, tlen i dwutlenek węgla, ale niestety po jakiś 5 godzinach prób doszedłem do wniosku że bez zrobienia wtyczki w języku C nie da się tego zrobić, tzn da się ale jest dużo roboty dla każdego modułu i nie wygląda to ładnie.

Dobra zaczynamy, jak już mówiłem chcemy wprowadzić 4 zasoby. Każdy z tego zasobu ma być konsumowany lub wytwarzany przez kerbala, więc jego ilość zależy od ilości zielonych na pokładzie. Wspomniany mod posiada wtyczkę Plugin która to umożliwia. Plugin jest napisany w języku C++ i zapisany w formacie .DLL, a że dla mnie to czarna magia to sobie go pożyczę  8) Mod sam w sobie mi się nie podoba, dodaje tylko tlen i CO2 a to za mało. Po wypakowaniu moda znajdziemy w środku plik ModuleManager.dll który jest bardzo przydatną rzeczą ale omówię go później. Wchodzimy dalej i znajdujemy 4 foldery oraz wspomniany plugin. Parts możemy zostawić jeśli ktoś chce (przerobione niebieskie zbiorniki rcs, mi lagują strasznie), usuwamy wszystko poza folderem plugins.
Wchodzimy do folderu Squad -> Resources, i otwieramy cfg Resources Generic w środku, i dodajemy od siebie 5 zasobów :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
RESOURCE_DEFINITION
{
  name = Oxygen
  density = 0.0004
  flowMode = ALL_VESSEL
  transfer = PUMP
}
RESOURCE_DEFINITION
{
  name = CarbonDioxide
  density = 0.0004
  flowMode = ALL_VESSEL
  transfer = PUMP
}
RESOURCE_DEFINITION
{
  name = Water
  density = 0.004
  flowMode = ALL_VESSEL
  transfer = PUMP
}
RESOURCE_DEFINITION
{
  name = Food
  density = 0.004
  flowMode = ALL_VESSEL
  transfer = PUMP
}RESOURCE_DEFINITION
{
  name = CO2 Filter
  density = 0
  flowMode = ALL_VESSEL
  transfer = PUMP
}
RESOURCE_DEFINITION - Definicja zasobu
name - nazwa
density = 0.004 - gęstość, wpływa na masę, jednostki nie znam, paliwo ma 0.005, musimy ustawiać na oko  ;)
flowMode - typ przepływu
ALL_VESSEL - przepływ po całym statku np. monopropelant lub STACK_PRIORITY_SEARCH DO pierwszeństwo do najbliższego elementu "w stosie"
transfer - transfer, PUMP dla pompy NO jeśli transfer wyłączamy.

Ok, tak więc zasoby dodane teraz trzeba je wprowadzić do gry. ( CO2 filter wyjaśnię później )
W modzie idziemy do Plugins -> Plugin Data -> Ion cross crew support.cfg. Plugin wprowadza do gry nowy moduł IonCrewSupport i tu są jego dane.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
ION_SUPPORT_KERBAL_RESOURCE
{
name = Oxygen
GUIName = 02
ratePerKerbal = 0.000277778

boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE - nazwa podmodułu
name - nazwa zasobu
GUIName - nazwa zasobu na pasku stanu w grze
ratePerKerbal - ilość zmiany na 1 kerbala na sekundę, wartość dodatnia odejmuje zasób, wartość ujemna dodaje zasób.
         
boolCauseDeath - powoduje zgon przy wyczerpaniu/napełnieniu
killRollInterval - czas po jakim następuje zgon po wyczerpaniu się zasobu
killChance - mnożnik dla systemu, zostawiamy

Kopiując kod z góry i podmieniając wartości wprowadzamy do obiegu nowy zasób. Przyjmujemy że kerbal pobiera/wydala na dobę :
Tlen - 1L
Woda - 2L
Jedzenie - 3.5Kg
Dwutlenek węgla - 1.5 L
Godzina ma 3600s, doba ma 24 godziny, 3600x24=86400 tak więc :
O2 - 1L - 0.00001157
Water - 2L - 0.00002314
Food - 3.5 - 0.00003877
CO2 - 1,5L - 0.00001736
Wpisujemy wartości : (tu akurat inne ;) by obliczyć zużycie rate x 3600 i mamy zużycie na 1 godiznę )
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
ION_SUPPORT_KERBAL_RESOURCE
{
name = Oxygen
GUIName = 02
ratePerKerbal = 0.000277778

boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}

ION_SUPPORT_KERBAL_RESOURCE
{
name = CarbonDioxide
GUIName = CO2
ratePerKerbal = -0.000277778

boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}


ION_SUPPORT_KERBAL_RESOURCE
{
name = Food
GUIName = Food
ratePerKerbal = 0.00015

boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}
ION_SUPPORT_KERBAL_RESOURCE
{
name = Water
GUIName = Water
ratePerKerbal = 0.0001

boolCauseDeath = True
killRollInterval = 3600
killChance = 0.1
}

}
Na dole jest moduł poboru prądu przez statek i CO2 scrubber należy je usunąć.

Dobra mamy wartości, ale nie mamy zasobów w statku, i tu przychodzi z pomocą ModuleManager.dll.
W folderze gamedata tworzymy nowy plik tekstowy. Zaczynamy go od :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
@PART[nazwa pliku]Taka komenda podczas startu gry doda do danego modelu to co wpiszemy poniżej ale zmiana ta nie będzie zapisana w oryginalnym pliku, tak więc jeśli coś spapramy to usuwamy ten plik i wszystko gra a pliki są nienaruszone. Tak więc zacznijmy od Mk1-2Pod. Wpisujemy jego nazwę ZAWARTĄ W CFG czyli Mark1-2Pod a nie nazwę folderu mk1-2Pod. Następnie dodajemy znaczek { i pod nim wprowadzamy wartości pamiętając by zakończyć }.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
@PART[Mark1-2Pod]
{
MODULE
{
name = IonModuleCrewSupport
}
To wprowadza do gry moduł symulacji zasobów.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
@PART[Mark1-2Pod]
{
MODULE
{
name = IonModuleCrewSupport
}
RESOURCE
{
name = Oxygen
amount = 300
maxAmount = 300
}
RESOURCE
{
name = CarbonDioxide
amount = 0
maxAmount = 18
}
RESOURCE
{
name = Food
amount = 40
maxAmount = 40
}
RESOURCE
{
name = Water
amount = 26
maxAmount = 26
}
}
I już z wprowadzonymi "zbiornikami" Taki plik gwarantuje że model będzie miał to co chcemy a pliki gry pozostaną bezpieczne.
Wcześniej dodałem zasób CO2 Filter i teraz mam zamiar go wykorzystać. Zrobię włączany filtr który pobiera CO2 i prąd, a wyrzuca tlen, jednak jak każdy filtr się zużywa i stąd ten zasób. Generator wygląda tak :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
MODULE
{
name = ModuleGenerator
activateGUIName = Activate CO2 Filter
shutdownGUIName = Shutdown CO2 Filter
isAlwaysActive = false
Efficency = 95
requiresAllinputs = true
INPUT_RESOURCE
{
name = CarbonDioxide
rate = 0.2
}
INPUT_RESOURCE
{
name = CO2 Filter
rate = 0.01
}
INPUT_RESOURCE
{
name = ElectricCharge
rate = 0.4
}

OUTPUT_RESOURCE
{
name = Oxygen
rate = 0.07
}
}
Ten moduł tłumaczyłem w 1 poście, wrzucamy 0,4 prądu, 0.1 CO2 i 0.01 Filtra (co ma symulować jego zużycie) i dostajemy 0.07 tlenu  ;) Po wszystkim zmieniamy rozszerzenie z txt na cfg, nazwa nie ma znaczenia. W późniejszym czasie postaram się również dodać zanieczyszczenia w postaci śmieci, zanieczyszczonej wody i jej filtra ale to dopiero za jakiś czas  8) Ilość zasobów i prędkość zużycia należy sobie ustawić samemu. Po kliknięciu prawym na pod wyskakuje okienko i mamy podane zużycie na sekundę, godzinę lub dzień, jeśli pisze np. Water Warning ! a wody mamy pełno to znaczy że wartość ubytku jest zbyt mała ale tego błędu nie mogę naprawić, mimo wsyzstko woda wciąż ubywa a w timewarp wszystko wraca do normy. ( wina DLL )
Teraz za symulujmy zużycie prądu przez pojazd (lampy, wentylatory itp. )
W utworzonym wcześniej cfg do managera dodajemy linijkę :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
@MODULE[ModuleCommand]Normalny wpis powoduje dodanie np. resources na spodzie pliku cfg poda, a wpisując tą linijkę "wcinamy " się w linijkę definiującą moduł sterujący który wygląda tak :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
....
{
name = ModuleCommand
minimumCrew=1
}
....
Teraz dopisujemy zużycie prądu :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
@MODULE[ModuleCommand]
{
RESOURCE
{
name = ElectricCharge
rate = 0.002
}
}
Gdybyśmy to robili w pliku poda wyglądało by to tak :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
...
{
name = ModuleCommand
minimumCrew= 1
         RESOURCE
{
name = ElectricCharge
rate = 0.002
}
}
...

Po zakończeniu modyfikacji czegokolwiek należy się upewnić że wszystko jest w należytym porządku, liczy się wielkość liter, sprawdzamy czy wszystkie { } są i są w odpowiednią stronę, oraz patrzymy czy gdzieś literki nie zgubiliśmy. Nieraz jedna literka decyduje czy gra w ogóle odpali czy nie ;)
Wprowadziłem też małą poprawkę w generatorze z 1 postu.
Sory za jakiekolwiek błędy, robiłem to przez 8 godzin, jutro jak już się porządnie wyśpię rzucę okiem czy aby na pewno wszystko gra ;) Na kolejny odcinek planuję dodać śmieci, oraz zbiorniki tlenu, wody, żywności i generatory dla stacji kosmicznych :)
Pozdrawiam
Pozdrawiam Daniel
rakiety.org.pl In thrust we trust !

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #7 dnia: Sob, 04 Sty 2014, 21:55:23 »

Sob, 04 Sty 2014, 22:21:46
Odpowiedź #8

Offline not7CD

  • Plutonowy
  • ***
  • Wiadomości: 296
  • Reputacja: 13
  • Nie mam pojęcia co robię.
    • Zobacz profil
    • not7CD.net
Co do pierwszej części, mam zastrzeżenia dot. opisu modułów. Spory chaos się wkradł. Proponuje lepiej opisać parametr MODULE.. Proponuje mocno zaznaczyć, że nazwa to określenie którego z modułów w grze będzie używać część. i dalsze zmienne są parametrami dla danego modułu. I tyle zastrzeżeń. Ogólnie bardzo dobrze napisany poradnik.
Przed użyciem zapoznaj się z treścią ulotki dołączonej do opakowania bądź skonsultuj się z lekarzem lub polonistą, gdyż każdy post niewłaściwie czytany zagraża Twojemu życiu lub zdrowiu.

Sob, 04 Sty 2014, 23:20:25
Odpowiedź #9

Offline angorek

  • Sierżant
  • ****
  • Wiadomości: 520
  • Reputacja: 35
    • Zobacz profil
Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
Co do pierwszej części, mam zastrzeżenia dot. opisu modułów. Spory chaos się wkradł. Proponuje lepiej opisać parametr MODULE.. Proponuje mocno zaznaczyć, że nazwa to określenie którego z modułów w grze będzie używać część. i dalsze zmienne są parametrami dla danego modułu. I tyle zastrzeżeń. Ogólnie bardzo dobrze napisany poradnik.
Dzięki :D Poprawiłem pierwszy post, mam nadzieję że jest już jaśniej  8)
Pozdrawiam Daniel
rakiety.org.pl In thrust we trust !

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #9 dnia: Sob, 04 Sty 2014, 23:20:25 »

Czw, 26 Cze 2014, 12:06:30
Odpowiedź #10

Offline angorek

  • Sierżant
  • ****
  • Wiadomości: 520
  • Reputacja: 35
    • Zobacz profil
Dobra za namową paru użytkowników wracam do pisania.
Porzucam póki co wszelkie wątki utrzymywania życia itp. a skupię się na najprostszych czynnościach np. zmianie ilości paliwa itp.
No to zaczynamy !
POŁOŻENIE CZĘŚCI
Wszystkie części oryginalne są w folderze KSP/GameData/Squad/Parts/
Po dotarciu do tej lokalizacji zobaczymy parę folderów :
Aero - cześć aerodynamiczne skrzydła itp.
Command - części dowodzenia, kapsuły, komputery, moduły asas..
Electrical - chyba nie muszę tłumaczyć
Engine - silniki
FuelTank - wszelkie zbiorniki
Science - moduły badawcze
Structural - belki, kratownice itp.
Wheel - koła
Utility - cała reszta, solary, rcs, anteny, doki, sensory itd..

Nazwa folderów nie zawsze mówi nam co jest w środku np. Fuel Tank 1-3, wtedy wchodzimy w folder, otwieramy plik cfg, i pod linijką title (gdzieś pośrodku) będzie nazwa modelu. Jeśli znajdziemy to czego szukaliśmy przystępujemy do edycji.

ZANIM ZACZNIESZ COŚ MODYFIKOWAĆ...
Sposoby modyfikacji są dwa, albo dodajemy do gry nowy element albo modyfikujemy istniejący. Teraz opiszę procedurę drugą, jeśli chcesz zmienić oryginalny zbiornik pomiń ten punkt.

A więc otwieramy plik CFG zaznaczamy wszystko i kopiujemy.
Następnie na samym dole pliku pod znakiem } robimy jedną linijkę przerwy i wpisujemy słowo PART. Pod nim wklejamy skopiowaną zawartość. Będzie to wyglądać mniej więcej tak :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
zawartość oryginalna...
}

PART
{
skopiowana zawartość oryginalna
}

Teraz będziemy operować na skopiowanym fragmencie. znajdujemy linijkę name, modyfikujemy ją dowolnie można dodać jakąś literkę czy cyferkę byle by w żadnym innym pliku nie było takiej samej.
Następnie modyfikujemy linijkę Title, jest to nazwa wyświetlana w hangarze, treść dowolna byle nam się nie myliło z oryginalnym  ;)
ZMIANA POJEMNOŚCI ZBIORNIKÓW

Znajdujemy na dole sekcję RESOURCE.
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
RESOURCE
{
 name = LiquidFuel
 amount = 360
 maxAmount = 360
}

RESOURCE
{
 name = Oxidizer
 amount = 440
 maxAmount = 440
}
W linijce name mamy nazwę czynnika przechowywanego. Pełną listę można znaleźć w ..Squad/Resources/Resources.cfg Zwracamy uwagę na wielkość liter !
Amount to liczba początkowa, ile danej substancji mamy w momencie startu. (wyjazdu z hangaru)
Max amount to po prostu pojemność. Można to dowolnie zmieniać, wielkość fizyczna zbiornika nie ma tu nic do rzeczy.
Aby dodać nowy czynnik/zasób kopiujemy :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
RESOURCE
{
 name =
 amount =
 maxAmount =
}
I po prostu uzupełniamy.
Można też dodawać swoje własne nowe paliwa czy inne czynniki, np. O2, CO2, MMH, UDMH, LOX, itp. zostało to opisane w poście wyżej apropo dodawania tlenu i dwutlenku węgla.
Po zakończonej edycji zapisujemy plik i odblokowujemy nowy zbiornik w R&D (chyba że gramy w sandboxie)
Ważne by zmodyfikować linijkę name !! Bez tego element będzie zablokowany !

MODYFIKACJA ROZMIARU
Otwieramy plik cfg interesującego nas obiektu i zmieniamy linijkę rescaleFactor.
Będzie ona na samym początku w asset parameters, jeśli jej nie ma tak jak w tym przypadku :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- asset parameters ---
mesh = model.mu
scale = 0.1
Dopisujemy po prostu tuż pod scale :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
// --- asset parameters ---
mesh = model.mu
scale = 0.1
rescaleFactor = 1
Wielkość rescale`a może być dowolna, ale w granicach rozsądku jeśli chcemy uniknąć krakenów.

MODYFIKACJA SILNIKÓW
Po otwarciu cfg silników widzimy dużo dziwnych cyferek ale wcale nie jest to trudne ;)

Interesuje nas moduł module engines :
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
{
name = ModuleEngines
thrustVectorTransformName = thrustTransform
exhaustDamage = True
ignitionThreshold = 0.1
minThrust = 0
maxThrust = 215
heatProduction = 400
fxOffset = 0, 0, 0.8
PROPELLANT
{
name = LiquidFuel
                ratio = 0.9
DrawGauge = True
}
PROPELLANT
{
name = Oxidizer
ratio = 1.1
}
atmosphereCurve
  {
    key = 0 370
  key = 1 320
  }
        name = ModuleEngines - nazwa modułu silnikowego
   thrustVectorTransformName = thrustTransform - coś od wektorowania ciągu, nie ruszam tego  8)
   exhaustDamage = True - zniszczenia powodowane gazami wylotowymi - tak
   ignitionThreshold = 0.1 - limit zapłonu, chodzi najprawdopodobniej o ilość prądu potrzebnego do zapłonu
   minThrust = 0 - minimalny ciąg
   maxThrust = 215 - maksymalny ciąg
   heatProduction = 400 - produkcja ciepła, jednostka nieznana
   fxOffset = 0, 0, 0.8 - odległość płomienia od środka silnika, nie ruszamy, ma to wpływ tylko na tekstury
   PROPELLANT - zasób czynnik paliwowy - propelant
      name = LiquidFuel - nazwa
                  ratio = 0.9 - stosunek
      DrawGauge = True - wskaźnik ilości na drzewku Stage po lewej
   

Sekcja AtmosphereCurve określa impuls, im większy tym silnik mniej pali przy tym samym ciągu. ( łopatologicznie )
Kod: Aby zobaczyć link - ZAREJESTRUJ SIĘ lub ZALOGUJ SIĘ
atmosphereCurve
  {
    key = 0 370 -
  key = 1 320
  }

Składa się z dwóch kodów. Każdy składa się z minimum 4 cyfr. Pierwsza cyfra zawsze jest jedynką lub zerem. Jedynka określa impuls na poziomie morza, a zero określa impuls w próżni. Kolejne 3 cyfry określają impuls, ale może być ich dowolna ilość, ale wtedy zabawa traci sens bo silniki będą spalać mikroskopijne ilości paliwa.
W uproszczeniu impuls ISP = ciąg/przepływ paliwa na sekundę.
ISP podajemy w sekundach, ciąg w kN a przepływ paliwa w tonach na sekundę.

Kolejnym parametrem który chcę omówić jest RATIO przy paliwie. Określa to stosunek materiałów pędnych czyli w tym przypadku na każde 0.9 paliwa ciekłego zejdzie 1.1 utleniacza.

Przy pędnikach RCS zmieniamy jedynie impuls i ciąg (thruster power )

No to na razie tyle. Nie wiem co będzie w następnym poście, piszcie propozycje i zobaczymy co da się zrobić  :D



Pozdrawiam Daniel
rakiety.org.pl In thrust we trust !

Czw, 26 Cze 2014, 12:25:39
Odpowiedź #11

Offline Drangir

  • Major
  • *
  • Wiadomości: 1 631
  • Reputacja: 92
  • Smok rakietowy
    • Zobacz profil
    • DeviantArt
Nieważne - post do likwidacji
« Ostatnia zmiana: Czw, 26 Cze 2014, 12:27:38 wysłana przez Drangir »
Cytat: Steven Universe
- Wasze obliczenia były niepoprawne.
- Nie mogły być niepoprawne, skoro żadnych nie robiliśmy.

Reklama

Odp: Modowanie modów czyli o tunningu gry słów kilka
« Odpowiedź #11 dnia: Czw, 26 Cze 2014, 12:25:39 »

 

Optymalizacja KSP - jak upchać tonę modów i zachować dużo FPS.

Zaczęty przez angorek

Odpowiedzi: 11
Wyświetleń: 5826
Ostatnia wiadomość Śro, 28 Gru 2016, 16:55:31
wysłana przez Mithrill
Dokowanie czyli nie bójmy się budować na orbicie.

Zaczęty przez Sobol

Odpowiedzi: 6
Wyświetleń: 6551
Ostatnia wiadomość Nie, 28 Lut 2016, 20:00:20
wysłana przez Drangir
[Linux] Jak kerbalić pod pingwinkiem, czyli linuksowa grupa wsparcia.

Zaczęty przez Hipekhop

Odpowiedzi: 24
Wyświetleń: 8665
Ostatnia wiadomość Śro, 30 Gru 2015, 15:20:49
wysłana przez Rosomak
Kerbal Rocket Science - Co, gdzie jak i kiedy czyli poradnik dobrego naukowca

Zaczęty przez DawsterTM

Odpowiedzi: 2
Wyświetleń: 12713
Ostatnia wiadomość Wto, 21 Sty 2014, 19:39:33
wysłana przez TheReclif