Jak działa GT i jakie ma założenia?
Nakładka wyświetlająca przeglądarkę
Graficzny interfejs użytkownika jest wyświetlany w oknie Gothica w taki sam sposób jak każda strona internetowa. Pozwala to na ogromną dowolność - od wyświetlania obrazków, poprzez odpalanie filmików, aż do odtwarzania dźwięków. Wprowadza Cię również w tajniki web developmentu. Tworząc elementy GUI, możesz je tworzyć i testować za pośrednictwem przeglądarki, bez odpalania gry.
Jeśli chcesz, możesz na początku w ogóle nie używać nakładki - czat oraz komendy są dostępne też w standardowej wersji, wyświetlanej na ekranie. Dzięki temu, gdy dopiero zaczynasz, możesz skupić się na logice swojego trybu, a nie na elementach graficznych.
Komunikacja nakładki z Twoim skryptem odbywa się poprzez wysłanie komendy, takiej samej jak na czacie. Możesz na przykład zbudować komendę typu /ulecz [idgracza] i wykonywać ją z poziomu czatu lub nakładki. Możesz również wysyłać eventy z gamemodu. W przypadku naszego przykładowego Castle Defense, jest to np. informacja o liście graczy i ich HP.
Gamemode czyli witamy w NodeJS!
Tryb gry to aplikacja typu Node napisana w TypeScript. Jej sercem jest plik gamemode.ts, który zawiera wiele callbacków wykonywanych podczas akcji użytkownika, np. OnPlayerJoinServer. Tworząc obsługę danego callbacka, używasz metod z trzech przestrzeni nazw: Server, Client, Union.
- Server to metody wykonywane na serwerze, np. CreateNpc. Kod takiej metody wykonuje się tylko na serwerze, a synchronizacje napisane przez nas propagują zmiany do podłączonych klientów.
- Client to metody wykonywane tylko dla konkretnego gracza, np. PlaySound3D, która pozwala odtworzyć dowolny dźwięk z gry.
- Union to metody Gothica zmapowane na TypeScript z silnika gry, wykonywane tylko na serwerze. Jest ich ogromna ilość, zapewniająca wszystkie możliwości silnika gry.
Kilka słów o Union
Union to modyfikacja stworzona przez Gratt, pozwalająca budować pluginy do Gothica. Jest to środowisko, które pozwala nam używać praktycznie wszystkich metod silnika Gothic. Na platformie GT większość tych metod została zmapowana na TypeScript. Dzięki temu, od pierwszej wersji masz dostęp do dużej części API Uniona. Nie musisz używać dość trudnego dla początkujących C++ (w którym nie ma praktycznie pracy). Dodatkowo, API Uniona jest niezmienne oraz stabilne, co wyklucza ogrom zmian i przeróbek, przez które przechodzilibyśmy, wystawiając swoje metody.
Jak to wszystko działa?
Podczas uruchomienia Gothica, nasza DLLka (napisana właśnie w Union!) utworzy połączenie z serwerem trybu gry NodeJS. DLLka wysyła informacje o wydarzeniach z gry typu: gracz dołączył do serwera, gracz zadał obrażenia, gracz napisał na czacie. Każdy z tych eventów możesz obsłużyć, używając metod platformy (Server/Client) lub nieskończoną ilością metod Uniona.