Niewiele jest nowych gier, które radzą sobie bez jakiegokolwiek silnika skryptowego. Samych skryptów i silników skryptowych też jest dużo. Co to w efekcie daje? Nie wiadomo czy pisać, nie wiadomo co wybrać, nie wiadomo jakie kryteria wyboru będą właściwe.
Postanowiłem na potrzeby gry (codename: SWA) zrobić język skryptowy. Pytanie: po co? Przecież jest python, jest LUA, jest CodeMonkey, jest masa innych języków. Otóż powód jest prosty: potrzebny mi język skryptowy, który będzie się dało stosować, wpisując komendy z konsoli. Dodatkowo będzie umożliwiał dynamiczne dodawanie komend oraz deklarowanie zmiennych - globalnych i lokalnych. Tak powstał LAS - Linear Active Script.
Tłumacząc nazwę: Linear, ponieważ wykonanie jest liniowe. Jedyną (jak na razie) możliwością nieliniowego wykonania jest wywoływanie skryptów po nazwie i dynamiczna zmiana ich nazwy. Active - ponieważ jest to język z aktywnym przetwarzaniem kodu. Całość jest kompilowana od razu po wczytaniu, natomiast sam język daje możliwość np. dodawania komend w trakcie wykonania (addcmd nazwaskryptu komenda). Efekt? Można testować gotowe skrypty dopisując do nich komendy, a same zmiany nie nadpiszą działającego skryptu. Script wiadomo - to nie jest język programowania w pełnym tego słowa znaczeniu - ma być prosty w pisaniu i działaniu.
Problem był z określeniem składni języka. Żeby nie porywać się z motyką języka C-składniowego na słońce zdecydowałem się zbudować język na bazie składni assemblera - czyli komendy jedna pod drugą, bez podziału na bloki (jak na razie). Całość działa i to działa poprawnie. Komend jest kilka - operacje matematyczne, na zmiennych, wywołanie rejestrowanej runtime funkcji i podobne. Jest opcja komentarzy oraz zmienne działające lokalnie dla skryptu i globalnie dla silnika skryptowego.
Pierwszy problem, na jaki natrafiam, to binarny zapis kodu skryptu. W obecnej formie wspomniany zapis jest co najmniej utrudniony - jeśli nie niemożliwy. Taka funkcjonalność byłaby przydatna o tyle, że poza szybszym wczytywaniem skryptów daje pewne ich bezpieczeństwo. Pożyjemy, zobaczymy, po lekkiej przebudowie prawdopodobnie się pojawi.
Uprzedzając pytania o kod (ostatnio trochę takich dostaję): kod silnika skryptowego, wraz z resztą kodu SWA pojawi się przy okazji pierwszej grywalnej wersji. Trochę czasu do tego zapewne upłynie.
Brak komentarzy:
Prześlij komentarz