Nie. Przynajmniej nie.
Jest to bardzo częsty przypadek wymyślania na nowo kierownicy gier, błąd, który jest nadal dość popularny.
Jeśli zadajesz to pytanie, bardzo prawdopodobne, że wpłyną na ciebie działania innych, więc spójrz na to, co Epic Games właśnie zrobiło z Unreal Engine:
- UE3 miał niestandardową, dziwną, niezoptymalizowaną, trudną do debugowania rzecz UnrealScript,
- Jeśli pogłoska jest prawdziwa, jej wsparcie jest usuwane w UE4 , na rzecz bibliotek DLL C ++ z możliwością ponownego ładowania na gorąco.
Czy uważasz, że możesz zrobić lepiej niż Epic?
Tworzenie języków programowania należy do twórców języków programowania , a nie inżynierów gier.
Wiele lat zajmuje język, aby język był w pełni dojrzały, a towarzyszący mu zestaw narzędzi (kompilator, linker, interpreter, debugger ...) jest użyteczny. Obecnie masz pod ręką wiele dostępnych rozwiązań, więc nie ma absolutnie żadnego powodu, aby zacząć od nowa, przynajmniej jeśli celem jest po prostu stworzenie gry. Kropka.
Aby odpowiedzieć na twoje pytania dodatkowe, nie, z tych właśnie powodów nigdy nie wdrożyłem własnego języka skryptowego. Ale bardzo cierpiałem z niektórymi na wpół upieczonymi. Ponieważ zostały stworzone z myślą o bardzo wąskiej funkcji, zawsze mieli te małe szalone dziwactwa, które doprowadzają Cię do szaleństwa. Często spędzasz strasznie dużo czasu, próbując obejść ograniczenia języka zamiast tworzyć grę.
Jeśli powodem, dla którego chcesz stworzyć język, jest to, że jest on przeznaczony do użytku przez osoby, które nie znają dobrze programowania, lub jeśli uważasz, że potrzebujesz go, ponieważ chcesz czegoś bardzo specyficznego dla domeny, pozwól mi powiedzieć, że są to również złe powody. Możesz napisać bardzo wysoki interfejs API z funkcjami, które do_what_they_say_and_say_what_they_do()
i prosty kod, który ujawnia jego podstawowe użycie. Twoi niezbyt techniczni użytkownicy chętnie nauczą się trochę programowania i będziesz zadowolony, że nie będziesz ograniczany przez źle zaimplementowany język.
Tak więc, ponieważ zabrzmi to nieco gwałtownie lub nawet surowo, powiem, że jest jeden przypadek, w którym może to mieć sens: jeśli chcesz dowiedzieć się, jak powstaje język skryptowy. Ale proszę, jeśli to zrobisz: nie zmuszaj innych do korzystania z niego.
Edytować
Właśnie spojrzałem na listę poleceń Cave Story, którą połączyłeś. Ojej:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Nie chcę okazywać braku szacunku twórcy Cave Story, ale jest to doskonały przykład prostej listy poleceń, która zmutowała się w niekontrolowanym niestandardowym języku skryptowym. Może to być nadal przydatne dla pojedynczego programisty lub bardzo małego zespołu, ale na tym etapie radzę, aby przejść na odpowiedni i kompletnie sprawdzony język Turinga (np. Lua), w którym możesz:
if (npc.id == x) then
jump_to_event(y)
end
Ułatwi to znacznie, gdy na przykład będziesz potrzebować bardziej złożonego warunku:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end