Наш производ · Играј и учи шах

Шаховска платформа, изграђена од првог потеза.

chessGM је бесплатна шаховска апликација: партије уживо онлајн, ботови налик људима, потпуна анализа партија са гласовним тренером, оцењени задаци и курсеви, на енглеском, бенгалском и хинди језику. Шаховски engine, сервер, апликације и гласовни сервис написали смо сами и водимо их на сопственој инфраструктури.

Ради на вебу и на 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 оригиналних ликова и ботови инспирисани јавним партијама познатих играча (нису повезани са њима). Сваки прави грешке какве би направио човек његовог рејтинга.

  • Анализа партије са тренером

    Стрелице за грешке на табли, „See the line“ са изговореним корацима, значке са ознакама потеза и панел тренера који објашњава зашто. Тачност је калибрисана на 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, плус четири премијум сета оригиналног дизајна: Ebony & Boxwood, Royal Gold, Marble и Crystal. Сви су бесплатни; „Premium“ је само ознака.

Направљено од нуле

Сваки слој је наш, од правила игре до сервера на коме ради.

  1. Један Go сервер

    Један Go бинарни фајл опслужује HTTP API и WebSocket чвориште и покреће сатове партија, упаривање, флоту од 1.200 налога ботова (увек означених као ботови) и механизме за задатке и курсеве.

    • Go
    • WebSocket
    • SQLite (WAL)
    • Glicko-2
  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 у прегледачу и апликацијама, са мањом. Анализа партије, тренер и нижи ботови користе ранији замрзнути engine, па њихови бројеви остају исти.

    • Go
    • Bitboards
    • NNUE
    • WebAssembly
  3. Веб апликација

    Статичка SvelteKit апликација у TypeScript-у, са service worker-ом за офлајн игру и језицима који се учитавају само када затребају.

    • SvelteKit
    • TypeScript
    • Service worker
    • PWA
  4. iOS и Android апликације

    Capacitor апликације са native пријавом, огласима уз сагласност, push обавештењима, native говором и офлајн копијом апликације уграђеном у iOS верзију.

    • Capacitor
    • AdMob
    • Firebase Cloud Messaging
    • APNs
  5. Гласовни сервис

    Сервис за претварање текста у говор у Go-у са малим C помоћником на sherpa-onnx-у, који покреће отворене неуронске гласовне моделе и кешира оно што изговори. Исти модели раде и у прегледачу.

    • Go
    • C
    • sherpa-onnx
    • onnxruntime-web
  6. Гласовни чет и позиви

    WebRTC звук између два уређаја, са релејем када је директан пут блокиран. Сервер само преноси поруке за успостављање везе и броји бесплатна дневна ограничења.

    • WebRTC
    • TURN

Операције

Сервере водимо сами

Без посредничког сервиса за back end игре: наш сервер, наше објаве, наш надзор.

  • Један сервер са Linux-ом којим сами управљамо, иза nginx-а и Cloudflare-а, са TLS-ом од краја до краја
  • Сервер игре ради као systemd сервис; WebSocket-ови пролазе кроз nginx
  • Објава једном командом: build, отпремање издања са временском ознаком, пребацивање, провера исправности, старија издања се чувају за тренутни повратак
  • Много објава дневно, свака се пребацује за неколико секунди, уз страницу чекања током поновног покретања
  • SQLite у WAL режиму са ноћним резервним копијама
  • Content Security Policy, IP адресе клијената поуздане само од Cloudflare-а, упис са другог порекла одбијен, ограничења брзине за WebSocket

Тешки проблеми које смо решили

