आफ्नै उत्पादन · Carrom
साँचो कैरम, हामीले आफैँ लेखेको फिजिक्ससहित।
Carrom सटीक डिस्क फिजिक्ससहित काठको बोर्डमा फोन-पहिलो बोर्ड गेम हो। यसमा बंगलादेश, भारत र पाकिस्तानमा खेलिने 29 Game र Tal Gach सहित पाँच प्रकारका खेल छन्, अनलाइन १ बनाम १ र २ बनाम २, बोट र पालैपालो खेलसहित। एउटै TypeScript कोडबेस वेब, Android र iOS मा चल्छ, र अनलाइन खेल हाम्रै रियलटाइम सर्भरमा चल्छ।
कसरी खेल्ने आफ्नो AI सहायकसँग प्रयोग गर्नुहोस्
वेब, App Store (iPhone र iPad) र Google Play (Android) मा लाइभ।

- Web (PWA)
- Android
- iOS
- iPadOS
- खेल प्रकार, प्रत्येकको आफ्नै नियम इन्जिन
- ५
- स्ट्रोक, ब्राउजर इन्जिनहरूमा बिट-बिट समान
- ४,३२०
- स्वचालित परीक्षण: ३९६ युनिट र १५० ब्राउजर परीक्षण, प्रत्येक ब्राउजर परीक्षण तीन स्क्रिन आकारमा
- ५४०+
- ढिलो गरिएको Fast 3G मा पहिलो लोड
- ≤ ३ s
एपभित्र
पठाइएको एपका साँचा स्क्रिन, स्टोर सूचीमा देखिए जस्तै।

