Castle Game Engine to darmowy, otwarty silnik do tworzenia gier napisany w języku Object Pascal. Obsługuje gry 2D i 3D. Dzięki niemu możesz tworzyć gry na komputery stacjonarne (Windows, Linux, macOS), urządzenia mobilne (Android, iOS) i konsole (Nintendo Switch) korzystając z przejrzystego języka Pascal. Którą wersję jednak wybrać?
Jak przekonuje twórca Michalis Kamburelis, lepiej wybrać wersję beta, która jest także wykorzystywana produkcyjnie w jego studiu. Wersja stabilna 6.4 pochodzi z 24 lutego 2018 r. Od tej wersji jest około 1700 zatwierdzeń w repozytorium silnika. Wiele rzeczy zostało zrobionych.
Płynne przejścia między animacjami (Animation Blending)
Dzięki temu unikamy nagłego przeskoku między animacjami, efekt jest o wiele ładniejszy:
Samo użycie jest bardzo proste, aby uruchomić mieszanie (blending) wystarczy zmienić TPlayAnimationParameters.TransitionDuration na wartość różną od zera (zwykle wartości między 0.1 a 0.5 wyglądają najlepiej) i użyć TCastleSceneCore.PlayAnimation z TPlayAnimationParameters.
Przykład dostępny jest w examples/animations/play_animation.
Łatwe odtwarzanie animacji wstecz
Wystarczy ze zmienisz argument Forward funkcji PlayAnimation lub pole o tej samej nazwie w klasie TPlayAnimationParameters na false.
Inne ulepszenia w animacjach
Dodano funkcje:
- TCastleSceneCore.StopAnimation – zatrzymuje aktualną animacje (tą zapisaną w właściwości CurrentAnimation)
- TCastleSceneCore.ResetAnimationState – resetuje stan animacji
- TTimeSensorNode.Start, TTimeSensorNode.Stop – pozwala na jednoczesne uruchamianie wielu animacji w jednej scenie. Przykład użycia dostępny jest w examples/animations/simultaneous_animations_one_scene.
Wizualny edytor
Film prezentujący edytor:
Dodatkowo edytor może być uruchomiony z przebudowaniem dla aktualnego projektu z poziomu narzędzia castle-engine za pomocą polecenia castle-engine editor. Jak dodać własne komponenty można przeczytać w Readme edytora.
Współrzędne interfejsu użytkownika
Wszystkie pozycje i rozmiary są teraz typu Single (w wersji 6.4 były Integer). Właściwości typu TRectangle zostały oznaczone jako deprecated i zastąpione przez TFloatRectangle np. TCastleUserInterface.ScreenRect -> TCastleUserInterface.RenderRect.
Inne ulepszenia w interfejsach użytkownika
W silniku pojawiło się bardzo dużo optymalizacji i poprawek związanych z UI, najważniejsze z nich to:
- TCastleHorizontalGroup, TCastleVerticalGroup – layouty, dające możliwość łatwego szeregowania kontrolek w poziomie i pionie
- TCastleCheckbox – kontrolka checkboxa
- poprawki w TCastleScrollView
- w TCastleEdit można ustawić Placeholder oraz PasswordChar
- rozbudowane opcje lokalizacji gry
Ulepszenia renderowania
W silniku pojawiło się wiele zmian m.in.:
- tryb „SeparateDiffuse” pozwala uzyskać ładniejsze oświetlenie
- nowa klasa TCastleScreenEffects ułatwiająca nakładanie efektów, przykład użycia dostępny jest w examples/screen_effects_demo
- poprawki w CommonSurfaceShader
- obsługa formatu glTF 2.0
- dodano metody TCastle2DSceneManager.PositionTo2DWorld i TCastleSceneManager.PositionToWorldPlane aby ułatwić konwersję pozycji myszy/dotyku na pozycję w grze
- clipping planes działają na GLES
Możliwość tymczasowego wyłączenia fizyki
Za pomocą właściwości SceneManager.Items.EnablePhysics można tymczasowo wyłączyć fizykę
Podstawowa obsługa kolizji w fizyce
Kolizje mogą być sprawdzane na dwa sposoby:
- pobierając listę kolidujących obiektów za pomocą TRigidBody.GetCollidingTransforms; działa to podobnie do get_colliding_bodies() w silniku Godot.
- używając zdarzeń OnCollisionEnter i OnCollisionExit w TRigidBody – przypomina to Unity.
Przykład dostępny jest tutaj: examples/physics/physics_2d_collisions.
Dźwięk
Dodano LoopingChannel dla łatwego odtwarzania muzyki. Alternatywnie można użyć backendu FMOD, zamiast domyślnego OpenAL.
Android
Projekt jest teraz domyślnie „integrated”, a narzędzie budowania domyślnie kompiluje grę w wersji 32 i 64 bity co będzie wymagane od sierpnia 2019 przez sklep Google Play.
Moduł Admob został zaktualizowany. W nowej wersji dostępne są reklamy rewarded, oraz dokładniejsza informacja zwrotna w przypadku reklam pełnoekranowych.
Podsumowanie
Ta lista przedstawia jedynie najważniejsze (wg mnie) zmiany. Tworząc nowy projekt nie ma sensu używać wersji 6.4, ponieważ przeniesienie się na wersję 6.6 będzie wymagało wiele pracy.
Instalacja wersji beta
Niektóre przedstawione powyżej nowości nie są jeszcze dostępne z paczki bety z głównej strony silnika. Wg mnie o wiele lepiej pobrać gałąź master z repozytorium projektu i być na bieżąco.
Jeżeli używasz linuksa z kartą graficzną NVIDIA pamietaj aby użyć fpc w wersji 3.2 lub kompilacji z trunka, więcej na ten temat pisałem tutaj.
Patreon
Autora silnika można wesprzeć na patreon.