SpaceFight się rozwija. Ba, rozwija się całkiem szybko - podstawowa fizyka, HUD i sterowanie istnieją, nawet zasoby są ładowane na podstawie danych, a nie hardkodowanych wartości (no... poza ścieżką do pliku z testową misją). Stąd w końcu pora na język skryptowy podpięty do projektu.
Po długim namyśle i szukaniu dobrego rozwiązania wybór padł na GameMonkey - dostępny na licencji MIT klient języka osadzonego dla C++. Czemu nie własny język? Okazało się, że ilość pracy konieczna do wyprodukowania własnego, nawet prostego, języka skryptowego jest znacznie większa niż nauczenie się i dostosowanie do gry gotowego, działającego GameMonkey.
Po długim namyśle i szukaniu dobrego rozwiązania wybór padł na GameMonkey - dostępny na licencji MIT klient języka osadzonego dla C++. Czemu nie własny język? Okazało się, że ilość pracy konieczna do wyprodukowania własnego, nawet prostego, języka skryptowego jest znacznie większa niż nauczenie się i dostosowanie do gry gotowego, działającego GameMonkey.
Z dostępnych funkcjonalności języka postanowiłem wybrać te, które w moim przypadku okażą się najbardziej użyteczne - mianowicie chodzi o wywoływanie funkcji C++ z poziomu języka skryptowego. Nie zakładam wielu możliwości dla samego skryptu AI czy zdarzeń (wg. obecnego projektu wywoływane będą wyłącznie odpowiednie funkcje z parametrami dostarczonymi albo przez wejście, albo sztywno przypisanymi), stąd wszelka samodzielność i integracja skryptu z kodem została ograniczona do minimum.
GameMonkey okazał się być językiem sporo wygodniejszym niż LUA (przynajmniej w przypadku mojej gry) - jako że nie zakładam istnienia konsoli in-game, natomiast stosuję debugowanie przez sieć (dokładnie: za pomocą telnetu), skrypty wywołują tylko proste funkcje dające dostęp do danych lub wykonujące konkretne, predefiniowane czynności. Przez predefiniowane czynności rozumiem np. wybranie z listy okrętów-celów statku o najmniejszej/największej wytrzymałości, wybranie najmniej zajętego okrętu wroga (wg. odpowiedniej oceny zależnej od typu statku wybierającego i wybieranego), uruchomienie przeszukiwania statków w poszukiwaniu odpowiedniego celu, wysłanie komunikatu do gracza z dowolną informacją (stosowane przy skryptach dotyczących misji).
Oczywiście gra nadal powstaje, więc poszczególne elementy mogą zostać (i zapewne będą) zmienione lub rozszerzone.
Brak komentarzy:
Prześlij komentarz