Делови које играчи никада не виде, са бројевима које смо измерили.

  1. Чување сваког потеза без успоравања партије

    Проблем
    Под оптерећењем, директан упис сваког потеза у базу гурао је најспорије уписе на око 100 ms.
    Шта смо урадили
    Потези се групишу и уписују иза партије сваких 250 ms, на SQLite-у у WAL режиму, док сатови остају на серверу.

    Резултат p99 упис потеза са око 100 ms на 3 ms уз 2.500 истовремених партија у тесту оптерећења. Упит за профил са 17 ms на 1,1 ms.

  2. Тачност којој играчи могу да верују

    Проблем
    Играчи пореде свој резултат тачности са бројевима које већ знају са великих шаховских сајтова.
    Шта смо урадили
    Наш модел тачности калибрисали смо на 739 стварних партија према објављеним резултатима са chess.com-а (нисмо повезани) и тестирали га на партијама које никада није видео.

    Резултат Типична разлика од око 4 поена тачности на партијама изван узорка за калибрацију, уз корелацију од 0,9. Ознаке потеза се са chess.com-овим поклапају тачно отприлике у половини случајева, а бројеви су блиски.

  3. Задаци са тачно једним одговором

    Проблем
    Задатак са два добра одговора или један који је играч већ видео у огледалској слици делује покварено.
    Шта смо урадили
    Задатке генеришемо сами из партија engine-а са самим собом и партија људских модела. Дубока претрага engine-а доказује да је сваки потез решавача једини, а дупликати се уклањају, укључујући огледала по боји и по табли.

    Резултат Око 15.200 оцењених задатака, укључујући око 4.900 нових из последњег циклуса.

  4. Офлајн на iPhone-у, а огласи и даље раде

    Проблем
    Apple-ов web view дозвољава офлајн service worker-е само уз домене везане за апликацију, а домени везани за апликацију ломе AdMob.
    Шта смо урадили
    Следећа iOS верзија носи сопствену офлајн копију веб апликације, са native заједничким складиштем које се синхронизује када се веза врати.

    Резултат Потпуна офлајн игра на iOS-у за +0,06 MB величине апликације, у следећој верзији за продавницу.

  5. Брзо и на спорим мрежама

    Проблем
    Многи наши играчи користе мобилне податке, а страница анализе је скакала док се учитавала.
    Шта смо урадили
    Статички build, језици учитани на захтев, резервисан простор за сваку таблу и панел и кеш service worker-а.

    Резултат First contentful paint са 2,8 s на 1,0 s на спором 4G. Померање распореда на страници анализе са 0,81 на 0.

  6. Резултати које нико не може да лажира

    Проблем
    Листе најбољих позивају на варање када телефон одлучује шта је тачан одговор и колико је трајало.
    Шта смо урадили
    Одговори у Puzzle Rush-у проверавају се на серверу, а време мери сат сервера. Ако се у року од 5 секунди не пронађе човек, у Rush Battle се придружује бот, који решава брзином и тачношћу модела његовог рејтинга.

    Резултат Поштене листе најбољих и ботови који готово не троше CPU: Rush ботови симулирају решавање уместо да покрећу engine, а потез бота у партији траје неколико милисекунди.

  7. Неуронска мрежа за 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-ов ограничавач је његова сопствена скала, а не ранг листа).

  8. Бесплатна дневна ограничења, продужена огласом који не може да се лажира

    Проблем
    Играч може да погледа оглас за још један наговештај, дубоку анализу, позив или партију уз гласовни чет, а ништа на самом телефону не сме да може само себи да додели ту награду.
    Шта смо урадили
    Сервер додељује награду када прими потписану верификацију гледања огласа од Google AdMob-а на страни сервера (уз ограничену резервну потврду из апликације), а награде и дневна ограничења сам проверава, ограничава и броји.

    Резултат Бесплатно сваког дана: 10 наговештаја, 3 дубоке анализе, 3 позива и 3 партије уз гласовни чет, и по још једна од сваке уз оглас за награду (подразумеване вредности; оператер их може променити).

Тестирано као производ, а не као демо

  • Генерисање потеза проверено perft-ом на познатим позицијама
  • Измена engine-а се објављује само ако меч против претходне верзије каже да побеђује, а снага се проверава у односу на Stockfish на фиксним нивоима
  • Брз код engine-а за процесоре сервера проверен бит по бит у односу на обичну верзију
  • Интеграциони тестови сервера, тестови engine-а и тестови WebAssembly build-а
  • Тестови оптерећења који симулирају хиљаде истовремених партија
  • Одговори говорног тренера за 0,3–2 s за нову реченицу, тренутно када је у кешу, са 18 гласова

Технологија

  • Go
  • SQLite
  • WebSocket
  • SvelteKit
  • TypeScript
  • NNUE
  • WebAssembly
  • WebRTC
  • Capacitor
  • sherpa-onnx
  • nginx
  • Cloudflare
  • systemd

Carrom: друштвена игра са физиком коју смо сами написали

Погледајте све радове

Желите ли игру или апликацију у реалном времену направљену овако?

Дизајнирамо, градимо и водимо игре и платформе у реалном времену од почетка до краја: апликације, сервере, продавнице и операције.