Professional Documents
Culture Documents
Podstawy:
1.Wstępniak ............................................................................................................. 6
●Klawiszologia
3.Tworzenie podstawowej mapy ............................................................................................. 10
●Zwykła mapa
●Skybox
●Tworzenie budynku
4.Tworzenie terenu .............................................................................................. 26
●Podstawowy teren
●Modelowanie terenu
●Terrain Decora!on Layer
●Tworzenie wody
●Tworzenie lawy
●Dodawanie ludzi
●Dodawanie broni
●Dodawanie PowerUp’ów
●Dodawanie StaticMesh’ów
●Dodawanie oświetlenia
●Dodawanie dźwięku
●ScriptedTrigger
9.Efekty ....................................................................................................................................................... 78
●Emitery
●Wybuchające obiekty
●Projektory
Dodatki:
18.Mover’y ............................................................................................................................................. 156
●Distance Fog
●An!portals
●Kolizje
●Zoneportals
21.Static Mesh’e ................................................................................................................................. 174
●Dopasowanie tekstury
23.Import i Export mesh’ów ....................................................................................................... 182
Info:
24.Info ........................................................................................................................................................ 187
●Kontakt
25.Źródła .................................................................................................................................................. 188
forum.postalsite.info/profiles/2532.htm
Strona: 6
2.Podstawy poruszania się w PostED:
Na początek wyjaśnienia:
PPM – Prawy Przycisk Myszy
●Rozglądanie się:
Przytrzymaj PPM i poruszaj myszką w dowolnym kierunku.
●Przemieszczanie obiektów:
Zaznacz obiekt i przytrzymując Lewy Shift/Lewy Ctrl i LPM/PPM przesuwaj go.
●Grupowe zaznaczanie:
Przytrzymując Ctrl zaznaczaj obiekty klikając na nie LPM.
Strona: 7
●Okna:
W PostED mamy 4 podstawowe okna, kilka widoków, oraz dodatkowo
Strona: 8
●Obracanie przedmiotów:
Na obracanie obiektów w PostEDzie, są dwa sposoby.
#1
Za pomocą narzędzia Actor Rotate, który znajdziesz
na pasku, po lewej stronie edytora.
#2
Drugi sposób, to taki, że obracasz w różnych oknach/widokach.
●Skalowanie przedmiotów:
Inaczej – powiększanie/zmniejszanie.
albo w ‘’DrawScale”.
3.Tworzenie podstawowej mapy:
●Zwykła mapa:
Gdy masz uruchomionego PostED’a (a zakładam, że tak jest :p) poszukaj
Strona: 10
Brawo właśnie stworzyłeś podstawową mapę! ;)
Strona: 11
●SkyBox (Niebo):
Skybox musi powstać na osobnym planie.
Naciśnij więc PPM na Cube i wpisz tym razem większe proporcje,
np. Height(wysokość) na 6500, a szerokości na 8000.
Ważne, by Cube’y nie stykały się pod żadnym pozorem!
Strona: 12
●SkyBox (Chmury):
Strona: 13
●SkyBox (Widok ‘’horyzontu”):
Cóż, mamy Skybox’ a, ale co to?
Nasz krajobraz chmur jest kwadratowy… jednak mam na to radę.
Gdy mamy już ustawiony nasz SM na widoku TOP, pora ustawić go od boku.
Musimy go ustawić tak, by jego koniec (góra) idealnie stykał się z chmurami.
Najlepiej to zrobić na widoku FRONT, a będzie to wyglądać tak:
Strona: 15
Tym sposobem nasz StaticMesh jest widoczny, ma kolory i dzięki niemu
jest wrażenie horyzontu ale to jeszcze nie koniec pracy. ;)
Brightness – 27
Hue – 51
Saturation – 102.
Strona: 16
●SkyBox (‘’SkyZone Info”):
Przed nami (prawie) najważniejsza rzecz w Skybox’ ie. SkyZone Info.
Pewnie zastanawiacie się, co to jest?
Jest to informacja (aktor) określająca Skybox.
Wyświetla to, co widzi się na każdej powierzchni z opcją Fake Backdrop.
Strona: 17
Gdy SkyZone Info jest już wstawione, możemy (musimy) je przesunąć na dół
(mniej więcej) naszego Mesh’a z widoku FRONT.
Gdy z widoku FRONT SkyZone Info jest ustawiony na dole, a z widoku TOP
Strona: 18
●Tworzenie budynku:
Strona: 19
Następnie umieść owy sześcian w środku pierwszego,
i kliknij na Intersect, po czym na Subtract.
Kwadrat powinien być teraz oteksturowany w środku.
Oczywiście możesz teraz zmienić teksturę w wenątrz.
●Drzwi:
Zrób Cube o przykładowych wymiarach lub większych:
Następnie umieść
umieś swojego ‘’czerwonego” Cube’a w wybranym miejscu,
by jego grubość była większa niż ta ściany.:
Strona: 20
Potem w zakładce StaticMesh w StaticMesh Browser otwórz
paczkę pod nazwą ‘’mex_props.usx” i wybierz drzwi
pod nazwą ‘’mex_burbs_door”, po czym zminimalizuj Browsera
(kilknij taką kreskę obok ‘’iksa” na górze po prawo w rogu ;) )
Strona: 21
i Display do powiększania lub zmniejszania drzwi.:
Strona: 22
●Okno:
Nadszedł czas na zrobienie okna, więc zaczynajmy! ;)
Strona: 24
Wejdź teraz w StaticMesh Browser i otwórz paczkę
pod nazwą ‘’STV_Suburbs.usx” i w ‘’Windose” wybierz jakieś okno.
Wejdź teraz w opcje orzełka (PPM Window Properties)
i w zakładce Display zmień DrawType na DT_StaticMesh,
potem w StaticMesh kliknij ‘’use” – wtedy ustalisz model okna...
Strona: 25
4.Tworzenie terenu:
●Podstawowy teren:
Na początek stwórz jakąś podstawową mapę o wymiarach 20tys.x20tys.
Strona: 26
a w zakładce ZoneLight zmień:
-AmbientBrightness na 55
-AmbientHue na 40
-AmbientSaturation na 100
(w zależności czy chcesz mieć dzień czy noc ustawiasz inne liczby)
Strona: 27
Następnie w Actor Classes rozwiń Actor Light i wybierz *SunLight:
Strona: 28
Teraz kliknij po prawej stronie edytora przycisk Terrain Editing .
Następnie po kliknięciu przycisku ‘’new…”,
po czym…
Strona: 30
Dodatkowo możesz ustawić suwaki i inne opcje w Terrain Editing
(promień wewnętrzny i zawnętrzny, siła, itp.):
Strona: 31
Na koniec, gdy już skończysz tworzyć teren na swojej mapce,
wybuduj ją przyciskiem Build All, następnie musisz zapisać
swoją paczkę terenu.
Uwaga!
Musisz tak zapisywać po każdym edytowaniu terenu(Vertex, painting, smooth, etc.)!
Dla początkujących zalecam dodawanie wszystkiego (tekstur, static mesh’ów itp.)
do paczki ‘’MyLevel”. Dzięki temu nie musimy się martwić o to czy zapisaliśmy paczkę,
bo pakunek ‘’MyLevel” zapisuje się samoistnie w naszej mapce (lecz dzięki temu
zwiększymy również ‘’wagę” mapy o dodane przez nas komponenty).
Strona: 32
●Terrain Decoration Layer:
Terrain Decoration Layer jest to warstwa terenu, na której możemy
‘’rysować” różnymi obiektami np. zrobić trawę czy postawić drzewa.
Strona: 33
Ustawiamy tam parę opcji.
Strona: 35
●Tworzenie wody:
Najprostszym a zarazem najszybszym sposobem,
by dodać wodę jest FluidSurfaceInfo.
Tak więc rozwijamy w Actor Classes:
Actor Info *FluidSurfaceInfo
Strona: 36
Wejdź w zakładkę ‘’FluidSurfaceInfo”.
Strona: 37
●Tworzenie lawy:
Lawę tworzymy trochę inaczej niż wodę.
Gdy już mamy nasze pole lawy, teraz trzeba dodać PhysicsVolume.
Kliknij Cube’a PPM’em i dopasuj wymiary do lawy. Dla Height wpisz np. 20
(w zależności jak wysoko chcesz ustawić lawę nad podłogą).
Strona: 38
Teraz zmień bPainCausing z False na True,
ustaw ilość obrażeń na sekundę – DamagePerSec,
oraz rodzaj obrażeń, np. na ‘’BurnedDamage”.
Strona: 39
●Dodatkowe efekty wody:
FluidSurfaceOscilator – jest to pewnego rodzaju ‘’ruszajka”. :p
Służy ona do poruszania wybranego miejsca w polu wody czy lawy.
Strona: 40
Teraz trzeba przypisać naszego(no dobra...Twojego :D) Fluid ‘a
do Oscilatora, by gra wiedziała, którym polem wody/lawy ma poruszyć
wybrany Oscilator(gdyż na twojej mapie może ich być nawet kilka).
Strona: 41
5.Dodawanie obiektów do mapy:
●Dodawanie ludzi:
Gdy na mapie z samym terenem i domkiem robi się nudno,
przydałoby się dodać jakiegoś wirtualnego ludzika. ;)
Ale...jak go zrobić?
Jest to bardzo proste, wystarczy wybrać go w ActorClasses Browser:
Strona: 42
●Ustawienia
Ustawienia bystanderów(ludzi):
Po postawieniu wybranego ludzika, możesz go dodatkowo ustawić.
Strona: 43
To teraz
eraz czas na poprzestawianie ludzika (prawie...) całkowicie... ;)
W jego opcjach wejdź w zakładkę ‘’PawnAttributes” i ustawiaj dowolnie. :)
Strona: 44
Armor -– Pancerz bystandera
bAdvancedFiring –- Dobry strzelec
bAngryWithHomeInvaders -– Postać ma bronić swojego domu/terytorium
określonego przez HomeNode
BaseEquipment –- Uzbrojenie postaci(o tym dalej...)
bBodyDisappears -– Czy ciało ma znikać
bCanTeleportWithPlayer –- Czy postać ma chodzić za graczem...
Beg -– Czy postać ma błagać o życie gdy ją bijemy
bFriendWithAuthority -– Pawn jest przyjazny dla policji i wojska
bGunCrazy -- Psychopata – postać zabije przeciwnika, bez względu na skutki
bIgnoresHearing –- Ignoruje krzyki i strzały – Stan obojętny
bIgnoresSenses –- Ignoruje widok broni i masakry
bInnocent -– Postać jest grzeczna i miła
bNoTriggerAttackPlayer -– Atakuje gracza po wejściu w triggera
bPersistent -– Postać szybko rezygnuje (np. z pościgu za graczem)
bPlayerIsEnemy –- Gracz jest wrogiem dla postaci
bPlayerIsFriend -– Gracz jest przyjacielem dla postaci
bReportDeath -– Czy ma reagować(np. powiadamiać policję) gdy zobaczy trupa
bRiotMode -– Powoduje zamieszki
bScaredOfPantsDown -– Krytykuje za rozpięty rozporek
bStartupRandomization -– Postać jest przygotowana po respawnie
bTeamLeader –- Szef gangu (po utworzeniu gangu - niżej...)
bUseForErrands -– Czy postać jest używana przy wykonywaniu misji
Cajones -- Odwaga (1.000000 - Rambo; 0.000001 – Tchórz)
Champ -- Napastliwość
Compassion –- Wrażliwość na widok przemocy
Confidence -- Ufność
Curiosity -- Ciekawość
Fitness –- Tężyzna fizyczna
FriendDamageThreshold -– “Przyjacielski ogień”
Gang –- Nazwa gangu, do której należy postać (jeśli taki gang zrobisz)
Glaucoma –- Widoczność (czy widzi daleko czy blisko)
Greed –- Łapczywość (np. na kasę)
HealthMax -– Życie postaci
MaxMoneyToStart –- Ilość pieniędzy
PainThreshold –- Granica obrażeń (działa z opcją Beg – gdy jest na True)
Patience -- Cierpliwość
UWAGA!
Liczba 1.000000 nie jest największą w kilku przypadkach!
Strona: 46
Rat –- Postać jest kapusiem
Reactivity -- 1.000000 –reaguje najmądrzej jak może; 000000.1 –głupieje
Rebel –- Poziom buntowniczości
SeeViewCone -– Spostrzegawczość, co się wokół niej dzieje
Stomach -– Jak bardzo chce jej się rzygać gdy widzi trupa
Takes<...> -- 0 –kuloodporność
kuloodporność; 1 –postać dostaje zwykłe obrażenia
Talkative -- 1.000000 –gaduła; 000000.1 –nie
nie lubi kontaktów z innymi
TalkBeforeFighting -–– Mówi coś przed walką np. ‘’-Rozwale
Rozwale waass!!!” :D
TalkWhileFighting -– Mówi coś podczas walki np. ‘’-O,
O, w dupe!” ;p
VoicePitch -– Ustawia wysokość
wysok głosu postaci
WarnPeople -– Ostrzega innych ludzi (np. przed niebezpieczeństwem)
WillDodge –- Umiejętność unikania strzałów
Uwaga!
Niektóre opisane opcje mogą być błędne.
Strona: 47
●Stawianie władz na mapie:
Jeśli chciałbyś postawić jakichś przedstawicieli władz (władz..?...haha xD)
np. policjanta, wojskowego czy SWAT ‘a znajdziesz ich w ACBrowser:
Strona: 48
●Dodawanie zwierząt:
Stawianie zwierząt na mapę nie różni się od stawiania bystanderów.
Wybierasz jakieś zwierzę z ActorClasses Browser’a, PPM i Add <..> Here.:
Actor Pawn FPSPawn AnimalPawn
Strona: 49
●Dodawanie broni:
Jak poprzednio, tak również teraz, rozwiązanie prowadzi do ActorClasses.
Tak więc, wybierz którąś broń z AC Browser’a:
Strona: 50
Możesz dodatkowo ustawić kilka opcji, po wejściu w Properties broni
w zakładce ‘’Pickup”.:
AmmoGiveCount -– Ilość amunicji
MPAmmoGiveCount -– Ilość amunicji w trybie multiplayer
RespawnTime –- Czas po jakim broń się odradza po zebraniu jej
Strona: 51
●Dodawanie Powerup’ów:
PowerUp’y to przedmioty takie jak FastFood, pizza, kotnik,
czy magazynki do broni.
Strona: 52
FastFood ‘y, Pizze, Pancerze itd. masz w:
Strona: 53
●Dodawanie Static Mesh’ów:
Static Mesh’e dzielą się na różne rodzaje. Zwykły StaticMesh to
nieruchomy obiekt. Inne to KActor i Mover’y (o czym potem).
Te drugie to ‘’Karma Actor” – o nich w następnym podrozdziale.
Uwaga!
Nie do wszystkich StaticMesh’ów da się dodać Karmę!
Żeby zmienić kolor ‘’żarówy” wejdź w jej opcje (PPM Light Properties),
i w zakładce ‘’LightColor” ustaw kolor światła.:
LightBrightness – Jasność
LightHue – Kolor
LightSaturation – Nasycenie
Strona: 56
●Efekty świetlne:
Przydatne one są gdy chcesz np. zrobić oświetlenie w dyskotece,
czy też syreny policyjne.
Strona: 57
●’’Poświata”:
Innym efektem jest taka jak by ‘’poświata”.
Jak chcesz wiedzieć dokładnie o co mi chodzi, zobacz obrazek: :p
Strona: 58
Następnie wejdź w opcje ‘’żarówki”, i w zakładce ‘’Display”,
kliknij ‘’Skins” i ‘’Add”, potem rozwiń ‘’[0]” i kliknij ‘’Use”.
Strona: 59
I to tyle. :)
Strona: 60
●Dodawanie dźwięku:
Na dodanie dźwięku jest kilka sposobów.
Ja tutaj pokażę tylko dwa.
1#
Pierwszym, najłatwiejszym i najszybszym sposobem jest SongThing.
By dodać dźwięk za jego pomocą, potrzebujesz muzykę w formacie ‘’.ogg”.
(Do konwertowania piosenki na format ‘’.ogg” polecam stronę zamzar.com)
Actor *SongThing
Strona: 61
Swoją piosenkę, już w formacie ‘’.ogg”, wklej do folderu ‘’Music”
tam gdzie masz zainstalowanego Postala 2, i w ‘’SongName”
wpisz nazwę swojej nutki razem z rozszerzeniem, np. ‘’NazwaPiosenki.ogg”
Strona: 62
#2
Kolejnym sposobem jest SoundThing.
Wybierz go z ActorClesses i postaw na mapę
(PPM ‘’Add SoundThing Here”).:
Actor *SoundThing
Strona: 63
6.Niewidzialna ściana:
BlockingVolume(niewidzialna ściana) może służyć do blokowania wybranych
obszarów mapy, dodawania kolizji do StaticMesh’ ów czy nawet
optymalizacji gry(o czym więcej w rozdziale o optymalizacji).
Strona: 64
●Kolizjowanie obiektów:
W Postalu 2, StaticMesh ‘e mają problem z wykrywaniem kolizji
z innymi obiektami. To nic, po to jest BlockingVolume... ;)
Strona: 65
Teraz wybuduj Cube ‘a na wielkość obiektu, i postaw w jego miesjcu.
Strona: 66
Strona: 67
7.Tworzenie własnych paczek:
Jak pewnie wiesz(lub nie :p), pierwszą własną paczkę
stworzyłeś podczas tworzeniu terenu.
Była to paczka tekstur z Twoim terenem,
bez której mapka, by nie działała. ;)
W tym rozdziale opiszę i pokażę jak zrobić prawdziwą
paczkę tekstur, oraz inne paczki.
●Paczka tekstur:
Na początek, wejdź w StaticMesh Browser i w zakładkę ‘’Textures”.
Przygotuj sobie jakąś teksturkę z końcówką ‘’.dds” lub ‘’.bmp”.
Strona: 68
●Paczka dźwięków:
Przejdź do zakładki ‘’Sounds”.
Strona: 69
Zaawansowany PostED:
8.Trigger’y:
Trigger ’y to swojego rodzaju wyzwalacze, które powodują jakąś akcję,
(np. wybuch auta, odtworzenie Cut-Scenki, ruch mover’a itd...).
●Zwykły trigger:
Działanie trigger’a pokażę na przykładzie wybuchającego radiowozu.
Strona: 71
Teraz, również z ActorClasses postaw radiowóz, znajdziesz go w:
Actor KActor CarExplodable CarPolice
Czyt. musisz wpisać w ‘’Events” Trigger’a, ‘’Tag” jakiejś akcji (np. auta).
I gotowe.
Teraz możesz włączyć grę, wejść w Trigger’a i podziwiać efekty. ;)
Strona: 72
●Ustawienia trigger’a:
Dodatkowo, po ustawieniu Trigger’a, możesz go lekko zmodyfikować.
Strona: 73
●ScriptedTrigger:
UWAGA!
Wpisując jakieś(jakiekolwiek) informacje, słowa, czy nawet nazwy własnych paczek,
nie używaj polskich znaków(tzw. ‘’z ogonkiem”) np. ‘’ą”, ‘’ę”, ‘’ż” itd.,
bo UnrealED ma to do siebie(choć nie tylko on), że może wywalać crash’e,
najprościej pisząc, może rozwalić naszą pracę, bo nie umie rozpoznać tych ‘’ogonków”.
Mogłem napisać to przy rozdziale o tworzeniu własnych paczek,
ale jakoś teraz mi się to przypomniało...
Strona: 74
Teraz w ActorClasses poszukaj ScriptedTrigger’a.:
Strona: 75
Potem w opcjach akcji, ustaw ‘’Where”
‘’ ” na ‘’EW_StartNextDay”,
‘’bWaitForTrigger” zostaw na True, a ‘’bOneTimeOnly”
przestaw na True - działa tylko raz.
Strona: 76
Na koniec wejdź jeszcze w zakładkę ‘’Events”,
‘’
w opcjach ScriptedTrigger’a, i w polu ‘’Tag” wpisz ‘’NextDay
NextDay”
(czy co tam wpisałeś w ‘’Events” w zwykłym Trigger’ze).
Strona: 77
9.Efekty:
●Emittery:
Emittery – to obiekty, które pokazują nam np. płomienie ognia,
kapiącą wodę z kranu czy krew tryskającą we wszystkie strony.
Actor *Emitter
Strona: 78
Dla przykładu stworzę ogień.
Otwórz Texture
xture Browser i wczytaj (File Open) paczkę
‘’nathans.utx” i z grupy ‘’Skins” wybierz jakąś teksturkę ognia
(cztery płomienie w jednym obrazku).
obrazku)
Teraz wejdź w ‘’Texture”
‘’ ” (w opcjach Sprite Emittera) i w ‘’Texture”
dodaj tą teksturę płomieni.
W ‘’TextureUSubdivisions”
ubdivisions” wpisz 1, a w ‘’TextureVSubdivisions” wpisz 4.
Wejdź w ‘’Size”,
”, w ‘’StartSizeRange”, i zmień ‘’Min” na 8 a ‘’Max” na 10,
tak jak na obrazku.:
Strona: 79
Następnie musimy zmienić zanikanie i cząsteczki.
By to zrobić wchodzimy do ‘’Velocity”.
Strona: 80
Właśnie stworzyliśmy mały płomyk :D
Jeśli chciałbyś się dowiedzieć więcej, o tym jak się robi Emittery,
zapraszam do działu ‘’Dodatki”.
Strona: 81
●Wybuchające obiekty:
Powinieneś już wiedzieć(o ile przeczytałeś rozdział o Trigger’ach...),
jak postawić na mapę wybuchający radiowóz.
Czasami to jednak nie wystarcza, gdy chcemy zrobić, by
zamiast tamtego auta wybuchło coś innego...np. .... telewizor?
Strona: 82
Na razie zmienimy wygląd obiektu przed wybuchem.
By to zrobić, wybierz ze StaticMesh Browser’a, jakiś obiekt.
Ja wybiorę miniwana, z paczki ‘’Timb_mesh.usx” z grupy ‘’cars”.
Strona: 83
Następnie wejdź w opcje naszego ‘’Malucha”, do zakładki ‘’Display”.
‘’
Tam kliknij ‘’Skins
Skins” i w [0] kliknij ‘’Use”,
potem kliknij ‘’StaticMesh
StaticMesh” i też kliknij ‘’Use”.
Teraz ustawimy wygląd po wybuchu.
Tym razem wybierz model i teksturę obiektu po wybuchu.:
Znowu wejdź w opcje, tym razem, do zakładki ‘’KActorExplodable”.
Tam kliknij ‘’BrokenStaticMesh”, i kliknij ‘’Use”,
i w ‘’DamageSkin” również kliknij ‘’Use”.
I gotowe. :)
Strona: 86
●Projektory:
Projektory – to takie cośki, które wyświetlają jakąś teksturę
na danej powierzchni.
Dla przykładu, cień pod tym drzewem jest stworzony za pomocą projektora. :)
Strona: 87
Ok. Gdy już wiesz co to są projektory, mogę przejść
do omawiania jak takie cudeńka zrobić. ;)
Actor *Projector
Strona: 88
Wejdź w opcje projektora (PPM
( Projector Properties),
Properties
i przejdź do zakładki ‘’Projector”.
‘’
To ‘’skonfigurowanie
skonfigurowanie” projektora, sprowadza się tylko do tej zakładki,
i tylko tu będziemy grzebać. :)
Pierw ‘’bLevelStatic
bLevelStatic” daj na True.
Uwaga!
Koniecznie ustaw powierzchnie zmieniając niepotrzebne na False, i zostaw tylko
te, na których chcesz wyświetlić, np. jak tylko na ścianie to daj na True tylko
‘’bProjectBSP”, gdyż czasami się zdarza, że gdy ustawi się na True więcej
powierzchni niż potrzeba, to zaczyna prześwitywać na inne powierzchnie za
z nim,
zmniejszając wydajność gry, a także wygląd. :)
Następnie wybierz teksturę z Texture Browser’a, i dodaj ją
w ‘’ProjTexture”” przyciskiem ‘’Use”.
Strona: 91
Teraz postaw ScriptedTrigger’a, nie daleko BOSS’a,
wejdź w jego opcje,
opcj i w zakładkę ‘’AIScript”.
Tam w polu ‘’Actions
Actions”, kliknij ‘’Add”,, i z rozwijanej listy wybierz
‘’ACTION_EnemyHealth” i zatwierdź potem przyciskiem ‘’New”.:
Strona: 92
Teraz wybierz jakąś teksturkę z Texture Browser’a –
będzie ona wyświetlała życie przeciwnika.
Może być na przykład taka.:
Następnie wejdź
ejdź w opcje ScriptedTrigger’a
(tego z akcją ‘’EnemyHealth”),i w zakładce ‘’Events”,
”, w polu ‘’Events”
wpisz to co wcześniej, czyli np. ‘’KoniecGry”.
11.Robienie Cut-Scenki
Scenki:
Cut-Scenka –- jest to przerywnik - filmowy, lub tworzony
tworzo na silniku gry.
Ja w tym podrozdziale pokażę jak zrobić taką Cut-Scenkę,
Cut
aktywowaną Trigger’em.
Strona: 96
Jeszcze w zakładce ‘’Time”
‘’ ustaw czas trwania akcji.
Uwaga!
Jeżeli na początku filmiku, kamera ‘’zakręca” w inną stronę
i dopiero po tym, przechodzi przez wyznaczone checkpoint’y,
to w pierwszej akcji ustaw czas na 0. Powinno pomóc. :)
Strona: 97
●’’Łagodny” ruch kamery:
Normalny ruch kamery jest taki trochę ‘’kwadratowy”. ;)
Po to jest właśnie opcja ‘’Bezier”, by go trochę ‘’zaokrąglić”. :p
Strona: 98
Tor ‘’lotu” dla kamery ustawiasz, naciskając na jedną z dwóch kulek,
i przesuwasz je używając Shift/Ctrl + PPM/LPM.
Strona: 99
●Kamera patrząca w punkt:
Jeśli chcesz, by Twoja Cut-Scenka wyglądała jak Cut-Scenka,
a nie jak jakiś ‘’pociąg”, musisz użyć LookTarget’ów. ;p
Są to punkty, w które ‘’patrzy” się kamera podczas akcji.
Strona: 100
Następnie zaznacz wcześniej postawiony LookTarget, i rozwiń
‘’Orientation” i dodaj go w polu ‘’LookAt” przyciskiem ‘’Use”.
Strona: 101
12.PathNode i HomeNode:
●PathNode:
PathNode’y – to takie punkty nawigacyjne, przez które przechodzi
NPC (Bystander) podczas podróży po metropolii.
Uwaga!
Odległość pomiędzy PathNode’ami (jabuszkami) nie może przekraczać 1200!
W przeciwnym wypadku może to powodować crashe gry.
Strona: 102
Tak mniej-więcej wyglądają połączenia między punktami nawigacyjnymi.: :)
Strona: 103
PathNode’a możesz postawić na mapę, na dwa sposoby.
Pierwszy to po prostu klikasz PPM i wybierasz ‘’Add Path Node Here”.
Po czym tak samo go stawiasz, tylko wybierasz ‘’Add Path Node Here”
tego bardziej na górze. ;)
Strona: 104
Gdy już poustawiasz PathNode’y w wybranych miejscach,
logiczne jest, by teraz je połączyć,
...bo skąd niby gra ma się domyślić, że to ‘’to” jabuszko
jest następne, a nie ‘’to”? ;)
●HomeNode:
HomeNode to punkt nawigacyjny, podobny do PathNode,
z tą różnicą, że wyznacza on ‘’miejsce patrolowe”,
którego nasz obiekt będzie pilnował.
Strona: 105
Teraz postaw na podwórku psa.
Strona: 106
13.Pomniejsze zagadnienia:
●Tworzenie sklepu:
Stworzenie punktu płatności –sklepu- wymaga kilka elementów,
przy czym jest to troszkę skomplikowane, szczególnie zrobienie kolejki
do stoiska, o którym powiem w następnym podrozdziale. :)
W jego Tagu (powinieneś już wiedzieć gdzie się to wpisuje ;) ) wpisz np. ‘’kupno”.
Strona: 107
Teraz postaw CashRegPoint’a – po stronie sprzedającego.
Strona: 108
Następnie postaw jakiegoś sprzedawcę, może to być MallWorker.
W jego Tagu wpisz np. ‘’SellFastFood”.
Strona: 110
Następnie klikasz PPM na Volume na prawym pasku narzędziowym,
i wybierasz ‘’LadderVolume”.:
Strona: 111
Oczywiście jeszcze musisz, przed punktem piątym (Build All),
obrócić AutoLadder to pozycji początkowej,
i dopiero potem przebudować mapę. ;)
Strona: 113
●Robienie bankomatu:
Na początek postaw w wybranym miejscu sam bankomat
z paczki ‘’Timb_Mesh.usx” z grupy ‘’fooo”.
Actor *Spawner
Strona: 114
Teraz wejdź w opcje Spawnera, i w zakładce ‘’Events” w ‘’Tag”
wpisz np. ‘’SpawnMoney”, a w zakładce ‘’Spawner”,
w ‘’SpawnClass” ustaw ‘’MoneyPickup”.
Strona: 116
●Tworzenie lustra:
Na początek wybuduj gdzieś brusha, o wybranej wielkości tak,
by nie dotykał ściany.
Strona: 117
Strona: 118
●Elementy tylko w wybrane dni:
Jeśli czytasz ten podrozdział, to zapewne chcesz się dowiedzieć jak
zrobić, by jakieś elementy świata PostED pojawiały się tylko
w określone dni. :)
przyporządkujesz ją do obiektu.:
Strona: 119
●DayBlocker:
DayBlocker – jego się stosuje głównie do budowania blokad dniowych
typu ‘’zamknięte do wtorku”. Po co to, gdy można zrobić to
normalnym przypisaniem do grupy z wybranym dniem?
Nie wiem. Z tym pytaniem kieruj się do twórców. :D
Choć wspominam o nim tak przy okazji, to warto go wtedy stosować.
Znajdziesz go w Actor Classes:
Strona: 120
14.Telepad’y:
Telepad’y to takie punkty, dzięki którym możemy się przenosić
między mapami. Po wejściu w telepad’a, przenosi nas on
na inną, ustaloną przez nas mapę, na której jest ‘’wyjściowy” telepad,
‘’podpięty” do tego pierwszego, i nawzajem.
[NazwaMapy]#[NazwaPad’a(Tag)]?peer
Strona: 121
Gdy zrobiłeś wszystko dobrze, telepad’y powinny już działać. :)
Strona: 122
Moddowanie:
Teraz zaczyna się prawdziwa zabawa w moddera! :)
Ten dział wymaga dobrego opanowania edytora UnrealED,
także jeśli nie opanowałeś wcześniejszych tematów,
jak najszybciej to zmień i wróć tu potem. :)
Strona: 125
A jak to wygląda w praktyce? przyjrzyjmy się bliżej czemuś
zemuś takiemu:
Uwaga!
Napisany skrypt zapisujemy pod taką samą nazwą jak nasza klasa,
dopisując
c rozszerzenie .uc (np. SuperSWAT.uc). W przeciwnym razie
wyskoczy błąd i nasz kodzik się nie skompiluje.
Strona: 126
Uwaga!
Nigdy nie próbuj rekompilować, dodawać, zmieniać zawartość podstawowych
plików gry, które zostały dołączone do którejkolwiek
którejkolwiek gry na silniku
Unreal Engine. Nie możesz dodawać tekstur, dźwięków, mesh’y,
mesh klas NICZEGO!
Dlaczego? Otóż przy każdej kompilacji generowana jest suma kontrolna, która
to jest sprawdzana przez serwery i w razie jakichkolwiek różnic klient zostaje
odłączony. Jest to mechanizm, który gwarantuje, że wszyscy grają w tę samą
grę, bez żadnych modyfikacji. Możesz modyfikować rdzeń tylko w przypadku,
gdy tworzysz mody TYLKO do trybu singleplayer.
●Komentarze:
W Unreal Script są dwa typy komentarzy,
komentarzy jedno
no i wielo linjkowe:
●Zmienne:
Jeśli nie wiesz co to są zmienne,, poczytaj kursy c++ lub javy.
Strona: 127
●Stałe:
Najprzydatniejszą stałą jest ‘const’.
(polecam pisać stałe dużymi literami, nie pisać polskich liter (z ogonkami
np. ą, ć, ń itp.), oraz nie używać w łączeniu słów
spacji (tylko np. takie podkreślenia jak wyżej)).
●Specjalne klasy:
Klasy specjalne tworzymy, dodając na końcu zadeklarowanej klasy
wybrany przez nas dodatkowy parametr dla niej.
Robimy to w następujący sposób.:
-- Rodzaje parametrów:
native – skrypt korzysta z c++ i szuka plików dll o nazwie danego package.
abstract – klasy z końcówką abstract nie można umieścić na mapie.
Działa tylko na deklarowaną klasę, nie na pochodne.
config (NazwaPliku) - klasa używa pliku konfiguracyjnego.
Placeable – klasę można postawić na mapie
(używa się w klasie dziedziczącej, po abstract).
●Operatory:
*Operatory logiczne
Są używane w instrukcjach warunkowych (if) lub do zaprzeczeń.
Strona: 128
*Operatory porównawcze
Używane w instrukcjach warunkowych. Jedynie takie same typy
zmiennych mogą być porównywane (int z int, string ze string, itp.)
*Operatory liczbowe
Mogą być używane tylko w stosunku do typów int, float i byte.
*Operatory wektorów
Operatory używane do zmiennych typu vector.
*Operatory rotatorów
Operatory używane do zmiennych typu rotator.
*Operatory tekstowe
Operatory używane do zmiennych typu string.
Instrukcja warunkowa:
●Instrukcja warunkowa
Służy do wykonywania różnych bloków kodu w zależności od wartości
podanego parametru. Instrukcja warunkowa ma postać:
lub:
●Instrukcja
Instrukcja wyboru (switch):
(switch)
Instrukcja warunkowa jest przydatna, niestety nieużyteczna w pewnych
wypadkach.
kach. Właśnie dlatego powstała instrukcja wyboru switch
sw o postaci:
Strona: 130
●Pętle:
Pętle służą do wykonywania wielokrotnie danej części kodu. Podczas ich
stosowania należy pamiętać, że w UnrealED, maksymalna liczba
powtórzeń to 100 000. Większa ilość spowoduje errory.
*pętla for
Pętla for ma postać:
*pętla while
Pętla while ma postać:
Strona: 131
16.Tworzenie własnej broni:
W tym rozdziale, pokażę Ci jak zrobić
własną klasę broni i jak ją zmodyfikować.
O co chodzi?
●Wypakowanie skryptów:
Wszystkie skrypty znajdują się w folderze System w folderze z grą,
spakowane w plikach ‘’.u”. Na początek musimy je wypakować.
Strona: 132
Następnie udaj się do głównego folderu z grą,
gdzie wypakowały się wszystkie skrypty.
Utwórz tam nowy folder dla swoich skryptów i nazwij go np. ‘’MyPistol”.
- PistolAmmoPickup.uc
- PistolAttachment.uc
- PistolBulletAmmoInv.uc
- PistolPickup.uc
- PistolWeapon.uc
Teraz wklejamy pliki do folderu /MyPistol/Classes/:
- PGAmmoPickup.uc
AmmoPickup.uc
- PGAttachment.uc
Attachment.uc
- PGAmmoInv.uc
AmmoInv.uc
- PGPickup.uc
Pickup.uc
- PGWeapon.uc
Weapon.uc
Strona: 134
Własne paczki do broni:
●Własne broni
Na początek tekstura. Aby móc ją przerobić,, musimy ją najpierw
wyeksportować.. W tym celu wracamy do
d PostED
i otwieramy Texture Browser. Wybieramy paczkę ‘’WeaponSkins
‘’WeaponSkins”
(lub jeśli nie ma – otwieramy/wczytujemy ręcznie),
I szukamy tekstury desert_eagle_timb:
Strona: 135
Nasz plik .dds otwieramy np. za pomocą programu GIMP.
I przerabiamy na złotą.:
Strona: 136
●HUD:
Jest to kolejna rzecz,
rzecz które przerobimy. :)
Strona: 137
Wróć ponownie do Texture Browser’a.
Wybierz File Import .
Głowy nie daję, ale ponoć ustawienie kompresji na DXT3 jest ważne.
U mnie nie sprawia to jednak różnicy (chyba, że tekstura zjada
więcej/mniej zasobów). Klikamy OK i czekamy aż tekstura się zimportuje.
W teorii w Texture Browser powinna pojawić się nasza nowa paczka z
teksturami. W praktyce jednak czasami tak się nie dzieje. Musimy zatem
zamknąć edytor, a ten zapyta się nas, czy ma zapisać naszą paczkę.
Klikamy Yes, po czym zapisujemy paczuszkę
w /Textures/ pod nazwą PistolGoldTex.utx
Strona: 138
Załóżmy jednak, że wszystko idzie bez problemów.
Mamy zatem przed oczami nasze tekstury:
Strona: 139
●Przerabiamy
Przerabiamy skrypty:
skrypty
Nadszedł czas na (dla niektórych) czarną magię,
która nie taka straszna jak mogłoby się zdawać.
zdawa
Biegniemy do naszego folderu z kopiami skryptów /MyPistol/Classes/
i otwieramy plik ‘’ PGAmmoInv.uc” dowolnym edytorem tekstowym.
PGAmmoInv.uc
Inv.uc
Zmiany, jakie tu poczynimy to zmiana klasy (class) na ‘PGAmmoInv’,
w linijce 13, zmiana PickupClass na 'MyPistol.PGAmmoPickup' w linijce 75,
oraz tekstury HUD w linii 76 na 'PistolGoldTex.PistolGoldHUD'.
'PistolGoldTex.PistolGoldHUD'
PGAmmoPickup.uc
Kolejne zmiany przeprowadzimy w pliku ‘’PGAmmoPickup.uc”.
Zmieniamy tam klasę na ‘PGAmmoPickup’
‘PGAmmoPickup w linii 5,
oraz InventoryType na 'MyPistol.PGAmmoInv' w linii 11.
Następnie usuń 9 linijkę.
Możesz zmienić ilość amunicji, którą dają magazynki do pistoletu
w linijce 10, zmieniając liczbę w AmmoAmount.
PGAttachment.uc
W tym pliku zmieniamy klasę na ‘PGAttachment’ w linii 10,
oraz WeapClass na ‘MyPistol.PGWeapon’ w linijce 16.
Linijka 17 to dźwięk wystrzału. Możesz samemu go zmienić.
Wystarczy, że zrobisz swoją paczkę z nowymi dźwiękami
i podstawisz ścieżkę w FireSound według wzoru. :)
PGPickup.uc
Kolejny plik do zmodyfikowania – ‘’PGPickup.uc”.
W nim klasę zmienimy na ‘PGPickup’ w linijce 13, następnie w linii 26
zmienimy InventoryType na 'MyPistol.PGWeapon'.
Ostatnią rzeczą, którą zrobimy w tym pliku to
usunięcie linijki 24 i 25.
PGWeapon.uc
Ostatni plik do edycji to ‘’ PGWeapon.uc”.
Modyfikujemy tam następujące rzeczy.:
Klasę zmieniamy na ‘PGWeapon’ w linii 23,
zmieniamy AmmoName na 'MyPistol.PGAmmoInv' w linijce 231,
PickupClass na 'MyPistol.PGPickup' – linijka 251,
potem AttachmentClass na 'MyPistol.PGAttachment' – linijka 254.
Linię 250 zmieniamy na: GroupOffset=5 (może być więcej, ważne
żeby nie nachodziło na zwykły DE).
DE)
Linię 255
55 zmieniamy na ItemName="Gold Pistol”.
Po linii 257 dodajemy:
Skins(1)=Texture'PistolGoldTex.PistolGold_DE'
Skins(2)=Texture'PistolGol
Skins(2)=Texture'PistolGoldTex.PistolGold_DE'
Zapisujemy plik.
Strona: 143
Rekompilacja skryptów:
●Rekompilacja skryptów
Pokażę 2 sposoby na rekompilowanie skryptów.
Pierwszy za pomocą programu UMake, a drugi za pomocą
Postalowego kompilatora UCC.exe.
#1
Zakładam, że masz już ściągnięty program UMake. :)
Na początek go uruchom.
Wejdź w opcje
pcje klikając przycisk ‘’Options...”
‘
Strona: 144
By uruchomić kompilację, podaj ścieżkę do folderu ze skryptami.
Strona: 145
#2
Teraz drugi sposób. :p
‘’cmd”
Strona: 146
Jeśli wszystko poszło dobrze, w folderze System powinien
pojawić się plik MyPistol.u. Wracamy zatem do edytora, otwieramy
ponownie zakładkę Actor Classes, po czym klikamy File Open Package.
Jako paczkę wskazujemy nasz plik MyPistol.u. Naszą broń znajdziemy w:
Strona: 147
17.Tworzenie własnego PowerUp’a:
W poprzednim rozdziale tworzyliśmy własną wersję pistoletu Desert Eagle.
Teraz zrobimy całkowicie własnego PowerUp’a, jakim jest jabłko! :)
●Skryptowe przedpole:
Podobnie jak wcześniej, musimy utworzyć folder na skrypty.
Tak więc uczyńmy i nazwijmy go ‘’apple”.
W nim zróbmy kolejny folder – ‘’Classes”.
- FastFoodInv.uc
- FastFoodPickup.uc
- appleInv.uc
- applePickup.uc
Strona: 148
●Modelowanie jabłka:
Jak już wspominałem, potrzebny Ci jest jakiś program do modelowania.
Oprócz tego, jeszcze umiejętności w modelowaniu obiektów. :P
Strona: 149
Teraz wyexportuj swój model do formatu ‘.ase’, i nazwij go np.’’apple.ase”.
Strona: 150
●Skryptowanie
Skryptowanie PowerUp’a:
PowerUp’a
Mamy już obie paczki – czas na skrypty. :)
Dodatkowo w linijce 79, możesz zmienić ilość HP (życia) jaką daje jabłko,
a w 85, napis który pojawi się po zjedzeniu owocu. :)
Strona: 151
Otwórz następnie plik
pli ‘’ applePickup.uc”.
Skrypty załatwione! :)
Strona: 152
●Kompilacja:
Na koniec musisz jeszcze tylko skompilować swoje
swoje skrypty.
Strona: 155
18.Mover’y:
Mover’y – są to specjalne StaticMesh’e.
Spotkałeś się już z nimi przy tworzeniu drzwi. :)
Oprócz nich możesz zrobić jeszcze obracane drzwi
(takie jak w hotelach ;) ), elevatory, ruchome platformy itd.
Niemal wszystkie rodzaje Mover’ów ustawia się za pomocą Key’ów
(czyli podobnie jak to było z drzwiami :p ).
Strona: 156
Siatka Mover’ów ma fioletowy kolor, po zaznaczeniu jest jaśniejszy.
Strona: 157
Key 0(Base) – oznacza pozycję, do której Mover ma zawsze wracać
(tak jak to było z drzwiami). Tego Key’a używa się tylko wtedy,
gdy chcemy zrobić np. drzwi, ruchomą platformę itp.,
ale jak chcemy zrobić, by Mover tylko przemieścił się na stałe
do jakiegoś miejsca, to tego zazwyczaj się nie używa.;
Key 1 – pozycja początkowa Mover’a.
Od niej zaczyna się ustawianie Mover’a.
Strona: 158
●Asystujące aktywatory:
Masz poustawiane Key’e Mover’a, wie on gdzie ma się przemieszać,
ale....nie wie kiedy....
Strona: 159
None – Mover nie może być aktywowany
(będzie po prostu zwykłym StaticMesh’em);
Wyszło z tego duże masło maślane, ale jak zaczniesz stosować te dodatki
w praktyce to docenisz ich cechy. ;)
Strona: 160
●Dźwięk Mover’a:
Strona: 161
●AI Mover’a:
Strona: 162
19.Volume:
Volume’y – to żeby nie wymyślać jakiejś skomplikowanej definicji,
powiem, że są to wyznaczone obszary, które podlegają
podle pewnym
ustalonym zasadom. ;)
Strona: 164
Pierw zmień ‘’bDistanceFog” na True, a potem ustaw kolor mgły.
Jeszcze koniec mgły ustaw na 9999, a początek mgły zostaw na 0.
Na screenie wyżej ustawiłem zieloną mgłę, i taniec ludzi, gdy na mnie spojrzą. ;p
20.Optymalizacja poziomów:
Gdy tworzysz dużej wielkości mapy, i nie masz w miarę dobrego sprzętu
(o kompa chodzi – dla ścisłości ;p), lub jeśli nie mają go inni, to można odczuć
spadki FPS’ów (klatek na sekundę) – zamiast gry będzie widać pokaz slajdów. ;)
●Mgła:
Distance fog (mgła) służy do ‘’zakrywania” części mapy,
czyli zmniejsza trochę widoczność. Co to nam da?
Oczywiście więcej FPS’ów (gra będzie płynnie chodzić),
bo łatwiej jest grze wyrenderować mgłę niż kilkadziesiąt obiektów. :)
Strona: 167
●Antiportals:
Antiportals są to niewidzialne bariery, używane do blokowania
renderowanego przez grę widoku. Antiportals
Antiportals są bardzo
wszechstronnym narzędziem do zakrywania geometrii,
nie tylko w szeroko otwartych środowiskach, ale także
mogą być wykorzystywane do maskowania mniejszych obszarów.
Mogą być one stosowane w połączeniu z dowolną wizualną barierą
dla gracza, czy to geometria BSP (np. ściany), czy też
te siatka terenu.
Kolejna sprawa,
sprawa to, że Antiportale muszą
dotykać zakrywanej powierzchni.
powierzch
Strona: 168
Sposób działania Antiportal’ów jest prosty.
‘’Zakrywają” one renderowany obszar mapy, który jest w danej chwili
niedostrzegalny przez gracza. Na przykład jeśli jest jakaś góra,
i postawimy przed nią Antiportal, to obszar za tą górą nie będzie
renderowany, a gra zaoszczędzi w ten sposób zasoby.
Bez AntiPortal’ów:
Z AntiPortal’ami:
Strona: 169
Stworzyć taki AntiPortal możesz na 2 sposoby.
Strona: 170
●Kolizje:
W przypadku, gdy zaimportujesz jakiś model 3D do edytora i będzie miał
bardzo złożoną siatkę (będzie bardzo szczegółowy), może on mocno
obciążać komputer. Jest na to prosty sposób, by poprawić wydajność,
nie zmniejszając jakości modelu. :)
Strona: 171
Sprawa wygląda trochę inaczej, gdy chcemy zaimportować jakiś model,
który będzie np. pickup’em, lub ma to być ruchomy obiekt typu KActor.
Strona: 172
●ZonePortals:
Podział na strefy (ZonePortals) to główny sposób optymalizacji poziomów.
Polega to na oddzieleniu 2 stref, np. dwóch pokoi rozdzielenia drzwiami.
Strona: 173
21.StaticMesh’e:
Ustawienia Static Mesh’y:
Na początku przypomnę o tym, jak postawić StaticMesh’a.
Strona: 174
W zakładce ‘’Collision
Collision”” możesz ustawić kolizje Static Mesh’a
(zostało to opisane wcześniej).
Teraz o zakładce
z ‘’Display”.:
Strona: 175
* bUnlit -– Jeśli jest na True to odbija światło;
Strona: 176
Do swojego Static Mesh’a możesz również dodać światło.
Zrobisz to w zakładce ‘’Lighting”, oraz ustawisz kolor w ‘’LightColor”.
Efekt :)
Strona: 177
22.Tekstury:
Ten rozdział jest dopełnieniem kilku rzeczy,
również odkrywając różne przydatne zagadnienia.
●Import tekstur:
Gdy już wiesz jak tworzyć paczki, to bliżej przyjrzyjmy się
tej ‘’tajemniczej” kompresji ‘’DXT” podczas importu. :p
Strona: 178
*Inne opcje importu:
Strona: 179
●Jak zrobić bardziej szczegółową teksturę?:
Po zaimportowaniu nowej tekstury do paczki, kliknij na nią PPM,
i wybierz ‘’Properties”...
EFEKT:
Strona: 180
●Dopasowanie tekstury:
Postawiłeś ścianę i gdy nałożyłeś na nią teksturę, nieładnie ona wyglądała?
Nie przejmuj się! Dopasujesz ją w kilka sekund.
Gdy nałożona tekstura jest zbyt mała, zbyt duża, lub zwyczajnie
nie pasuje, możesz ją przeskalować, obrócić lub przesunąć.
Strona: 182
●Importowanie static mesh’ów:
Gdy zrobisz swój model (lub przerobisz stary),
możesz zaimportować go do edytora.
Strona: 183
●Teksturowanie modelu:
Po zaimportowaniu tekstury, model będzie miał domyślną teksturę.
Uwaga!
Pamiętaj, żeby przed importem modelu, najpierw zmappować
teksturę w programie do modelowania! Jeśli tego nie zrobisz,
tekstura sama ustawi się na modelu jak będzie chciała,
przez co może wyglądać tak, jak byś tego nie chciał. ;)
Strona: 184
Jeśli Twój model jest bardzo szczegółowy, może to negatywnie
wpływać na wydajność w grze. Najlepiej jeśli opcja
UseSimpleBoxCollision jest ustawiona na True
(nie musisz się tym przejmować,
przejmować, gdyż ustawia się to automatycznie :) ).
●Importowanie mesh’ów
mesh i animacji:
Strona: 185
Info:
24.Info:
MegaTutorial for PostED by seebeek17-MiRRoRRek, został stworzony
dla największego forum o grach z serii Postal.
*Strony: 190
*Ilość liter: 79 620
*Ilość wyrazów: 13 700
*Obrazki: 360+
Kontakt:
e-mail: seebeeklegal@o2.pl (rzadko wchodzę)
lub: pisać na PW na forum PSI (forum.postalsite.info)
forum.postalsite.info/profiles/2532.htm
Strona: 187
25.Źródła:
Daję tu spis wszystkich wykorzystanych poradników/innych treści,
oraz podaję autora, do którego wykorzystana treść należy
(jeśli o kimś zapomniałem, to przepraszam, i proszę o powiadomienie
mnie o tym, to na pewno uzupełnię spis).
http://udn.epicgames.com/Two/
http://www.angelmapper.com/
http://wiki.beyondunreal.com/
Strona: 188
26.Użytkowanie & Licencja:
● MegaTutorial for PostED jest darmowym źródłem wiedzy;
Kontakt:
e-mail: seebeeklegal@o2.pl
lub: pisać na PW na forum PSI (forum.postalsite.info)
forum.postalsite.info/profiles/2532.htm
Strona: 189