Produkt i yni · Luaj dhe mëso shah
Një platformë shahu, e ndërtuar nga lëvizja e parë.
chessGM është një aplikacion shahu falas: lojëra online drejtpërdrejt, botë si njerëzit, analiza të plota lojërash me trajner me zë, enigma me vlerësim dhe kurse, në anglisht, bengalisht dhe hindisht. Motorin e shahut, serverin, aplikacionet dhe shërbimin e zërit i shkruam vetë dhe i drejtojmë në infrastrukturën tonë.
Udhëzuesi: 0 deri 2600+ Përdoreni me asistentin tuaj IA
Aktiv në ueb dhe në Google Play (Android). Aplikacioni për iOS është në shqyrtim te Apple: vjen së shpejti në App Store.

- Web (PWA)
- Android
- iOS
- iPadOS
- enigma me vlerësim, secila e verifikuar nga motori
- 15.200
- kurse, plus një rrugë që nis nga zeroja
- 60
- Elo kundër Stockfish 19 të kufizuar në 3000 (200 lojëra; shkalla e vetë Stockfish)
- +164
- p99 i shkrimit të lëvizjes në test ngarkese me 2.500 lojëra njëkohësisht
- 3 ms
Brenda aplikacionit
Ekrane të vërteta nga aplikacioni i publikuar, siç shfaqen në faqet e dyqaneve.

