POLISHSEAMEN

Battlestation Midway - Misje - Lokalizacja jednostek na mapie taktycznej

PL_Andrev - 7 Październik 2009, 18:48
: Temat postu: Lokalizacja jednostek na mapie taktycznej
Lokalizacji jednostek dokonujemy w oparciu o pliki SCN niosące informacje dotyczące warunków wstępnych gry. Na dane dot. położenia jednostek składają się następujące parametry:
* położenie na mapie
* kierunek w jakim jednostka jest skierowana
* wysokość / głębokość

Zmian dokonywano w oparciu o plik
Cytat:
Universe / scenes / missions / challenge / cup_de_grace.scn
w katalogach:
0_cup_de_grace.mpak
1_cup_de_grace.mpak

a także:
Cytat:
Universe / scenes / missions / challenge / pc_cargo.scn
w katalogach:
0_mc_pc_cargo.mpak
1_mc_pc_cargo.mpak



Lokalizacja w osi X, Y

Mapa główna jest zorientowana wokół punktu E5, którego koordynaty wynoszą 0,0. Inne koordynaty można wyznaczyć stosując standardową oś współrzędnych X, Y. Podziałka na mapie w przybliżeniu odpowiada wielkości 2000 (w rzeczywistości jest trochę mniejsza), dlatego nie powinno się przekraczać wartości ±8000.

