Godot to darmowy silnik do tworzenia gier, wyróżniający się w pełni funkcjonalnym edytorem na wszystkich desktopowych systemach operacyjnych. Wersja 2 była bardzo wygodnym środowiskiem do tworzenia gier 2D. W przypadku 3D nie było już tak kolorowo, silnik był mocno ograniczony i w sumie nie nadawał się do użytku. Wersja 3 wprowadziła wiele usprawnień w tym praktycznie nowy silnik renderujący. Teraz 3D wygląda naprawdę pięknie.
Choć ogólne zasady pracy w Godocie są takie same to potężna liczba zmian pod maską wymaga dostosowania starych skryptów aby działały w nowej wersji.
Plik projektu engine.cfg -> project.godot
Na początku chciałem po prostu zaimportować stary projekt. Niestety nie było to możliwe. Nowy Godot prosił mnie o wskazanie pliku project.godot, a w wersji 2 plik ustawień nazywał się engine.cfg. Szybkie porównanie zawartości wskazywały na wiele podobieństw formatu ale ostatecznie zdecydowałem się na stworzenie projektu od nowa w Godocie 3. W ten sposób chciałem uniknąć ewentualnych błędów konwersji.
Pozycja węzłów
W G2 aby pobrać lub ustawić pozycję należało użyć funkcji get_pos()/set_pos() zwykle wiązało się to z tworzeniem dodatkowych zmiennych np. pos. G3 rozwiązuje ten problem i teraz pozycja jest ustawiana za pomocą właściwości position.
G2:
pos = get_pos() pos.x += 10 set_pos(pos)
G3:
[python]
position.x +=10
[/python]
Obsługa fizyki _fixed_process() -> _physics_process()
Poza zmianą nazwy, teraz nie trzeba już wywoływać set_fixed_process() jeżeli metoda _physics_process istnieje jest aktywna. Podobnie jest z inymi funkcjami zwrotnymi jak np. _input, _process.
KinematicBody2D move() -> move_and_slide()
Funkcja move() nie jest już dostępna, a zastąpiła ją move_and_slide(). Dodatkowo mamy funkcję move_and_collide(), która w przypadku kolizji zatrzymuje ruch ciała.
Zliczanie klatek na sekundę OS -> Engine
Funkcje związane z silnikiem, a nie systemem operacyjnym zostały przeniesione do osobnej klasy.
G2:
[python]
OS.get_frames_per_second()
[/python]
G3:
[python]
Engine.get_frames_per_second()
[/python]
Typy zdarzeń
Zdarzenia nie mają już pola type, jeżeli chcemy sprawdzić ich typ korzystamy z operatora is np.:
G2:
[python]
if event.type == InputEvent.SCREEN_TOUCH:
[/python]
G3:
[python]
if event is InputEventScreenTouch:
[/python]
Uproszczone pobieranie węzłów
W G2 jak chcieliśmy pobrać węzeł podrzędny należało użyć funkcji get_node() w Godocie 3 wystarczy użyć $. Oczywiście funkcja get_node() jest nadal dostępna.
G2:
[python]
get_node(„nazwa_wezla”)
[/python]
G3:
[python]
$nazwa_wezla
[/python]