24 साल पुराने GameCube के Animal Crossing में memory hacking से dialogue system को LLM से बदला गया
(joshfonseca.com)- क्लासिक गेम Animal Crossing (GameCube, 2001) के दोहराव वाले dialogues को रियल-टाइम cloud-based LLM conversation से बदलने वाला प्रोजेक्ट
- गेम कोड में बदलाव किए बिना, memory hacking और shared memory (mailbox) तरीके के जरिए external Python script और AI को जोड़ा गया
- गेम का टेक्स्ट साधारण string नहीं, बल्कि special control code language में प्रोसेस होता है, इसलिए अलग encoder·decoder बनाकर इसे हल किया गया
- dialogue generation को Writer (creative dialogue writing) और Director (control code·expression addition) में अलग करके quality सुनिश्चित की गई
- नतीजतन, गाँव के निवासी news, rumors, यहाँ तक कि satire को भी reflect करने वाली unpredictable AI conversations करते हैं, जिससे इस क्लासिक गेम को नई जान मिलती है
- प्रोजेक्ट का कोड GitHub पर सार्वजनिक
समस्या की परिभाषा
- Animal Crossing आकर्षक है, लेकिन अपने दोहराव वाले dialogues के लिए मशहूर भी है; 23 साल बाद भी इसके dialogues नहीं बदले, इसलिए इसे radically बदलने का तरीका सोचा गया
- समस्या यह थी कि GameCube एक बंद environment है, जिसमें 485MHz CPU, 24MB RAM, network support नहीं है
- मूल गेम को बिना code modification के ज्यों का त्यों रखना था
- लक्ष्य था दोहराव वाले dialogues को modern LLM से बदलने के लिए एक bridge बनाना
पहला चरण: dialogue system hack करना
- कम्युनिटी के Animal Crossing decompilation की बदौलत C code तक पहुँच संभव हुई
m_message.cफ़ाइल में function call को hook करके dialogue text replacement सफल हुआ- लेकिन external AI data को रियल-टाइम में भेजने और पाने का तरीका अब भी चुनौती बना रहा
memory mailbox तरीका
- GameCube RAM के एक खास हिस्से को IPC mailbox की तरह इस्तेमाल किया गया
- Python script memory address पर direct write/read करती है → गेम और AI के बीच communication
- memory scanner लिखकर speaker name (0x8129A3EA), dialogue buffer (0x81298360) addresses हासिल किए गए
control code language
- साधारण string भेजने पर गेम freeze हो जाता था
- कारण: Animal Crossing
<End Conversation>,<Pause>,<Color Line>जैसे control code-based language का उपयोग करता है - Python में encoder/decoder लिखे गए → human-friendly text ↔ गेम द्वारा समझी जाने वाली byte sequence में रूपांतरण
network alternatives की समीक्षा
- GameCube Broadband Adapter मौजूद है, लेकिन Animal Crossing में network stack नहीं है
- BBA इस्तेमाल करने के लिए networking stack और asynchronous I/O जोड़ना पड़ता, इसलिए यह अप्रभावी था
- इसके बजाय emulator memory hacking को सरल और स्थिर विकल्प माना गया
AI pipeline
- शुरुआत में एक single LLM को creative writing और control codes दोनों की जिम्मेदारी दी गई, लेकिन quality issues बड़े थे, इसलिए Writer-Director separation रणनीति चुनी गई
- Writer: character personality के आधार पर creative dialogues बनाता है (fan wiki data का उपयोग)
- Director: dialogue पढ़कर उपयुक्त control codes, expressions, color, sound जोड़ता है
- यह 2-stage LLM pipeline AI creativity और technical requirements को अलग करती है, ताकि दोनों की strengths का बेहतर उपयोग हो सके
- role separation की वजह से स्थिर quality हासिल हुई
परिणाम और विस्तार
- news feed इनपुट करने पर निवासी headlines को रोज़मर्रा की बातचीत में शामिल करते हैं
- shared memory आधारित rumor system → anti-Tom Nook movement पैदा हुआ
- बाहरी sources को सीधे reflect करने की वजह से कभी-कभी अजीब और असहज dialogues भी बनते हैं
- सारा कोड (memory interface, encoder/decoder, AI prompt logic) GitHub पर सार्वजनिक
महत्व
- retro console hacking, AI integration, game preservation को जोड़ने वाला एक प्रयोगात्मक प्रोजेक्ट
- 2001 के गेम में 2025 का AI जोड़कर पीढ़ियों को पार करने वाला interaction बनाया गया
- गेम अब सिर्फ दोहराव वाली बातचीत नहीं, बल्कि एक जीवित virtual world में evolve हो गया है
- पूरा development process/demo video: Modern AI in a 24-Year-Old Game
7 टिप्पणियां
वाह.. यह सच में बहुत मज़ेदार है
जिसने यह किया है, अगर वह Nintendo को अपना रिज़्यूमे भेज दे तो वे उसे हाथोंहाथ रख लेंगे।
पुराने DOS दौर के Ultima को अगर इस तरह बना दिया जाए, तो काफ़ी मज़ेदार होगा...
यह तो सच में बहुत geeky है!
यह बहुत-बहुत मज़ेदार प्रोजेक्ट है।
Hacker News राय
यहाँ Animal Crossing LLM mod के code का link साझा किया गया है github.com/vuciv/animal-crossing-llm-mod और मुझे यह जानने की जिज्ञासा थी कि game dialogue को intercept करके response generate होने तक game pause कैसे रहता है, इसलिए मैंने gitingest.com से 40k token Claude Opus 4.1 में dump करके सीधे पूछ लिया claude.ai पर साझा किया गया जवाब मूल बात यह है कि
watch_dialogue()function हर 0.1 सेकंड पर polling करता है और अस्थायी text से response देता है विशिष्ट code location देखें असल में user को "A दबाकर जारी रखें" button दिखता है, और उम्मीद यही होती है कि तब तक LLM response आ चुका होमैंने ज़्यादा विस्तृत notes अपने blog में लिखे हैं simonwillison.net की पोस्ट
villagers को ‘सोच’ दे दी जाए और वे सबसे पहले Tom Nook को उखाड़ फेंकना चाहें, यह बहुत मज़ेदार है अगर यह Gamecube emulator पर चल सकता है, तो Switch emulator पर भी यह ज़रूर संभव होगा, ऐसी उम्मीद बनती है
मैं भी Animal Crossing New Horizons version के साथ इसे आज़माना चाहूँगा
मैं भी Tom Nook को उखाड़ फेंकना चाहता हूँ Tom Nook तुम्हें फँसा देता है, उस town के सभी residents को अंतहीन कर्ज़ के चक्र में धकेल देता है, और उसे संतुष्ट करने के लिए लाखों bells चाहिए होते हैं
यह देखते हुए कि Tom Nook किसी mafia boss की तरह पूरे town पर नियंत्रण रखता है, मुझे नहीं लगता कोई उनकी बगावत को दोष दे सकता है
Switch version पर यह करने के लिए Animal Crossing game code को decompile करना होगा और आजकल DRM, Gamecube के समय से कहीं ज़्यादा मज़बूत है सैद्धांतिक रूप से यह संभव है, लेकिन इसे वास्तव में लागू करने में बहुत मेहनत लगेगी
LLM ज़्यादातर Reddit पर train हुए हैं और "Tom Nook एक capitalist dictator है" जैसा quip, Reddit meme है कई LLM responses असल में ‘सोच’ से ज़्यादा Reddit jokes या opinions की पुनरावृत्ति के क़रीब होते हैं
मुझे लगता है इस तरह का उपयोग वाकई शानदार है आगे चलकर games में LLM-आधारित NPCs देखने का सबसे ज़्यादा इंतज़ार है वही lines बार-बार सुनना immersion तोड़ने वाली सबसे बड़ी चीज़ों में से एक है
सच कहूँ तो मुझे पूरा यक़ीन नहीं कि यह तरीका वास्तव में कितना उपयोगी होगा! NPC जब वही बात दोहराता है, तो user के रूप में यह अक्सर इस बात का signal भी होता है कि “अब बातचीत ख़त्म हो गई” इसमें कुछ शानदार उपयोग ज़रूर हो सकते हैं, लेकिन repeated dialogue अपने आप में एक ‘feature’ भी है देखते हैं यह कहाँ तक जाता है xD
छोटे games और Skyrim के बड़े mods में ऐसे प्रयास पहले से दिख रहे हैं मैंने उनमें से Skyrim mod के साथ थोड़ा खेला है, और सुलझाने के लिए बहुत सारी समस्याएँ हैं सबसे पहले, LLM बनाने के लिए भारी मात्रा में text training चाहिए होती है, और किसी खास content को बाद में हटाना बहुत कठिन होता है अगर user बस AI के साथ Skyrim ‘roleplay’ करे तो किसी हद तक ठीक बैठता है, लेकिन NPC medical issues या celebrities (जैसे Taylor Swift, Fox News) तक का ज़िक्र करने लगता है मौजूदा LLMs के साथ यह लगभग असंभव समस्या है और LLMs ऐसे ‘वादे’ भी कर देते हैं जिन्हें game पूरा नहीं कर सकता उदाहरण के लिए NPC कह सकता है "मैं कल इस dungeon में गया था" और बात विश्वसनीय लगे, लेकिन वास्तव में वह जगह या event game में होता ही नहीं यह भी मौजूदा LLMs से हल होने वाली चीज़ नहीं है इन पहलुओं तक अनुभव को सहज बनाना हो तो मुझे लगता है AI को एक और पीढ़ी आगे बढ़ना होगा Mantella mod मज़ेदार है, लेकिन अपनी मौजूदा स्थिति में उसे official product की तरह बड़े पैमाने पर फैलाना मुश्किल है
मुझे लगता है सिर्फ local LLMs से भी यह स्तर काफ़ी हद तक हासिल किया जा सकता है हालाँकि LLM inference के दौरान GPU का व्यस्त रहना एक issue हो सकता है, लेकिन यह असंभव समस्या नहीं है मैं story की मुख्य progression के लिए इसका उपयोग नहीं करना चाहूँगा, लेकिन हल्की NPC बातचीत या RPG scenarios में यह सचमुच बहुत फिट बैठता है और मैं यह भी पसंद नहीं करूँगा कि single-player games remote inference (cloud inference) पर निर्भर हों, क्योंकि service बंद होते ही game ही चलना बंद हो जाएगा
LLM-आधारित NPCs में डूबे users के MMORPG में 12-12 घंटे gold farming करते हुए AI girlfriend के साथ relationship में फँस जाने वाला ‘game addiction + AI delusion’ भी शायद जल्द ही हक़ीक़त बन जाए, ऐसी कल्पना है
मुझे भी पहले वही dialogue बार-बार दोहराया जाना पसंद नहीं था, लेकिन Skyrim में “जब तक मेरे घुटने में तीर नहीं लगा था” वाला dialogue सुनकर हाल बदल गया
modding tool के रूप में LLM का उपयोग करके virtual space को नया अर्थ देने का विचार बहुत दिलचस्प है यह approach Unity Hawk जैसे plunderludic tools से मिलता-जुलता है, इसलिए मुझे लगता है यह artistic intervention के लिए भी उपयुक्त हो सकता है संदर्भ के लिए: Unity Hawk परिचय
पुराने games में नई जान डालना हमेशा रोमांचक और आनंददायक लगता है यह भी बहुत दिलचस्प है that Animal Crossing codebase को readable C code में decompile किया गया है अब इस तरह खुलकर छेड़छाड़ करने के अवसर काफ़ी बढ़ गए हैं
shared memory को hack करके इसे लागू करने का तरीका ढूँढ निकालना सचमुच शानदार है engineering के हिसाब से भी यह बहुत बड़ा समय बचाता है, और सीधे इसी सटीक बिंदु पर चोट करना ही असली expert skill है, “हथौड़ा पकड़ने के 10 डॉलर, और मशीन पर सही जगह मारना जानने के 5,000 डॉलर” वाली कहावत यहाँ बिल्कुल फिट बैठती है
एक तकनीकी सवाल है, उस memory address के stable रहने की गारंटी किस mechanism से मिलती है? क्या यह इस शर्त पर निर्भर है कि game में हमेशा memory allocation उसी क्रम में हो?
ऐसा shared memory तरीका multiplayer randomizers में भी काफ़ी बार इस्तेमाल होता है आम तौर पर छोटा region उपयोग किया जाता है, लेकिन emulator और network (या flashcart FXPakPro और network) के बीच message buffer के रूप में scratch memory का उपयोग किया जाता है यह बहुत उपयोगी pattern है
हर character को इस तरह की agency देने पर वे ‘दुनिया के बारे में क्या सोचते हैं’ यह स्वाभाविक रूप से उभरकर आना बहुत दिलचस्प है LLM किस स्तर तक यह भूमिका निभा सकते हैं, उसके आधार पर यह देखने का एक अजीब लेकिन रोचक प्रयोग है कि किसी काल्पनिक setting में असली लोग कैसे व्यवहार कर सकते हैं
शायद मैं कुछ चूक रहा हूँ, लेकिन क्या यह तरीका वास्तव में game events पर react किए बिना सिर्फ text generate नहीं कर रहा? ऐसा लगता है कि offline या batch process से भी लगभग वही text generation हो सकती है real-time LLM inference दिलचस्प ज़रूर है, लेकिन यह ज़रूरी या महत्वपूर्ण नहीं लगता polling की जगह lookup table इस्तेमाल करें तो चीज़ें कहीं सरल हो सकती हैं और performance भी बेहतर होगी
“Nintendo GameCube 24 साल पुराना console है, जिसमें 485MHz PowerPC CPU, 24MB RAM है और network नहीं है” ऐसा कहा गया, लेकिन वास्तव में आधिकारिक Broadband Adapter नाम का Ethernet peripheral मौजूद था supported games कम थे, और Phantasy Star Online भी उनमें शामिल था मैंने PC से connect करके games या ROMs stream करने का भी अनुभव किया है, तरीका memory vulnerabilities का उपयोग करके network पर code upload करने का था, और loading speed disc से धीमी थी
पहले एक research project में localized strings बदलकर The Sims या Grim Fandango को language learning games में बदला गया था अब मुझे लगता है कि context-aware और learner-skill के हिसाब से समायोजित generative dialogue, language learning के लिए एक बहुत शक्तिशाली killer app बन सकता है
इसे लेकर मैं सच में उत्साहित हूँ हर कोई foreign language सीखना चाहता है, लेकिन उबाऊ पढ़ाई नहीं अगर मैं Grim Fandango खेलते हुए सीधे AI से पूछ सकूँ, “Morte का मतलब क्या है?” और LLM real time में tutor की तरह जवाब दे, तो मैं उसके लिए पैसे देने को तैयार हूँ अगर बोरियत हो तो बस वापस game खेलना शुरू कर दूँ, और अगर मैं पहले से जानने वाले शब्दों की list AI को दे दूँ, तो AI धीरे-धीरे vocabulary और sentences बढ़ाते हुए एक स्वाभाविक learning experience भी दे सकता है
Duolingo भी पहले से AI का सक्रिय उपयोग शुरू कर चुका है
Tom Nook गेम के भीतर का 'raccoon dog' कैरेक्टर है