Tal Gach टावर फोड्नुहोस् 
गुलेलीझैँ निशाना लगाउनुहोस् 
एनिमेटेड बोर्ड 
अनलाइन २ बनाम २ 
बोर्ड, स्ट्राइकर र गोटी सेट 
दैनिक चुनौती 
पाँच खेल प्रकार, एक ट्यापमा
खेलाडीले के पाउँछन्
पाँच खेल प्रकार
Classic, 29 Game (पहिले २९), Tal Gach (१९ गोटीको टावर फोड्ने, पहिले १७०), Disc Pool र Freestyle, साथै दैनिक चुनौती र ट्युटोरियल।
अनलाइन १ बनाम १ र २ बनाम २
रेटिङअनुसार Quick Match, खाली सिट भर्ने बोट, निजी कोठा, एप खोल्ने चुनौती लिंक, खुला कोठाको लबी, रिम्याच, इमोट, २० सेकेन्डको पालो घडी र हरेक खेल प्रकारको Elo रेटिङ।
बोट र पालैपालो खेल
४ कठिनाई (सजिलोदेखि विशेषज्ञ) र ४ व्यक्तित्व (सन्तुलित, आक्रामक, रक्षात्मक, ट्रिक-सट) का बोट, प्रत्येकको आफ्नै नाम र झन्डासहित, र एउटै डिभाइसमा २ वा ४ खेलाडीका लागि पालैपालो खेल।
तपाईंसँगै चल्ने प्रगति
सिक्का, एनिमेटेड बोर्ड, स्ट्राइकर र गोटी सेटको पसल, उपलब्धि, तथ्यांक र दैनिक स्ट्रिक। सबै डिभाइसमा राख्न Google वा Apple ले साइन इन गर्नुहोस्।
सञ्चालक उपकरण
हाम्रो एडमिन प्यानलले लाइभ खेल र खेलाडी देखाउँछ, मोडरेसन सम्हाल्छ, खेलाडीलाई सन्देशसहित जुनसुकै खेलाडीका सिक्का समायोजन गर्छ, र एप रिलिजबिना विज्ञापन, अनिवार्य अद्यावधिक, समीक्षा अनुरोध, म्याचमेकिङ स्विच र स्टाइलिङसमेत परिवर्तन गर्छ।
एउटै कोडबेसबाट जताततै
एउटै कोडबेसबाट वेब, Android, iPhone र iPad, र वेब एपका रूपमा इन्स्टल गर्न मिल्ने। कोठा लिंकले एप इन्स्टल छ भने एप, छैन भने वेब गेम खोल्छ।
शून्यदेखि बनाइएको
खेलका नियमदेखि यो चल्ने सर्भरसम्म हरेक तह हाम्रै हो।
गेम क्लाइन्ट
कडा TypeScript, Vite र Canvas 2D, गेम इन्जिन र UI फ्रेमवर्कबिना। घुम्ने बोर्ड र Tal Gach टावरका पूर्वावलोकन शुद्ध CSS 3D हुन्।
- TypeScript
- Vite
- Canvas 2D
- CSS 3D
हाम्रै फिजिक्स
फ्रेम दरदेखि स्वतन्त्र, स्थिर १/१२० s चरणमा इभेन्ट-ड्रिभन डिस्क फिजिक्स: पकेटका जबडा, प्वालमाथि पर्याप्त भाग पुगेपछि मात्र खस्ने गोटी, खडखड फर्कने र फुट्ने टावर। यसले सामान्य-प्रयोजनको फिजिक्स लाइब्रेरीलाई प्रतिस्थापन गर्यो।
- Deterministic
- Seeded randomness
- Headless tests
रियलटाइम ब्याकएन्ड
MongoDB मा हाम्रै Node सर्भर, जसले सानो JSON-over-WebSocket प्रोटोकल बोल्छ: get, set, compare-and-set, watch र presence। यसले Firebase Realtime Database ले मूल्यांकन गर्ने उही सुरक्षा-नियम फाइल मूल्यांकन गर्छ।
- Node.js
- MongoDB
- WebSocket
- esbuild
एप र साइन-इन
Android र iOS का लागि Capacitor एप। Google र Apple साइन-इन Firebase Auth मार्फत चल्छ, र हाम्रो सर्भरले हरेक टोकन आफैँ जाँच्छ। विज्ञापन AdMob बाट आउँछन्, साँचो पैसाको खरिद छैन।
- Capacitor
- Firebase Auth
- AdMob
- App Links
सञ्चालन
सर्भर हामी आफैँ चलाउँछौं
बीचमा कुनै गेम-ब्याकएन्ड सेवा छैन: हाम्रै सर्भर, हाम्रै डिप्लोइ, हाम्रै अनुगमन।
- हाम्रै Linux सर्भर: Cloudflare पछाडि Let’s Encrypt TLS सहित nginx ले खेल पस्कन्छ
- WebSocket, एप कन्फिग र हेल्थ-चेक systemd अन्तर्गतको Node सेवामा प्रोक्सी हुन्छन्
- एडमिन प्यानल आफ्नै सेवाका रूपमा चल्छ र मेसिनभित्र मात्र जवाफ दिने सञ्चालक API बोलाउँछ
- एक कमान्डमा डिप्लोइ: बिल्ड, समयमुद्रित रिलिज अपलोड, स्विच, रिस्टार्ट, हेल्थ-चेक; तुरुन्त रोलब्याकका लागि पछिल्ला ५ रिलिज राखिन्छन्
- Cloudflare मार्फत बंगलादेशबाट करिब २१० ms माध्य राउन्ड ट्रिप (लन्चमा नापिएको)
- Google Play र App Store Connect का लागि स्क्रिप्टबाट एप बिल्ड
- कोठा निमन्त्रणाका लागि Android App Links र iOS युनिभर्सल लिंक
हामीले समाधान गरेका कठिन समस्या
खेलाडीले कहिल्यै नदेख्ने भाग, हामीले नापेका संख्यासहित।
हरेक फोनमा उही फिजिक्स
- समस्या
- अनलाइन खेलमा हरेक फोनले विपक्षीको स्ट्रोक आफैँ सिमुलेट गर्छ। दुई डिभाइसले एउटा संख्या फरक गणना गरे बोर्ड अलग हुन्थे, त्यसैले फिजिक्स जताततै सटीक हुनुपर्थ्यो।
- हामीले के गर्यौं
- सिमुलेसनले हरेक JavaScript इन्जिनमा सटीक हुने कार्य मात्र प्रयोग गर्छ, हाम्रै वर्गमूल-आधारित hypot, log, acos, sin र cos सहित। सबै अनियमितता सिडबाट आउँछ र कोरले घडी कहिल्यै पढ्दैन।
नतिजा Chromium र WebKit इन्जिनमा ४,३२० स्ट्रोक जाँचिए: हरेक बोर्ड बिट-बिट समान।
भेटिएको र बारिएको डिसिंक
- समस्या
- अलि फरक फिजिक्स भएका फरक एप संस्करणका खेलाडीहरू एकसाथ जोडिन्थे, र तिनका बोर्ड नमिल्ने भए।
- हामीले के गर्यौं
- अब प्रोटोकल संस्करणले म्याचमेकिङ र कोठा नियन्त्रण गर्छ, र संस्करण नबढाई फिजिक्स बदलिए फिजिक्स फिंगरप्रिन्ट परीक्षणले बिल्ड असफल बनाउँछ।
नतिजा समान फिजिक्स भएका खेलाडीले मात्र एउटै बोर्ड बाँड्छन्।
निष्पक्ष रूपमा फुट्ने टावर
- समस्या
- Tal Gach मा पहिलो स्ट्रोक १९ गोटीको थुप्रिएको टावरमा लाग्छ। यो साँचो जस्तो महसुस हुनुपर्छ र दुवै खेलाडीका लागि निष्पक्ष।
- हामीले के गर्यौं
- ७०% वा बढी गतिको चोटले तलका एक-दुई गोटी निकाल्छ र टावर उभिइरहन्छ; हल्का चोटले ढाल्छ। अनियमितता सिडबाट आउँछ, त्यसैले हरेक डिभाइसले उही फुट्ने दृश्य देख्छ।
नतिजा बलियो चोटले ९०% पटक तलका गोटी निकाल्छ, हरेक स्क्रिनमा उस्तै।
Mac मा आवाज
- समस्या
- Apple-silicon Mac मा चल्ने iPad एपले AAC वा Opus अडियो डिकोड गर्न सक्दैनथ्यो।
- हामीले के गर्यौं
- एपले आवाज र संगीतका १६-बिट WAV प्रति पठाउँछ, र खेलले तिनलाई आफैँ डिकोड गर्छ।
नतिजा Mac सहित हरेक डिभाइसमा उही आवाज।
खेल नछोई विक्रेता छाड्ने
- समस्या
- अनलाइन खेल Firebase Realtime Database मा सुरु भएको थियो, र हामी खेल नबदली खेलको डेटा आफ्नै सर्भरमा चाहन्थ्यौं।
- हामीले के गर्यौं
- हरेक अनलाइन सुविधा एउटै डाटाबेस इन्टरफेससँग बोल्छ। हाम्रो सर्भरले उही अर्थसहित उही नियम फाइल लागू गर्छ, र पूरा खेल तथा १८० भन्दा बढी अनुमति दिइएका वा अस्वीकृत लेखनको एउटा जाँच सुइट दुवै ब्याकएन्डमा चल्छ।
नतिजा खेलको डेटा अब हाम्रै सर्भरमा छ, र ब्याकएन्ड फेर्नु दुई सेटिङको बिल्ड स्विच हो।
पहिलो हानसम्म छिटो
- समस्या
- साधारण खेलसँग खेलाडीको मन जित्न केही सेकेन्ड हुन्छ, प्रायः ढिलो मोबाइल जडानमा।
- हामीले के गर्यौं
- डाउनलोड गर्ने इन्जिन वा फ्रेमवर्क छैन, पहिलो ट्यापअघि अडियो छैन, र ढिलो जडानमा प्रोडक्सन बिल्ड चलाउने प्रदर्शन परीक्षण।
नतिजा ढिलो गरिएको Fast 3G मा ३ s वा कममा पहिलो लोड।
डेमोजस्तो होइन, उत्पादनजस्तै परीक्षण गरिएको
- स्क्रिनसट आधाररेखासहित फोन, ट्याब्लेट र डेस्कटप आकारमा चल्ने ३९६ युनिट टेस्ट र १५० ब्राउजर टेस्ट (४०० भन्दा बढी रन)
- बोट-विरुद्ध-बोट सन्तुलन रन र मंकी टेस्ट
- डाटाबेस नियमविरुद्ध पूरै अनलाइन खेल खेल्ने इमुलेटर सुइट
- निर्धारणात्मक फिजिक्सका कारण युनिट टेस्टमा हेडलेस रूपमा सिमुलेट गरिएका स्ट्रोक
प्रविधि
- TypeScript
- Vite
- Canvas 2D
- Node.js
- MongoDB
- WebSocket
- Capacitor
- Firebase Auth
- AdMob
- Vitest
- Playwright
- nginx
- Cloudflare
- systemd
यसरी बनाइएको गेम वा रियलटाइम एप चाहनुहुन्छ?
हामी गेम र रियलटाइम प्लेटफर्म सुरुदेखि अन्तसम्म डिजाइन, निर्माण र सञ्चालन गर्छौं: एप, सर्भर, स्टोर र सञ्चालन।