Terminy skrypty i skrypty wydają się być używane zamiennie w Game Development Stack Exchange, ale poza czytaniem pytań dotyczących wyboru języka skryptowego, nie rozumiem związku między skryptami i skryptami oraz językiem podstawowym. Co zazwyczaj robi skrypt, kiedy byłby używany, i czy skrypty w niektórych kontekstach (określonych przez programistów gier) są inne niż język skryptowy?
13
Odpowiedzi:
Skrypty są napisane dla języka skryptowego. Ludzie mogą używać słów w zdaniach slangowych, aby uzyskać zamieszanie, o którym mówisz, ale zapytaj kogokolwiek o definicje Skryptu, Skryptu i Języka Skryptu, a otrzymasz coś takiego: Skrypty to czynność pisania Skryptów za pomocą Języka Skryptu.
Osadzając język skryptowy w silniku gry lub języku podstawowym, o którym mówisz, odsłaniasz nie tylko obiekty w silniku gry, ale także pozwala napisać logikę dla silnika gry. Inną ważną rzeczą jest to, że zamienia to grę w rodzaj maszyny wirtualnej, ponieważ języki skryptowe rzadko kompilują się do języka maszynowego, a zamiast tego są wprowadzane w postaci kodu bajtowego i interpretowane w czasie wykonywania przez silnik gry.
Ma to ogromne zalety dla zespołu programistów, z których kilka można znaleźć na liście poniżej:
Jestem pewien, że lista może być kontynuowana i jestem pewien, szczególnie, gdy wchodzisz w wyspecjalizowane typy gier i jak skrypty mogą pomóc zdefiniować reguły tworzenia grup dla przenoszenia grup jednostek w RTS lub w jaki sposób możesz stworzyć logikę interfejsu użytkownika w język skryptowy w celu zapewnienia rozszerzalnego interfejsu użytkownika użytkownikom końcowym i tym podobnym.
źródło
Korzystanie ze skryptów ma wiele zalet w porównaniu z „językiem podstawowym”. Niektóre z nich obejmują:
źródło
Skrypt jest zwykle fragmentem kodu, który działa poza silnikiem podstawowym. Zwykle jest zawarty w plikach tekstowych, gdziekolwiek chcesz je przechowywać. Następnie jest zwykle ładowany przez silnik, analizowany i wykonywany w czasie wykonywania.
Zasadniczo dzieje się tak, że niezależnie od używanego języka (na przykład Lua, Angelscript), język ten zwykle ma pewne funkcje, które umożliwiają programistom silnika udostępnienie funkcji silnika, a nawet całych klas, instancji „silnika skryptowego”, który jest obecnie uruchomiony .
Na przykład (całkowicie głupi przykład, ale po to, aby uzyskać sens) kod gry może mieć funkcję publiczną, która odradza gdzieś zombie:
Język skryptowy, którego używasz teraz, umożliwia udostępnienie tej funkcji działającemu parserowi skryptów. Oznacza to, że możesz otworzyć plik tekstowy, napisać „SpawnZombie (200,300,1337)”, a gdy silnik wykona kod, zombie pojawi się w tym miejscu.
Inne odpowiedzi już wymieniają kilka dobrych przykładów tego, jak to jest typowo używane, ale pomijają jeden punkt, który uważam za bardzo ważny:
Tego rodzaju skrypty bardzo ułatwiają debugowanie lub testowanie rozgrywki w czasie wykonywania.
Powiedzmy, że chcesz wymyślić idealny sposób na umieszczenie zombie na mapie, aby miał maksymalny efekt odstraszania gracza, gdy tylko go odkryje. Bez obsługi skryptów będziesz musiał wyjść z aplikacji, zmienić niektóre magiczne liczby w kodzie, ponownie skompilować i przetestować.
Dzięki obsłudze skryptów (pod warunkiem, że masz już pewną metodę wprowadzania tekstu w czasie wykonywania, na przykład konsolę debugowania), wystarczy wpisać „SpawnZombie (333,444,555)” i zobaczyć, jak to wygląda.
W ten sam sposób możesz spawnować broń, pojazdy, ładować różne mapy, zmieniać wartości niektórych rzeczy w grze itp., Zaatakować wrogów, ponieważ nie chcesz tracić czasu na dotarcie do części, która musi być testowane itp.
Pozwoli ci to zaoszczędzić mnóstwo czasu w bardziej złożonych grach.
źródło
1) Skrypty są często znacznie łatwiejsze do modyfikacji niż kod.
2) Skrypty można często modyfikować w terenie. Pozwala to na modyfikowanie gry.
źródło
Większość języków skryptowych jest o wiele bardziej ekspresyjna niż język w rdzeniu silnika. Często silnik jest napisany w języku niskiego poziomu (np. C ++) ze względu na wydajność, ale kod rozgrywki nie musi być tak wydajny, dlatego priorytety zmieniają się w kierunku łatwego wyrażania funkcjonalności.
Na przykład pisanie dynamiczne a statyczne. Kolejny przykład: odśmiecanie pamięci a ręczne zarządzanie pamięcią.
źródło
Skrypty pozwalają pisać logikę na wyższym poziomie. Innymi słowy, piszesz mniej kodu z większą funkcjonalnością.
Na przykład poniżej pokazano różnicę między pisaniem czegoś w kodzie a pisaniem w języku skryptowym.
Kod gry
}
Kod skryptu
Zobacz, o ile mniej kodowania musi zrobić projektant, jeśli używasz języka skryptowego?
Powodem jest to, że w kodzie gry musisz podzielić wydarzenie na wiele ramek i napisać kod z perspektywy wielu ramek. Z drugiej strony, skrypty pozwalają myśleć o zdarzeniu wielu ramek jako o pojedynczym wierszu kodu, ponieważ wszystkie dodatkowe kody są abstrakcyjne za funkcją skryptu.
Możesz zapytać, ale czy nie można też zapisać tej funkcji w kodzie gry? Cóż, tak, ale to oznacza, że projektanci będą musieli otworzyć kod źródłowy silnika gry i napisać tam wszystkie kody, a Ty nie chcesz, aby Twoi projektanci przechodzili przez kod źródłowy silnika gry (mogą przypadkowo zmienić jakiś inny kod i cała ta awaria).
Zamiast tego chcesz, aby projektant zrobił coś takiego: Kliknij prawym przyciskiem myszy samochód w Edytorze map, kliknij polecenie Wstaw skrypt, wpisz kody skryptu. Krytyczne kody źródłowe silnika gry nie powodują bałaganu.
źródło