<p align="center">
  <img src="./docs/images/dsh-game-studio-logo.png" alt="DSH Game Studio" width="120" />
</p>

<h1 align="center">DSH Game Studio</h1>

<p align="center">
  <strong>एक वाक्य में एक छोटे गेम का वर्णन करें — उसे <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> चैट के साइडबार में खेलें, उसमें AI आर्ट लगाएँ, और एक अकेली HTML फ़ाइल के रूप में एक्सपोर्ट करें।</strong><br />
  <sub>10 एजेंट टूल्स &bull; लाइव साइडबार प्रीव्यू &bull; 2D और 3D वॉक्सेल टेम्पलेट्स &bull; पहले लागत की जाँच के साथ OpenAI या Codex आर्ट &bull; खुद खेलने वाले प्लेटैस्ट &bull; वर्ज़न हिस्ट्री &bull; सिंगल-फ़ाइल एक्सपोर्ट</sub>
</p>

<p align="center">
  <a href="./README.md">English</a> &middot; <a href="./README.zh.md">简体中文</a> &middot; <a href="./README.zh-TW.md">繁體中文</a> &middot; <a href="./README.ja.md">日本語</a> &middot; <a href="./README.ko.md">한국어</a> &middot; <a href="./README.fr.md">Français</a> &middot; <a href="./README.es.md">Español</a> &middot; <a href="./README.de.md">Deutsch</a> &middot; <a href="./README.pt.md">Português</a> &middot; <a href="./README.ru.md">Русский</a> &middot; <b>हिन्दी</b> &middot; <a href="./README.tr.md">Türkçe</a> &middot; <a href="./README.th.md">ไทย</a> &middot; <a href="./README.vi.md">Tiếng Việt</a> &middot; <a href="./README.id.md">Bahasa Indonesia</a>
</p>

<p align="center">
  <sub>पैकेज: <code>@zseven-w/dsh-game-studio</code> &middot; वर्तमान प्लगइन रिलीज़: <code>0.1.0-rc.5</code> &middot; DSH <code>0.2.1-rc.5</code> के साथ परीक्षित</sub>
</p>

<br />

<p align="center">
  <img src="./docs/images/dsh-game-studio-banner.png" alt="DSH Game Studio — एक वाक्य, एक खेलने योग्य गेम" width="100%" />
</p>

<p align="center">
  <img src="./docs/images/dsh-game-studio-overview.png" alt="Game Studio साइडबार में चलता हुआ एक 3D गेम, जिसमें लागू करने के लिए AI आर्ट विकल्प तैयार हैं" width="100%" />
</p>
<p align="center"><sub>जब एजेंट काम करता है तो दाएँ साइडबार में गेम चलता है; इसके नीचे आपके चुनने के लिए क्रमांकित AI आर्ट विकल्प मौजूद रहते हैं</sub></p>

## DSH Game Studio क्यों

सरल शब्दों में एजेंट से एक गेम बनाने को कहें — "एक 3D गेम: एक लाल पांडा जंगल में बाँस के कोपल इकट्ठा करता है और जंगली सूअरों से बचता है" — और वह टेम्पलेट से एक गेम तैयार करता है, उसे चलाकर जाँचता है कि वह ठीक काम कर रहा है या नहीं, और उसे साइडबार में दिखाता है जहाँ आप तुरंत खेल सकते हैं। शुरुआत में किरदार कोड से बने मॉडल होते हैं; जब आपको असली आर्ट चाहिए हो, तो एजेंट OpenAI या आपके Codex साइन-इन की मदद से विकल्प तैयार करता है, आप नंबर से एक चुनते हैं, और गेम में वह आर्ट लग जाती है। हर बदलाव एक वर्ज़न के रूप में सेव होता है जिस पर आप कभी भी वापस जा सकते हैं, और पूरा हुआ गेम एक अकेली ऑफ़लाइन HTML फ़ाइल के रूप में एक्सपोर्ट हो जाता है।

