5 martie 2026 · Mihail Vasiliev

Nexus Devlog: prototipul motorului

Watch on YouTube

Acum o lună și jumătate am pus pe site planurile studioului - despre motorul Nexus: ce este și ce proiecte vom face pe el, până la strategii și continuări ale seriei egiptene. Tot acolo era și o foaie de parcurs. Motorul e complicat, iar ca să reduc riscurile voiam să-l construiesc treptat. Dar jucătorii au spus-o direct în comentarii: așa ceva e imposibil de făcut. Așa că am decis să încep cu un prototip - ca să arăt că un astfel de motor chiar se poate construi. Pe el o să-l arăt.

Meniul prototipului: motorul propune să alegi una dintre cele patru simulări - Stone Age, Slay the Spire, generatorul de sisteme stelare și Oregon Trail

Iată cum arată motorul acum. La prima vedere e o aplicație de consolă destul de primitivă. Dar scoate bine în evidență ce e mai important - că mecanici diferite funcționează pe un singur motor universal.

Acum pe el rulează patru simulări. Prima e Stone Age, primul joc al studioului, din 2013. Celelalte trei sunt făcute după proiecte străine. Nu am de gând să le copiez sau să le lansez, sunt aici doar ca să arăt că pe un singur motor pot funcționa mecanici de joc complet diferite.

Stone Age

Stone Age e reprodusă pe motor în întregime. Aceleași caracteristici, ani și ture, populație, ținuturi. Trimiți muncitorii în pădure, ei adună mâncare, populația crește, apar tehnologii - le cercetezi, deblochezi construcții și arborele de evoluție, de la Australopithecus la Homo habilis și mai departe. Evenimentele, finalul - tot ce era în original e la locul lui.

Consola prototipului: Stone Age - caracteristicile tribului, ținuturile, meniul de tehnologii și de evoluție

Slay the Spire

Mai departe - Slay the Spire, un roguelike cu cărți excelent, sigur l-a jucat cineva. Pe motor e doar lupta: jucătorul are cărți, energie și viață, inamicul are intenția lui. Strike (Lovitură) lovește, Defend (Apărare) pune bloc. Cheltuiești energie, închei tura, și tot așa pe rând, până când câștigă cineva.

Aceeași consolă cu Slay the Spire - viață, energie, intenția inamicului și cărțile din mână

GURPS

A treia simulare e GURPS, un sistem de joc pe masă, destul de complicat. Din el am luat un singur modul, generatorul de sisteme stelare. Curios e că modulul ăsta în sine nu e deloc un joc, ci un generator complex. A construit un sistem cu o stea și o grămadă de proprietăți: zece orbite, pe ele lumi diferite. Prima, mică și stâncoasă, seamănă cu Mercur - cu masa ei, presiunea atmosferei și restul. În total, în simularea asta sunt peste șase mii de fapte. E un test de stres bun: se vede câte date duce motorul.

Un sistem stelar generat în modulul GURPS - steaua, orbitele și proprietățile primei lumi

Oregon Trail

A patra - Oregon Trail, un clasic din 1971 și unul dintre cele mai vechi jocuri pe calculator. E drumul coloniștilor prin America cu căruțele: înainte de plecare cumperi provizii - boi, mâncare, muniție, haine - iar mai departe vânezi, împarți rația și te descurci cu evenimentele. Iată, tocmai am fost atacați. Și tot așa până la capătul traseului.

Oregon Trail în aceeași consolă: provizii - mâncare, muniție, haine, bani - și alegerea acțiunii la întâlnirea cu călăreții

Toate cele patru jocuri funcționează pe un singur motor, iar pentru niciunul nu a fost nevoie să scriu cod.

Modificare din mers

Dar motorul nu doar pornește aceste jocuri - le poți schimba chiar din mers, fără să atingi codul. Să luăm Slay the Spire.

Tura de start din Slay the Spire pe motor: viață, energie, inamicul și cinci cărți în mână - daunele lui Strike (Lovitură) sunt încă 6

O să schimb daunele cărții Strike (Lovitură), pun 100:

/set Strike.CalcDamage Value 100

Proprietatea s-a schimbat dintr-odată la ambele cărți de felul ăsta, pentru că au aceeași clasă.

În mână două cărți Strike (Lovitură), iar amândouă au acum 100 de daune - proprietatea s-a schimbat dintr-odată la toate cărțile din clasa asta

Și pot adăuga și o carte complet nouă, Fireball (Bilă de foc):

