返回资讯中心
外部精选
软件工程
#开发者实时流

A geography game where you guess cities based on compass arrows

The geography game to test your mental Map

Hacker News 最新whalegames2026/10/30 · 2 天前30 分钟阅读

以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。

City Angle

The geography game to test your mental Map

Weekly ChallengeHorror Hours

Active

Play Unlimited RoundsCreate a Free Account — Easy or Hard, every day

Choose Category Capital · Country · Sphere · Country cities

🏆 This Week's Top Members

1st Jonathan N 17,133

2nd Alt4ria 17,047

3rd furious17 17,038

4th Aadi J 17,027

5th l2o4v0a5 17,026

View Full Leaderboard

Create Account to Appear on Leaderboard

322 played · Avg 8,350 pts · Best 17,015

Make your own game Build a custom challenge & share it with friends

City Angle

Stream mode

Name the city that matches the angles to the cities shown.

English

Show all angles

Submit guess

✓

— —

Change mode for next round

Next round

List

Map −500

City Angle

Your WorldScore

0

Leaderboard

You leveled up! You're improving — tougher tests are on the way.

Play Again

Home

Normal Mode

Run complete!

Your score 0

Daily Challenge complete Next challenge in --:--:--

You 0

VS

Challenger 0

" when a personal best exists for this mode. -->

Play Again

Challenge a Friend Same 5 cities · see who wins

Try Another Category

Create Free Account Save scores · appear on the leaderboard

Top 5

#—

—

Loading top players…

See all games

Enjoying this? Buy me a coffee

Challenge a Friend

Send this link — your friend plays the exact same 5 cities, then you compare scores head-to-head.

WhatsApp

Telegram

X

🧭

You've been challenged!

A friend played City Angle and dares you to beat them on the exact same 5 cities.

Cities sit at their true compass bearing from a hidden city. Name the city in the middle.

7 tries — wrong guesses become red hint arrows on the board.

Arrow length — longer arrow = farther city. Always on in Easy & Daily; toggle in Settings.

Speed bonus — answer within 20 s for extra points.

Streak — consecutive first-try wins multiply your bonus (not in the Daily Challenge).

Native spellings work — "Köln", "München", "Saigon" … all match.

Every arrow points from the centre city to its label…

…except one impostor. Tap it.

Each catch grows your streak — the fake gets sneakier.

One wrong tap ends the run.

Got it

Switch mode

Which Mode you wanna try?

You've already played this challenge — pick a mode for a fresh game.

Difficult No distances shown

Easy Distances shown

Special Modes

Settings

Design

Compass

Classic

Proportional arrows Longer arrows = farther cities. A visual hint without showing exact numbers.

Always on in Easy mode and Daily challenges.

You've already seen distances this round — the penalty applies even if you hide them again.

Km

Mi

State names Show names in their original language instead of English.

Stream / record mode A fixed capture frame for OBS, TikTok & Reels — face-cam friendly.

Open

Cities in the game

World Map

Pan & zoom to find the cities you need, then triangulate the hidden one. The answer is never shown.

on init so it can show before the game is revealed (the game container is opacity:0 / pointer-events:none until a mode is chosen). ═══════════════════════════════════════════ -->

Classic — choose difficulty

Play Easy Distances shown · friendlier

Play Difficult No distances · angle only

Choose a category

Capital Guess world capitals · switch Easy / Hard in-game

All Cities Every city in play · not only the famous ones

Online Multiplayer Play live with friends & others

Country Cities Play using only one country's cities

States & Regions Guess states, provinces or regions of a country

with the sheet; sits on its own fixed layer above the sheet. -->

Sphere — the hardest mode

Every other mode points its arrows the way a flat world map does — the direction your eyes expect. Sphere mode points them along the true shortest path over the round Earth, the route planes actually fly.

Over long distances the two disagree wildly: from New York, the shortest path to Tokyo starts out heading almost due north over the Arctic — not west across the Pacific. Your flat-map intuition will actively lie to you on nearly every arrow.

Really, really difficult — so it pays the most: 3,000 pts for a first-try win.

World — conquer your map

Ranked City Angle with your own world map. Every round moves your WorldScore and lights up cities you conquer.

One number: your WorldScore. Nail a city and it climbs, miss and it slips. Solving cities also colours in your map: grey → blue → deep blue.

Climb and more of the world unlocks. Season 1 — race the seasonal Top 100.

Get more from City Angle

You're playing free Classic Mode. Create a free account to save your progress, earn badges and play ranked Elo.

All categoriesPROTap to see every mode Pro unlocks

Capitals

Countries

Sphere · 3D

All cities

Country cities Pick one country and play a whole round using only its cities

Reverse ModeThe city is shown — you place the rest

Build your own gamePROCreate a custom round & challenge friends

Badges & saved progressKept in sync across all your devices

Join before Jul 31 — keep every free feature forever

Create free account

Takes 20 seconds · no card needed

Save your progress & badges — it only takes a moment.

Play unlimited rounds. Choose how much help you get.

Easy Distances to each city are shown — great for learning the ropes.

Hard No distances — read the angles alone. For seasoned players.

on init so it sits above the still-hidden game container. -->

Comp is on its way

City Angle 1v1 duels are almost ready. The Beta goes live tomorrow evening, Sept 9 — check back then to play your first ranked duel.

Bergen1 043 km

Hamburg720 km

Rome1 434 km

Valencia1 339 km