| | |
| --- | --- |
| 🎮 **पहले ही जवाब से खेलने के लिए तैयार** | दो टेम्पलेट्स — एक 2D टॉप-डाउन गेम और एक 3D वॉक्सेल दुनिया (three.js) में वही गेमप्ले लूप — जिन्हें एजेंट आपके बताए हुए गेम में ढाल देता है: किरदार, नियम, लेवल और स्क्रीन। |
| 🖥️ **लाइव साइडबार प्रीव्यू** | गेम चैट के बगल में एक सैंडबॉक्स्ड पैनल में चलता है, हर बदलाव पर फिर से बिल्ड होता है, और उसके नीचे आर्ट स्लॉट, विकल्प और वर्ज़न की सूची दिखाता है। लैंडस्केप गेम्स को चौड़ा स्टेज मिलता है। |
| 🎨 **आपकी अपनी आर्ट, पहले लागत की जाँच के साथ** | `game_studio_generate_asset` OpenAI इमेज API या लोकल Codex CLI की मदद से हर स्लॉट के लिए क्रमांकित विकल्प बनाता है। कुछ भी खर्च होने से पहले आपको सेवा, इमेज की संख्या और अनुमानित लागत के साथ एक मंज़ूरी कार्ड मिलता है। चैट में अटैच की गई तस्वीर को रेफ़रेंस के रूप में इस्तेमाल किया जा सकता है। |
| 🤖 **खुद खेलने वाले प्लेटैस्ट** | `game_studio_playtest` हेडलेस Chrome या Edge में नवीनतम कोड को चलाकर खेलता है और फ़ेज़, स्कोर, फ़्रेम रेट, स्क्रिप्ट एरर और स्क्रीनशॉट की रिपोर्ट देता है। जो गेम्स एरो कीज़ से नहीं चलते (ग्रिड, कार्ड, निशाना लगाना, रिदम…), वे `window.__autoplay` परिभाषित करते हैं, ताकि प्लेटैस्ट उनका असली गेमप्ले लूप खेल सके। |
| 🕰️ **वर्ज़न हिस्ट्री** | गेम में बदलाव करने वाला हर बिल्ड सेव होता है; `game_studio_restore_version` कोड, नियम और आर्ट तीनों को एक साथ वापस ले आता है। |
| 📦 **सिंगल-फ़ाइल एक्सपोर्ट** | `game_studio_export` बिना किसी नेटवर्क एक्सेस वाली एक आत्मनिर्भर HTML फ़ाइल बनाता है — इसे किसी भी ब्राउज़र में खोलें या किसी भी स्टैटिक होस्ट पर डालें। |
| 📱 **अपने फ़ोन पर आज़माएँ** | `game_studio_share` साइडबार में एक QR कोड के साथ आपके लोकल नेटवर्क पर एक अस्थायी रीड-ओनली लिंक — या Cloudflare Quick Tunnel (`cloudflared`) के माध्यम से एक अस्थायी पब्लिक लिंक ताकि किसी भी नेटवर्क पर मौजूद दोस्त खेल सकें — खोलता है। |
| 🌐 **GitHub Pages पर पब्लिश करें** | `game_studio_publish` बिल्ड किए गए HTML (या पूरे गेम वॉल) को आपके साइन-इन किए गए `gh` अकाउंट के अंतर्गत एक पब्लिक रिपॉज़िटरी में पुश करता है और एक स्थायी लिंक के लिए GitHub Pages सक्षम करता है जो आपके कंप्यूटर बंद करने के बाद भी लाइव रहता है। |
| 🗂️ **मेरे गेम** | साइडबार का **+** खोलें और **Game Studio · My games** चुनें: वर्कस्पेस का हर गेम आख़िरी प्लेटेस्ट की तस्वीर वाली टाइल के रूप में दिखता है, 2D/3D फ़िल्टर और तारीख़, वर्शन या नाम से क्रम के साथ। क्लिक करते ही खेलें — न agent, न टोकन। आप अपने गेम्स के साथ-साथ पब्लिश किए गए गेम्स को ब्राउज़ करने और खेलने के लिए ऑनलाइन गेम स्रोतों (`owner/repo`, GitHub रिपॉज़िटरी URL, या GitHub Pages URL) को सब्सक्राइब भी कर सकते हैं। **Export wall** आपके लोकल गेम्स को एक ऑफ़लाइन पेज में बाँधता है जिसे दोस्तों को भेज सकते हैं। |

