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?
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?
Odpowiedzi:
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 ).
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!