Lokalizację jednostki ustala się w miejscu (kolejno oś X, Y):
Cytat:
entity "I-25" (SubmarineGen) {
localframe 0.0262 0.0000 0.9997 0.0000 0.0000 1.0000 0.0000 0.0000 -0.9997 0.0000 -0.0262 0.0000 -6240.9536 -20.0000 3290.9153 1.0000 ;
template "Japan\SEA\Submarine TypeB" ;

properties (Common, Sub, Command) {
"Command" {
CommandTarget = R "" ;
}
Dive = E Depth : Periscope ;
FireStance = E FireStances : FreeFire ;
Party = E Party : Japanese ;
Race = E Races : Japan ;
RepairZoneArea = R "" ;
Type = E ShipClasses : TypeB ;
}


Przykład na zmianę lokalizacji jednostki gracza:



Wysokość / głębokość

Głębokość / wysokość ustala się w tym samym miejscu, jednak w zależności od typu jednostki rządzą się trochę innymi prawami:

Samoloty:
Wartość wysokości musi być wartością dodatnią - jest ona wyrażona w metrach. Co ciekawe, na wysokościomierzu samolotu jest ona podawana już w stopach.
W przypadku samolotu należy pamiętać o nadaniu prędkości początkowej "velocity":
Cytat:
entity "Ki-43 Oscar" (PlaneSquadronGen) {
localframe -0.4868 -0.4226 -0.7645 0.0000 -0.2270 0.9063 -0.3565 0.0000 0.8435 0.0000 -0.5372 0.0000 2396.0103 500.0000 7493.0698 1.0000 ;
template "Japan\AIR\Ki-43 Oscar" ;

properties (Common, GameUnit, PlaneSquadronWNavpoint, Command) {
"Command" {
CommandTarget = R "" ;
}
Crew = E CrewXPLevels : Veteran ;
HomeBase = R "" ;
Party = E Party : Japanese ;
Race = E Races : Japan ;
Type = E PlaneClasses : Oscar ;
Velocity = F 400.0000 ;
WingCount = E PlaneWingCount :" 5" ;
}
}


Okręty i statki:
Standardowo wartością głębokości wynosi zero, jednak czasami spotyka się wartości ujemne lecz z reguły nie przekraczają one wartości -0.2
W jednej z misji znalazłem, że wszystkie japońskie CV miały zanurzenie -0.0328

Okręty podwodne:
Dla okrętów podwodnych można przyjmować wartości 0 (powierzchnia) lub -20 (peryskop). W przypadku głębokości peryskopowej MUSI zostać dodany parametr "Dive". W przeciwnym przypadku okręt rozpocznie grę na zadanej głębokości, lecz automatycznie się wynurzy.
Niestety nie udało mi się zmusić suba do rozpoczęcia gry na głębokości "medium".
Cytat:
entity "I-25" (SubmarineGen) {
localframe 0.0262 0.0000 0.9997 0.0000 0.0000 1.0000 0.0000 0.0000 -0.9997 0.0000 -0.0262 0.0000 -6240.9536 -20.0000 3290.9153 1.0000 ;
template "Japan\SEA\Submarine TypeB" ;

properties (Common, Sub, Command) {
"Command" {
CommandTarget = R "" ;
}
Dive = E Depth : Periscope ;
FireStance = E FireStances : FreeFire ;
Party = E Party : Japanese ;
Race = E Races : Japan ;
RepairZoneArea = R "" ;
Type = E ShipClasses : TypeB ;
}
}




Orientacja w odniesieniu do stron świata

Orientacja jednostki (czyli w którą stronę ma być skierowana) jest bardzo zbliżona do systemu lokalizacji położenia na mapie. Ponownie występują dwie osie X i Y, a wartość poszczególnej osi (w zakresie -1:+1) decyduje o wychyleniu w daną stronę.

WAŻNE: wartości X i Y są wartościami połączonymi ze sobą, poprzez twierdzenie Pitagorasa:
X² + Y² = 1, dlatego aby jednostka była pod katem 45°, wartości X i Y muszą wynosić 0.7071
(dla nieobytych: X=SIN(α), Y=COS(α), no i należy pamiętać że np. w excelu należy zmienić stopnie na radiany [ αRAD = 2*PI()*α°/360 ])

Dodatkowo samolot w momencie "wejścia" do gry może przyjmować więcej zmiennych (może się wznosić, zakręcać itp), jednak opanowanie większej ilości parametrów jest już skomplikowane, niepotrzebne a już na pewno szkodliwe.
Dlatego też należy za każdym razem wprowadzać dodatkowy "przeciwkąt" utrzymujący jednostkę w pionie i poziomie. W przypadku przypisania innych wartości - samolot zacznie skręcać, a jednostki na- i podwodne mogą zawiesić grę.
Kąt właściwy czcionką pogrubioną, przeciwkąt zwykłą:
Cytat:
entity "I-25" (SubmarineGen) {
localframe 0.0262 0.0000 0.9997 0.0000 0.0000 1.0000 0.0000 0.0000 -0.9997 0.0000 -0.0262 0.0000 -6240.9536 -20.0000 3290.9153 1.0000 ;
template "Japan\SEA\Submarine TypeB" ;

properties (Common, Sub, Command) {
"Command" {
CommandTarget = R "" ;
}
Dive = E Depth : Periscope ;
FireStance = E FireStances : FreeFire ;
Party = E Party : Japanese ;
Race = E Races : Japan ;
RepairZoneArea = R "" ;
Type = E ShipClasses : TypeB ;
}
}


PL_U-96 - 7 Październik 2009, 21:14
:
I o to chodzilo!!! Dzieki temu juz mozemy tworzyc misje
PL_Andrev - 7 Październik 2009, 22:41
:
Tak?
Ktoś próbował z sukcesem?
PL_U-96 - 7 Październik 2009, 22:58
:
Po tym jak doszedles jakie parametry sa odpowiedzialne za umieszczenie jednostek na mapie mozna tworzyc misje
PL_Andrev - 8 Październik 2009, 09:43
:
PL_U-96 napisał/a:
Po tym jak doszedles jakie parametry sa odpowiedzialne za umieszczenie jednostek na mapie mozna tworzyc misje


Z tego co zdołałem się zorientować, chwilowo najbezpieczniej będzie:
1) edytować istniejące misje,
2) usuwać jednostki niepotrzebne
3) zmieniać położenienie jednostek istniejących
4) podmieniać nowe jednostki na bazie już istniejących, wbudowanych w misje (czyli np. z jednego suba zrobić trzy takie same)

Proponuję PL-U_96, abyś to TY:
1) wybrał mapę / misję
2) określił co i gdzie ma być
3) określił kto ma mieć jakie jednostki (4 vs. 4)

Chwilowo mam czas więc mógłbym np. jutro do południa zaimplementować zmiany w mapie.
Jak wrócisz z pracy to szybki test i wieczorkiem możemy zagrać już w większej grupie.

Co do dodawania nowych jednostek na mapę, chwilowo jestem "ostrożnie sceptyczny".
Chciałbym dokonać wprzód kilka teścików.
PL_U-96 - 8 Październik 2009, 23:21
:
W sobote rano dam ci takie INFO bo jestem strasznie zarobiony w pracy
PL_Andrev - 10 Październik 2009, 18:42
:
PL_U-96 napisał/a:
W sobote rano dam ci takie INFO bo jestem strasznie zarobiony w pracy


To czekam...