## इससे बने गेम

हमारे परीक्षणों के चार गेम। हर एक नए सत्र में नीचे लिखे एक वाक्य से शुरू हुआ (प्रॉम्प्ट चीनी से अनूदित); कुछ में बाद में उसी सत्र के अनुरोधों से बदलाव किए गए, जैसा नोट किया है। गेमप्ले हर गेम के अपने ऑटोप्ले से रिकॉर्ड किया गया है।

<p align="center">
  <img src="./docs/images/dsh-game-studio-play-fox-3d.gif" alt="चाँदनी लोमड़ी: लालटेन द्वीप — 3D वॉक्सेल टेम्पलेट, असली गेमप्ले" width="640" />
</p>
<p align="center"><sub>चाँदनी लोमड़ी: लालटेन द्वीप — 3D वॉक्सेल टेम्पलेट, असली गेमप्ले</sub></p>

<table>
<tr>
<td width="50%"><img src="./docs/images/dsh-game-studio-play-moonlit-2d.jpg" alt="एक छोटा गेम बनाओ: एक नन्ही लोमड़ी चाँदनी जंगल में लालटेनें इकट्ठा करे और काँटेदार राक्षसों से बचे।" width="100%" /><br /><sub>“एक छोटा गेम बनाओ: एक नन्ही लोमड़ी चाँदनी जंगल में लालटेनें इकट्ठा करे और काँटेदार राक्षसों से बचे।”<br />2D टेम्पलेट; पात्र बाद में चुनी गई AI आर्ट से बदले गए</sub></td>
<td width="50%"><img src="./docs/images/dsh-game-studio-play-fox-3d.jpg" alt="एक 3D गेम बनाओ: एक नन्ही लोमड़ी वॉक्सेल द्वीप पर लालटेनें इकट्ठा करे और काँटेदार राक्षसों से बचे।" width="100%" /><br /><sub>“एक 3D गेम बनाओ: एक नन्ही लोमड़ी वॉक्सेल द्वीप पर लालटेनें इकट्ठा करे और काँटेदार राक्षसों से बचे।”<br />3D वॉक्सेल टेम्पलेट; लालटेन मॉडल बाद के अनुरोध में दोबारा बना</sub></td>
</tr>
<tr>
<td width="50%"><img src="./docs/images/dsh-game-studio-play-penguin-3d.jpg" alt="एक 3D गेम बनाओ: एक नन्हा पेंगुइन हिमशैल पर मछलियाँ इकट्ठा करे और सीलों से बचे।" width="100%" /><br /><sub>“एक 3D गेम बनाओ: एक नन्हा पेंगुइन हिमशैल पर मछलियाँ इकट्ठा करे और सीलों से बचे।”<br />3D; लाल टोपी बाद के अनुरोध में जोड़ी गई</sub></td>
<td width="50%"><img src="./docs/images/dsh-game-studio-play-panda-3d.jpg" alt="एक 3D गेम बनाओ: एक रेड पांडा बाँस के जंगल में बाँस की कोंपलें इकट्ठा करे और जंगली सूअरों से बचे।" width="100%" /><br /><sub>“एक 3D गेम बनाओ: एक रेड पांडा बाँस के जंगल में बाँस की कोंपलें इकट्ठा करे और जंगली सूअरों से बचे।”<br />3D; पात्र बाद में AI आर्ट से बदले गए, जंगल 3D ही रहा</sub></td>
</tr>
</table>

## यह कितना अच्छा काम करता है

असली DSH में DeepSeek-V4.1-Flash के साथ मापा गया, जहाँ हर गेम एक नए सेशन में एक वाक्य से बनाया गया और एक स्वतंत्र प्लेटैस्ट द्वारा परखा गया (2026-11-04/05):

