The matcher stops trusting what the user can't see

Eric's question cut to the bone: "How would a user know? It matched
wiz-war and that IS the game." The auto looked unanimous because the
matcher discarded the evidence of doubt before anyone saw it — and
worse, BGG's search hides evidence of its own: results truncate
unordered in the several-hundreds (the game named "Dungeon!" appears
in NEITHER the "Dungeon!" nor the "Dungeon" search), and punctuation
can bury matches.

Three matcher changes: every title is searched raw AND depuncted,
merged by id; a name that becomes exact once its trailing
parenthetical is stripped ("Wiz-War (Eighth Edition)") is a sibling
edition — BGG files new editions as separate games — and enters the
candidate set at exact grade, so same-named lineages land in review as
a visible choice; and a LONE candidate must now earn trust (stats
fetched, sibling-grade never autos alone, true exacts must clear the
dominance ownership floor) — closing the fast path both impostors
(.dungeon at 31 owners, then Dungeon (ICP)) walked through.

Recorded outcomes: WIZ-WAR → ambiguous with all three lineages on the
ballot; Dungeon! → ambiguous (its true match is beyond BGG's search
horizon — that's what manual id is for); every legitimate auto in the
fixture set held. And the answer to Eric's second question is now
structural: re-match never re-decides — it demotes to unmatched and
the HUMAN picks from re-search or manual id; the machine only chooses
on first resolve, and it now chooses more humbly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
This commit is contained in:
Eric Wagoner
2026-08-05 21:47:49 -04:00
co-authored by Claude Fable 5
parent 8db69685c4
commit 1dd72d2688
27 changed files with 12753 additions and 13 deletions
+14 -1
View File
@@ -51,7 +51,20 @@ The first `/collection` call typically returns **HTTP 202** with a "please retry
## Search & matching heuristics
1. Exact normalized-name match → strong candidate.
0. BGG's search is UNRELIABLE for generic and punctuated queries: results
truncate in the several-hundreds unordered (the game named "Dungeon!"
appears in neither the "Dungeon!" nor the "Dungeon" search), and
punctuation can hide matches. Every title is searched raw AND with
punctuation stripped, merged by id. A LONE surviving candidate never
auto-matches unless it's a true exact match whose owned-count clears
the dominance floor — the sole survivor may be an impostor standing
where a famous game should be, and the real match may need review's
manual-id entry.
1. Exact normalized-name match → strong candidate. A name that becomes
exact once its trailing parenthetical is stripped ("Wiz-War (Eighth
Edition)") is a SIBLING EDITION — BGG files new editions as separate
games — and counts as exact-grade so the choice between lineages
reaches review instead of hiding behind a confident auto.
2. Fuzzy match: `rapidfuzz` `token_sort_ratio ≥ 90` → good candidate.
3. Ties: fetch `/thing?stats=1` for top ~5 candidates; prefer higher owned-count / better BGG rank (well-known game beats obscure duplicate of the same name).
- Search results include `boardgameexpansion` as a distinct `type` — keep expansions but tag them so review catches base/expansion confusion.
+5 -5
View File
File diff suppressed because one or more lines are too long
+61 -3
View File
@@ -89,6 +89,7 @@ class Candidate:
type: str
exact: bool
fuzzy: float
sibling: bool = False # exactness earned via edition-suffix stripping
owned: int | None = None
rank: int | None = None
publishers: list[str] = field(default_factory=list)
@@ -226,6 +227,18 @@ def _plausible_candidates(
for result in results:
norm = normalize_title(result.name)
exact = norm == entry.title_normalized
# BGG files new editions as SEPARATE games named "X (Nth Edition)":
# a name that equals the title once its trailing parenthetical is
# stripped is a sibling edition — exact-grade, or the match looks
# unanimously confident while hiding the real choice (Wiz-War has
# three same-named lineages; the spec's top failure mode)
sibling = False
if not exact and result.type != "boardgameexpansion":
sibling = (
normalize_title(_EDITION_SUFFIX.sub("", result.name))
== entry.title_normalized
)
exact = sibling
fuzzy = fuzz.token_sort_ratio(norm, entry.title_normalized)
if not exact and fuzzy < FUZZY_THRESHOLD:
if not (head_normalized and norm == head_normalized):
@@ -237,6 +250,7 @@ def _plausible_candidates(
year=result.year,
type=result.type,
exact=exact,
sibling=sibling,
fuzzy=fuzzy,
)
prev = by_id.get(result.bgg_id)
@@ -255,7 +269,23 @@ def _classify(client: BGGClient, entry: TitleEntry, cands: list[Candidate]) -> M
return row
if len(cands) == 1:
chosen = cands[0]
# a lone candidate must still earn trust: BGG's search visibly
# truncates generic queries (the game named "Dungeon!" appears in
# NEITHER of its own searches), so the sole survivor may be an
# impostor standing where the famous game should be. Sibling-grade
# exactness never autos alone, and a true exact must clear the
# same ownership floor the dominance rule enforces.
only = cands[0]
stats = {t.bgg_id: t for t in client.things([only.bgg_id], stats=True)}
if only.bgg_id in stats:
only.owned = stats[only.bgg_id].owned
only.rank = stats[only.bgg_id].rank
only.publishers = list(stats[only.bgg_id].publishers)
row.candidates = [only]
if only.sibling or not only.exact or (only.owned or 0) < DOMINANCE_MIN_OWNED:
row.match_status = "ambiguous"
return row
chosen = only
else:
top = cands[:5]
stats = {
@@ -391,8 +421,36 @@ def resolve_version(client: BGGClient, entry: TitleEntry, row: MatchRow) -> None
row.version_status = "version_ambiguous"
_EDITION_SUFFIX = re.compile(r"\s*\([^)]*\)\s*$")
_PUNCT = re.compile(r"[^\w\s]", re.UNICODE)
def _depunct(title: str) -> str:
"""BGG's search engine can choke on punctuation — the game literally
named "Dungeon!" is missing from its own 824-result search. A plain
query recovers it."""
return " ".join(_PUNCT.sub(" ", title).split())
def _merged_candidates(
client: BGGClient, entry: TitleEntry, query: str, types: str | None = None
) -> list[Candidate]:
"""Search the raw title AND its punctuation-free form, merged by id
(strongest evidence wins)."""
cands = _plausible_candidates(client, entry, query, types=types)
plain = _depunct(query)
if plain.casefold() != query.casefold():
by_id = {c.bgg_id: c for c in cands}
for c in _plausible_candidates(client, entry, plain, types=types):
prev = by_id.get(c.bgg_id)
if prev is None or (c.exact, c.fuzzy) > (prev.exact, prev.fuzzy):
by_id[c.bgg_id] = c
cands = sorted(by_id.values(), key=lambda c: (not c.exact, -c.fuzzy))
return cands
def resolve_entry(client: BGGClient, entry: TitleEntry) -> MatchRow:
cands = _plausible_candidates(client, entry, entry.title_raw)
cands = _merged_candidates(client, entry, entry.title_raw)
if not cands:
# Long transcribed box titles ("CIVILIZATION Game of the Heroic
# Age - ...") defeat search: retry with progressively shorter heads
@@ -406,7 +464,7 @@ def resolve_entry(client: BGGClient, entry: TitleEntry) -> MatchRow:
# type=rpgitem (same API, same token). A hit becomes a LOCAL
# library citizen: identified and enriched, never uploaded (diff
# routes rpgitem rows to local_only).
cands = _plausible_candidates(client, entry, entry.title_raw, types="rpgitem")
cands = _merged_candidates(client, entry, entry.title_raw, types="rpgitem")
if not cands:
for head in _truncation_heads(entry.title_raw):
cands = _plausible_candidates(
+14
View File
@@ -106,5 +106,19 @@
"source_photos": [
"hand-typed-test-list"
]
},
{
"title_raw": "Dungeon!",
"confidence": "high",
"source_photos": [
"hand-typed-test-list"
]
},
{
"title_raw": "WIZ-WAR",
"confidence": "high",
"source_photos": [
"hand-typed-test-list"
]
}
]
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1 @@
<?xml version="1.0" encoding="utf-8"?><items total="0" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> </items>
@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?><items total="11" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> <item type="boardgame" id="589">
<name type="primary" value="Wiz-War"/>
<yearpublished value="1983" />
</item>
<item type="boardgame" id="324937">
<name type="primary" value="Wiz-War (9th Edition)"/>
<yearpublished value="2023" />
</item>
<item type="boardgame" id="104710">
<name type="primary" value="Wiz-War (Eighth Edition)"/>
<yearpublished value="2012" />
</item>
<item type="boardgame" id="159777">
<name type="primary" value="Wiz-War: Bestial Forces"/>
<yearpublished value="2014" />
</item>
<item type="boardgame" id="28071">
<name type="primary" value="Wiz-War: Expansion Set #1"/>
<yearpublished value="1985" />
</item>
<item type="boardgame" id="38450">
<name type="primary" value="Wiz-War: Expansion Set #2"/>
<yearpublished value="1993" />
</item>
<item type="boardgame" id="147473">
<name type="primary" value="Wiz-War: Malefic Curses"/>
<yearpublished value="2014" />
</item>
<item type="boardgameexpansion" id="159777">
<name type="primary" value="Wiz-War: Bestial Forces"/>
<yearpublished value="2014" />
</item>
<item type="boardgameexpansion" id="28071">
<name type="primary" value="Wiz-War: Expansion Set #1"/>
<yearpublished value="1985" />
</item>
<item type="boardgameexpansion" id="38450">
<name type="primary" value="Wiz-War: Expansion Set #2"/>
<yearpublished value="1993" />
</item>
<item type="boardgameexpansion" id="147473">
<name type="primary" value="Wiz-War: Malefic Curses"/>
<yearpublished value="2014" />
</item>
</items>
@@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?><items total="41" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> <item type="boardgame" id="422611">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Anarchy at the Arena"/>
<yearpublished value="2024" />
</item>
<item type="boardgame" id="338322">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Annihilageddon 2 Xtreme Nacho Legends"/>
<yearpublished value="2022" />
</item>
<item type="boardgame" id="378172">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Annihilageddon 3 Satanic Panic"/>
<yearpublished value="2024" />
</item>
<item type="boardgame" id="274128">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Annihilageddon Deck-Building Game"/>
<yearpublished value="2019" />
</item>
<item type="boardgame" id="338091">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Annihilageddon Gang Bangers Expansion"/>
<yearpublished value="2022" />
</item>
<item type="boardgame" id="200020">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Dr. Hannah and Wilhellion Promo Cards"/>
<yearpublished value="2016" />
</item>
<item type="boardgame" id="112686">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Duel at Mt. Skullzfyre"/>
<yearpublished value="2012" />
</item>
<item type="boardgame" id="123972">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Duel at Mt. Skullzfyre Haggatha the Heffer&#039;s Crushazorian Godstorm Promo Cards"/>
<yearpublished value="2012" />
</item>
<item type="boardgame" id="301662">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Hijinx at Hell High"/>
<yearpublished value="2020" />
</item>
<item type="boardgame" id="458466">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Hocus Porkus Familiar Promo"/>
<yearpublished value="2019" />
</item>
<item type="boardgame" id="221366">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Melee at Murdershroom Marsh"/>
<yearpublished value="2017" />
</item>
<item type="boardgame" id="248075">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Panic at the Pleasure Palace"/>
<yearpublished value="2018" />
</item>
<item type="boardgame" id="173200">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Rumble at Castle Tentakill"/>
<yearpublished value="2015" />
</item>
<item type="boardgame" id="197748">
<name type="primary" value="Garden Gnomes: Wizard Warfare"/>
<yearpublished value="2016" />
</item>
<item type="boardgame" id="6217">
<name type="primary" value="War of Wizards"/>
<yearpublished value="1975" />
</item>
<item type="boardgame" id="23381">
<name type="primary" value="Warlords &amp; Wizards"/>
<yearpublished value="1996" />
</item>
<item type="boardgame" id="589">
<name type="primary" value="Wiz-War"/>
<yearpublished value="1983" />
</item>
<item type="boardgame" id="324937">
<name type="primary" value="Wiz-War (9th Edition)"/>
<yearpublished value="2023" />
</item>
<item type="boardgame" id="104710">
<name type="primary" value="Wiz-War (Eighth Edition)"/>
<yearpublished value="2012" />
</item>
<item type="boardgame" id="159777">
<name type="primary" value="Wiz-War: Bestial Forces"/>
<yearpublished value="2014" />
</item>
<item type="boardgame" id="28071">
<name type="primary" value="Wiz-War: Expansion Set #1"/>
<yearpublished value="1985" />
</item>
<item type="boardgame" id="38450">
<name type="primary" value="Wiz-War: Expansion Set #2"/>
<yearpublished value="1993" />
</item>
<item type="boardgame" id="147473">
<name type="primary" value="Wiz-War: Malefic Curses"/>
<yearpublished value="2014" />
</item>
<item type="boardgame" id="7222">
<name type="alternate" value="Wizard Kings: Ferkin (Warboar) Army"/>
<yearpublished value="2000" />
</item>
<item type="boardgame" id="22526">
<name type="primary" value="Wizard Wars"/>
<yearpublished value="2002" />
</item>
<item type="boardgame" id="217473">
<name type="primary" value="Wizard&#039;s WARdrobe"/>
<yearpublished value="2017" />
</item>
<item type="boardgame" id="26500">
<name type="primary" value="Wizards &amp; Warfare"/>
<yearpublished value="1976" />
</item>
<item type="boardgame" id="38163">
<name type="primary" value="Wizards &amp; Warlords"/>
<yearpublished value="2001" />
</item>
<item type="boardgame" id="38405">
<name type="primary" value="Wizards and Warriors"/>
<yearpublished value="1985" />
</item>
<item type="boardgame" id="240163">
<name type="primary" value="Wizards and Warzones: Trading Card Game"/>
<yearpublished value="2019" />
</item>
<item type="boardgame" id="272686">
<name type="primary" value="Wizards of War"/>
<yearpublished value="2019" />
</item>
<item type="boardgame" id="468574">
<name type="primary" value="Wizerds, Warriors, and Werewolves"/>
<yearpublished value="2026" />
</item>
<item type="boardgameexpansion" id="338091">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Annihilageddon Gang Bangers Expansion"/>
<yearpublished value="2022" />
</item>
<item type="boardgameexpansion" id="200020">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Dr. Hannah and Wilhellion Promo Cards"/>
<yearpublished value="2016" />
</item>
<item type="boardgameexpansion" id="123972">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Duel at Mt. Skullzfyre Haggatha the Heffer&#039;s Crushazorian Godstorm Promo Cards"/>
<yearpublished value="2012" />
</item>
<item type="boardgameexpansion" id="458466">
<name type="primary" value="Epic Spell Wars of the Battle Wizards: Hocus Porkus Familiar Promo"/>
<yearpublished value="2019" />
</item>
<item type="boardgameexpansion" id="159777">
<name type="primary" value="Wiz-War: Bestial Forces"/>
<yearpublished value="2014" />
</item>
<item type="boardgameexpansion" id="28071">
<name type="primary" value="Wiz-War: Expansion Set #1"/>
<yearpublished value="1985" />
</item>
<item type="boardgameexpansion" id="38450">
<name type="primary" value="Wiz-War: Expansion Set #2"/>
<yearpublished value="1993" />
</item>
<item type="boardgameexpansion" id="147473">
<name type="primary" value="Wiz-War: Malefic Curses"/>
<yearpublished value="2014" />
</item>
<item type="boardgameexpansion" id="7222">
<name type="alternate" value="Wizard Kings: Ferkin (Warboar) Army"/>
<yearpublished value="2000" />
</item>
</items>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><items total="2" termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"> <item type="boardgame" id="290448">
<name type="primary" value="Wingspan: European Expansion"/>
<yearpublished value="2019" />
</item>
<item type="boardgameexpansion" id="290448">
<name type="primary" value="Wingspan: European Expansion"/>
<yearpublished value="2019" />
</item>
</items>
@@ -0,0 +1,429 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgameexpansion" id="177">
<thumbnail>https://cf.geekdo-images.com/9ROB7NpxefRUmpR9UroQ8w__small/img/XDH667tVl2KjQ6szNjT7ceEmh5E=/fit-in/200x150/filters:strip_icc()/pic87459.jpg</thumbnail>
<image>https://cf.geekdo-images.com/9ROB7NpxefRUmpR9UroQ8w__original/img/--qlhvNNj8zF9cWLlihdTg0jzmE=/0x0/filters:format(jpeg)/pic87459.jpg</image>
<name type="primary" sortindex="1" value="Advanced Civilization" />
<description>The use of the word "Advanced" to describe this expansion followed existing Avalon Hill tradition. "Enhanced" is likely more appropriate. Playing with this expansion is no more difficult than playing the base Civilization game. This expansion reworks a few of the original rules, includes a reworked version of Civilization: Expansion Trade Cards Set and adds more civilization advancements to the technology tree.
Included are more civilization advancements (both quantity and type), which give the players new options for advancement, as well as a slightly restructured commodity trading round, which has new resources and disasters to be traded. The most significant aspect of the game is a restructuring of the advancement/victory conditions, which remove the limits on advancement cards. Some claim this makes the strategies more homogeneous while others claim the reverse is true.
</description>
<yearpublished value="1991" />
<minplayers value="2" />
<maxplayers value="8" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="122">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="86" />
</results>
<results numplayers="2">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="6" />
<result value="Not Recommended" numvotes="85" />
</results>
<results numplayers="3">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="16" />
<result value="Not Recommended" numvotes="73" />
</results>
<results numplayers="4">
<result value="Best" numvotes="6" />
<result value="Recommended" numvotes="52" />
<result value="Not Recommended" numvotes="36" />
</results>
<results numplayers="5">
<result value="Best" numvotes="20" />
<result value="Recommended" numvotes="64" />
<result value="Not Recommended" numvotes="15" />
</results>
<results numplayers="6">
<result value="Best" numvotes="56" />
<result value="Recommended" numvotes="48" />
<result value="Not Recommended" numvotes="1" />
</results>
<results numplayers="7">
<result value="Best" numvotes="83" />
<result value="Recommended" numvotes="30" />
<result value="Not Recommended" numvotes="1" />
</results>
<results numplayers="8">
<result value="Best" numvotes="62" />
<result value="Recommended" numvotes="35" />
<result value="Not Recommended" numvotes="8" />
</results>
<results numplayers="8+">
<result value="Best" numvotes="3" />
<result value="Recommended" numvotes="8" />
<result value="Not Recommended" numvotes="43" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 68 players" />
<result name="recommmendedwith" value="Recommended with 48 players" />
</poll-summary> <playingtime value="480" />
<minplaytime value="360" />
<maxplaytime value="480" />
<minage value="12" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="38">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="2" />
<result value="10" numvotes="2" />
<result value="12" numvotes="16" />
<result value="14" numvotes="11" />
<result value="16" numvotes="6" />
<result value="18" numvotes="1" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="36">
<results>
<result level="1" value="No necessary in-game text" numvotes="2" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="21" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="13" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="0" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1050" value="Ancient" />
<link type="boardgamecategory" id="1015" value="Civilization" />
<link type="boardgamecategory" id="1021" value="Economic" />
<link type="boardgamecategory" id="1042" value="Expansion for Base-game" />
<link type="boardgamecategory" id="1026" value="Negotiation" />
<link type="boardgamemechanic" id="2046" value="Area Movement" />
<link type="boardgamemechanic" id="2013" value="Commodity Speculation" />
<link type="boardgamemechanic" id="2004" value="Set Collection" />
<link type="boardgamemechanic" id="2008" value="Trading" />
<link type="boardgamefamily" id="72535" value="Ancient: Egypt" />
<link type="boardgamefamily" id="64960" value="Components: Map (Continental / National scale)" />
<link type="boardgamefamily" id="81575" value="Digital Implementations: VASSAL" />
<link type="boardgamefamily" id="22642" value="Game: Civilization" />
<link type="boardgamefamily" id="61990" value="Players: Expansions Changing Player Count" />
<link type="boardgameexpansion" id="16109" value="Civilization Eastern Expansion Map" />
<link type="boardgameexpansion" id="79843" value="Civilization: The Expansion Project" />
<link type="boardgameexpansion" id="2058" value="Civilization: West Extension Map" />
<link type="boardgameexpansion" id="71" value="Civilization" inbound="true"/>
<link type="boardgameintegration" id="143347" value="Civilization Central America" />
<link type="boardgameintegration" id="131240" value="Civilization: The New World" />
<link type="boardgameimplementation" id="184424" value="Mega Civilization" />
<link type="boardgamedesigner" id="10035" value="Lauren Banerd" />
<link type="boardgamedesigner" id="10036" value="Jim Eliason" />
<link type="boardgamedesigner" id="10037" value="Jeff Groteboer" />
<link type="boardgamedesigner" id="361" value="Bruce Harper" />
<link type="boardgamedesigner" id="10038" value="Eric Hunter" />
<link type="boardgamedesigner" id="10039" value="Steven Padgett" />
<link type="boardgamedesigner" id="10040" value="Gary Rapanos" />
<link type="boardgamedesigner" id="10041" value="Michael Roos" />
<link type="boardgamedesigner" id="10042" value="Jennifer Schlickbernd" />
<link type="boardgamedesigner" id="10043" value="Jeff Suchard" />
<link type="boardgameartist" id="71" value="Rodger B. MacGowan" />
<link type="boardgamepublisher" id="5" value="The Avalon Hill Game Co" />
<statistics page="1">
<ratings >
<usersrated value="3413" />
<average value="8.00875" />
<bayesaverage value="6.91647" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="Not Ranked" bayesaverage="6.91647" />
<rank type="family" id="5497" name="strategygames" friendlyname="Strategy Game Rank" value="Not Ranked" bayesaverage="7.07349" />
</ranks>
<stddev value="1.65892" />
<median value="0" />
<owned value="3951" />
<trading value="92" />
<wanting value="206" />
<wishing value="588" />
<numcomments value="1293" />
<numweights value="417" />
<averageweight value="3.6547" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,195 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="19503">
<thumbnail>https://cf.geekdo-images.com/GK__4vYB8dzvrKfU-rNprA__small/img/ldl758g6r68r4JYLqruQ78Q4cUA=/fit-in/200x150/filters:strip_icc()/pic118741.jpg</thumbnail>
<image>https://cf.geekdo-images.com/GK__4vYB8dzvrKfU-rNprA__original/img/-g18ZN4zsRVwDbfRg8STawXXd3o=/0x0/filters:format(jpeg)/pic118741.jpg</image>
<name type="primary" sortindex="1" value="Dungeon (ICP)" />
<description>A dungeon-crawling card game for 2 to 4 players
Captured and incarcerated, your only goal is to escape the underground prison you find yourself in. As you search for the hidden route to freedom, you must overcome the underworld's hostile inhabitants and dangerously unstable passages.
Object: To escape from your underground prison, or be the last one alive.
You Need: At least one standard deck of playing cards with Jokers. A single deck will suffice for a 3 player game, but such a game will be extended and bloody! Two decks can be combined for 3 or more players, allowing a quicker and easier multiplayer game.
You and your opponent(s) take turns playing cards from your hand, trying to escape the dungeon while making it hard for the other players to escape. There are three basic card types in Dungeon:
1. Passages (the value cards, 2 through 10) represent the tunnels, passages, and rooms you must navigate to escape.
2. Creatures (the picture cards, Jack, Queen &amp; King) represent creatures of the underworld.
3. Aces represent your finely honed adventuring skills.
If you escape the Dungeon or all of your opponents are dead, then you win!
Download the rules here:
http://www.invisible-city.com/play/392/dungeon-update
</description>
<yearpublished value="2001" />
<minplayers value="2" />
<maxplayers value="4" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="0">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="2">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="3">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="4">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="4+">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="" />
<result name="recommmendedwith" value="(no votes)" />
</poll-summary> <playingtime value="30" />
<minplaytime value="30" />
<maxplaytime value="30" />
<minage value="12" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="0">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="0" />
<result value="10" numvotes="0" />
<result value="12" numvotes="0" />
<result value="14" numvotes="0" />
<result value="16" numvotes="0" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="0">
<results>
<result level="1" value="No necessary in-game text" numvotes="0" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="0" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="0" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="0" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1002" value="Card Game" />
<link type="boardgamecategory" id="1010" value="Fantasy" />
<link type="boardgamedesigner" id="5891" value="Daniel Bullen" />
<link type="boardgamepublisher" id="1001" value="(Web published)" />
<link type="boardgamepublisher" id="320" value="Invisible City Productions" />
<statistics page="1">
<ratings >
<usersrated value="8" />
<average value="5.4375" />
<bayesaverage value="0" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="Not Ranked" bayesaverage="Not Ranked" />
</ranks>
<stddev value="1.52965" />
<median value="0" />
<owned value="18" />
<trading value="0" />
<wanting value="0" />
<wishing value="6" />
<numcomments value="6" />
<numweights value="5" />
<averageweight value="1.6" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,305 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="214">
<thumbnail>https://cf.geekdo-images.com/VieUvCI62VUhQ9C4agum3A__small/img/dZ4v6yOOU5E-oPFK0UbqBGoXyzU=/fit-in/200x150/filters:strip_icc()/pic3987975.png</thumbnail>
<image>https://cf.geekdo-images.com/VieUvCI62VUhQ9C4agum3A__original/img/qzA2t0vjkwoGm5yaTBog1ZmewS0=/0x0/filters:format(png)/pic3987975.png</image>
<name type="primary" sortindex="1" value="Café International" />
<name type="alternate" sortindex="1" value="Café Internacional" />
<name type="alternate" sortindex="1" value="Tactix" />
<name type="alternate" sortindex="1" value="國際咖啡館" />
<description>This game revolves around the placement of multi-national customers in a restaurant. The board shows many different tables, each with four chairs around them. The tables are grouped by nation, so the Chinese like to sit with other Chinese. However, some of the chairs are on the border between two nations, so a person from either place could occupy the seat. To further complicate this odd tile game, each of the people is either male or female, and tables must be gender-balanced. As the game progresses some tiles become unplayable...
</description>
<yearpublished value="1989" />
<minplayers value="2" />
<maxplayers value="4" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="38">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="18" />
</results>
<results numplayers="2">
<result value="Best" numvotes="9" />
<result value="Recommended" numvotes="18" />
<result value="Not Recommended" numvotes="4" />
</results>
<results numplayers="3">
<result value="Best" numvotes="10" />
<result value="Recommended" numvotes="21" />
<result value="Not Recommended" numvotes="1" />
</results>
<results numplayers="4">
<result value="Best" numvotes="11" />
<result value="Recommended" numvotes="21" />
<result value="Not Recommended" numvotes="3" />
</results>
<results numplayers="4+">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="16" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 4 players" />
<result name="recommmendedwith" value="Recommended with 24 players" />
</poll-summary> <playingtime value="60" />
<minplaytime value="45" />
<maxplaytime value="60" />
<minage value="10" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="18">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="1" />
<result value="8" numvotes="14" />
<result value="10" numvotes="2" />
<result value="12" numvotes="1" />
<result value="14" numvotes="0" />
<result value="16" numvotes="0" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="20">
<results>
<result level="1" value="No necessary in-game text" numvotes="20" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="0" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="0" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="0" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1009" value="Abstract Strategy" />
<link type="boardgamemechanic" id="2040" value="Hand Management" />
<link type="boardgamemechanic" id="2048" value="Pattern Building" />
<link type="boardgamemechanic" id="2002" value="Tile Placement" />
<link type="boardgamefamily" id="78564" value="Components: 13 x 13 Grids" />
<link type="boardgamefamily" id="76458" value="Digital Implementations: BrettspielWelt" />
<link type="boardgamefamily" id="11358" value="Game: Café International" />
<link type="boardgamefamily" id="113663" value="Theme: Restaurant/Café" />
<link type="boardgameimplementation" id="27683" value="Café International Junior" />
<link type="boardgameimplementation" id="1324" value="Café International: Das Kartenspiel" />
<link type="boardgamedesigner" id="154" value="Rudi Hoffmann" />
<link type="boardgameartist" id="11901" value="Oliver Freudenreich" />
<link type="boardgameartist" id="37392" value="J. W. Thompson" />
<link type="boardgamepublisher" id="8" value="AMIGO" />
<link type="boardgamepublisher" id="6214" value="Kaissa Chess &amp; Games" />
<link type="boardgamepublisher" id="4047" value="Leo Toys" />
<link type="boardgamepublisher" id="93" value="Mattel, Inc." />
<link type="boardgamepublisher" id="156" value="Relaxx" />
<link type="boardgamepublisher" id="3" value="Rio Grande Games" />
<link type="boardgamepublisher" id="9234" value="Swan Panasia Co., Ltd." />
<statistics page="1">
<ratings >
<usersrated value="3029" />
<average value="6.22387" />
<bayesaverage value="5.88802" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="3997" bayesaverage="5.88802" />
<rank type="family" id="5499" name="familygames" friendlyname="Family Game Rank" value="1349" bayesaverage="5.94764" />
</ranks>
<stddev value="1.35186" />
<median value="0" />
<owned value="4783" />
<trading value="147" />
<wanting value="48" />
<wishing value="218" />
<numcomments value="792" />
<numweights value="218" />
<averageweight value="1.6422" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="2524">
<thumbnail>https://cf.geekdo-images.com/8PIdXg87V8l-VuCZAplQlQ__small/img/OTL4rEL5eQ-8jJ_JubPwIq9LBIQ=/fit-in/200x150/filters:strip_icc()/pic567384.jpg</thumbnail>
<image>https://cf.geekdo-images.com/8PIdXg87V8l-VuCZAplQlQ__original/img/JRuDUwwK8S1jG9gZISv_Hwz5Kog=/0x0/filters:format(jpeg)/pic567384.jpg</image>
<name type="primary" sortindex="1" value="StarForce &#039;Alpha Centauri&#039;: Interstellar Conflict in the 25th Century" />
<name type="alternate" sortindex="1" value="StarForce &#039;Alpha Centauri&#039;: Interstellar Conflict in the 25th Century Designer&#039;s Edition" />
<description>Adapted from the box:
The game is a simulation of events within a conjectural future history in which telekinesis is used to move ships through space. It is played on a map which displays 74 star systems in a three-dimensional "sphere" of space measuring roughly 40 light years in diameter, with Earth's home system at the center. A grid of hexagons printed over the map is used to regulate movement and position of pieces. Pieces' exact locations are not known until they "meet" in the same three-dimensional "hex space".
The pieces in the game represent groups of four interstellar spaceships (StarForces) and space stations (StarGates). Each Player maneuvers his pieces (via Stellar Shifting) to engage those of the enemy. Movement is plotted and executed simultaneously. The game proceeds this way (for a specified number of turns) as the players try to achieve the objectives set forth in the rules. No prior knowledge is required to play the game - just a little ingenuity and common sense.
Battles take place when units are in the same three-dimensional location. In the Basic Game, the attacking Player compares the total variable strengths of the involved units and consults a simple probability table to determine the outcome of each battle. In the Advanced Game, a small tactical maneuver map is used. When enemy forces engage on the main map, they are transferred to the tactical display. Here they move (in three dimensions), attack and defend using a fixed number of action points per tactical turn.
Combat outcomes result in pieces not being destroyed but being "randomised"; usually to a location far from all the action.
Part of the StarForce Trilogy box set, along with Outreach and StarSoldier. There are also special rules to use Starsoldier as a tactical game for StarForce.
</description>
<yearpublished value="1974" />
<minplayers value="1" />
<maxplayers value="3" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="6">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="2" />
<result value="Not Recommended" numvotes="1" />
</results>
<results numplayers="2">
<result value="Best" numvotes="4" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="3">
<result value="Best" numvotes="1" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="3+">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="2" />
<result value="Not Recommended" numvotes="0" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 23 players" />
<result name="recommmendedwith" value="Recommended with 13+ players" />
</poll-summary> <playingtime value="240" />
<minplaytime value="240" />
<maxplaytime value="240" />
<minage value="12" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="2">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="0" />
<result value="10" numvotes="0" />
<result value="12" numvotes="0" />
<result value="14" numvotes="1" />
<result value="16" numvotes="1" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="4">
<results>
<result level="1" value="No necessary in-game text" numvotes="0" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="0" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="2" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="2" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1016" value="Science Fiction" />
<link type="boardgamecategory" id="1019" value="Wargame" />
<link type="boardgamemechanic" id="2689" value="Action Queue" />
<link type="boardgamemechanic" id="2676" value="Grid Movement" />
<link type="boardgamemechanic" id="2026" value="Hexagon Grid" />
<link type="boardgamemechanic" id="2070" value="Simulation" />
<link type="boardgamefamily" id="64949" value="Components: Map (Interplanetary or Interstellar scale)" />
<link type="boardgamefamily" id="58557" value="Series: Simultaneous Movement System (SPI)" />
<link type="boardgameintegration" id="6215" value="StarSoldier: Tactical Warfare in the 25th Century" />
<link type="boardgamecompilation" id="146115" value="StarForce Trilogy" />
<link type="boardgamedesigner" id="1030" value="Redmond Aksel Simonsen" />
<link type="boardgameartist" id="1030" value="Redmond Aksel Simonsen" />
<link type="boardgamepublisher" id="120" value="SPI (Simulations Publications, Inc.)" />
<statistics page="1">
<ratings >
<usersrated value="308" />
<average value="6.42178" />
<bayesaverage value="5.58494" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="10357" bayesaverage="5.58494" />
<rank type="family" id="4664" name="wargames" friendlyname="War Game Rank" value="1684" bayesaverage="5.90832" />
</ranks>
<stddev value="1.81036" />
<median value="0" />
<owned value="1203" />
<trading value="72" />
<wanting value="28" />
<wishing value="118" />
<numcomments value="240" />
<numweights value="45" />
<averageweight value="3.4444" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="2529">
<thumbnail>https://cf.geekdo-images.com/U4aLOWpOLNtUjQ5BirlGLA__small/img/thPXwIIE3knD9igpLusCdeHVsMI=/fit-in/200x150/filters:strip_icc()/pic806423.jpg</thumbnail>
<image>https://cf.geekdo-images.com/U4aLOWpOLNtUjQ5BirlGLA__original/img/5m1hrtRgt6lst9tajA4o169D4wA=/0x0/filters:format(jpeg)/pic806423.jpg</image>
<name type="primary" sortindex="1" value="Flat Top" />
<description>Flat Top is a board wargame of high complexity that covers the battles of the Solomon Seas between the United States and Japan in 1942. It is very well researched and covers all aspects of naval and air combat as it existed in 1942. The system depicts weather, air searches, air combat, surface combat, carrier operations, submarines, air bases, supplies, and much more. The game requires intense planning and searching since movement is covert and the map is huge.
The units are individual ships and submarines with each air point representing three aircraft. Hexes are twenty miles, and each turn represents one hour.
The game includes thirteen hundred counters, 4 maps to create a 44" x 28" map of the South Pacific, four Allied/Japanese operations cards, three player aid cards and two log sheets.
First edition Battle Line has two counter card sheets containing 800 counters.
</description>
<yearpublished value="1977" />
<minplayers value="2" />
<maxplayers value="2" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="20">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="1" />
<result value="Not Recommended" numvotes="15" />
</results>
<results numplayers="2">
<result value="Best" numvotes="8" />
<result value="Recommended" numvotes="9" />
<result value="Not Recommended" numvotes="1" />
</results>
<results numplayers="2+">
<result value="Best" numvotes="15" />
<result value="Recommended" numvotes="2" />
<result value="Not Recommended" numvotes="1" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 3+ players" />
<result name="recommmendedwith" value="Recommended with 2+ players" />
</poll-summary> <playingtime value="360" />
<minplaytime value="360" />
<maxplaytime value="360" />
<minage value="12" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="10">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="0" />
<result value="10" numvotes="0" />
<result value="12" numvotes="2" />
<result value="14" numvotes="3" />
<result value="16" numvotes="5" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="8">
<results>
<result level="1" value="No necessary in-game text" numvotes="0" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="1" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="7" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="0" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="2650" value="Aviation / Flight" />
<link type="boardgamecategory" id="1008" value="Nautical" />
<link type="boardgamecategory" id="1019" value="Wargame" />
<link type="boardgamecategory" id="1049" value="World War II" />
<link type="boardgamemechanic" id="2072" value="Dice Rolling" />
<link type="boardgamemechanic" id="2850" value="Events" />
<link type="boardgamemechanic" id="2676" value="Grid Movement" />
<link type="boardgamemechanic" id="2026" value="Hexagon Grid" />
<link type="boardgamemechanic" id="2967" value="Hidden Movement" />
<link type="boardgamemechanic" id="2975" value="Line of Sight" />
<link type="boardgamemechanic" id="2947" value="Movement Points" />
<link type="boardgamemechanic" id="2055" value="Paper-and-Pencil" />
<link type="boardgamemechanic" id="2822" value="Scenario / Mission / Campaign Game" />
<link type="boardgamemechanic" id="2016" value="Secret Unit Deployment" />
<link type="boardgamemechanic" id="2070" value="Simulation" />
<link type="boardgamemechanic" id="2897" value="Variable Set-up" />
<link type="boardgamefamily" id="10634" value="Country: Japan" />
<link type="boardgamefamily" id="10619" value="Country: Papua New Guinea" />
<link type="boardgamefamily" id="13255" value="Country: Solomon Islands" />
<link type="boardgamefamily" id="14835" value="Country: USA" />
<link type="boardgamefamily" id="108080" value="Islands: Guadalcanal" />
<link type="boardgamefamily" id="61979" value="Players: Two-Player Only Games" />
<link type="boardgamefamily" id="72016" value="Players: Wargames with Rules Supporting Only Two Players" />
<link type="boardgamefamily" id="61649" value="Region: Pacific Ocean" />
<link type="boardgamefamily" id="111818" value="War Battlespace: Amphibious Warfare" />
<link type="boardgamefamily" id="106802" value="War Battlespace: Naval warfare" />
<link type="boardgamedesigner" id="136" value="S. Craig Taylor" />
<link type="boardgameartist" id="71" value="Rodger B. MacGowan" />
<link type="boardgamepublisher" id="5" value="The Avalon Hill Game Co" />
<link type="boardgamepublisher" id="1634" value="Battleline" />
<statistics page="1">
<ratings >
<usersrated value="959" />
<average value="7.35841" />
<bayesaverage value="5.98459" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="3295" bayesaverage="5.98459" />
<rank type="family" id="4664" name="wargames" friendlyname="War Game Rank" value="246" bayesaverage="6.83793" />
</ranks>
<stddev value="1.66752" />
<median value="0" />
<owned value="2527" />
<trading value="107" />
<wanting value="38" />
<wishing value="217" />
<numcomments value="497" />
<numweights value="140" />
<averageweight value="4.2286" />
</ratings>
</statistics>
</item>
</items>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,721 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgameexpansion" id="290448">
<thumbnail>https://cf.geekdo-images.com/7izK8WM_bgtvBzxQvLGz-A__small/img/Q76pV0p00R8qkcS6o-nczJD7DCk=/fit-in/200x150/filters:strip_icc()/pic4982682.jpg</thumbnail>
<image>https://cf.geekdo-images.com/7izK8WM_bgtvBzxQvLGz-A__original/img/NFkKrFCKJ1YUC1x7bpx-WVDhLq0=/0x0/filters:format(jpeg)/pic4982682.jpg</image>
<name type="primary" sortindex="1" value="Wingspan: European Expansion" />
<name type="alternate" sortindex="1" value="Fesztáv: Európai Madarak" />
<name type="alternate" sortindex="1" value="Flügelschlag: Europa-Erweiterung" />
<name type="alternate" sortindex="1" value="Na křídlech: Perutě Evropy" />
<name type="alternate" sortindex="1" value="Na skrzydłach: Ptaki Europy" />
<name type="alternate" sortindex="1" value="Spārnotie: Eiropas putni" />
<name type="alternate" sortindex="1" value="Sparnuotieji: Europos paukščiai" />
<name type="alternate" sortindex="1" value="Tiivulised: Euroopa mängulaiendus" />
<name type="alternate" sortindex="1" value="Wingspan Uitbreiding: Europa" />
<name type="alternate" sortindex="1" value="Wingspan: Espansione Europa" />
<name type="alternate" sortindex="1" value="Wingspan: Euroopan linnut lisäosa" />
<name type="alternate" sortindex="1" value="Wingspan: Europæisk Udvidelse" />
<name type="alternate" sortindex="1" value="Wingspan: Europeisk expansion" />
<name type="alternate" sortindex="1" value="Wingspan: Expansão Europa" />
<name type="alternate" sortindex="1" value="Wingspan: Expansão Europeia" />
<name type="alternate" sortindex="1" value="Wingspan: Expansión Europea" />
<name type="alternate" sortindex="1" value="Wingspan: Extensia Europeana" />
<name type="alternate" sortindex="1" value="Wingspan: Extension Europe" />
<name type="alternate" sortindex="1" value="Wingspan: Ptice Evrope" />
<name type="alternate" sortindex="1" value="Крила: Птахи Європи" />
<name type="alternate" sortindex="1" value="Криле: Европа" />
<name type="alternate" sortindex="1" value="Крылья: Птицы Европы" />
<name type="alternate" sortindex="1" value="ปีกปักษา ภาคเสริม: นกยุโรป" />
<name type="alternate" sortindex="1" value="ウイングスパン拡張 欧州の翼" />
<name type="alternate" sortindex="1" value="展翅翺翔:歐洲篇" />
<name type="alternate" sortindex="1" value="윙스팬: 유럽" />
<name type="alternate" sortindex="1" value="윙스팬: 유럽 확장" />
<description>In this first expansion to Wingspan, we increase the scope of the world to include the regal, beautiful, and varied birds of Europe. These birds feature a variety of new abilities, including a number of birds with round end abilities, abilities that increase interaction between players, and birds that benefit from excess cards/food. Along with the new bonus cards, they&amp;rsquo;re designed to be shuffled into the original decks of cards (and cards from future expansions).
The European Expansion also includes an additional tray for storing the growing collection of birds (past, present, and future), as well as 15 purple eggs, extra food tokens, and a colorful new scorepad designed for both multi-player and single-player scoring. It's designed by Elizabeth Hargrave and features birds illustrated by Natalia Rojas and Ana Maria Martinez.
&amp;mdash;description from the publisher
</description>
<yearpublished value="2019" />
<minplayers value="1" />
<maxplayers value="5" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="127">
<results numplayers="1">
<result value="Best" numvotes="4" />
<result value="Recommended" numvotes="61" />
<result value="Not Recommended" numvotes="22" />
</results>
<results numplayers="2">
<result value="Best" numvotes="33" />
<result value="Recommended" numvotes="73" />
<result value="Not Recommended" numvotes="3" />
</results>
<results numplayers="3">
<result value="Best" numvotes="80" />
<result value="Recommended" numvotes="28" />
<result value="Not Recommended" numvotes="2" />
</results>
<results numplayers="4">
<result value="Best" numvotes="35" />
<result value="Recommended" numvotes="53" />
<result value="Not Recommended" numvotes="10" />
</results>
<results numplayers="5">
<result value="Best" numvotes="6" />
<result value="Recommended" numvotes="47" />
<result value="Not Recommended" numvotes="36" />
</results>
<results numplayers="5+">
<result value="Best" numvotes="1" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="72" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 3 players" />
<result name="recommmendedwith" value="Recommended with 15 players" />
</poll-summary> <playingtime value="70" />
<minplaytime value="40" />
<maxplaytime value="70" />
<minage value="10" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="47">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="4" />
<result value="8" numvotes="14" />
<result value="10" numvotes="22" />
<result value="12" numvotes="6" />
<result value="14" numvotes="1" />
<result value="16" numvotes="0" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="15">
<results>
<result level="1" value="No necessary in-game text" numvotes="0" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="0" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="2" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="12" />
<result level="5" value="Unplayable in another language" numvotes="1" />
</results>
</poll>
<link type="boardgamecategory" id="1042" value="Expansion for Base-game" />
<link type="boardgamecategory" id="1089" value="Animals" />
<link type="boardgamecategory" id="1021" value="Economic" />
<link type="boardgamecategory" id="1094" value="Educational" />
<link type="boardgamemechanic" id="2072" value="Dice Rolling" />
<link type="boardgamemechanic" id="2875" value="End Game Bonuses" />
<link type="boardgamemechanic" id="2040" value="Hand Management" />
<link type="boardgamemechanic" id="2041" value="Open Drafting" />
<link type="boardgamemechanic" id="2004" value="Set Collection" />
<link type="boardgamefamily" id="45672" value="Animals: Birds" />
<link type="boardgamefamily" id="70948" value="Digital Implementations: Tabletopia" />
<link type="boardgamefamily" id="58267" value="Game: Wingspan" />
<link type="boardgamefamily" id="78198" value="Misc: Watch It Played How To Videos" />
<link type="boardgamefamily" id="72487" value="Organizations: Automa Factory" />
<link type="boardgamefamily" id="48871" value="Theme: Nature" />
<link type="boardgameexpansion" id="471469" value="Wingspan: Fan-Designed Card Packs Set 1" />
<link type="boardgameexpansion" id="266192" value="Wingspan" inbound="true"/>
<link type="boardgameexpansion" id="366161" value="Wingspan Asia" inbound="true"/>
<link type="boardgameaccessory" id="337694" value="Na skrzydłach: reDrewno Insert" />
<link type="boardgameaccessory" id="385692" value="Wingspan (+Europa +Oceania +Asia): The GiftForge Insert" />
<link type="boardgameaccessory" id="382383" value="Wingspan (+European and Oceania): Tower Rex Organizer" />
<link type="boardgameaccessory" id="347405" value="Wingspan + European and Oceania expansion: Game Tamer Organizer" />
<link type="boardgameaccessory" id="303964" value="Wingspan: European Expansion Deluxe Birds" />
<link type="boardgameaccessory" id="402091" value="Wingspan: European Expansion Vision-Friendly Cards" />
<link type="boardgameaccessory" id="402724" value="Wingspan: Fan Art Pack" />
<link type="boardgameaccessory" id="393448" value="Wingspan: Feldherr Organizer" />
<link type="boardgameaccessory" id="315526" value="Wingspan: Folded Space Insert" />
<link type="boardgameaccessory" id="330947" value="Wingspan: Folded Space Insert (Second edition)" />
<link type="boardgameaccessory" id="393955" value="Wingspan: Go7 Gaming insert" />
<link type="boardgameaccessory" id="455996" value="Wingspan: Meeple Source Large Emperor Penguins First Player Token" />
<link type="boardgameaccessory" id="372068" value="Wingspan: Nesting Box" />
<link type="boardgameaccessory" id="308103" value="Wingspan: Shipshape Game Box Organizer" />
<link type="boardgameaccessory" id="305000" value="Wingspan: The Game Doctors Insert" />
<link type="boardgameaccessory" id="348603" value="Wingspan: The GiftForge Insert" />
<link type="boardgameaccessory" id="365817" value="Wingspan: Tower Rex 105-Piece Wooden Food Token Set" />
<link type="boardgameaccessory" id="365812" value="Wingspan: Tower Rex 40-Piece Player Token Set" />
<link type="boardgameaccessory" id="294178" value="Wingspan: Tower Rex Organizer" />
<link type="boardgamedesigner" id="111338" value="Elizabeth Hargrave" />
<link type="boardgameartist" id="113749" value="Ana Maria Martinez Jaramillo" />
<link type="boardgameartist" id="113748" value="Natalia Rojas" />
<link type="boardgameartist" id="71164" value="Beth Sobel" />
<link type="boardgamepublisher" id="23202" value="Stonemaier Games" />
<link type="boardgamepublisher" id="267" value="999 Games" />
<link type="boardgamepublisher" id="38809" value="Angry Lion Games" />
<link type="boardgamepublisher" id="3475" value="Arclight Games" />
<link type="boardgamepublisher" id="50565" value="Bluebird Games" />
<link type="boardgamepublisher" id="7162" value="Brain Games" />
<link type="boardgamepublisher" id="6194" value="Delta Vision Publishing" />
<link type="boardgamepublisher" id="40415" value="Divercentro" />
<link type="boardgamepublisher" id="22380" value="Feuerland Spiele" />
<link type="boardgamepublisher" id="4785" value="Ghenos Games" />
<link type="boardgamepublisher" id="42325" value="Grok Games" />
<link type="boardgamepublisher" id="8291" value="Korea Boardgames" />
<link type="boardgamepublisher" id="3218" value="Lautapelit.fi" />
<link type="boardgamepublisher" id="34801" value="Lavka Games" />
<link type="boardgamepublisher" id="30677" value="Maldito Games" />
<link type="boardgamepublisher" id="5400" value="Matagot" />
<link type="boardgamepublisher" id="7992" value="MINDOK" />
<link type="boardgamepublisher" id="51614" value="MIPL" />
<link type="boardgamepublisher" id="7466" value="Rebel Sp. z o.o." />
<link type="boardgamepublisher" id="44241" value="Regatul Jocurilor" />
<link type="boardgamepublisher" id="33998" value="Siam Board Games" />
<link type="boardgamepublisher" id="39249" value="sternenschimmermeer" />
<link type="boardgamepublisher" id="36763" value="Surfin&#039; Meeple China" />
<link type="boardgamepublisher" id="44209" value="Ігромаг" />
<statistics page="1">
<ratings >
<usersrated value="17950" />
<average value="8.32366" />
<bayesaverage value="7.9225" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="Not Ranked" bayesaverage="7.9225" />
<rank type="family" id="5497" name="strategygames" friendlyname="Strategy Game Rank" value="Not Ranked" bayesaverage="7.95099" />
</ranks>
<stddev value="1.13097" />
<median value="0" />
<owned value="62821" />
<trading value="225" />
<wanting value="259" />
<wishing value="2606" />
<numcomments value="2482" />
<numweights value="265" />
<averageweight value="2.434" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,242 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="rpgitem" id="311654">
<thumbnail>https://cf.geekdo-images.com/211476emISgQLsa2h3BAYw__small/img/g9QMstNAY2uOVSR1rH5Hx7Gxquk=/fit-in/200x150/filters:strip_icc()/pic5625807.png</thumbnail>
<image>https://cf.geekdo-images.com/211476emISgQLsa2h3BAYw__original/img/nGOu9LrFF5udRimbJrei6HExde8=/0x0/filters:format(png)/pic5625807.png</image>
<name type="primary" sortindex="1" value="Alice is Missing" />
<name type="alternate" sortindex="1" value="Alice ha Desaparecido" />
<name type="alternate" sortindex="1" value="Zaginięcie Alice" />
<link type="rpg" id="62210" value="Alice is Missing" />
<description>From the kickstarter:
Alice is Missing, a silent role-playing game about the disappearance of Alice Briarwood, a high school junior in the small town of Silent Falls.
...
The game is played live and without verbal communication. Players inhabit their character for the entirety of the 90-minute play session, and instead of speaking, send text messages back and forth to the other characters in a group chat, as well as individually, as though they aren&amp;rsquo;t in the same place together.
Publisher's blurb:
The game is played live and without verbal communication. Players inhabit their character for the entirety of the 90-minute play session, and instead of speaking, send text messages back and forth to the other characters in a group chat, as well as individually, as though they aren&amp;rsquo;t in the same place together.
Haunting beautiful, deeply personal, and highly innovative Alice is Missing puts a strong focus on the emotional engagement between players, immersing them in a tense, dramatic mystery that unfolds organically through the text messages they send to one another. Right at home with games like Life Is Strange, Gone Home, Oxenfree, and Firewatch, it&amp;rsquo;s designed to feel as much like an event-style experience as it does a role-playing game.
A microbadge is available
</description>
<yearpublished value="2020" />
<link type="rpggenre" id="947" value="Childhood" />
<link type="rpggenre" id="178" value="Crime (Mystery / Detective / Noir)" />
<link type="rpggenre" id="612" value="Social (Relationships / Romance)" />
<seriescode value="" />
<link type="rpgcategory" id="2083" value="Core Rules (min needed to play)" />
<link type="rpgmechanic" id="3057" value="Cards (Specialized)" />
<link type="rpgmechanic" id="2099" value="Description Based (Narrative more so than Dice)" />
<link type="rpgpublisher" id="46732" value="Alis Games" />
<link type="rpgpublisher" id="49480" value="Choo Choo Games" />
<link type="rpgpublisher" id="2366" value="Devir" />
<link type="rpgpublisher" id="41585" value="Hunters Entertainment" />
<link type="rpgpublisher" id="22651" value="Origames" />
<link type="rpgpublisher" id="3242" value="Raven Distribution" />
<link type="rpgpublisher" id="28072" value="Renegade Game Studios" />
<link type="rpgpublisher" id="24844" value="Schwerkraft-Verlag" />
<link type="rpgdesigner" id="118091" value="Spenser Starke" />
<link type="rpgartist" id="14426" value="Caleb Cleveland" />
<link type="rpgartist" id="50805" value="Christopher De La Rosa" />
<link type="rpgartist" id="127598" value="Julianne Griepp" />
<link type="rpgproducer" id="47313" value="Tomasz &quot;Sting&quot; Chmielik" />
<statistics page="1">
<ratings >
<usersrated value="304" />
<average value="7.58289" />
<bayesaverage value="7.32759" />
<ranks>
<rank type="subtype" id="16" name="rpgitem" friendlyname="RPG Item Rank" value="123" bayesaverage="7.32759" />
</ranks>
<stddev value="2.12215" />
<median value="0" />
<owned value="2008" />
<trading value="24" />
<wanting value="20" />
<wishing value="423" />
<numcomments value="97" />
<numweights value="23" />
<averageweight value="1.9565" />
</ratings>
</statistics>
</item>
</items>
@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="3585">
<thumbnail>https://cf.geekdo-images.com/NpauF7CJudER5H5nj-z-gA__small/img/Vo85InhIcQUg1myZBiHCL22uu8A=/fit-in/200x150/filters:strip_icc()/pic10078.jpg</thumbnail>
<image>https://cf.geekdo-images.com/NpauF7CJudER5H5nj-z-gA__original/img/eGfEPINMJA_0pAKWAYyjJaXmaQo=/0x0/filters:format(jpeg)/pic10078.jpg</image>
<name type="primary" sortindex="1" value="Sorcerer: The Game of Magical Conflict" />
<name type="alternate" sortindex="4" value="De Magier: een Spel van Magische Konflikten" />
<name type="alternate" sortindex="1" value="Sorcier: Le Jeu des Conflits Magiques" />
<description>Sorcerer is a fantasy wargame. Each player has an army consisting of Sorcerers, human infantry, and magical units (trolls, demons, and dragons). Sorcerers specialize in types of magic represented by 7 different colors. Sorcerer adds a twist to the old "combat differential" system (attack strength minus defense strength) by adding a circular system of combat bonuses based upon what colors of magic are attacking each other; Blue/Green/Yellow/Grey/Orange/Red/Purple with each color having a strong advantage over it's neighbor to the right (with Purple circling around to have power over Blue) and a disadvantage against it's neighbor to the left, with lessening combat bonuses the further away the color is from itself. Combat bonuses are also given based on map position as the hexes alternate colors of magic instead of representing physical terrain. Attacking from one's own color is good.
Several different scenarios are included in the rulebook that range from 1 to 6 players.
</description>
<yearpublished value="1975" />
<minplayers value="1" />
<maxplayers value="6" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="2">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="2" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="2">
<result value="Best" numvotes="2" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="3">
<result value="Best" numvotes="2" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="4">
<result value="Best" numvotes="1" />
<result value="Recommended" numvotes="1" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="5">
<result value="Best" numvotes="1" />
<result value="Recommended" numvotes="1" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="6">
<result value="Best" numvotes="2" />
<result value="Recommended" numvotes="0" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="6+">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="1" />
<result value="Not Recommended" numvotes="0" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 23, 6 players" />
<result name="recommmendedwith" value="Recommended with 16+ players" />
</poll-summary> <playingtime value="60" />
<minplaytime value="60" />
<maxplaytime value="60" />
<minage value="10" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="2">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="0" />
<result value="10" numvotes="0" />
<result value="12" numvotes="1" />
<result value="14" numvotes="0" />
<result value="16" numvotes="1" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="2">
<results>
<result level="1" value="No necessary in-game text" numvotes="0" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="0" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="2" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="0" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1010" value="Fantasy" />
<link type="boardgamecategory" id="1019" value="Wargame" />
<link type="boardgamemechanic" id="2001" value="Action Points" />
<link type="boardgamemechanic" id="2676" value="Grid Movement" />
<link type="boardgamemechanic" id="2026" value="Hexagon Grid" />
<link type="boardgamemechanic" id="2003" value="Rock-Paper-Scissors" />
<link type="boardgamemechanic" id="2070" value="Simulation" />
<link type="boardgamedesigner" id="1030" value="Redmond Aksel Simonsen" />
<link type="boardgameartist" id="16468" value="Larry Catalano" />
<link type="boardgameartist" id="20667" value="Gwen England" />
<link type="boardgameartist" id="5061" value="Manfred F. Milkuhn" />
<link type="boardgameartist" id="7661" value="Linda Mosca" />
<link type="boardgameartist" id="1030" value="Redmond Aksel Simonsen" />
<link type="boardgamepublisher" id="120" value="SPI (Simulations Publications, Inc.)" />
<statistics page="1">
<ratings >
<usersrated value="238" />
<average value="5.66004" />
<bayesaverage value="5.50365" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="25110" bayesaverage="5.50365" />
<rank type="family" id="4664" name="wargames" friendlyname="War Game Rank" value="4295" bayesaverage="5.50922" />
<rank type="family" id="5496" name="thematic" friendlyname="Thematic Rank" value="1701" bayesaverage="5.50617" />
</ranks>
<stddev value="1.64246" />
<median value="0" />
<owned value="757" />
<trading value="46" />
<wanting value="18" />
<wishing value="70" />
<numcomments value="149" />
<numweights value="29" />
<averageweight value="2.6897" />
</ratings>
</statistics>
</item>
</items>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,581 @@
<?xml version="1.0" encoding="utf-8"?><items termsofuse="https://boardgamegeek.com/xmlapi/termsofuse"><item type="boardgame" id="71">
<thumbnail>https://cf.geekdo-images.com/tUdVpt5daNITDrLXqN931Q__small/img/AI7xWgZxUCdXZHPH5WXCXWSAKUI=/fit-in/200x150/filters:strip_icc()/pic114473.jpg</thumbnail>
<image>https://cf.geekdo-images.com/tUdVpt5daNITDrLXqN931Q__original/img/121amP5yjflTHIFW017EGPe5Rjk=/0x0/filters:format(jpeg)/pic114473.jpg</image>
<name type="primary" sortindex="1" value="Civilization" />
<name type="alternate" sortindex="1" value="Civilisation" />
<name type="alternate" sortindex="1" value="Civilizacion" />
<name type="alternate" sortindex="1" value="Civilización: El Juego De Las Culturas Mediterráneas" />
<name type="alternate" sortindex="1" value="Sivilisaatio" />
<description>Civilization is a game of skill for 2 to 7 players. It covers the development of ancient civilizations from the invention of agriculture c. 8000 B.C. to the emergence of Rome around the middle of the third century B.C. Each player leads a nation of peoples over a map board of the Eastern Mediterranean and Near East as they attempt to carve a niche for themselves and their culture.
Although battles and territorial strategy are important, this is not a war game because it is not won by battle or conquest. Instead, the object of play is to gain a level of overall advancement involving cultural, economic, and political factors so that such conflicts that do arise are a result of rivalry and land shortage rather than a desire to eliminate other players. Nomad and farmer, warrior and merchant, artisan and citizen all have an essential part to play in the development of civilization. It is the player who most effectively changes emphasis between these various outlooks who will achieve the best balance and win.
(from the Introduction to the Avalon Hill edition rulebook)
This game has a huge following and is widely regarded as one of the best games about ancient civilizations. Each player takes on the role of leader of an ancient civilization, such as the Illyrians or Babylonians. Your task is to guide your people through the ages by expanding your empire and using its proceeds to finance new technological advances, such as Literacy, Metalworking, or Law. The advancements help your civilization better cope with its problems as well as help bring new advancements.
Civilization is widely thought to be the first game ever to incorporate a "technology tree," allowing players to gain certain items and abilities only after particular other items were obtained. This influential mechanism has been adopted by countless other board games, card games, and computer games.
</description>
<yearpublished value="1980" />
<minplayers value="2" />
<maxplayers value="7" />
<poll name="suggested_numplayers" title="User Suggested Number of Players" totalvotes="126">
<results numplayers="1">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="1" />
<result value="Not Recommended" numvotes="82" />
</results>
<results numplayers="2">
<result value="Best" numvotes="0" />
<result value="Recommended" numvotes="10" />
<result value="Not Recommended" numvotes="84" />
</results>
<results numplayers="3">
<result value="Best" numvotes="1" />
<result value="Recommended" numvotes="40" />
<result value="Not Recommended" numvotes="51" />
</results>
<results numplayers="4">
<result value="Best" numvotes="18" />
<result value="Recommended" numvotes="62" />
<result value="Not Recommended" numvotes="16" />
</results>
<results numplayers="5">
<result value="Best" numvotes="41" />
<result value="Recommended" numvotes="63" />
<result value="Not Recommended" numvotes="4" />
</results>
<results numplayers="6">
<result value="Best" numvotes="57" />
<result value="Recommended" numvotes="56" />
<result value="Not Recommended" numvotes="0" />
</results>
<results numplayers="7">
<result value="Best" numvotes="72" />
<result value="Recommended" numvotes="32" />
<result value="Not Recommended" numvotes="7" />
</results>
<results numplayers="7+">
<result value="Best" numvotes="6" />
<result value="Recommended" numvotes="14" />
<result value="Not Recommended" numvotes="48" />
</results>
</poll>
<poll-summary name="suggested_numplayers" title="User Suggested Number of Players">
<result name="bestwith" value="Best with 67 players" />
<result name="recommmendedwith" value="Recommended with 47 players" />
</poll-summary> <playingtime value="360" />
<minplaytime value="360" />
<maxplaytime value="360" />
<minage value="12" />
<poll name="suggested_playerage" title="User Suggested Player Age" totalvotes="38">
<results>
<result value="2" numvotes="0" />
<result value="3" numvotes="0" />
<result value="4" numvotes="0" />
<result value="5" numvotes="0" />
<result value="6" numvotes="0" />
<result value="8" numvotes="0" />
<result value="10" numvotes="7" />
<result value="12" numvotes="19" />
<result value="14" numvotes="8" />
<result value="16" numvotes="4" />
<result value="18" numvotes="0" />
<result value="21 and up" numvotes="0" />
</results>
</poll> <poll name="language_dependence" title="Language Dependence" totalvotes="37">
<results>
<result level="1" value="No necessary in-game text" numvotes="2" />
<result level="2" value="Some necessary text - easily memorized or small crib sheet" numvotes="26" />
<result level="3" value="Moderate in-game text - needs crib sheet or paste ups" numvotes="8" />
<result level="4" value="Extensive use of text - massive conversion needed to be playable" numvotes="1" />
<result level="5" value="Unplayable in another language" numvotes="0" />
</results>
</poll>
<link type="boardgamecategory" id="1050" value="Ancient" />
<link type="boardgamecategory" id="1015" value="Civilization" />
<link type="boardgamecategory" id="1021" value="Economic" />
<link type="boardgamecategory" id="1026" value="Negotiation" />
<link type="boardgamemechanic" id="2080" value="Area Majority / Influence" />
<link type="boardgamemechanic" id="2046" value="Area Movement" />
<link type="boardgamemechanic" id="2903" value="Automatic Resource Growth" />
<link type="boardgamemechanic" id="2040" value="Hand Management" />
<link type="boardgamemechanic" id="2004" value="Set Collection" />
<link type="boardgamemechanic" id="2070" value="Simulation" />
<link type="boardgamemechanic" id="2849" value="Tech Trees / Tech Tracks" />
<link type="boardgamemechanic" id="2008" value="Trading" />
<link type="boardgamemechanic" id="2826" value="Turn Order: Stat-Based" />
<link type="boardgamefamily" id="27524" value="Ancient: Babylon" />
<link type="boardgamefamily" id="72535" value="Ancient: Egypt" />
<link type="boardgamefamily" id="52373" value="Ancient: Greece" />
<link type="boardgamefamily" id="5606" value="Ancient: Rome" />
<link type="boardgamefamily" id="64960" value="Components: Map (Continental / National scale)" />
<link type="boardgamefamily" id="22642" value="Game: Civilization" />
<link type="boardgamefamily" id="27503" value="Islands: Crete (Greece)" />
<link type="boardgamefamily" id="109134" value="Misc: BGG Hall of Fame" />
<link type="boardgamefamily" id="105030" value="Misc: Dice Tower Hall of Fame" />
<link type="boardgamefamily" id="113768" value="Players: Games with expansions that change player count" />
<link type="boardgamefamily" id="65387" value="Region: Aegean Sea" />
<link type="boardgamefamily" id="58955" value="Region: Mediterranean Sea" />
<link type="boardgamefamily" id="106812" value="War Level of Command: Grand Strategy" />
<link type="boardgameexpansion" id="177" value="Advanced Civilization" />
<link type="boardgameexpansion" id="16109" value="Civilization Eastern Expansion Map" />
<link type="boardgameexpansion" id="11568" value="Civilization: Expansion Trade Cards Set" />
<link type="boardgameexpansion" id="79843" value="Civilization: The Expansion Project" />
<link type="boardgameexpansion" id="2058" value="Civilization: West Extension Map" />
<link type="boardgameintegration" id="143347" value="Civilization Central America" />
<link type="boardgameintegration" id="131240" value="Civilization: The New World" />
<link type="boardgameimplementation" id="184424" value="Mega Civilization" />
<link type="boardgamedesigner" id="58" value="Francis Tresham" />
<link type="boardgameartist" id="22241" value="Ed Dovey" />
<link type="boardgameartist" id="2652" value="Charles Kibler" />
<link type="boardgameartist" id="71" value="Rodger B. MacGowan" />
<link type="boardgameartist" id="17672" value="Guillaume Rohmer" />
<link type="boardgameartist" id="12252" value="Dale Sheaffer" />
<link type="boardgameartist" id="58" value="Francis Tresham" />
<link type="boardgamepublisher" id="333" value="Hartland Trefoil Ltd." />
<link type="boardgamepublisher" id="4225" value="ACE Pelit Oy" />
<link type="boardgamepublisher" id="5" value="The Avalon Hill Game Co" />
<link type="boardgamepublisher" id="4259" value="Compendium Games" />
<link type="boardgamepublisher" id="41" value="Descartes Editeur" />
<link type="boardgamepublisher" id="103" value="Gibsons" />
<link type="boardgamepublisher" id="3458" value="Joc Internacional" />
<link type="boardgamepublisher" id="22" value="Piatnik" />
<link type="boardgamepublisher" id="5979" value="Spiel &amp; Kunst" />
<link type="boardgamepublisher" id="307" value="Welt der Spiele" />
<statistics page="1">
<ratings >
<usersrated value="7710" />
<average value="7.48444" />
<bayesaverage value="6.96651" />
<ranks>
<rank type="subtype" id="1" name="boardgame" friendlyname="Board Game Rank" value="540" bayesaverage="6.96651" />
<rank type="family" id="5497" name="strategygames" friendlyname="Strategy Game Rank" value="369" bayesaverage="7.04146" />
</ranks>
<stddev value="1.61086" />
<median value="0" />
<owned value="11664" />
<trading value="467" />
<wanting value="223" />
<wishing value="1097" />
<numcomments value="2446" />
<numweights value="774" />
<averageweight value="3.6421" />
</ratings>
</statistics>
</item>
</items>
+36 -4
View File
@@ -110,11 +110,11 @@ def test_run_resolve_writes_csv_and_is_idempotent(client, tmp_path):
cfg = Config(data_dir=data_dir)
first = run_resolve(cfg, client=client)
assert len(first) == 13
assert len(first) == 15
with cfg.matches_path.open(newline="") as f:
rows = list(csv.DictReader(f))
assert len(rows) == 13
assert len(rows) == 15
by_title = {r["title_raw"]: r for r in rows}
assert by_title["Catan"]["match_status"] == "auto"
assert by_title["Citadels"]["match_status"] == "ambiguous"
@@ -295,6 +295,29 @@ def test_starforce_two_word_head_matches_full_title(client):
assert row.version_status == "version_ambiguous"
def test_sibling_editions_surface_as_ambiguous(client):
"""BGG files new editions as SEPARATE games ("Wiz-War (Eighth
Edition)"): a lone exact match must not hide its siblings behind a
confident auto the user can't know what they never see."""
entry = _entry("WIZ-WAR", confidence="high")
row = resolve_entry(client, entry)
assert row.match_status == "ambiguous"
names = {c.name for c in row.candidates}
assert "Wiz-War" in names
assert any("Eighth Edition" in n for n in names)
assert any("9th Edition" in n for n in names)
def test_lone_obscure_candidate_never_autos(client):
"""BGG's search visibly truncates generic queries — the game named
"Dungeon!" appears in NEITHER of its own searches so the sole
surviving candidate may be an impostor. Ambiguous, never auto."""
entry = _entry("Dungeon!", confidence="high")
row = resolve_entry(client, entry)
assert row.match_status == "ambiguous"
assert row.bgg_id is None
def test_wrong_year_hint_never_drives_a_version(client):
"""Flat Top's box says 1942 (the theme, not the print year): version
scoring must not pick any version off the back of it."""
@@ -474,11 +497,20 @@ def test_run_resolve_dedupes_and_keeps_all_rows(tmp_path):
'<name type="primary" value="Wingspan"/><yearpublished value="2019"/>'
"</item></items>"
)
for query in ("Wingspan", "WINGSPAN!"):
# "WINGSPAN" is the depunct retry of "WINGSPAN!"; the stats file is
# the lone-candidate trust check (owned must clear the floor)
for query in ("Wingspan", "WINGSPAN!", "WINGSPAN"):
key = cache_key(
"search", {"query": query, "type": "boardgame,boardgameexpansion"}
)
(cache / key).write_text(wingspan_xml)
(cache / cache_key("thing", {"id": "266192", "stats": "1"})).write_text(
'<items><item type="boardgame" id="266192">'
'<name type="primary" value="Wingspan"/><yearpublished value="2019"/>'
'<statistics><ratings><owned value="120000"/>'
'<ranks><rank type="subtype" id="1" name="boardgame" value="30"/></ranks>'
"</ratings></statistics></item></items>"
)
data_dir = tmp_path / "data"
data_dir.mkdir()
@@ -517,7 +549,7 @@ def test_run_resolve_force_rebuilds_from_scratch(client, tmp_path):
write_matches(cfg.matches_path, rows)
forced = run_resolve(cfg, force=True, client=client)
assert len(forced) == 13 # every title re-resolved, none skipped
assert len(forced) == 15 # every title re-resolved, none skipped
fresh = {r["title_raw"]: r for r in read_matches(cfg.matches_path)}
assert fresh["Catan"]["match_status"] == "auto"