GoCompilersRust-inspiredStatic AnalysisDSL
Hybroid Live
Aukšto lygio, statiškai tipuota programavimo kalba, sukurta su Go, kuri transpiliuojama į Lua. Skirta našiam lygių kūrimui „PewPew Live“ žaidime.
Skaityti daugiauApžvalga
„Hybroid Live“ yra pažangi specizuota programavimo kalba (DSL) ir kompiliatoriaus paketas, sukurtas siekiant modernizuoti lygių kūrimą „PewPew Live“ varikliui. Nors žaidimo variklis naudoja Lua, „Hybroid“ suteikia saugesnę, išraiškingesnę ir našesnę kūrimo patirtį, transpiliuodama aukšto lygio kodą į optimizuotą Lua.
Inžinerinis indėlis ir pasiekimai
1. Kompiliatoriaus infrastruktūra (Go)
- Parserio ir lekserio architektūra: Vadovavau stabilaus, UTF-8 palaikančio lekserio ir rekursyvaus nusileidimo (recursive-descent) parserio kūrimui. Įdiegiau tvirtą „sinchronizacijos“ strategiją, leidžiančią kompiliatoriui tęsti darbą po klaidų, taip pateikiant visą klaidų sąrašą vienu metu.
- Kelių etapų semantinė analizė: Sukūriau ir ištobulinau „walker“ sistemą (1–3 etapai), kuri atlieka tokias sudėtingas užduotis kaip matomumo zonų (scope) nustatymas, statinis tipų tikrinimas ir generinių tipų išvedimas žaidimo objektams.
- Kodo generavimas: Suprojektavau generatorių, kuris kuria efektyvų Lua kodą, įgyvendindamas tokias funkcijas kaip bitų operacijos, pasirinktiniai operatoriai ir išmanioji prieiga prie aplinkos.
2. Pažangi klaidų sistema („Alerts“)
- Įkvėptas „Rust“ kompiliatoriaus, sukūriau diagnostikos sistemą, kuri teikia itin tikslius klaidų pranešimus. Tai apima specializuotus
PrinterirCollectorkomponentus, kurie atvaizduoja spalvotas kodo ištraukas su vienos ar kelių eilučių kontekstu.
3. Automatinė API integracija
- Siekdamas išlaikyti „Hybroid“ sinchronizaciją su nuolat kintančiu žaidimo varikliu, sukūriau Python pagrindu veikiantį API generatorių. Šis įrankis nuskaito dokumentaciją iš variklio įrankių saugyklos ir automatiškai sugeneruoja „Hybroid“ susiejimus (bindings).
4. Įrankiai ir DevOps
- Suprojektavau CLI sąsają, įgyvendindamas komandas projektų inicializavimui (
init) ir optimizuotam kodo surinkimui (build). - Sukūriau testavimo infrastruktūrą, apimančią automatizuotus „Go“ patikros rinkinius ir „evaluator“ testus kompiliatoriaus teisingumui užtikrinti.
Įtaka
„Hybroid Live“ pakeitė lygių kūrimą iš klaidoms neatsparaus skriptų rašymo į profesionalų programinės įrangos inžinerijos procesą. Įvedus statinę analizę ir automatinį fiksuoto kablelio matematikos valdymą, pavyko žymiai sumažinti žaidimo lūžimų skaičių ir padidinti kodo našumą.
Įrankiai ir technologijos
- Kalba: Go (Golang).
- Pagalbiniai skriptai: Python (API generavimas, automatizavimas).
- Pagrindinės sąvokos: Abstraktūs sintaksės medžiai (AST), transpiliavimas, statinis tipavimas, leksinė analizė.