- **कलेक्ट-एंड-डॉज गेम्स** (टेम्पलेट्स का मुख्य क्षेत्र): 10 में से 10 अलग-अलग अनुरोध पहली ही कोशिश में खेलने योग्य थे, प्रति गेम मध्यमान समय लगभग 14 मिनट रहा।
- **अन्य शैलियाँ (Genres)** — मैच-3, बॉक्स पुशिंग, टावर डिफ़ेंस, बास्केटबॉल, प्लेटफ़ॉर्मर, रिदम, रेसिंग, कार्ड बैटल, फ़ार्मिंग, कैफ़े मैनेजमेंट: सभी 10 खेलने योग्य बने, लेकिन उनमें मध्यमान रूप से लगभग 26 मिनट लगे। `__autoplay`, कस्टम आर्ट स्लॉट और लैंडस्केप सपोर्ट जोड़ने के बाद, उनमें से चार को फिर से चलाया गया और उनमें 8–18 मिनट लगे। यह सैंपल छोटा है।

## टूल्स

| टूल | यह क्या करता है |
| --- | --- |
| `game_studio_create` | `collector` (2D) या `voxel` (3D) टेम्पलेट से एक खेलने योग्य गेम बनाएँ, उसे बिल्ड करें और साइडबार में दिखाएँ। यह शीर्षक, आर्ट स्टाइल, `orientation` (पोर्ट्रेट या लैंडस्केप) और `slots` (उपयोगकर्ता की भाषा में नामित गेम के अपने आर्ट स्लॉट) लेता है। |
| `game_studio_build` | `game.json` या `game.js` को एडिट करने के बाद फिर से बिल्ड करें, प्रीव्यू को रिफ़्रेश करें और एक छोटे नोट के साथ वर्ज़न सेव करें। |
| `game_studio_playtest` | नवीनतम कोड को हेडलेस मोड में (फ़ोन के आकार के पोर्ट्रेट या 960×540 लैंडस्केप में) चलाएँ और फ़ेज़, सर्वश्रेष्ठ स्कोर, हार्ट्स, fps, एरर और स्क्रीनशॉट की रिपोर्ट दें; `characters: true` केवल किरदारों के क्लोज़-अप लौटाता है। |
| `game_studio_generate_asset` | `openai` या `codex` के साथ एक स्लॉट के लिए 1–4 विकल्प इमेज जनरेट करें, वैकल्पिक रूप से किसी रेफ़रेंस तस्वीर का अनुसरण करते हुए। खर्च करने से पहले मंज़ूरी माँगता है। Codex बैकग्राउंड में चलता है। |
| `game_studio_apply_asset` | किसी विकल्प को उसके नंबर से गेम में लगाएँ, फिर से बिल्ड करें और रिफ़्रेश करें। |
| `game_studio_revert_asset` | किसी स्लॉट की पिछली आर्ट पर वापस जाएँ। |
| `game_studio_versions` | सेव किए गए वर्ज़न की सूची दिखाएँ, सबसे नया सबसे पहले। |
| `game_studio_restore_version` | पूरे गेम के किसी पुराने वर्ज़न को रीस्टोर करें। |
| `game_studio_export` | एक आत्मनिर्भर, ऑफ़लाइन HTML फ़ाइल एक्सपोर्ट करें। |
| `game_studio_share` | लोकल नेटवर्क पर एक अस्थायी रीड-ओनली लिंक खोलें (या बंद करें), या `cloudflared` के माध्यम से एक अस्थायी पब्लिक लिंक के लिए `public: true` पास करें ताकि लिंक वाला कोई भी व्यक्ति खेल सके। |
| `game_studio_list` | वर्कस्पेस के गेम्स को शीर्षक, 2D/3D, बिल्ड स्थिति और वर्शन के साथ सूचीबद्ध करता है, ताकि agent "वह पेंगुइन वाला गेम" नाम से ढूँढ सके। |
| `game_studio_export_wall` | गेम वॉल एक्सपोर्ट करता है: हर बने हुए गेम की एक टाइल वाला ऑफ़लाइन HTML पेज; टाइल पर क्लिक करके खेलें। |
| `game_studio_publish` | लोकल साइन-इन किए गए `gh` CLI के माध्यम से बिल्ड किए गए गेम (या गेम वॉल के लिए `wall: true`) को GitHub Pages पर पब्लिश करें, या इसे हटाने के लिए `remove: true` पास करें। यह पहले मंज़ूरी माँगता है और केवल उन्हीं रिपॉज़िटरी में लिखता है जिनमें इसका `.dsh-game-studio.json` मार्कर होता है। |