Dublin463 km

Guess wrong and that city joins the map as a new clue.

Same 5 cities your friend played. Beat their score.

Choose a difficulty for your first round.

\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","mobyMin":25,"pool":152,"base":"https://visitwhale.com/wp-content/mu-plugins/WhaleGames/cityangle-passport"}};

(function(){ "use strict"; var AJAX = "https://visitwhale.com/wp-admin/admin-ajax.php"; var LOGGED_IN = false; // Hand-drawn tile art: /assets/catscreen/{iso2}.svg (country) or // st-{iso2}.svg (that country's States tile). Scanned at // render time, so dropping a new {cc}.svg in that folder is all it takes. // Served as (lazy, browser-cached) — not inlined, because the files // are large and their Illustrator .st0 classes would clash with each other. var CS_ART = {"at":"https://visitwhale.com/assets/catscreen/at.svg?v=1790969027","au":"https://visitwhale.com/assets/catscreen/au.svg?v=1790983319","br":"https://visitwhale.com/assets/catscreen/br.svg?v=1791119645","ca":"https://visitwhale.com/assets/catscreen/ca.svg?v=1790969027","capital":"https://visitwhale.com/assets/catscreen/capital.svg?v=1790984642","ch":"https://visitwhale.com/assets/catscreen/ch.svg?v=1790969397","cl":"https://visitwhale.com/assets/catscreen/cl.svg?v=1791154258","cn":"https://visitwhale.com/assets/catscreen/cn.svg?v=1790904956","co":"https://visitwhale.com/assets/catscreen/co.svg?v=1791119645","cz":"https://visitwhale.com/assets/catscreen/cz.svg?v=1790969027","de":"https://visitwhale.com/assets/catscreen/de.svg?v=1791154257","es":"https://visitwhale.com/assets/catscreen/es.svg?v=1790969027","fr":"https://visitwhale.com/assets/catscreen/fr.svg?v=1791154257","gb":"https://visitwhale.com/assets/catscreen/gb.svg?v=1790904897","gr":"https://visitwhale.com/assets/catscreen/gr.svg?v=1790981273","hu":"https://visitwhale.com/assets/catscreen/hu.svg?v=1790969563","id":"https://visitwhale.com/assets/catscreen/id.svg?v=1791119642","impostor":"https://visitwhale.com/assets/catscreen/impostor.svg?v=1790978451","in":"https://visitwhale.com/assets/catscreen/in.svg?v=1790969027","it":"https://visitwhale.com/assets/catscreen/it.svg?v=1790969563","jp":"https://visitwhale.com/assets/catscreen/jp.svg?v=1790969027","kh":"https://visitwhale.com/assets/catscreen/kh.svg?v=1791119643","kr":"https://visitwhale.com/assets/catscreen/kr.svg?v=1791119646","kz":"https://visitwhale.com/assets/catscreen/kz.svg?v=1790815066","la":"https://visitwhale.com/assets/catscreen/la.svg?v=1791119644","mx":"https://visitwhale.com/assets/catscreen/mx.svg?v=1791154257","my":"https://visitwhale.com/assets/catscreen/my.svg?v=1791119655","nl":"https://visitwhale.com/assets/catscreen/nl.svg?v=1790815066","passport":"https://visitwhale.com/assets/catscreen/passport.svg?v=1791752226","ph":"https://visitwhale.com/assets/catscreen/ph.svg?v=1791119645","pk":"https://visitwhale.com/assets/catscreen/pk.svg?v=1790981272","pl":"https://visitwhale.com/assets/catscreen/pl.svg?v=1790981272","pt":"https://visitwhale.com/assets/catscreen/pt.svg?v=1791154258","reverse":"https://visitwhale.com/assets/catscreen/reverse.svg?v=1790815655","ru":"https://visitwhale.com/assets/catscreen/ru.svg?v=1790984520","sights":"https://visitwhale.com/assets/catscreen/sights.svg?v=1790978451","sphere":"https://visitwhale.com/assets/catscreen/sphere.svg?v=1790815655","st-de":"https://visitwhale.com/assets/catscreen/st-de.svg?v=1790815066","th":"https://visitwhale.com/assets/catscreen/th.svg?v=1791119643","tr":"https://visitwhale.com/assets/catscreen/tr.svg?v=1790969027","us":"https://visitwhale.com/assets/catscreen/us.svg?v=1790815066","vn":"https://visitwhale.com/assets/catscreen/vn.svg?v=1791119644"}; var _csNonce = ''; var _csGameKey = ''; var _csFavs = new Set(); var _csRegistry = []; var _csCallbacks = {}; var _csOpen = false; var _csInitDone = {}; var _csServerFavs = {}; // gameKey -> last server-fav snapshot (seeds hearts instantly on reopen) var _csSearchTimer = null;

/* ── SVG icons ──────────────────────────────────────────────────────── */ var LOCK_ICON = ''; var HEART_ICON = '';

/* ── SVG scene library (from the Cartographer mock) ─────────────────── */ var _S = function(inner){ return ''+inner+''; }; var _sky = '';

var CS_SCENES = { germany: _S(_sky+ ''+ ''+ ''+ ''+ ''+ ''),

destates: _S( ''+ ''+ ''+ 'NiedersachsenBavariaBerlin'),

flags: '',

capital: '',

sphere: _S(''+ ''+ ''+ ''+ ''+ ''),

reverse: _S(''+ ''+

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →