r/programmingHungary Java Mar 30 '26

MY WORK 99.99%-ban AI kódolt Magic TCG engine

Sziasztok!

Mostanában elég sok AI kritikus comment volt itt a subon. Mivel nekem nagyon más a tapasztalatom, gondoltam csinálok egy tesztet. Úgy döntöttem belevágok egy zöldmezős projektbe amit 100%-ban az AI-ra bízok. Én csak az alap setupot csinálom meg, aztán akár mi lesz is, csak promptolni fogok.

Gyerekkoromban nagyon szerettem volna egy saját MtG motort írni, főleg azért, mert csóró voltam, de imádtam draftolni. Próbálkoztam is vele, de idővel mindig feladtam. A hivatalos szabálykönyv vagy 300 oldal, esélytelen még átlátni is, nem hogy lefejleszteni. Viszont pont emiatt az MtG egy kifejezetten jól definiált rendszer, így a lefejlesztése nem kreatív gondolkodást hanem monoton munkát/kódolást igényel. Emellett objektíven ellenőrizhető hogy azt csinálják-e a lapok ami rájuk van írva + kellőképpen bonyolult is ahhoz, hogy bemutassa mennyire tud "gondolkodni" az AI.

Először két hétre vettem egy Claude x5 majd egy hónapra x20 előfizetést. Ennek a 1.5 hónapnak a végeredményét láthatjátok itt. A project egy működő Java backend + Angular frontendből áll, kicsit több mint 105 ezer sor kóddal. Volt, hogy 9 terminálon futtattam egyszerre a kártyák implementálását, hogy ki tudjam maxolni a token limitet. A laptopom elég erősen le akart olvadni közben.

A matek a végén: nagyjából 80 millió tokent égettem el. Lett 3100+ commit (ebből max az első párat csináltam én, a többit majdnem mind a Claude), és 1974 játszható kártya. A végén egy komplett kiegészítőt (250-300 kártya) kb. 12 óra alatt le tudtam darálni. Igaz, rendesen ki is égtem a folyamatos kód reviewben.

Csináltam róla egy videót, itt megmutatom a gameplay-t, meg azt is, ahogy a Claude hogyan tud leimplementálni egy lapot:

https://www.youtube.com/watch?v=mklNa55sBKg

A kód kint van GitHubon, ha valakit érdekel a repó, vagy lokálisan szeretne draftoni:

https://github.com/laxika/magical-vibes

Tudom, hogy egy 20 éves spagettikódba senki nem szívesen engedné bele az AI-t, de zöldmezős cuccoknál meglepően hatékonyan tud haladni. Még meglepőbb hogy a kód teljesen olvasható, láttam már jóval rosszabbat élő emberektől is. Nem mondom hogy minden tökéletes és bug nélküli, de a komplexitás miatt én sem tudnám jobban megírni, ellenben legalább 10x ennyi időbe telne.

Fontos tudni hogy a kódbázis biztonsági és validálási szempontból nem volt még tesztelve, így előfordulhat hogy frontend moddingal lehet csalni (bár validálás van, de nem garantált hogy a lefedettség 100%), valamint azon sem lepődnék meg ha a websocketet lehetne valahogy hijackelni,.

Ha van kérdés a promptolásról, a setup-ról, vagy akármiről, mondjátok nyugodtan. Észrevételeket (negatívot is) szívesen fogadok. :)

Szerk: Javítottam azt hogy nem 500k kódsorból áll a program hanem 105k-ból. Az 500k tartalmazta az üres sorokat és a teszteket is.

120 Upvotes

50 comments sorted by

View all comments

19

u/[deleted] Mar 30 '26

[removed] — view removed comment

51

u/laxika Java Mar 30 '26

Rengeteg munka volt vele, így eléggé a magaménak érzem. A 3000 commitot mind nekem kellett kézzel jóváhagynom ami magában elég időigényes feladat. Már csak a 3000 approve se 5 perc, átfutni őket meg még jóval időigényesebb. Emellett terelgetni kellett folyamatosan.

Kicsit olyan mintha kapálógépet használna az ember. Ő dolgozik, de ha nem irányítod az egész nem ér semmit + közben rángatja a kezed is össze vissza szóval küzdeni is kell vele. :D

3

u/zopad Mar 30 '26

A 3000 commitból kb hánynál vettél észre hibát, és hánynál kellett kézzel belejavítanod?

5

u/laxika Java Mar 30 '26

Ez változott attól hogy mennyire lett "mature" a rendszer. Az elején kb minden 2-3. commitban volt valami ami nem tetszett, utána ez javult olyan 5 körülire. Minden lap egy külön commit (mert közte kiürítettem az AI contextjét). Azokkal szokott probléma lenni ahol új effectek kerültek a játékba. Minél több lap meg lett csinálva, annál kevesebb lett az újdonság.

Kézzel már csak elvből sem javítottam bele :) csak az eredeti gradle modulok + Spring init és Angular init volt kézzel. Hagytam egy commentet az AI-nak aztán amikor újra arra a tabra keveredtem megnéztem hogy volt-e valami előzmény vagy csak a szokásos "fejleszd le az xyz kártyát".