साइडबार के बटन (apply, revert, build, export, restore, share, publish) `/game-studio` कमांड के माध्यम से इन्हीं ऑपरेशनों को कॉल करते हैं।

## इमेज सेवाएँ और खर्च

| सेवा | इसके लिए क्या चाहिए | लागत | टिप्पणियाँ |
| --- | --- | --- | --- |
| **OpenAI** (GPT Image) | DSH क्रेडेंशियल्स या एनवायरनमेंट में एक API की (डिफ़ॉल्ट रूप से `OPENAI_API_KEY`) | आपकी की (key) पर प्रति इमेज बिल किया जाता है; मंज़ूरी कार्ड में अनुमानित लागत दिखती है | प्रति बैच लगभग एक मिनट। `openaiBaseUrl` किसी भी OpenAI-संगत गेटवे को स्वीकार करता है। |
| **Codex CLI** | Codex इंस्टॉल और साइन इन होना चाहिए (`codex login`) | आपके Codex प्लान में गिना जाता है; किसी API की (key) की आवश्यकता नहीं | प्रति इमेज कई मिनट, बैकग्राउंड में चलता है और पूरा होने पर सूचित करता है। |

`imageProvider: auto` (डिफ़ॉल्ट) तब OpenAI का उपयोग करता है जब उसकी की (key) सेट हो, अन्यथा Codex का उपयोग करता है। `confirmSpending` चालू रहने पर (डिफ़ॉल्ट) जब तक आप कार्ड को मंज़ूरी नहीं देते, तब तक कुछ भी जनरेट नहीं होता। आपके सामने पेश किए जाने से पहले स्प्राइट्स की पारदर्शी बैकग्राउंड और फ़्रेमिंग के लिए जाँच की जाती है और उन्हें स्लॉट के आकार में फ़िट किया जाता है।

## सुरक्षा और गोपनीयता

- गेम्स एक सैंडबॉक्स्ड iframe में कंटेंट सिक्योरिटी पॉलिसी के साथ चलते हैं जो नेटवर्क एक्सेस को ब्लॉक करती है; एक्सपोर्ट की गई फ़ाइलें कोई नेटवर्क रिक्वेस्ट नहीं करतीं।
- आपकी मशीन से बाहर केवल प्रॉम्प्ट्स — और यदि आप देते हैं तो रेफ़रेंस तस्वीर — आपके द्वारा चुनी गई इमेज सेवा को भेजे जाते हैं।
- शेयर लिंक रीड-ओनली होता है, केवल उस गेम का बिल्ड सर्व करता है, और आपके द्वारा निर्धारित समय (डिफ़ॉल्ट रूप से 30 मिनट) के बाद बंद हो जाता है। लोकल लिंक केवल आपके लोकल नेटवर्क पर सुनते हैं; पब्लिक लिंक केवल `127.0.0.1` पर सुनते हैं और आपकी मंज़ूरी के बाद Cloudflare (`trycloudflare.com`) के माध्यम से टनल करते हैं।
- GitHub Pages पर पब्लिश करना (`game_studio_publish`) आपके लोकल साइन-इन किए गए `gh` CLI का उपयोग करता है (प्लगइन कभी भी आपके GitHub टोकन को नहीं छूता), आपकी मंज़ूरी के बाद केवल बिल्ड किए गए HTML को एक **पब्लिक** रिपॉज़िटरी में अपलोड करता है, और किसी भी ऐसी मौजूदा रिपॉज़िटरी में लिखने से मना कर देता है जिसमें इसका `.dsh-game-studio.json` मार्कर नहीं होता।
- ऑनलाइन गेम स्रोत प्रदाता की अपनी साइट पर एक सैंडबॉक्स्ड iframe (`sandbox="allow-scripts"`) के अंदर चलते हैं, जिन्हें DSH या आपके वर्कस्पेस का कोई एक्सेस नहीं होता, और आपके लोकल गेम वॉल को एक्सपोर्ट या पब्लिश करते समय उन्हें कभी भी कॉपी या फ़ॉरवर्ड नहीं किया जाता।
- API कीज़ को DSH क्रेडेंशियल्स या एनवायरनमेंट से पढ़ा जाता है और उन्हें कभी भी प्रोजेक्ट्स, लॉग्स या टूल के परिणामों में नहीं लिखा जाता।

