Pierwszy strzał z broni nie ma rozrzutu.
Niniejszy przewodnik pokazuje w jaki sposób zainstalować wtyczkę FrozenSand - Urban Terror Mapping Plugin i skonfigurować silnik Unreal Engine, by w łatwiejszy sposób tworzyć niestandardowe poziomy (mapy) dla Urban Terror 5: Resurgence.
Adnotacja: Epic regularnie aktualizuje silnik Unreal Engine, a ogólny proces zaprezentowany na tej stronie pozostaje taki sam, jednak numery wersji, opisy i zrzuty ekranu mogą się różnić.
Należy również pamiętać, że silnik zajmuje na dysku dużo miejsca (ponad 30 GB przy minimalnej instalacji) i około od 5 do 10 GB na każdą mapę.
Ten przewodnik dotyczy systemu Windows. Niektóre kroki będą wyglądały inaczej w systemie Linux.
Poniższy wpis został pierwotnie opublikowany przez FrozenSand w poniedziałek, 16 sierpnia 2021 r.
Tłumaczenie zawiera nowsze informacje (np. wersja silnika Unreal Engine o oznaczeniu 5.3 z września 2023 r., zamiast 5.2. z czerwca tego samego roku) i rozszerzenie wybranych terminów.
Opisywane w tekście zagadnienia dotyczą angielskich wersji językowych programów.
Autor za udzielenie cennych wyjaśnień i wskazówek odnośnie do tłumaczenia niektórych pojęć z języka programowania (trudnych do przełożenia bezpośrednio na język polski) chciałby serdecznie podziękować Lizartowi.
Oryginalna wersja artykułu jest dostępna w tym miejscu.
Urban Terror opiera się na silniku Unreal Engine 5. Aby stworzyć niestandardowy poziom, musisz skorzystać z edytora Unreal Engine. Pierwszy krok to pobranie DARMOWEGO edytora. Istnieje kilka sposobów na pobranie edytora UE5. Najprościej jest pobrać i zainstalować go za pośrednictwem Epic Games Launcher.
Musisz użyć tej samej wersji, dla której została wydana wtyczka mapowania. Obecnie jest to 5.3.x z września 2023 r. (wersja poprawki "x" nie ma znaczenia dla tworzenia niestandardowych poziomów, więc użyj najnowszej).
Kliknij na przycisk Install. Powinno pojawić się nowe okno umożliwiające wybór ścieżki instalacji.
Następnie naciśnij na Options. Upewnij się, że jako platformę docelową wybrałeś Linux. Pozostałe możliwości nie mają znaczenia i można je odznaczyć, aby zaoszczędzić miejsce na dysku. Kliknij Apply, aby potwierdzić swoje wybory.
Naciśnij przycisk Install i poczekaj na pobranie oraz zainstalowanie edytora Unreal Editor.
Po zainstalowaniu edytora, należy utworzyć nowy projekt.
Pobierz: Urban Terror Mapping Plugin (dla UE 5.2.x)
Przed rozpoczęciem nowego projektu należy najpierw skonfigurować kilka specyficznych elementów dla Urban Terror. Obejmuje to Urban Terror Mapping Plugin, niektóre ustawienia projektu i strukturę folderów.
Silnik Unreal Engine ma wiele ustawień. Podczas tworzenia poziomów dla Urban Terror, niektóre z nich powinny być zgodne z ustawieniami używanymi przez grę. Możesz przejść do ustawień projektu w edytorze i ręcznie zmienić je wszystkie, ale istnieje szybszy sposób. Ustawienia projektu są przechowywane w folderze /MyProject/Config/DefaultEngine.ini.
Spowoduje to kilka rzeczy:
Teraz, gdy ustawienia projektu są skonfigurowane, nadszedł czas, aby ponownie otworzyć projekt. Może to trochę potrwać. Najprawdopodobniej silnik musi skompilować wiele shaderów, ponieważ przełączyłeś się na forward rendering.
Po otwarciu projektu spójrz na przeglądarkę zawartości.
Sposób organizacji projektu w folderze poziomu zależy wyłącznie od Ciebie. Oto dwa popularne sposoby organizacji zawartości poziomu w podfolderach:
|-- Content
|-- ThirdParty
|-- MyLevel
|-- Audio // zawiera wszystkie pliki audio/dźwiękowe
|-- Effects // zawiera wszystkie efekty cząsteczkowe/wizualne
|-- Maps // zawiera plik(i) mapy
|-- Materials // zawiera wszystkie materiały używane na poziomie przez wszystkie zasoby artystyczne
|-- Meshes// zawiera wszystkie siatki użyte na poziomie.
|-- Textures // zawiera wszystkie tekstury używane na poziomie przez wszystkie zasoby artystyczne.
|-- Zawartość
|-- ThirdParty
|-- MyLevel
|-- Art // zawiera wszystkie siatki, materiały i tekstury na poziomie, posortowane w odpowiednich podfolderach dla każdego zasobu
| Industrial
| Buildings // zawiera wszystkie ściany, podłogi i inne podstawowe zasoby budynków, a także ich materiały i tekstury
| Machinery // zawiera wszystkie siatki maszyn oraz ich materiały i tekstury
| Pipes // zawiera wszystkie siatki rur oraz ich materiały i tekstury
| Nature
| Rocks // zawiera wszystkie siatki skał oraz ich materiały i tekstury
| Trees // zawiera wszystkie siatki drzew oraz ich materiały i tekstury
|-- Audio // zawiera wszystkie pliki audio/dźwiękowe
|-- Effects // zawiera wszystkie efekty cząsteczkowe/wizualne
|-- Maps // zawierają pliki map
Należy jednak pamiętać, że maksymalna długość ścieżki pliku w Unreal Engine 4 wynosi 260 znaków. Nie używaj więc zbyt głęboko zagnieżdżonych folderów i utrzymuj nazwy zasobów w miarę krótkie, w przeciwnym razie nie będziesz w stanie „ugotować” ( z ang. cooking - proces przygotowania/przetworzenia zasobów gry, aby były przez zbudowaną grę optymalnie wykorzystywane) i spakować swojego poziomu.
Tworzenie nowego poziomu
Po skonfigurowaniu projektu i przygotowaniu do pracy, nadszedł czas na utworzenie poziomu.
Teraz możesz rozpocząć importowanie zasobów i umieszczanie ich na poziomie. Możesz korzystać z prawie wszystkich narzędzi i funkcji oferowanych przez Unreal Engine, z kilkoma wyjątkami.
Możliwe jest wykorzystywanie siatek statycznych (static meshes), siatek szkieletowych (skeletal meshes), animacji, systemów cząsteczek, materiałów, funkcji materiałów, instancji materiałów, krajobrazów, aktorów typu foliage (roślinność), sygnałów dźwiękowych, klas tłumienia dźwięków, drzew zachowań.
Rozwijając powyższą nomenklaturę: aktorem w UE jest każdy zasób umieszczony w poziomie gry -siatka statyczna, światło, dźwięk, foliage.
Foliage odnosi się do sposobu umieszczania dużej ilości zasobu - może to być dowolny zbiór siatek statycznych umieszczanych w sposób "masowy" – są wykorzystywane głównie do tworzenia roślinności (trawy), małych kamieni, porozrzucanych śmieci, itp.
Z kolei drzewo decyzyjne (behaviour tree) to termin z zakresu sztucznej inteligencji, np. botów.
Jest jednak jedna ważna funkcja, której nie można używać. Blueprints to potężny wizualny system kodowania, który pozwala na zmianę niemal każdej logiki gry, a w najgorszym przypadku również na uruchomienie złośliwego kodu na komputerach innych graczy, którzy ładują swój poziom. Aby zapewnić spójne wrażenia z gry na wszystkich poziomach i chronić naszych graczy, niestandardowe Blueprinty zostały wyłączone. Z tego samego powodu Blueprint poziomu jest również wyłączony. Jeśli spakujesz swój poziom, a plik pak zawiera jakikolwiek Blueprint, to gra odmówi załadowania twojego poziomu (więcej na ten temat w dalszej części tego dokumentu dotyczącej Cooking i pakowania poziomu). Możesz jednak używać domyślnych schematów silnika i schematów z wtyczki Urban Terror Mapping, które nie będą zawarte w spakowanym pliku poziomu, ale będą odwoływać się do zawartości dostarczonej z grą.
Upraszczając powyższy opis, należy stwierdzić że używając blueprintów ma się w zasadzie nieograniczone możliwości. C++ raczej pozostaje tu do tworzenia czegoś bardzo konkretnego lub zależy od preferencji programisty, lecz niestety pozostawia furtkę dla szkodliwej działalności, albo do omijania zasad rozgrywki, dlatego też 3rd party mapy zawierające dodatkowe blueprinty nie mogą być akceptowane.
Wtyczka Urban Terror Mapping zapewnia wszystkie niezbędne klasy Blueprint specyficzne dla gry, na przykład: obiekty player start, aktorzy lokacji, aktorzy specyficzni dla trybu gry, triggery dla drzwi, itp.
Aby znaleźć wtyczkę w edytorze Unreal Editor, należy najpierw włączyć flagę Show Plugin Content w opcjach widoku (View options) w przeglądarce zawartości. Zawartość wtyczki znajduje się w UrbanTerrorMapping Content.
We wtyczce mapowania są trzy foldery. Wszyscy aktorzy potrzebni do stworzenia grywalnej mapy Urban Terror znajdują się w folderze MappingTools. Folder assets zawiera wszystkie dodatkowe zasoby, których potrzebują narzędzia. Wreszcie, folder DemoLevel zawiera poziom UrbanTerrorMappingDemo i wszystkie potrzebne zasoby dla tego poziomu. Na poziomie demonstracyjnym można znaleźć prezentację wszystkich aktorów i funkcji wtyczki: /UrbanTerrorMapping/DemoLevel/UrbanTerrorMappingDemo
Po przeciągnięciu jednego z aktorów mapowania na poziom, w panelu szczegółów znajdziesz sekcję UrbanTerror, która zawiera wszystkie odpowiednie zmienne do dostosowania. Po najechaniu kursorem na nazwę zmiennej, podpowiedź wyświetli dodatkowe informacje.
Jak wspomniano powyżej, większość aktorów i funkcji jest objęta poziomem demonstracyjnym, ale jest jedna klasa, o której należy tutaj wspomnieć - world settings class. Jeśli pamiętasz, podczas konfigurowania projektu ustawiliśmy domyślną nazwę tej klasy ustawień świata na UrbanTerrorMapping.URTWorldSettings. Otwórz okno ustawień świata za pomocą paska menu w edytorze UE5: Window → World Settings.
Jeśli nie widzisz sekcji UrbanTerror w ustawieniach świata, najprawdopodobniej twój poziom nie używa prawidłowej klasy ustawień świata. Upewnij się, że projekt korzysta z klasy URTWorldSettings class, ustawiając ją w menu głównym edytora Edit → Project Settings → Engine → General Settings → Default Classes → World Settings Class (powinna być już ustawiona poprzez dostosowanie DefaultEngine.ini w poprzednim kroku). Jeśli ustawiono prawidłową klasę ustawień świata, należy utworzyć nowy poziom. Klasa ustawień świata jest przypisywana do zasobu poziomu podczas jego tworzenia. Jeśli dodałeś już aktorów do swojego poziomu, możesz kopiować i wklejać ich między poziomami, wybierając ich w World Outliner i używając domyślnych skrótów klawiszowych kopiuj/wklej (Ctrl+C, Ctrl+V).
W ustawieniach świata znajdziesz kilka zmiennych dla informacji, które będą wyświetlane w menu gry i na ekranie ładowania na temat twojego poziomu, takich jak nazwa mapy, autor itp. Znajdziesz tam również informacje o trybie gry. Dla każdego trybu gry obsługiwanego przez poziom należy dodać nowy element i wybrać tryb. Dodatkowo możesz określić dowolną liczbę podpoziomów dla każdego trybu gry. Dzięki temu możesz mieć różne układy map, obiekty player start, geometrię lub aktorów dla każdego trybu gry.
Podczas dodawania dodatkowych poziomów za pośrednictwem okna poziomów, upewnij się, że ich metoda przesyłania strumieniowego jest ustawiona na Blueprint, co jest wartością domyślną. Nazwy poziomów podrzędnych powinny zaczynać się od nazwy poziomu głównego, a następnie jakiegoś opisu, na przykład MyLevel_CTF.
(AKTUALIZACJA) Ustawienia poziomów zostały przeniesione do osobnego zasobu, w /UrbanTerrorMapping/MappingTools/Game/ znajdziesz DA_MapData_MyMap
Po ukończeniu poziomu (lub przetestowaniu go w Urban Terror 5) należy spakować projekt. Ponieważ Unreal Editor jest narzędziem do tworzenia całych gier, a nie tylko poziomów, nie ma jednego przycisku, aby po prostu wyeksportować pojedynczy poziom. Będziesz musiał utworzyć kompletną spakowaną wersję "swojego projektu gry" i powiedzieć edytorowi, aby spakował poziom w osobnym pliku. Pakiet zawierający tylko poziom i jego zasoby może ostatecznie zostać załadowany przez Urban Terror 5.
W UE5 domyślnie cały projekt gry jest spakowany do pojedynczego pliku .pak. Istnieje kilka metod, aby nakazać silnikowi podzielenie zawartości na wiele plików .pak. W tym celu najrozsądniejszym sposobem jest użycie Primary Asset Label.
Otwórz etykietę zasobu i dostosuj ustawienia.
Poprzez wyraźne wybranie głównego poziomu i rekurencyjne zastosowanie identyfikatora fragmentu, poziom i wszystkie zasoby, do których się odwołuje, zostaną spakowane do osobnego pliku .pak (na przykład pak1), podczas gdy reszta projektu gry domyślnie trafi do pak0.
Oprócz upewnienia się, że poziom jest spakowany w osobnym pliku, należy również upewnić się, że w pliku .pak nie znajduje się żadna niepożądana zawartość. Aktorzy z wtyczki mapowania zostaną spakowani do pliku .pak, chyba że wykluczysz wtyczkę mapowania z pakowania. Należy to zrobić w ustawieniach projektu za pośrednictwem głównego menu edytora Edit → Project Settings → Project → Packaging → (Show Advanced) → Directories to never cook, kliknij +, aby dodać wpis, a następnie wprowadź /UrbanTerrorMapping. Będąc w tym menu, upewnij się również, że opcja Share Material Shader Code NIE jest zaznaczona. Wszystkie inne ustawienia pakowania są nieistotne, ponieważ zamierzamy je skonfigurować za pomocą project launchera.
Po prawidłowym ustawieniu Primary Asset Label i katalogów, które nigdy nie będą „gotowane” (cooking), możesz wreszcie spakować swój projekt. Jeśli pakujesz projekt na komputerze z systemem Windows i chcesz również skompilować go dla systemu Linux, możesz dodać obsługę systemu Linux do silnika Unreal Engine, instalując odpowiedni zestaw narzędzi dostępny tutaj: docs.unrealengine.com/en-US/Platforms/Linux/GettingStarted/index.html
-Otwórz Project Launcher przez Window → Project Launcher
Utwórz nowy niestandardowy profil uruchamiania za pomocą małego przycisku +.
Kliknij dwukrotnie na New Profile 0, aby zmienić nazwę profilu (na przykład na "MyProject Windows Shipping").
W sekcji Cook, po prawej stronie, wybierz opcję By the book dla opcji How would you like to cook the content?
W Advanced Settings zaznacz opcję Store all content in a single file (UnrealPak).
W sekcji Package wybierz Package and store locally dla opcji How would you like to package the build?
Po dostosowaniu wszystkich ustawień naciśnij przycisk Back w prawym górnym rogu okna. Teraz możesz uruchomić profil za pomocą przycisku po prawej stronie.
The Project Launcher pokaże postęp i dzienniki wyjściowe. W zależności od rozmiaru i złożoności poziomu, a także specyfikacji systemu, może to potrwać od kilku sekund do kilku godzin.
Po zakończeniu procesu, spójrz na katalog, w którym została zapisana kompilacja. Domyślnie znajduje się on w folderze projektu SavedStagedBuilds. Dla każdej zbudowanej platformy znajdziesz osobny folder, taki jak WindowsNoEditor i LinuxNoEditor.
Przejdź do WindowsNoEditorMyProjectContentPaks, gdzie znajdziesz kilka plików .pak. Pakchunk0 to podstawowa zawartość spakowanego projektu. Twój poziom znajduje się w pakchunk z numerem określonym w etykiecie głównego zasobu, na przykład pakchunk1.
Musisz zmienić nazwę pliku .pak, aby pasowała do nazwy poziomu, na przykład MyLevel.pak. Jest to plik, który musi być dystrybuowany do każdego serwera gry i każdego klienta, który chce zagrać na poziomie.
Istnieje wiele powodów, dla których pakowanie projektu może się nie powieść. Celem tego przewodnika nie jest pomoc w zrozumieniu i naprawieniu wszelkich błędów, które mogą wystąpić. Sprawdź komunikaty o błędach w dzienniku i zapoznaj się z dokumentacją Unreal Engine, forami UE4, UE4 Discord, Google lub CMM Discord.
Jesteś odpowiedzialny za wydajność swojego poziomu. Należy pamiętać, że na poziomie może znajdować się ponad 10 graczy w tym samym czasie, podczas gdy Ty możesz testować tylko sam. Profilowanie i optymalizacja wydajności to bardzo złożony temat.
Unreal Editor i Engine to bardzo potężne i złożone narzędzia. Podczas zwykłej pracy nad poziomami, Edytor jest dość stabilny, ale od czasu do czasu mogą wystąpić awarie. Dla własnego dobra zaleca się korzystanie z kontroli wersji/źródeł, takich jak Git, SVN lub Perforce, nawet gdy pracujesz samemu. Kontrola wersji może być używana całkowicie offline, bez potrzeby synchronizacji ze zdalnym serwerem lub online, aby umożliwić współpracę. Git + Git lfs, podobnie jak SVN, są całkowicie bezpłatne. Kontrola wersji/źródeł może być używana poza silnikiem Unreal Engine lub z nim zintegrowana.
Obecnie jedyną obsługiwaną wtyczką runtime jest wtyczka Substance Painter firmy Adobe.
Przykładowe mapy, modele, tekstury i materiały można znaleźć w samouczkach mapowania UrT5 na stronach Custom Map Makers Wiki.
Zobacz podsumowanie tego samouczka na naszym filmie na Youtube lub dołącz do nas na Discordzie, aby porozmawiać i uzyskać wsparcie.
@b0ciaM:
Też mam taką nadzieję :)
Pierwszy strzał z broni nie ma rozrzutu.
o Panie ile to musialo byc tlumaczenia =D . mam nadzieje ze komus sie przyda