Сопствен производ · Играј и учи шах
Шаховска платформа, изградена од првиот потег.
chessGM е бесплатна апликација за шах: партии во живо онлајн, ботови налик на луѓе, целосни анализи на партии со коуч со глас, рангирани задачи и курсеви, на англиски, бенгалски и хинди. Шаховскиот engine, серверот, апликациите и гласовниот сервис ги напишавме сами и ги водиме на сопствена инфраструктура.
Кориснички водич: од 0 до 2600+ Користете го со вашиот AI асистент
Во живо на веб и на Google Play (Android). Апликацијата за iOS е во проверка кај Apple: наскоро на App Store.

- Web (PWA)
- Android
- iOS
- iPadOS
- рангирани задачи, секоја проверена со engine
- 15.200
- курсеви, плус патека што почнува од нула
- 60
- Elo против Stockfish 19 ограничен на 3000 (200 партии; сопствена скала на Stockfish)
- +164
- p99 запишување потег при тест на оптоварување со 2.500 истовремени партии
- 3 ms
Во апликацијата
Вистински екрани од апликацијата што е во употреба, како што се појавуваат во описите во продавниците.

Игра во живо за секунди 
Целосна анализа на партија 
Стрелки за грубите грешки и „Види ја варијантата“ 
Чекор по чекор низ подобрата варијанта 
Анализата во темен режим 
Ботови што возвраќаат 
Рангирани задачи 
Учење од нула 
Курсеви за отворања 
Ботови инспирирани од легенди 
Англиски, бенгалски и хинди
Што добиваат играчите
Онлајн игра во живо
Брзо спарување во булет, блиц, рапид и класичен шах, рангирано или за забава, со часовници на серверот, Glicko-2 рејтинзи, пријатели, предизвици, пораки и гледање.
Ботови што играат како луѓе
13 оригинални ликови и ботови инспирирани од јавните партии на познати играчи (без поврзаност). Секој прави грешки какви што би правел човек со неговиот рејтинг.
Анализа на партија со коуч
Стрелки за грубите грешки на таблата, „Види ја варијантата“ со изговорени чекори, ознаки за потезите и панел на коучот што објаснува зошто. Прецизноста е калибрирана според 739 јавни партии од chess.com (типична разлика околу 4 поени), а ознаките за потезите се подесени според Game Review на chess.com. Не е поврзано со chess.com.
Задачи и Puzzle Rush
Околу 15.200 рангирани задачи со теми, совети и дневна задача. Puzzle Rush од 3 мин, 5 мин и Survival, плус онлајн Rush Battle со сопствен рејтинг.
Курсеви со растегнато повторување
30 курсеви за отворања со по околу 50 варијанти, 30 за тактика, курсеви за средишница и ендшпил и патека за почетници од рејтинг 200. Секоја варијанта е проверена со engine и повторувана со FSRS.
Коуч што објаснува и зборува
Нашиот шаховски engine и правила за објаснување, а не чатбот, пишуваат што е најдено, што е пропуштено и зошто потегот бил лош, на англиски, бенгалски и хинди. Гласовен сервис со гласовни модели со отворен код го изговара; гласовите се машински генерирани. Не се повикува надворешен AI сервис.
Работи офлајн и може да ве извести
Задачите, ботовите, играта за двајца и таблата за анализа работат офлајн на веб-страницата и во апликацијата за Android. Известувањата на веб-страницата работат во десктоп и Android прелистувачи; на iPhone, откако страницата ќе се додаде на почетниот екран.
Бесплатно, со дневни граници и согласност
Без купувања во апликацијата. Некои функции имаат бесплатни дневни граници (10 совети, 3 длабоки анализи, 3 повици, 3 игри со гласовен разговор), а наградена реклама во апликациите додава по една од секоја. Новите играчи имаат старт без реклами, а рекламите ги следат изборите на играчот за согласност (персонализирани реклами само со согласност). Најавете се со Google, Apple или е-пошта и избришете ја сметката во апликацијата.
Совладајте ги ботовите, скалило по скалило
Скалила од 13 ботови за вежбање, од најлесниот до најтешкиот, со сопствен водич за секој, партнери за вежбање, анализа на партии што ги залепувате како текст, задачи направени од вашите грешки и зачуван напредок. Никогаш не се поврзува со ботови на други.
Научете како да го победите противникот
Впишете корисничко име од chess.com: вашиот прелистувач ги чита неодамнешните јавни партии на тој играч од јавниот API на chess.com, а chessGM ги претвора во план со чекори и потсетници. Не е поврзано со Chess.com.
Гласовен разговор и повици
Само глас, без видео. Звукот оди директно меѓу двата уреда (преку релеј само кога директна врска не е можна); нашиот сервер ги пренесува пораките за поставување и ништо не се снима ниту чува. Бесплатно секој ден: 3 игри со гласовен разговор и 3 одговорени повици.
Табли и фигури
Наши сопствени сетови фигури и табли на chessGM, плус четири премиум сета оригинален дизајн: Ебонос и чемшир, Кралско злато, Мермер и Кристал. Сите се бесплатни; „Premium“ е само ознака.
Изградено од нула
Секој слој е наш, од правилата на играта до серверот на кој работи.
Еден Go сервер
Една Go бинарна датотека го опслужува HTTP API-то и WebSocket центарот и ги води часовниците на партиите, спарувањето, флотата од 1.200 сметки на домашни ботови (секогаш означени како ботови) и системите за задачи и курсеви.
- Go
- WebSocket
- SQLite (WAL)
- Glicko-2
Наш сопствен шаховски engine
Генерирање потези со bitboard, проверено со perft, и alpha-beta пребарување, сè напишано во Go. Со полна јачина се додава мала невронска мрежа (NNUE) што ја тренирававме сами, главно на отворените оценки на lichess, со некои позиции оценети од Stockfish како учител; не се користат тежини од мрежи на други engine-и. Мери околу 3160 на UCI_Elo скалата на Stockfish 19 (натпревари од 200 партии на 10+0,1, една нишка; претходниот engine мереше 2840), скала што не е FIDE ниту Elo на веб-страница. Поновите верзии се уште посилни. Истиот engine работи на серверот, со поголема мрежа, и компајлиран во WebAssembly во прелистувачот и апликациите, со помала. Game Review, коучот и пониските ботови го користат претходниот замрзнат engine, па нивните бројки остануваат исти.
- Go
- Bitboards
- NNUE
- WebAssembly
Веб-апликација
Статична SvelteKit апликација во TypeScript, со service worker за офлајн игра и јазици што се вчитуваат само кога се потребни.
- SvelteKit
- TypeScript
- Service worker
- PWA
Апликации за iOS и Android
Capacitor апликации со нативна најава, реклами со согласност, push известувања, нативен говор и офлајн копија на апликацијата вградена во iOS верзијата.
- Capacitor
- AdMob
- Firebase Cloud Messaging
- APNs
Гласовен сервис
Сервис за текст во говор во Go со мал C помошник врз sherpa-onnx, што работи со отворени невронски гласовни модели и го кешира кажаното. Истите модели работат и во прелистувачот.
- Go
- C
- sherpa-onnx
- onnxruntime-web
Гласовен разговор и повици
Peer-to-peer WebRTC звук меѓу двата уреда, со релеј кога директната патека е блокирана. Серверот ги пренесува само пораките за поставување и ги брои бесплатните дневни граници.
- WebRTC
- TURN
Операции
Ги водиме серверите сами
Без сервис за game backend помеѓу: наш сопствен сервер, наши сопствени распоредувања, наш сопствен мониторинг.
- Еден самоуправуван Linux сервер зад nginx и Cloudflare, со TLS од крај до крај
- Серверот за игри работи како systemd сервис; WebSocket поврзувањата поминуваат низ nginx
- Распоредување со една команда: билд, качување на издание со временски печат, префрлање, проверка на здравјето, чување на старите изданија за веднаш враќање
- Повеќе распоредувања на ден, секое се префрла за секунди, со страница за чекање за време на рестартот
- SQLite во WAL режим со ноќни бекапи
- Content Security Policy, IP адреси на клиенти од доверба само од Cloudflare, одбиени cross-origin запишувања, граници на стапката на WebSocket
Тешки проблеми што ги решивме
Деловите што играчите никогаш не ги гледаат, со броевите што ги измеривме.
Зачувување на секој потег без забавување на играта
- Проблемот
- Под оптоварување, запишувањето на секој потег директно во базата ги туркаше најбавните запишувања до околу 100 ms.
- Што направивме
- Потезите се групираат и се запишуваат зад играта на секои 250 ms, на SQLite во WAL режим, додека часовниците остануваат на серверот.
Резултат p99 запишување потег од околу 100 ms → 3 ms со 2.500 истовремени партии во тест на оптоварување. Барање за профил 17 ms → 1,1 ms.
Прецизност на која играчите можат да се потпрат
- Проблемот
- Играчите ја споредуваат својата оценка за прецизност со броевите што веќе ги познаваат од големите шаховски страници.
- Што направивме
- Го калибриравме нашиот модел за прецизност на 739 вистински партии според објавените оценки на chess.com (не сме поврзани) и го тестиравме на партии што никогаш не ги видел.
Резултат Типична разлика од околу 4 поени прецизност на задржани партии, со корелација од 0,9. Ознаките за потезите се совпаѓаат со оние на chess.com точно околу половина од времето, а бројките се блиски.
Задачи со точно еден одговор
- Проблемот
- Задача со два добри одговори или една веќе видена како огледална слика му изгледа расипана на играчот.
- Што направивме
- Задачите ги генерираме сами од самоигра на engine и партии на човечки модели. Длабоко пребарување на engine докажува дека секој потег на решавачот е единствен, а дупликатите се отстрануваат, вклучувајќи огледала по боја и по табла.
Резултат Околу 15.200 рангирани задачи, вклучувајќи околу 4.900 нови од последното извршување.
Офлајн на iPhone, а рекламите сепак работат
- Проблемот
- Веб-прегледот на Apple дозволува офлајн service worker-и само со домени врзани за апликација, а домените врзани за апликација го кршат AdMob.
- Што направивме
- Следниот iOS билд носи своја офлајн копија на веб-апликацијата, со нативно споделено складирање што се синхронизира кога ќе се врати врската.
Резултат Целосна офлајн игра на iOS за +0,06 MB големина на апликацијата, во следниот билд за продавницата.
Брзо на бавни мрежи
- Проблемот
- Многу од нашите играчи користат мобилен интернет, а страницата за анализа скокаше додека се вчитуваше.
- Што направивме
- Статичен билд, јазици што се вчитуваат на барање, резервиран простор за секоја табла и панел и кеш на service worker.
Резултат Прво значајно рендирање 2,8 s → 1,0 s на бавен 4G. Поместување на распоредот на страницата за анализа 0,81 → 0.
Резултати што никој не може да ги фалсификува
- Проблемот
- Ранг-листите поттикнуваат мамење кога телефонот одлучува што е точен одговор и колку траело.
- Што направивме
- Одговорите во Puzzle Rush се проверуваат на серверот и се мерат со часовникот на серверот. Ако не се најде човек во рок од 5 секунди, домашен бот се приклучува на Rush Battle и решава со брзина и прецизност моделирани според неговиот рејтинг.
Резултат Фер ранг-листи и ботови што речиси не трошат CPU: ботовите во Rush го симулираат решавањето наместо да го извршуваат engine-от, а потегот на бот во партија трае неколку милисекунди.
Невронска мрежа во engine без GPU фарма
- Проблемот
- Посилен engine требаше да работи во прелистувач и на еден мал сервер, а за тренинг имавме еден Mac и никаков GPU кластер.
- Што направивме
- Обучивме мала NNUE мрежа на отворените оценки на lichess (повеќе податоци беа најголемиот лост: 10M, 20M и 94M позиции дадоа +111 и потоа +99 Elo), ја ажуриравме потег по потег наместо да ја пресметуваме одново и напишавме брз код за процесорите на серверот што се проверува бит по бит со обичната верзија. Промената се објавува само ако натпревар против претходната верзија покаже дека победува.
Резултат +349 ± 37 Elo над претходниот engine во 600 партии на самоигра и 164 Elo над Stockfish 19 ограничен на 3000, а приближно изедначен со него ограничен на 3190 (по 200 партии, 10+0,1; ограничувачот на Stockfish е негова сопствена скала, а не рејтинг-листа).
Бесплатни дневни граници, продолжени со реклама што не може да се фалсификува
- Проблемот
- Играчот може да гледа реклама за уште еден совет, длабока анализа, повик или игра со гласовен разговор, а ништо на самиот телефон не смее да може само да си ја додели таа награда.
- Што направивме
- Серверот ја доделува наградата кога ќе добие потпишана серверска верификација од Google AdMob за прегледот на рекламата (со ограничена резервна опција потврдена од апликацијата) и самиот ги проверува, ограничува и брои наградите и дневните граници.
Резултат Бесплатно секој ден: 10 совети, 3 длабоки анализи, 3 повици и 3 игри со гласовен разговор, и по една повеќе од секоја со наградена реклама (основните вредности; операторот може да ги менува).
Тестирано како производ, не како демо
- Генерирањето потези е проверено со perft на познати позиции
- Промената на engine-от се објавува само ако натпревар против претходната верзија покаже дека победува, а јачината се проверува против Stockfish на фиксни нивоа
- Брз код на engine-от за процесорите на серверот, проверен бит по бит со обичната верзија
- Интеграциски тестови на серверот, тестови на engine-от и тестови на WebAssembly билдот
- Тестови на оптоварување што симулираат илјадници истовремени партии
- Одговори на коучот со глас за 0,3–2 s за нова реченица, веднаш кога е кеширана, со 18 гласови
Технологија
- Go
- SQLite
- WebSocket
- SvelteKit
- TypeScript
- NNUE
- WebAssembly
- WebRTC
- Capacitor
- sherpa-onnx
- nginx
- Cloudflare
- systemd
Сакате игра или апликација во реално време изградена вака?
Дизајнираме, градиме и водиме игри и платформи во реално време од почеток до крај: апликации, сервери, продавници и операции.