## आवश्यकताएँ

- DeepSeek Harness `0.2.1` या उसके बाद का वर्ज़न (वेब या डेस्कटॉप), Node.js `24.11` या उसके बाद का वर्ज़न।
- प्लेटैस्ट के लिए उसी कंप्यूटर पर Google Chrome या Microsoft Edge।
- AI आर्ट के लिए, या तो एक OpenAI API की (key) या साइन-इन किया हुआ Codex CLI। इन दोनों के बिना भी, गेम्स अपने कोड से बने किरदारों के साथ काम करते हैं।
- वैकल्पिक: अस्थायी पब्लिक शेयर लिंक के लिए `cloudflared` (macOS पर `brew install cloudflared`); GitHub Pages पर पब्लिश करने के लिए `gh` (`brew install gh` और `gh auth login`)।

## DSH में इंस्टॉल करें

npm से किसी DSH प्रोफ़ाइल में इंस्टॉल करें:

```sh
dsh plugin --profile web add @zseven-w/dsh-game-studio@latest
dsh web
```

## त्वरित शुरुआत

किसी वर्कस्पेस फ़ोल्डर में एक सेशन खोलें और उदाहरण के लिए पूछें:

- `एक छोटा गेम बनाओ: एक बिल्ली का बच्चा रसोई में रोबोट वैक्यूम से टकराए बिना सूखी मछलियाँ चुराता है।`
- `एक 3D गेम बनाओ: एक छोटा शूरवीर किले में सिक्के इकट्ठा करता है और कंकालों से बचता है; 60 सेकंड में 20 सिक्के इकट्ठा करने पर जीत मिलती है।`
- `6×6 ग्रिड पर एक मैच-3 गेम बनाओ; जीतने के लिए 60 सेकंड में 1000 अंक पूरे करने होंगे।`

फिर आज़माएँ:

- `AI की मदद से हीरो के लिए 2 नई आर्ट जनरेट करो; मैं साइडबार में से चुन लूँगा।`
- `हीरो के लुक के लिए मेरी अटैच की गई तस्वीर का अनुसरण करो।`
- `इसे एक सिंगल HTML फ़ाइल के रूप में एक्सपोर्ट करो।`

## कॉन्फ़िगरेशन

इन्हें अपनी प्रोफ़ाइल के `cordis.patch.yml` में `config` के अंतर्गत सेट करें:

| विकल्प | डिफ़ॉल्ट | अर्थ |
| --- | --- | --- |
| `imageProvider` | `auto` | `auto`, `openai` या `codex`। |
| `openaiModel` | `gpt-image-2.5-flare` | OpenAI इमेज मॉडल; इसे पिन करें ताकि परिणाम तुलनीय बने रहें। |
| `openaiBaseUrl` | OpenAI | OpenAI-संगत बेस URL, जैसे कि कंपनी का गेटवे। |
| `openaiCredential` | `OPENAI_API_KEY` | की (key) रखने वाले क्रेडेंशियल या एनवायरनमेंट वेरिएबल का नाम। |
| `codexPath` | `PATH` पर या लॉगिन शेल के माध्यम से मिलता है | Codex CLI निष्पादन योग्य फ़ाइल (executable)। |
| `codexModel` | Codex का डिफ़ॉल्ट | Codex इमेज रन के लिए मॉडल। |
| `codexReasoningEffort` | `low` | Codex इमेज रन के लिए रीज़निंग प्रयास (reasoning effort)। |
| `codexTimeoutMinutes` | `15` | इतने मिनट के बाद एक Codex इमेज पर प्रयास छोड़ दें। |
| `confirmSpending` | `true` | हर जनरेशन से पहले मंज़ूरी माँगें। |
| `cloudflaredPath` | `PATH` या Homebrew पर मिलता है | अस्थायी पब्लिक शेयर लिंक के लिए `cloudflared` निष्पादन योग्य फ़ाइल (executable)। |
| `ghPath` | `PATH` या Homebrew पर मिलता है | GitHub Pages पर पब्लिश करने के लिए GitHub CLI (`gh`) निष्पादन योग्य फ़ाइल (executable)। |
| `githubRepo` | `dsh-games` | GitHub Pages के लिए पब्लिक GitHub रिपॉज़िटरी का नाम (आपके साइन-इन किए गए अकाउंट के अंतर्गत)। |

