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?


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 ).


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!


1
Tutaj przesłałem również demo wideo: bit.ly/dnCkar
— astk 24.09.10
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.