/add Fireball Is DirectDamage
/set Fireball.CostEnergy Value 2
/add Fireball Has CalcDamage
/set Fireball.CalcDamage Value 20
/add Fireball Has ApplyDamage
/add Fireball.ExecutionEffects Has CostEnergy
/add Fireball.ExecutionEffects Has CalcDamage
/add Fireball.ExecutionEffects Has ApplyDamage

Nu exista, iar acum e în joc - stă în mână, se joacă, face 20 de daune și pleacă în teancul de aruncare, ca oricare alta:

După modificări: ambele cărți Strike (Lovitură) au acum câte 100 de daune, iar în mână a apărut o carte nouă, Fireball (Bilă de foc), de 20 de daune

Poți schimba și regulile în sine, printr-o singură comandă. O să scot regula după care cărțile jucate pleacă în teancul de aruncare.

/remove PlayCard Has MovePlayedCard

Acum rămân în mână. Am jucat Defend (Apărare): blocul s-a pus, energia s-a cheltuit, dar cartea a rămas.

După schimbarea regulii: Defend (Apărare) a fost jucat - energie 0/3, bloc 5 - dar toate cărțile jucate au rămas în mână, marcate [X]

Într-un joc obișnuit, scris într-un limbaj de programare, pentru asta ar trebui să intri în cod și să reconstruiești proiectul. Aici nu e nevoie.

La fel se adaugă în joc și ceea ce nu exista deloc în el până atunci. De exemplu aurul - îl introduc și descriu cum se cheltuie:

/set Player.Gold Value 100
/add CostGold Output Owner.Gold
/add CostGold Math.Subtract.Apply true

Apare o caracteristică ce nu exista cu o clipă în urmă - aurul, și dintr-odată o sută întreagă.

În bara de stare a apărut aurul - dintr-odată o sută - o caracteristică pe care jocul nu o avea cu o clipă în urmă

Pe aurul ăsta se poate face și o acțiune nouă - Bribe (Mită). Ea nu cheltuie energie, ci aur:

/add Bribe Is DirectDamage
/set Bribe.CostEnergy Value 0
/set Bribe.CostGold Value 30
/add Bribe Has CalcDamage
/set Bribe.CalcDamage Value 15
/add Bribe Has ApplyDamage
/add Bribe Has CostGold
/add Bribe.ExecutionEffects Has CostGold
/add Bribe.ExecutionEffects Has CalcDamage
/add Bribe.ExecutionEffects Has ApplyDamage
/create Bribe Player.Hand

Bribe (Mită) costă treizeci de aur și face cincisprezece daune - și funcționează imediat.

În mână a apărut o acțiune nouă, Bribe (Mită): zero energie, treizeci de aur și cincisprezece daune

Ar putea părea că astea sunt cheaturi și că e incomod să tastezi asemenea comenzi. Dar nu sunt cheaturi. E modificarea faptelor logice și a datelor pe care se ține tot jocul - obiectele, proprietățile și mecanicile lui. În fond, e limbajul în care e scris jocul.

Nu e obligatoriu să înveți limbajul ăsta. Poți să-i ceri IA-ului să transforme o frază obișnuită în comenzi pe care le înțelege Nexus. De exemplu:

give 999 gold

În traducere asta înseamnă pur și simplu „Adaugă 999 de aur”.

O cerere către IA în cuvinte obișnuite - „give 999 gold”. Motorul singur va alege comanda potrivită și o va executa

IA se gândește, găsește comanda potrivită și o execută, iar noi avem 999 de aur.

Poți spune și altfel, „aur 100” - merge și așa. „Fă-mă zeu” - IA îți dă invulnerabilitate. Să închei tura, să lovești, să te vindeci - toate astea se pot face prin cuvinte, motorul înțelege. Și nimic din toate astea nu e scriptat, totul funcționează cu adevărat.

Planuri

Vreau să simplific comenzile. Acum, ca să creezi același Fireball (Bilă de foc), e nevoie de vreo opt comenzi, iar mă gândesc să le reduc la trei-patru. Iar în următorul clip o să încerc să arăt ceva mai vizual - un 2D render.

Mai multe despre motor și despre planuri - în secțiunea Nexus.

Precizare: Stone Age e jocul studioului. Slay the Spire, GURPS și Oregon Trail aparțin deținătorilor lor de drepturi și sunt arătate doar ca demonstrație a motorului - aceste build-uri nu se distribuie nicăieri.