## गेम प्रोजेक्ट फ़ॉर्मेट

हर गेम आपके वर्कस्पेस में एक साधारण फ़ोल्डर होता है:

- `game.json` — शीर्षक, आर्ट स्टाइल, ओरिएंटेशन, आर्ट स्लॉट और नियम। नियम मुक्त-रूप (free-form) में होते हैं: कोई भी की (key) गेम को `window.GAME.rules` के रूप में पास कर दी जाती है।
- `game.js` — गेम का कोड जिसे एजेंट एडिट करता है। यह प्लेटैस्ट के लिए `window.__gameState()`, एरो कीज़ से न चलने वाले गेम्स के लिए वैकल्पिक रूप से `window.__autoplay(state)`, और `window.__renderSlots(size)` उपलब्ध कराता है ताकि साइडबार में कोड से बनाए गए किरदार दिख सकें (2D टेम्पलेट उन्हें `drawCharacter()` में बनाता है)।
- `assets/` — हर स्लॉट की तस्वीर और साथ में `ASSETS.json`, जिसमें यह रिकॉर्ड होता है कि हर तस्वीर कहाँ से आई है। आप किसी स्लॉट की फ़ाइल में सीधे बदलाव (draw) कर सकते हैं; स्टूडियो इसे आपके एडिट के रूप में रिकॉर्ड करता है।
- `dist/index.html` — वर्तमान बिल्ड; `.studio/` में वर्ज़न, विकल्प और प्लेटैस्ट रन रखे जाते हैं।

## डेवलपमेंट

```sh
npm ci
npm run build   # lib/index.js, lib/client.js and the bundled three.js runtime
npm test        # node --test; playtest tests are skipped when no Chrome or Edge is found
```

## इकोसिस्टम

- [DSH Crew](https://github.com/ZSeven-W/dsh-crew) — Claude Code / Codex से DSH एजेंट्स को काम भेजें
- [DSH iOS](https://github.com/ZSeven-W/dsh-ios) — चैट के अंदर एक लाइव iOS Simulator या USB iPhone
- [DSH Android](https://github.com/ZSeven-W/dsh-android) — चैट के अंदर एक लाइव Android एमुलेटर या USB डिवाइस
- [DSH Noema](https://github.com/ZSeven-W/dsh-noema) — DSH के लिए दीर्घकालिक मेमोरी (long-term memory)
- [DSH OpenPencil](https://github.com/ZSeven-W/dsh-openpencil) — चैट के अंदर `.op` डिज़ाइन डॉक्यूमेंट्स का निरीक्षण और संपादन करें

## क्रेडिट और लाइसेंस

- [three.js](https://github.com/mrdoob/three.js) — वॉक्सेल गेम्स में बंडल किया गया 3D रनटाइम (MIT)।
- [qrcode-generator](https://github.com/kazuhikoarase/qrcode-generator) — Kazuhiko Arase — साइडबार के शेयर पैनल में दिखने वाला QR कोड (MIT)।
- [Playwright](https://github.com/microsoft/playwright) (`playwright-core`) — प्लेटैस्ट के लिए ब्राउज़र चलाता है (Apache-2.0; रनटाइम डिपेंडेंसी)।
- टेम्पलेट्स, स्प्राइट्स और वॉक्सेल मॉडल्स इस प्रोजेक्ट की अपनी मौलिक रचना हैं।
- पूरी जानकारी के लिए [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md) देखें।

**लाइसेंस**: MIT
