Jak dodać język skryptowy do gry?

25

Powiedzmy, że mam grę napisaną w C ++. Ale chcę dodać do niego trochę funkcji modowania lub skryptowania. Jak przejść do dodawania funkcji skryptowej do gry?

Lalafur Waage
źródło
Najpopularniejszy język: Zobacz Lua (język programowania) i Lua (język programowania) - C API Przykład: IBM ma świetny artykuł na ten temat: Osadzanie LUA
Tamara Wijsman
Dokładne kroki w dużej mierze zależą od języka, który chcesz dodać. Rzuć
tenpn

Odpowiedzi:

27

Przede wszystkim powinieneś zdecydować, która część twojej gry jest skryptowana. Jedną z opcji jest posiadanie w pełni skryptowanej gry w tym sensie, że chociaż krytyczne czasowo operacje zaplecza są kodowane w C ++, cała logika gry jest w języku skryptowym. Projektanci używają backendu jako interfejsu API wywoływanego z języka skryptowego wysokiego poziomu. Z drugiej strony, możesz mieć kilka konkretnych miejsc, w których używane są skrypty, takie jak interfejs użytkownika lub sekwencje skryptowe, przy czym większość kodu gry jest nadal w C ++. Każde podejście ma zalety (szybkość, elastyczność, czas kompilacji, zakres gry itp.), Ale musisz o tym wcześniej zdecydować.

Kiedy już wiesz, jak chcesz używać skryptów, musisz teraz zdecydować, czy zamierzasz użyć istniejącego języka skryptowego, czy własnego języka specyficznego dla domeny . Obecnie istnieje wiele języków skryptowych do wyboru z różnymi celami projektowymi i docelowymi odbiorcami, więc nie jestem pewien, czy warto już tworzyć własne. Jeśli zdecydujesz się na wdrożenie własnego, oto niektóre zasoby:

Lua to popularny lekki i łatwy do osadzenia język skryptowy. Wykorzystuje stos do komunikacji między hostem a językiem osadzonym i z powodzeniem był używany w wielu profesjonalnych grach . Sol2 upraszcza proces wiązania Lua i C ++. Jeśli nie lubisz składni Luy , Moonscript to język, który kompiluje się do Lua i dodaje ładny zestaw funkcji.

Inne opcje obejmują AngelCode , który pozwala bezpośrednio wywoływać funkcje C i C ++. Python i Ruby są nieco bardziej skomplikowane do osadzenia, ale bardzo przyjemnie się je programuje. Jeśli chcesz osadzić Pythona, spójrz na Boost.Python . Innym pomysłem jest osadzenie JavaScript, aby skorzystać z szybkiego silnika skryptowego opracowanego dla przeglądarek (patrz V8 i SpiderMonkey ).

Firas Assaad
źródło
2
Zaimplementowałem język skryptowy dla mojego obecnego projektu gry, a podstawową zaletą jest całkowita kontrola nad prymitywami językowymi. Wstępnie wbudowane rozwiązania skryptowe są ogólne i możesz nie potrzebować wszystkich ich funkcji. Absolutnie nie powinieneś myśleć o rozwijaniu własnego języka, chyba że masz pewność , że możesz stworzyć coś lepszego dla swojej gry niż istniejące rozwiązanie.
Jon Purdy,
Osobiście lubię Guile , ma świetną integrację z C. Jedynym problemem jest szybkość, ale wraz z wydaniem 2.0 w ciągu najbliższych kilku miesięcy, które również powinny się poprawić.
Joe D
Doskonała odpowiedź. Pierwszy akapit można podsumować jako „twórcy gier tworzą interfejs API, który jest wykorzystywany do treści”.
ashes999
Ogólny termin na niestandardowe języki (skrypty lub inne) to DSL, co może pomóc dowiedzieć się, czy chcesz przeczytać.
Patrick Hughes
2

Napisałem posta o umieszczenie skryptu gamemonkey do gry przy użyciu Dragonfire SDK tutaj .

Zasadniczo chodzi o udostępnienie funkcji C \ C ++ w wybranym języku skryptowym i użycie ich ze skryptu. W moim samouczku pokazałem 2 funkcje z DragonFire SDK. Na początku gry wywołuję funkcję onStart ze skryptu, a przy aktualizacji wywołuję funkcję onTimer ze skryptu.

Mam nadzieję, że to pomaga!

astk
źródło
1
Tutaj przesłałem również demo wideo: bit.ly/dnCkar
astk 24.09.10