În peisajul în continuă evoluție al dezvoltării software, un nou trend a început să capete amploare: oamenii încearcă să „vibe code” jocuri. La prima vedere, abordarea pare promițătoare și funcționează, cel puțin în fazele incipiente ale proiectului. Există o bucurie incontestabilă în a vedea cum ideile prind viață cu efort minim. Cu toate acestea, pe măsură ce proiectul crește în complexitate, lucrurile încep să se destrame. De ce apare acest fenomen și, mai important, ce soluții există pentru a remedia această situație? Acestea sunt întrebările care stau la baza explorării noastre.
Demistificarea conceptului: Ce este „Vibe Coding”?
Pentru a înțelege soluția, trebuie mai întâi să definim problema. Termenul „vibe coding” a fost inițial lansat de Andrej Karpathy, o figură proeminentă în comunitatea AI, într-un tweet viral. Acesta definea conceptul ca o stare în care „te lași complet în voia viburilor, îmbrățișezi exponențialele și uiți că codul există”. Este o filozofie care încurajează renunțarea la controlul meticulos în favoarea intuiției și a capacității modelelor AI de a genera soluții.
De la acea definiție inițială, termenul a evoluat și este folosit descriptiv pentru a acoperi o gamă largă de activități, de la simpla „utilizare a AI-ului la programare” până la abordarea extremă de „a nu te gândi deloc la cod”. În contextul acestei analize, vom defini vibe coding-ul ca utilizarea AI-ului ca un limbaj de programare de nivel înalt pentru a construi ceva. La fel ca alte limbaje de programare, această abordare beneficiază de înțelegerea mecanismelor din culise, dar nu o impune în mod necesar. Cu această interpretare, ai putea crea un joc fără a înțelege codul, deși cunoașterea fundamentelor rămâne un avantaj semnificativ.
Gestionarea contextului: Gâtul de sticlă al AI-ului
Mai devreme am menționat că „pe măsură ce proiectul crește, lucrurile încep să se destrame”. Această observație nu este doar o opinie, ci se bazează pe dovezi empirice. Pe măsură ce fereastra de context a modelului se umple, performanța acestuia începe să scadă. Acest lucru este valabil pentru majoritatea modelelor lingvistice mari actuale. În dezvoltarea jocurilor, problema este acută, deoarece contextul poate crește foarte rapid, incluzând logica jocului, asset-uri, scripturi și configurații.
Pentru a aborda această problemă, au apărut numeroase soluții ad-hoc. Unii dezvoltatori scriu context specific pentru LLM direct în fișierele proiectului, în timp ce alții folosesc soluții mai comprehensive, cum ar fi Claude Code Development Kit pentru gestionarea contextului la scară largă. Totuși, lipsea o soluție ușoară și accesibilă, care să nu necesite cunoștințe aprofundate de domeniu. Această nevoie a dus la crearea Shallot, un sistem simplu și ușor de gestionare a contextului pentru Claude Code. Anecdotic, acest lucru funcționează bine, dar este optim atunci când proiectul rămâne slab și bine organizat, permițând contextului relevant să încapă în fereastra modelului.
Explorarea inițială: Trei căi pentru vibe coding-ul jocurilor
Autorul a inițial testat trei abordări diferite pentru vibe coding-ul jocurilor: Roblox MCP, Unity MCP și stiva web. Pentru fiecare, a încercat să construiască un joc incremental simplu, inspirat de „Grass Cutting Incremental”, folosind Claude Code.
Încercarea 1: Roblox MCP
Prima abordare a folosit serverul oficial MCP de la Roblox. Acesta permite AI-ului să interacționeze cu Roblox Studio trimițând comenzi. Roblox oferă un strat excelent de abstracție, menținând codul slab și gestionabil, ideal pentru vibe coding. Totuși, natura de „walled garden” și lipsa contextului extern fac abordarea ne fezabilă, cu excepția cazului în care este utilizată intern la Roblox.
Încercarea 2: Unity MCP
A doua abordare a utilizat serverul MCP neoficial pentru Unity. Aceasta permite AI-ului să citească consola, să gestioneze asset-uri și să valideze scripturi. Unity este un motor puternic, dar complexitatea și variabilitatea sa fac dificilă generarea consistentă de rezultate bune de către AI fără o cunoaștere semnificativă a domeniului de către utilizator.
Încercarea 3: Stiva Web (Web Stack)
A treia abordare a folosit platforma web deschisă, folosind three.js pentru randare 3D, rapier pentru fizică și bitecs pentru logica jocului. Această abordare a avut cea mai bună performanță AI, probabil datorită volumului imens de date despre dezvoltare web disponibile în antrenament. Totuși, natura de nivel scăzut a bibliotecilor a necesitat construirea unui motor de joc înainte de a construi jocul propriu-zis.
Soluția: VibeGame
După aceste experimente, imaginea a devenit clară: stiva web avea performanță AI excelentă, dar era prea de nivel scăzut, în timp ce Roblox avea o abstracție perfectă, dar lipsea deschiderea și gestionarea contextului. Astfel a luat naștere VibeGame, un motor de joc declarativ de nivel înalt, construit pe three.js, rapier și bitecs, conceput special pentru dezvoltarea jocurilor asistată de AI.
Filozofia de design a VibeGame se bazează pe trei decizii cheie: declarativitatea, modularitatea și documentația specifică pentru AI. Motorul permite crearea de scene simple folosind tag-uri HTML-like, unde un element
Concluzie și perspective viitoare
VibeGame funcționează foarte bine pentru definiția vibe coding-ului ca limbaj de nivel înalt, dar necesită utilizatorilor să înțeleagă capabilitățile și limitările motorului. Motorul este în prezent în stadiu incipient, dar rezultatele sunt promițătoare. Viitorul ar putea explora integrarea unor motoare dovedite precum Unity sau Unreal Engine, oferind un mediu mai controlat pentru AI, combinând puterea motoarelor stabilite cu flexibilitatea vibe coding-ului.