Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Numërues pikësh për lojërat e një tavoline. Zëvendëson fletën e Google Sheets-it: shënon pikët e secilit raund dhe nxjerr vetë totalet, renditjen dhe shlyerjen. Pishpiriku është i vetmi që fitohet nga ana tjetër, dhe ekrani e thotë atë me fjalë: renditja, kurora dhe fjalia e fundit e lexojnë drejtimin nga vetë loja.查看完整 README ↗
Numërues pikësh për lojërat e një tavoline. Zëvendëson fletën e Google Sheets-it: shënon pikët e secilit raund dhe nxjerr vetë totalet, renditjen dhe shlyerjen.
Katër lojëra, një grup, një bazë:
| Loja | Raundi | Mbaron | Fiton |
|---|---|---|---|
| Bridzh — xhin-rami kosovar me 14 letra, hapja me 51 pikë | pikët e secilit, ose llogaritësi hant/normal | pas dy raundeve për lojtar | totali më i vogël |
| Magarec — loja e shkronjave | një prekje: kush e humbi | kur dikujt i mbushet fjala „MAGAREC" | më pak shkronja |
| Domina — gurët e mbetur në dorë | pikët e secilit | kur dikujt i mbushet kufiri | totali më i vogël |
| Pishpirik — 25 pikë për dorë, plus 10 për çdo pishpirik | pikët e dorës | kur dikush arrin kufirin | totali më i madh |
Pishpiriku është i vetmi që fitohet nga ana tjetër, dhe ekrani e thotë atë me fjalë: renditja, kurora dhe fjalia e fundit e lexojnë drejtimin nga vetë loja.
Grupe dhe lojtarë — shoqëria futet një herë, e tërë me një shkrim («alfa, beta, gama, delta»), dhe radha e emrave ruhet.
Zgjedhje para lojës — grupi mund të ketë gjashtë të rregullt dhe sonte të luajnë katër.
Shtim mes lojës — kush ulet te tavolina në raundin e pestë shtohet aty për aty, nga grupi ose si emër krejt i ri; raundet e shkuara nuk i preken dhe totali i tij nis nga hera e parë që shënon.
Futje e raundit — një numër për lojtar, ose përmes llogaritësit hant/normal, i cili e ruan raundin vetë me një prekje. Kush mbylli zgjidhet duke prekur emrin, jo nga një listë e shpalosur.
Mbledhësja e dorës — çdo fushë pikësh ka një kuti me tastierë të vetën që i mbledh letrat ose gurët një nga një («10 + 15 + 5»), sepse tastiera numerike e telefonit nuk ka «+». Termat rrinë të dukshëm derisa të shtypet «Gati».
Data ditë/muaj/vit — shkruhet me numra dhe vijat dalin vetë; poshtë saj rri data me fjalë, që të mos ngatërrohet ditë me muaj.
Rregullat brenda aplikacionit — çdo lojë i ka të vetat te një panel i mbledhur, te ekrani ku zgjidhet çka luhet dhe te ai i lojës: si shënohet raundi, sa vlen çka, dhe me çka mbaron mbrëmja. Deri ku luhet nuk shkruhet atje — atë e zgjedh tavolina për çdo mbrëmje.
Çka luhet — zgjidhet para lojës, dhe çelësi nis te loja e fundit e grupit. Te magareci raundi ka një pyetje të vetme: kush e humbi. Prekja e emrit e ruan raundin, shkronja shkon te ai, e rrjeti M-A-G-A-R-E-C tregon ku janë të gjithë.
Domina dhe pishpirik — i njëjti rrjet fushash si te bridzhi, pa llogaritës: numri numërohet te tavolina, ku janë gurët e letrat. Mbrëmja mbaron kur dikush e arrin kufirin që u zgjodh kur nisi — ose kurrë, nëse u nis «pa kufi» — dhe fjalia e fundit e thotë se kush e arriti.
Renditja — sipas totalit, në drejtimin që e fiton loja: i pari është ai me më pak pikë kudo veç pishpirikut. Kur nuk kanë luajtur të gjithë njësoj, shtohet kolona „raunde" dhe një shënim. Barazimi te kreu nuk fshihet: kurora u shkon të gjithëve që e ndajnë totalin më të vogël.
Dy raunde për lojtar — aq zgjat një lojë bridzhi, pra tavolina rrotullohet dy herë. Kreu tregon «4 nga 8 raunde», dhe kur mbushen futja mbyllet me fituesin, si te magareci kur mbushet fjala. Raundi i shënuar gabim rregullohet nga lista, dhe kush u ul vonë shtohet te lojtarët — mbrëmja zgjatet vetvetiu.
Kush përzien — radha e emrave është radha e tavolinës, prandaj krah titullit të raundit rri kush i përzien letrat; kalon një vend çdo raund.
Sa zgjat mbrëmja — kreu tregon orën kur u hap fleta dhe sa kohë ka që luhet («nisi 20:45 · 2 orë e 15 min»); sapo mbrëmja mbaron, numri ngrin te sa zgjati vërtet («20:45–23:55 · 3 orë e 10 min») dhe historiku i grupit e mban atë gjatësi. Fundi është raundi i fundit i shënuar e jo çasti kur u shtyp «Mbyll» — fleta mbyllet ndonjëherë gjysmë ore më vonë, dhe ajo gjysmë orë nuk u luajt. Kur ora nuk dihet — një fletë e kthyer nga një kopje e vjetër, ose një mbrëmje e rihapur pas një jave — nuk shkruhet numër fare.
Parashikimi — kush e arrin dot ende vendin e parë me raundet që kanë mbetur, dhe brenda sa raundeve. Tabela jep vendin më të mirë e më të keq që mund të arrijë secili, për raundin tjetër ose deri në fund. Numrat vijnë nga vetë rregulli: një raund mbyll 240 pikë diferencë te bridzhi, dhe një shkronjë te magareci. Te domina e pishpiriku blloku nuk del fare: sa bën një dorë atje nuk e thotë rregulli, dhe një parashikim pa kufij do të ishte numër i shpikur.
Shlyerja — matrica N×N e diferencave, matrica[i][j] = total[i] − total[j],
me lojtarët sipas renditjes. Del te bridzhi e te domina; te magareci e te
pishpiriku jo, sepse atje diferenca nuk paguhet me para.
Historik sipas ditës — një grup ka shumë lojëra, edhe dy të njëjtën ditë, secila me renditjen e vet përfundimtare aty për aty.
Të përgjithshmet — një tabelë për secilën lojë që grupi ka luajtur: lojëra, fitore dhe totali mesatar, e llogaritur nga vetë raundet. Tabelat rrinë të ndara sepse numrat nuk janë të njëjtë lloj — pikë bridzhi, pikë domine, shkronja, pikë pishpiriku.
Redaktim dhe fshirje — çdo raund ndryshohet pas ruajtjes; gjithçka rillogaritet vetvetiu.
Pikët drejtpërdrejt — kush rri rreth tavolinës i shikon pikët në telefonin e vet, dhe raundi i ri del vetë. Lidhja bëhet drejt mes telefonave me një kanal WebRTC, në dy mënyra:
Ose një fotografi e çastit — rezultati shkon brenda vetë adresës dhe adresa bëhet kod QR. Punon edhe atje ku rrjeta i ndan pajisjet nga njëra-tjetra, dhe edhe nëpër mesazh.
Të dyja hapen edhe në një telefon që nuk e ka aplikacionin, dhe asnjëra nuk lexon as shkruan në bazën e tij. Pamja që hapet nis me përmbledhjen — kush prin, sa vjen i dyti prapa, sa raunde kanë mbetur dhe kush përzien — dhe ka «Unë jam …»: prek emrin tënd, dhe del rreshti yt i matricës, kujt sa i del.
Mbrëmja e luajtur te telefoni — bridzhi tani luhet edhe drejtpërdrejt mes telefonave, me bridzh-online, dhe kur mbaron atje nxirret si skedar. Paneli «Sill një mbrëmje» te ekrani i grupit e hap atë skedar dhe i shton raundet e tij te ai grup. Shton, nuk zëvendëson — ndryshe nga kopja rezervë, e cila e kthen tërë bazën. Ndarja mbetet ajo që ishte: atje ndahen letrat, këtu numërohen pikët.
Kopje rezervë — nxjerrja dhe kthimi i tërë historikut si një skedar JSON.
Sinkronizim mes pajisjeve, i zgjedhur — nëse i do të njëjtat mbrëmje te telefoni dhe te tableti, lidh projektin tënd Supabase: adresën dhe çelësin i shkruan vetë, baza është e jotja, llogaria ekziston vetëm brenda saj, dhe Tavolina nuk ka server të vetin as atëherë. Asnjë projekt nuk vjen i gatshëm me aplikacionin — pa ato dy fusha nuk niset asnjë kërkesë. Rri e fikur derisa ta lidhësh me dorë; pajisja e sapolidhur vetëm lexon derisa t'i thuash cila anë është e vërteta.
Punon pa internet, dhe instalohet — një punëtor shërbimi i ruan skedarët e faqes me hapjen e parë, prandaj aplikacioni hapet i plotë edhe në «mënyrë avioni», dhe shtohet te ekrani kryesor i telefonit si aplikacion më vete. Kur del një version i ri, ai pret: fundfaqja e thotë, dhe kalimi bëhet me një prekje — kurrë nën këmbët e një loje që po shënohet.
Punon pa internet. Të dhënat rrinë në shfletuesin e pajisjes — dhe, vetëm nëse e lidh vetë, edhe te projekti yt Supabase.
Pikët, emrat dhe raundet rrinë te telefoni, dhe dalin vetëm kur i nxjerr vetë përdoruesi — një kopje rezervë, një kod QR, një lidhje e drejtpërdrejtë.
Tri gjëra të tjera prekin një server, dhe të tria thuhen te ekrani aty ku përdoren:
/loja/[id] ose /shiko, e asgjë tjetër. Adresa e vërtetë nuk del kurrë:
brenda saj rri mbrëmja e ndarë, prandaj pastrohet para se të nisë. Pa cookie
dhe pa asgjë të mbajtur mend për vizitorin.row level security i skriptit bën që rreshtat e një llogarie t'i shohë vetëm
ajo. Kërkon ta lidhësh me dorë; pa këtë, asnjë kërkesë nuk del.Për ta pasur atë numërim, «Web Analytics» ndizet një herë te paneli i projektit
te Vercel; skripti vjen nga vetë domeni (/_vercel/insights/…), prandaj asnjë
host i huaj nuk kërkohet me hapjen e faqes.
Nuk të duhet një projekt për çdo aplikacion. Tavolina i shkruan mbrëmjet vetëm
te tavolina_records, dhe politika, trigger-i e indeksi e mbajnë emrin e asaj
tabele — pra nuk përplasen dot me tabelën e një aplikacioni tjetër te e njëjta
bazë. Skripti i konfigurimit e krijon atë tabelë e nuk prek asgjë tjetër që
gjendet aty, dhe ekzekutimi i dytë nuk ndryshon gjë.
Pra një projekt i vetëm mban njëkohësisht Tavolinën (tavolina_records),
FinanCarePersonal
(financare_records) dhe GuestSeat
(guestseat_records). Rreshtat i ndan kolona user_id dhe i njëjti rregull
row level security, prandaj një llogari e vetme — i njëjti email e fjalëkalim —
hyn te të tria: te i pari shtypet «Krijo llogari», te dy të tjerët «Hyr».
Dy gjëra duhen ditur:
redirect_to), prandaj mjafton ta shtosh atë adresë te Redirect URLs.Cili rresht i kujt është e thotë vetë emri i tabelës, prandaj asnjë nga të
tre nuk mban një kolonë që e përsërit — do të ishte vlerë e derivuar e ruajtur
(pika 2). Kur ajo kolonë duhet vërtet, për ta lexuar bazën si një e tërë, skripti
sql/tri-aplikacionet.sql
te FinanCarePersonal e nxjerr kur lexohet: dy pamje mbi tri tabelat, njëra me
kolonën app dhe tjetra me kohën kur secili aplikacion e preku projektin së
fundi. Ekzekutohet një herë te SQL Editor-i dhe nuk prek asnjë rresht.
Anash kësaj ka edhe një përfitim që nuk ka të bëjë me kodin: plani falas i Supabase-it e ndal një projekt që rri disa ditë pa u prekur. Një projekt që e përdorin disa aplikacione nuk rri pa u prekur — prandaj mbrëmjet e një shoqërie që luan një herë në muaj rrinë gjallë mbi shpinën e një libri llogarish që hapet çdo ditë.
Hapja lejohet me 51 pikë kombinimesh prej një dore me 14 letra. Raundin e mbyll ai që i ka hedhur të gjitha letrat dhe e mbaron me letrën e fundit, pa i mbetur asnjë në dorë. Dy mbyllje:
| Mbyllësi | Të tjerët që s’hapën | Të tjerët që kishin hapur | |
|---|---|---|---|
| Hant — mbylli pa hedhur e pa shitur asnjë letër | −40 | +200 | 2 × pikët në dorë |
| Normal — kishte hapur më parë | −20 | +100 | pikët në dorë |
„I hapur" është lojtari që ka hedhur së paku një letër ose i ka shitur një letër dikujt atë raund.
Llogaritësi i zbaton këto rregulla dhe e ruan raundin ashtu si i llogarit — një prekje për raundin që bie brenda tyre. Fushat e numrave mbeten gjithmonë të redaktueshme, dhe «Vendosi te fushat» i shkruan pikët aty pa i ruajtur: te fletët e vjetra ka raunde që nuk dalin nga rregullat, dhe një aplikacion që pranon vetëm kombinimet e lejuara nuk do t’i shënonte dot.
Asnjëra nuk ka llogaritës: numri vjen i numëruar nga tavolina.
| Raundi | Deri te | Fiton | |
|---|---|---|---|
| Domina | sa gurë i mbetën secilit në dorë | 100 a 250 pikë | totali më i vogël |
| Pishpirik | pikët e dorës — 25 gjithsej, plus 10 për çdo pishpirik (15 me fant) | 101, 120 a 151 pikë | totali më i madh |
Deri ku luhet zgjidhet kur nis mbrëmja, sepse kjo është marrëveshje e tavolinës e jo rregull i lojës — dhe «Pa kufi» rri krah numrave, për mbrëmjen që mbaron kur ngrihet shoqëria. Ndërrohet edhe mes lojës, nga rreshti «Deri te …»: nëse dikush e ka kaluar tashmë numrin e ri, fleta mbyllet aty për aty, dhe rihapet po aq lehtë.
Te pishpiriku një dorë e plotë ndan 25 pikë: nga një për secilin as, dam, mbret, fant e dhjetë (22 me dhjetën e bastunit dy e dyshin e lules një), dhe tri për shumicën e letrave — 27 a më shumë, e askujt kur tavolina ndahet baras. Një pishpirik vlen 10, dhe 15 kur letra që e bën është fant. Ata numra rrinë shkruar nën fushat, që një dorë e numëruar gabim të bjerë në sy para se të ruhet.
Një shkronjë për raund, dhe shtatë shkronja e mbarojnë mbrëmjen:
| E humbi raundin | merr shkronjën e radhës nga „MAGAREC" |
| E mbushi fjalën | e humbi mbrëmjen; loja mbaron aty |
Shkronjat nuk ruhen askund: raundi shkruhet si 1 për humbësin e 0 për të
tjerët, dhe fjala del nga numri. Prandaj fshirja ose ndërrimi i një raundi të
mesit i rinumëron vetvetiu të gjitha shkronjat pas tij.
npm install
npm run dev # serveri i zhvillimit
npm run build # tsc --noEmit && vite build && vite build -c vite.punetori.config.ts
npm run preview
npm test # node --test — 257 prova, pa framework provash
npm test para çdo commit-i.
src/
main.tsx pikënisja
App.tsx shpërndarja e rrugëve
rruga.ts rrugëtimi me hash
tipet.ts tipet e të dhënave
lojerat.ts regjistri i katër lojërave: kush fiton, me çka mbaron
mbrëmja, a ka llogaritës, a shlyhet — pa DOM, pa bazë
llogaritjet.ts totalet, renditja, matrica, gjatësia e lojës dhe kush
përzien — pa DOM, pa bazë;
`permbledhja` i jep totalet, raundet e luajtura dhe
barazinë e pjesëmarrjes me një kalim të vetëm
pikezimi.ts rregullat hant/normal — pa DOM, pa bazë
magareci.ts shkronjat, fjala dhe magareci i mbrëmjes — pa DOM, pa bazë
parashikimi.ts vendi më i mirë e më i keq i arritshëm, raundet që duhen
për vendin e parë, dhe sa raunde i kanë mbetur mbrëmjes —
pa DOM, pa bazë
ruajtja.ts IndexedDB përmes `idb`
kopja.ts nxjerrja dhe leximi i kopjes rezervë
bashkimi.ts rregullat e sinkronizimit: kush fiton, çka dërgohet, çka
zbatohet — pa DOM, pa bazë, pa rrjetë
skema.ts migrimet SQL të projektit të përdoruesit — pa DOM
projekti.ts adresa, çelësi dhe mesazhet e gabimit — pa DOM, pa rrjetë
identiteti.ts `uid`-i i një regjistri dhe emri i një pajisjeje — pa DOM
supabase.ts klienti i vogël mbi `fetch`, dhe konfigurimi i ruajtur
sinkronizimi.ts shkarko, zbato, dërgo — dhe katër format e një lidhjeje
pajisja.ts emri e id-ja e këtij shfletuesi
koha.ts ora e hapjes, fundi i mbrëmjes dhe sa zgjati — pa DOM,
pa bazë
fusha.ts teksti i fushës së pikëve, shenja e tij dhe data
mbledhja.ts mbledhja e dorës: termat, fshirja prapa dhe shuma —
pa DOM, pa React
versioni.ts versioni i `package.json`-it, i futur gjatë ndërtimit
qr.ts kodues QR i shkruar me dorë (byte, niveli L, v1–20)
paketa.ts base64 i sigurt për adresa, dhe nënshkrimi
kodi.ts kodi tetëkarakterësh i bashkimit, dhe shkrimi i tij sa
shtypet — pa DOM, pa rrjetë
ndarja.ts rezultati i paketuar brenda një adrese
sinjalizimi.ts SDP-ja e ngjeshur brenda një adrese — pa DOM, pa WebRTC
lidhja.ts kanali WebRTC dhe rruga e sinjalit mes skedave
lidhjaMeServer.ts mënyra me kod, përmes një serveri të huaj
takimi.ts adresat e sinjalizimit tonë dhe kontrolli i tyre —
pa DOM, pa rrjetë
lidhjaMeTakim.ts mënyra me takim: i njëjti kanal, sinjalizimi ynë
ngarko.ts lexo-nga-baza si hook
sherbimi.ts çka ruhet për punë pa internet, dhe çka nuk preket —
pa DOM, pa `caches`
analitika.ts emri i rrugës që i shkon matjes, dhe pastrimi i adresës —
pa DOM, pa rrjetë
matja.ts numërimi i hapjeve te strehuesi: skripti dhe ndërrimi i
rrugës, asnjë vendim
punetori.ts punëtori i shërbimit: tri ngjarje, asnjë vendim
instalimi.ts regjistrimi, dhe njoftimi kur del një version i ri
tema.ts sistemi · dritë · terr — pa DOM, pa `localStorage`
ndricimi.ts tema e vënë te faqja, dhe e mbajtur mend
ikonat.tsx ikonat SVG inline
style.css sistemi i stilit
pamjet/ Grupet · Grupi · Loja · Shiko · Lidhu · Pergjigja
Bashkohu · Sinkronizimi
pjeset/ Renditja · Raundet · Shlyerja · TabelaEPergjithshme
FutjaERaundit · Mbledhesja · LojtaretELojes
FushaEKodit · PanelaEKopjes
RregullatELojes · Kohezgjatja
Ndarja · Drejtperdrejt · PaServer · MeServer
PamjaERezultatit · KodiQR
FutjaEMagarecit · RrjetiIMagarecit · RaundetEMagarecit
PergjithshmetEMagarecit · Parashikimi
PermbledhjaEPamjes · Vetja · Ndricimi · Gardhi
test/
llogaritjet.test.mjs totalet, renditja, matrica — kundër `logic.json`-it
lojerat.test.mjs regjistri: shkronjat e paketës, drejtimet, kufijtë
fundi.test.mjs kur mbaron mbrëmja e secilës lojë, dhe mbyllja me dorë
fusha.test.mjs futja e pikëve negative pa tastierë me minus, dhe
data ditë/muaj/vit sa shkruhet
mbledhja.test.mjs termat e mbledhur, «+» i shtypur dy herë dhe fshirja
prapa mbi një term të mbyllur
pikezimi.test.mjs rregullat — kundër raundeve të vërteta
magareci.test.mjs shkronjat, fjala e mbushur dhe tabela e grupit
parashikimi.test.mjs kufijtë e një raundi, dhe ligjet që vendi i mundshëm
nuk i thyen dot — mbi totalet e `logic.json`-it
kopja.test.mjs nxjerrja dhe refuzimi i skedarëve të dëmtuar
qr.test.mjs matrica të ngrira, të verifikuara me një dekodues
ndarja.test.mjs paketimi, dhe refuzimi i adresave të prera
sinjalizimi.test.mjs SDP-ja e ngjeshur — kundër SDP-ve të vërteta, dhe
refuzimi i rreshtave të futur brenda një adrese
kodi.test.mjs kodi i bashkimit, shkronjat që ngatërrohen, dhe çka
mbetet te fusha pas çdo prekjeje
sherbimi.test.mjs lista e asaj që ruhet, koshët e vjetër, dhe kërkesat
që punëtori nuk i prek fare
tema.test.mjs leximi i temës së ruajtur, dhe ngjyrat që rrinë të
shkruara te tre skedarë
bashkimi.test.mjs kush fiton një përplasje, çka shtyhet, çka refuzohet
skema.test.mjs migrimet: numrat, rregulli i sigurisë, dhe se
përsëritja e skriptit nuk prish gjë
projekti.test.mjs adresa, çelësi sekret që refuzohet, dhe përkthimi i
gabimeve
identiteti.test.mjs `uid`-et që nuk përsëriten, dhe emri i pajisjes
logic.json fleta origjinale, si burim provash
sdp.json SDP të vërteta të Chromium-it, si burim provash
Katër dëshmitarë rrinë jashtë npm test, sepse kërkojnë Playwright dhe një ndërtim
të gatshëm:
deshmitare/
supabase-i-rreme.mjs një Supabase sa për të provuar shtresën e rrjetit
rrjeti.mjs hyrje → skript → verifikim → dërgim → pajisja e dytë
lidhja-me-kod.mjs lidhja me kod kundër një `peerjs-server` lokal, i cili
vritet në mes të mbrëmjes dhe kthehet
takimi.mjs shtrëngimi i plotë mes dy shfletuesve, dy skanime
njëkohësisht, dhe serveri që nuk preket më pas
Mënyra «Takim» e mban gjendjen e shtrëngimit te një Redis i vogël: te Vercel-i
shtohet nga paneli (Storage → Upstash), dhe atëherë KV_REST_API_URL e
KV_REST_API_TOKEN vijnë vetë. Pa të, serveri bie te kujtesa e çastit dhe
lidhja del herë po e herë jo — ekrani e thotë me fjalë, dhe dy mënyrat e tjera
punojnë si gjithmonë.
Arsyetimi pas zgjidhjeve rri te CLAUDE.md.
Paleta, kartelat dhe tabelat vijnë nga Kujdestaria — e njëjta paletë blu-nate me smerald e cian, dhe numrat tabelorë te kolonat. Dy gjëra ndryshojnë me qëllim:
public/shkronja/. Nuk merret nga Google Fonts
gjatë hapjes: faqja duhet të hapet e plotë pa internet.Kontrasti mbetet WCAG AA në dritë e në terr: teksti mbi veprimin kryesor del 5.5:1 dhe 7.6:1, dhe kufijtë e kontrolleve mbi 3:1 sipas WCAG 1.4.11.
Tableta e mbajtur anash i merr dy shtylla. Te telefoni gjithçka rri një kolonë e vetme dhe lexohet nga lart poshtë. Sapo ekrani ka gjerësi, ajo për të cilën hapet faqja rri majtas — grupet, historiku, futja e raundit, renditja — dhe çka preket a lexohet një herë kalon djathtas: kopja rezervë, sinkronizimi, përgjithshmet, rregullat, lojtarët, parashikimi, shlyerja. Te ekrani i lojës futja ngjitet me rrëshqitjen, pra raundi shënohet me renditjen para syve; te fleta që shikon dikush tjetër, e tëra hyn në një ekran pa rrëshqitur. Ekranet me një pyetje të vetme — kodi, pritja e lidhjes — qendërzohen në vend që të rrinë ngjitur te qoshja. Radha e leximit mbetet e njëjta te çdo gjerësi.
Ndriçimin e zgjedh tavolina, nga çelësi te fundfaqja e ekranit të parë: «Sistemi», «Dritë», «Terr». Hapet te drita; tema e errët rri e plotë një prekje larg, dhe «Sistemi» e kthen ndërrimin automatik të telefonit. Zgjedhja mbahet mend te vetë shfletuesi, jo te baza: nuk është e dhënë loje, nuk hyn te kopja rezervë dhe nuk del nga pajisja.