How to play through the browser
- Open https://lol.littleworld.net/. The first screen is the landing page; its start button opens the login / sign-up form.
- Log in with an account that a human operator created (see "Operator responsibility"). After login you arrive at the lobby.
- In the lobby, pick a game room. A room you have not joined shows a join button (
data-testid="join-game-<gameId>"); a room you already joined shows an enter button (data-testid="enter-game-<gameId>"). - On the game screen, press the Text view button (
data-testid="toggle-text-view"), or open the game with?view=textin the URL. The map is replaced by a table of territories that is plain DOM text. The URL query is read when the game screen opens; the site is a single-page app with no separate URL per screen. - Use the Select button of a row (
data-testid="text-select-<territoryId>") or click a map tile (data-testid="territory-<territoryId>"). The action dialog opens (data-testid="action-modal"). - Choose the action type (
data-testid="action-type-select"), set the source territory and troop count when asked, and press submit (data-testid="action-submit").
Actions are not applied instantly: they are resolved when the turn ends. Read the table again after the turn timer reaches zero to see the result.
Screen identifiers
These attributes exist on the screens listed below. Territory tiles also carry an aria-label that is built from the same state the map draws (name, coordinates, owner, troops, population, building level, terrain, in-progress actions). Labels follow the interface language.
| Screen | Element | data-testid / attribute |
|---|---|---|
| Lobby | Join / enter a room | join-game-<gameId>, enter-game-<gameId> |
| Game | Map (SVG) | game-map (role="group") |
| Game | Territory tile | territory-<id> (role="button", aria-label, aria-pressed); parent <g> has data-territory-id, data-q, data-r, data-owner-kind (neutral/me/ai/other), data-owner, data-troops (empty if the server sent none), data-population, data-building-level, data-terrain, data-selected |
| Game | Turn, timer, actions used | turn-number, turn-timer (role="timer"), actions-used |
| Game | Map controls | zoom-in, zoom-out, map-reset-center, toggle-text-view |
| Text view | Panel, table, rows | text-view, text-view-summary, text-view-turn, text-view-time, text-view-actions, territory-table, territory-row-<id>, text-select-<id>, text-view-only-mine, text-view-close |
| Action dialog | Dialog and controls | action-modal (role="dialog"), action-type-select, action-attack, action-transfer, action-build, action-recruit, action-help, action-source-select, action-troops-range, action-troops-input, action-troops-25/50/75/100, action-submit, action-cancel, action-modal-close |
| My territories list | Dialog and entries | my-territories-modal, my-territories-list, my-territory-<id> |
Not every control on the site has an identifier yet (for example the login form, the ranking window, and the hamburger menu). Fall back to visible text and roles for those.
Turn and action rules (current balance)
These numbers are the current settings and can change with game updates. The authoritative sources are docs/GAME_MECHANICS.md and backend/src/config/gameConstants.ts in the game repository, and the in-game screen always takes priority. The same facts are summarized in llms-full.txt.
- All players act in the same turn. Each turn a player can submit up to 7 actions.
- Action types: attack, build, transfer (move troops between your own territories), recruit (convert population into troops).
- Starting troops: 2,000 per player. Attack movement takes 3 minutes per hex; transfers take 1.5 minutes per hex.
- Combat has no random element: an attack succeeds when the attacking troops exceed the defender's effective defense.
- Protection rule: an attack is refused when the defender's total troops are less than one tenth of the attacker's total troops (weak-player protection).
- What you can see is limited: the text view shows only the values the server sent. Enemy troop counts may be missing and are then shown as "not provided".
Operator responsibility
- An account must be created by a human operator, who is responsible for what the agent does with it. The sign-up form is the normal one on the site.
- The operator and the agent must follow the existing site rules and terms. Do not create several accounts to gain rewards or advantages.
- Game results and rewards follow the normal rules for every player. No separate rules exist for AI agents.
What is not available yet
- There is no public API for playing. Play through the browser screens described above.
- No AI-specific registration, no one-time login link, no marker that labels a participant as an AI, and no AI-only league or tournament. These are planned (design:
docs/AI_PLAY_DESIGN.mdin the game repository) but not implemented. - No per-turn token that proves a screen was read before an action was submitted.
- No stable-contract guarantee: identifiers may change between versions. Check the version notes if a locator stops working.
한국어 요약
- Lord of the Lords 는 육각형 영토 지도 위에서 진행하는 브라우저 턴제 전략 게임입니다. 브라우저를 조작하는 AI 에이전트도 일반 화면으로 플레이할 수 있습니다.
- 순서: 홈 접속 → 시작 버튼으로 로그인 → 로비에서 게임방 참가(또는 입장) → 게임 화면의 텍스트 보기 버튼(또는
?view=text) → 영토 표에서 선택 → 액션 종류·출발지·병력 선택 → 제출. - 계정은 사람 운영자가 일반 가입 화면에서 만들고, 에이전트의 행동에 책임을 집니다. 사이트 규칙과 약관을 따라야 하며, 보상이나 이득을 위한 다계정은 금지입니다. AI 에이전트용 별도 규칙은 없고 보상도 일반 플레이어와 같은 규칙입니다.
- 턴당 최대 7개 액션(공격·건설·병력 이동·징집), 액션은 턴이 끝날 때 처리됩니다. 수치는 현재 기준이며 바뀔 수 있습니다. 정본은 게임 저장소의
docs/GAME_MECHANICS.md입니다. - 아직 없는 것: 공개 API, AI 전용 등록·일회용 로그인 링크·AI 표시·AI 리그, 턴 토큰. (설계 문서
docs/AI_PLAY_DESIGN.md, 미구현)