Lojë drejtpërdrejt në sekonda 
Analiza e plotë e lojës 
Shigjeta gabimesh dhe “See the line” 
Ecni nëpër linjën më të mirë 
Analiza në mënyrën e errët 
Botë që ju përgjigjen 
Enigma me vlerësim 
Mësoni nga zeroja 
Kurse hapjesh 
Botë të frymëzuar nga legjendat 
Anglisht, bengalisht dhe hindisht
Çfarë marrin lojtarët
Lojë online drejtpërdrejt
Çiftim i shpejtë në bullet, blitz, rapid dhe klasik, me vlerësim ose pa, me sahate në server, vlerësime Glicko-2, miq, sfida, mesazhe dhe ndjekje ndeshjesh.
Botë që luajnë si njerëzit
13 personazhe origjinalë dhe botë të frymëzuar nga lojërat publike të lojtarëve të famshëm (pa lidhje me ta). Secili bën gabimet që do të bënte një njeri me vlerësimin e tij.
Analiza e lojës me trajner
Shigjeta gabimesh në tabelë, “See the line” me hapa të folur, shenja etiketash lëvizjesh dhe një panel trajneri që shpjegon pse. Saktësia është kalibruar me 739 lojëra publike të chess.com (diferenca tipike rreth 4 pikë) dhe etiketat e lëvizjeve janë përshtatur me Game Review të chess.com. Pa lidhje me chess.com.
Enigma dhe Puzzle Rush
Rreth 15.200 enigma me vlerësim, me tema, ndihma dhe një enigmë ditore. Puzzle Rush në 3 min, 5 min dhe Survival, plus Rush Battle online me vlerësimin e vet.
Kurse me përsëritje të ndarë në kohë
30 kurse hapjesh me rreth 50 linja secili, 30 kurse taktike, mesloje e fundloje, dhe një rrugë fillestare nga vlerësimi 200. Çdo linjë është e verifikuar nga motori dhe rishikohet me FSRS.
Një trajner që shpjegon dhe flet
Motori ynë i shahut dhe rregullat e shpjegimit, jo një chatbot, shkruajnë çfarë u gjet, çfarë u humb dhe pse një lëvizje ishte e keqe, në anglisht, bengalisht dhe hindisht. Një shërbim zëri me modele zëri me burim të hapur e shqipton; zërat janë të gjeneruar nga makina. Nuk thirret asnjë shërbim IA i jashtëm.
Funksionon pa internet dhe mund t’ju njoftojë
Enigmat, botët, lojërat me dy lojtarë dhe tabela e analizës funksionojnë pa internet në faqen e internetit dhe në aplikacionin për Android. Njoftimet e faqes funksionojnë në shfletuesit e desktopit e të Android; në iPhone, pasi faqja shtohet në Ekranin Kryesor.
Falas, me kufij ditorë dhe pëlqim
Pa blerje brenda aplikacionit. Disa veçori kanë kufij ditorë falas (10 ndihma, 3 analiza të thella, 3 thirrje, 3 lojëra me bisedë zanore) dhe një reklamë me shpërblim në aplikacione shton edhe një nga secila. Lojtarët e rinj fillojnë pa reklama dhe reklamat ndjekin zgjedhjet e pëlqimit të lojtarit (reklama të personalizuara vetëm me pëlqim). Hyni me Google, Apple ose email dhe fshini llogarinë tuaj në aplikacion.
Mundni botët, një shkallë në herë
Një shkallë me 13 botë stërvitjeje, nga më i lehti te më i vështiri, me udhëzuesin tonë për secilin, partnerë stërvitjeje, analizë të lojërave që ngjitni si tekst, enigma të bëra nga gabimet tuaja dhe progres të ruajtur. Nuk lidhet kurrë me botët e të tjerëve.
Mësoni si ta mundni kundërshtarin
Shkruani një emër përdoruesi në chess.com: shfletuesi juaj lexon lojërat e fundit publike të atij lojtari nga API-ja publike e të dhënave të chess.com dhe chessGM i kthen në një plan me hapa dhe kujtesa. Pa lidhje me Chess.com.
Bisedë zanore dhe thirrje
Vetëm zë, pa video. Zëri shkon drejtpërdrejt mes dy pajisjeve (përmes një releje vetëm kur lidhja e drejtpërdrejtë nuk është e mundur); serveri ynë kalon vetëm mesazhet e konfigurimit dhe asgjë nuk regjistrohet apo ruhet. Falas çdo ditë: 3 lojëra me bisedë zanore dhe 3 thirrje të përgjigjura.
Tabela dhe figura
Setet tona të figurave dhe tabelat chessGM, plus katër sete premium me grafikë origjinale: Ebony & Boxwood, Royal Gold, Marble dhe Crystal. Të gjitha janë falas; “Premium” është vetëm një etiketë.
Ndërtuar nga e para
Çdo shtresë është e jona, nga rregullat e lojës te serveri ku funksionon.
Një server Go
Një binar i vetëm Go shërben API-në HTTP dhe qendrën WebSocket dhe drejton sahatet e lojës, çiftimin, një flotë me 1.200 llogari botësh shtëpiakë (gjithmonë të shënuara si botë) dhe motorët e enigmave e kurseve.
- Go
- WebSocket
- SQLite (WAL)
- Glicko-2
Motori ynë i shahut
Gjenerim lëvizjesh me bitboard i verifikuar me perft dhe kërkim alfa-beta, i gjithë i shkruar në Go. Fuqia e plotë shton një rrjet të vogël nervor (NNUE) që e stërvitëm vetë, kryesisht me vlerësimet e hapura të lichess, me disa pozicione të pikëzuara nga Stockfish si mësues; nuk përdoren peshat e rrjetit të asnjë motori tjetër. Mat rreth 3160 në shkallën UCI_Elo të Stockfish 19 (ndeshje me 200 lojëra në 10+0,1, një fije; motori i mëparshëm mati 2840), një shkallë që nuk është Elo e FIDE-s ose e faqes. Versionet më të reja janë edhe më të forta. I njëjti motor funksionon në server, me rrjet më të madh, dhe i kompiluar në WebAssembly në shfletues e aplikacione, me një më të vogël. Game Review, trajneri dhe botët e ulët përdorin motorin e mëparshëm të ngrirë, kështu që shifrat e tyre mbeten të njëjta.
- Go
- Bitboards
- NNUE
- WebAssembly
Aplikacioni në ueb
Një aplikacion statik SvelteKit në TypeScript, me service worker për lojë pa internet dhe gjuhë që ngarkohen vetëm kur nevojiten.
- SvelteKit
- TypeScript
- Service worker
- PWA
Aplikacionet iOS dhe Android
Aplikacione Capacitor me hyrje native, reklama me pëlqim, njoftime push, të folur native dhe një kopje offline të aplikacionit të ndërtuar brenda versionit iOS.
- Capacitor
- AdMob
- Firebase Cloud Messaging
- APNs
Shërbimi i zërit
Një shërbim tekst-në-zë në Go me një ndihmës të vogël C mbi sherpa-onnx, që ekzekuton modele zëri nervore me burim të hapur dhe ruan në cache atë që thotë. Të njëjtat modele funksionojnë edhe në shfletues.
- Go
- C
- sherpa-onnx
- onnxruntime-web
Bisedë zanore dhe thirrje
Zë WebRTC peer-to-peer mes dy pajisjeve, me një relé kur rruga e drejtpërdrejtë bllokohet. Serveri kalon vetëm mesazhet e konfigurimit dhe numëron kufijtë ditorë falas.
- WebRTC
- TURN
Operacionet
I drejtojmë vetë serverat
Pa shërbim backend loje në mes: serveri ynë, vendosjet tona, monitorimi ynë.
- Një server Linux i vetëmenaxhuar pas nginx dhe Cloudflare, me TLS nga skaji në skaj
- Serveri i lojës funksionon si shërbim systemd; WebSockets kalojnë përmes nginx
- Vendosje me një komandë: ndërtim, ngarkim i një lëshimi me vulë kohe, ndërrim, kontroll shëndeti, ruajtje e lëshimeve të vjetra për rikthim të menjëhershëm
- Shumë vendosje në ditë, secila ndërrohet në sekonda, me një faqe pritjeje gjatë rinisjes
- SQLite në mënyrën WAL me kopje rezervë çdo natë
- Content Security Policy, IP-të e klientëve të besuara vetëm nga Cloudflare, shkrime ndërdomenore të refuzuara, kufizime shpejtësie për WebSocket
Probleme të vështira që zgjidhëm
Pjesët që lojtarët nuk i shohin kurrë, me shifrat që matëm.
Ruajtja e çdo lëvizjeje pa e ngadalësuar lojën
- Problemi
- Nën ngarkesë, shkrimi i çdo lëvizjeje drejtpërdrejt në bazën e të dhënave i çoi shkrimet më të ngadalta në rreth 100 ms.
- Çfarë bëmë
- Lëvizjet grumbullohen dhe shkruhen pas lojës çdo 250 ms, në SQLite me mënyrën WAL, ndërsa sahatet mbeten në server.
Rezultati p99 i shkrimit të lëvizjes rreth 100 ms → 3 ms me 2.500 lojëra njëkohësisht në test ngarkese. Kërkesa e profilit 17 ms → 1,1 ms.
Saktësi që lojtarët mund t’i besojnë
- Problemi
- Lojtarët e krahasojnë pikët e saktësisë me shifrat që tashmë i njohin nga faqet e mëdha të shahut.
- Çfarë bëmë
- E kalibruam modelin e saktësisë me 739 lojëra reale kundër pikëve të publikuara të chess.com (pa lidhje me ta) dhe e testuam në lojëra që nuk i kishte parë kurrë.
Rezultati Një diferencë tipike rreth 4 pikë saktësie në lojëra të pa përdorura për kalibrim, me korrelacion 0,9. Etiketat e lëvizjeve përputhen saktësisht me ato të chess.com rreth gjysmën e herëve, dhe numrat janë të afërt.
Enigma me saktësisht një përgjigje
- Problemi
- Një enigmë me dy përgjigje të mira, ose një e parë tashmë si pasqyrë, i duket lojtarit e prishur.
- Çfarë bëmë
- Gjenerojmë enigma brenda ekipit nga vetë-lojë e motorit dhe lojëra të modelit njerëzor. Një kërkim i thellë i motorit provon se çdo lëvizje e zgjidhësit është e vetmja, dhe dublikatat hiqen, përfshirë pasqyrat e ngjyrës dhe të tabelës.
Rezultati Rreth 15.200 enigma me vlerësim, përfshirë rreth 4.900 të reja nga xhirimi i fundit.
Pa internet në iPhone, me reklamat që funksionojnë
- Problemi
- Web view i Apple lejon service worker offline vetëm me domene të lidhura me aplikacionin, dhe këto domene prishin AdMob.
- Çfarë bëmë
- Ndërtimi i ardhshëm iOS mbart kopjen e vet offline të aplikacionit në ueb, me ruajtje native të përbashkët që sinkronizohet kur kthehet lidhja.
Rezultati Lojë e plotë pa internet në iOS me +0,06 MB madhësi aplikacioni, në ndërtimin e ardhshëm për dyqan.
I shpejtë në rrjete të ngadalta
- Problemi
- Shumë nga lojtarët tanë janë me të dhëna celulare, dhe faqja e analizës kërcente gjatë ngarkimit.
- Çfarë bëmë
- Një ndërtim statik, gjuhë të ngarkuara sipas nevojës, hapësirë e rezervuar për çdo tabelë e panel dhe cache me service worker.
Rezultati First contentful paint 2,8 s → 1,0 s në 4G të ngadaltë. Layout shift në faqen e analizës 0,81 → 0.
Pikë që askush nuk mund t’i falsifikojë
- Problemi
- Klasifikimet ftojnë mashtrim kur telefoni vendos çfarë llogaritet përgjigje e saktë dhe sa zgjati.
- Çfarë bëmë
- Përgjigjet e Puzzle Rush kontrollohen në server dhe maten me sahatin e serverit. Nëse brenda 5 sekondave nuk gjendet njeri, një bot shtëpiak bashkohet në Rush Battle, duke zgjidhur me shpejtësi dhe saktësi të modeluar sipas vlerësimit të tij.
Rezultati Klasifikime të drejta, dhe botë që kushtojnë pothuajse aspak CPU: botët e Rush e simulojnë zgjidhjen në vend që të ekzekutojnë motorin, dhe një lëvizje boti në lojë zgjat disa milisekonda.
Motor me rrjet nervor pa fermë GPU-sh
- Problemi
- Një motor më i fortë duhej të funksiononte në shfletues dhe në një server të vogël, dhe stërvitja kishte një Mac dhe asnjë grup GPU.
- Çfarë bëmë
- Stërvitëm një rrjet të vogël NNUE me vlerësimet e hapura të lichess (më shumë të dhëna ishte leva më e madhe: 10M, 20M dhe 94M pozicione dhanë +111 e pastaj +99 Elo), e përditësuam lëvizje pas lëvizjeje në vend që ta rillogarisnim, dhe shkruam kod të shpejtë për procesorët e serverit që kontrollohet bit për bit me versionin e thjeshtë. Një ndryshim del vetëm nëse një ndeshje kundër versionit të mëparshëm thotë se fiton.
Rezultati +349 ± 37 Elo mbi motorin e mëparshëm në 600 lojëra vetë-loje, dhe 164 Elo mbi Stockfish 19 të kufizuar në 3000 e afërsisht në nivel me të kur kufizohet në 3190 (200 lojëra secili, 10+0,1; kufizuesi i Stockfish është shkalla e vet, jo listë vlerësimesh).
Kufij ditorë falas, të zgjatur nga një reklamë që nuk mund të falsifikohet
- Problemi
- Një lojtar mund të shohë një reklamë për një ndihmë, analizë të thellë, thirrje ose lojë me bisedë zanore më shumë, dhe asgjë vetëm në telefon nuk duhet të mund ta japë vetë këtë shpërblim.
- Çfarë bëmë
- Serveri e jep shpërblimin kur merr verifikimin e nënshkruar server-side të Google AdMob për shikimin e reklamës (me një zgjidhje rezervë të kufizuar të konfirmuar nga aplikacioni), dhe vetë verifikon, kufizon e numëron shpërblimet dhe kufijtë ditorë.
Rezultati Falas çdo ditë: 10 ndihma, 3 analiza të thella, 3 thirrje dhe 3 lojëra me bisedë zanore, dhe një më shumë nga secila për çdo reklamë me shpërblim (vlerat parazgjedhëse; operatori mund t’i ndryshojë).
Testuar si produkt, jo si demo
- Gjenerimi i lëvizjeve i verifikuar me perft kundër pozicioneve të njohura
- Një ndryshim i motorit del vetëm nëse një ndeshje kundër versionit të mëparshëm thotë se fiton, dhe fuqia kontrollohet kundër Stockfish në nivele të fiksuara
- Kod i shpejtë i motorit për procesorët e serverit i kontrolluar bit për bit me versionin e thjeshtë
- Teste integrimi të serverit, teste motori dhe teste ndërtimi WebAssembly
- Teste ngarkese që simulojnë mijëra lojëra njëkohësisht
- Përgjigje të folura të trajnerit për 0,3–2 s për një fjali të re, menjëherë kur është në cache, me 18 zëra
Teknologjia
- Go
- SQLite
- WebSocket
- SvelteKit
- TypeScript
- NNUE
- WebAssembly
- WebRTC
- Capacitor
- sherpa-onnx
- nginx
- Cloudflare
- systemd
Dëshironi një lojë ose aplikacion realtime të ndërtuar kështu?
Projektojmë, ndërtojmë dhe drejtojmë lojëra dhe platforma realtime nga fillimi në fund: aplikacione, servera, dyqane dhe operacione.