Karte Rangliste

Bayro1997

Bayro1997
Punkte:12.151
Rang:294
Besiegte Gegner: 678 (2738.)
Stamm: -RaR-


Dörfer (3) Koordinaten Punkte
001 Aschaffenburg
423|496 5.774
002 München
418|505 2.201
003 Stuttgart
424|494 4.176
Profil
Profilbild
Persönlicher Text
===== STAMM-ANALYSE =====


Distanzen sind in Felder angegeben.

Stamm: RaR

MetrikWert
Dörfer38
Nächstes Dorf2,24
Median-Distanz18,90
Durchschnitt18,79
Standardabweichung8,25
25%-Perzentil13,11
75%-Perzentil24,15
Innerhalb 52
Innerhalb 105
Innerhalb 2022


Auswertung:
Zwei Dörfer sind sehr nah (≤5), fünf weitere liegen in kurzer Distanz (≤10). Insgesamt 22 Dörfer befinden sich in der näheren Umgebung (≤20). Sehr starke kurzfristige und mittelfristige Unterstützung möglich.

---

Stamm: NPC

MetrikWert
Dörfer15
Nächstes Dorf6,00
Median-Distanz20,00
Durchschnitt20,96
Standardabweichung9,44
25%-Perzentil16,74
75%-Perzentil21,55
Innerhalb 50
Innerhalb 101
Innerhalb 208


Auswertung:
Kein Dorf ist sehr nah (≤5). Ein Dorf liegt in kurzer Distanz (≤10), acht weitere befinden sich in mittlerer Reichweite (≤20). Kurzfristige Unterstützung ist gering, mittelfristig moderat möglich.

---

Stamm: AoD

MetrikWert
Dörfer20
Nächstes Dorf8,00
Median-Distanz23,27
Durchschnitt27,36
Standardabweichung11,86
25%-Perzentil19,05
75%-Perzentil34,52
Innerhalb 50
Innerhalb 101
Innerhalb 206


Auswertung:
Kein Dorf ist sehr nah. Ein Dorf liegt innerhalb kurzer Distanz (≤10), sechs weitere in mittlerer Reichweite (≤20). Direkte Unterstützung ist begrenzt, strategischer Einfluss eher langfristig.

---

Stamm: WAX

MetrikWert
Dörfer18
Nächstes Dorf10,05
Median-Distanz16,22
Durchschnitt16,21
Standardabweichung4,20
25%-Perzentil12,88
75%-Perzentil18,84
Innerhalb 50
Innerhalb 100
Innerhalb 2015


Auswertung:
Keine Dörfer sind sehr nah oder nah. Allerdings liegen 15 Dörfer innerhalb mittlerer Distanz (≤20). Kurzfristige Unterstützung fehlt, mittelfristig jedoch sehr solide Präsenz.


from PIL import Image
import numpy as np
from collections import defaultdict

IMAGE_PATH = "de252.png"
BLOCK = 8
TOL = 40

# =========================
# COLOR DEFINITIONS
# =========================
COLOR_NAMES = {
(0, 0, 0): "NPC",
(255, 8, 255): "AoD",
(227, 224, 28): "RAR",
(252, 252, 252): "WAX",
(8, 62, 255): "Me",
(180, 0, 0): "Others",
(45, 91, 29): "Background"
}

def is_close(pixel, target):
"""Check if two colors are within tolerance."""
return np.all(np.abs(np.array(pixel) - np.array(target)) <= TOL)

# =========================
# LOAD IMAGE & DOWNSAMPLE
# =========================
data = np.array(Image.open(IMAGE_PATH).convert("RGB"))
grid = data[BLOCK//2::BLOCK, BLOCK//2::BLOCK] # pick center pixels
tiles_y, tiles_x = grid.shape[:2]

# =========================
# COLLECT POSITIONS BY COLOR
# =========================
positions_by_color = defaultdict(list)
unknown_colors = {} # map unknown rgb -> "Color N"
unknown_counter = 1

for y in range(tiles_y):
for x in range(tiles_x):
pixel = tuple(grid[y, x])
# match to known colors
matched = False
for kc in COLOR_NAMES:
if is_close(pixel, kc):
positions_by_color[kc].append((y, x))
matched = True
break
if not matched:
if pixel not in unknown_colors:
unknown_colors[pixel] = f"Color {unknown_counter}"
unknown_counter += 1
positions_by_color[pixel].append((y, x))

# =========================
# REFERENCE POSITIONS ("Me") FOR DISTANCES
# =========================
my_color = [c for c, name in COLOR_NAMES.items() if "Me" in name] # reference color
my_positions = np.array([pos for c in my_color for pos in positions_by_color[c]])

# =========================
# CALCULATE DISTANCES
# =========================
color_distances = defaultdict(list)

for color, positions in positions_by_color.items():
if color in my_color: # skip reference color itself
continue
if my_positions.size:
for y, x in positions:
dists = np.sqrt(np.sum((my_positions - [y, x])**2, axis=1))
color_distances[color].append(np.min(dists))

# =========================
# PRINT STRATEGIC METRICS
# =========================
ignore_names = {"Others", "Background"}

print("\n===== SUPPORT ANALYSIS =====\n")
for color, dists in color_distances.items():
dists = np.array(dists)
# Name known or unknown
name = COLOR_NAMES.get(color, unknown_colors.get(color, f"Unknown{color}"))

if name in ignore_names: # skip unwanted colors
continue

print(f"Color: {color} → {name}")
print("Villages:", len(dists))
print("Closest:", round(np.min(dists), 2))
print("Median:", round(np.median(dists), 2))
print("Average:", round(np.mean(dists), 2))
print("Std dev:", round(np.std(dists), 2))
print("25%:", round(np.percentile(dists, 25), 2))
print("75%:", round(np.percentile(dists, 75), 2))
print("\nSupport ranges:")
for r in [5, 10, 20]:
print(f"Within {r}:", np.sum(dists <= r))
print("\n" + "-"*50 + "\n")

Kampferfolge
Plünderer (Gold - Stufe 4)

Plündere 10.000-mal fremde Dörfer.


Räuber (Bronze - Stufe 2)

Erbeute insgesamt 10.000 Rohstoffe.


Kriegsherr (Holz - Stufe 1)

Greife 10 verschiedene Spieler an


 
Soziale Erfolge
Erfolgreiche Rekrutierung (Holz - Stufe 1)

Lade 1 noch nicht registrierten Freund zum Spiel ein, der anschließend 500 Punkte erreicht.


Treuer Freund (Holz - Stufe 1)

Habe insgesamt 5 Freunde.


Waffenbruder (Holz - Stufe 1)

Bleibe 30 Tage lang Mitglied deines Stammes.


 
Wachstumserfolge
Architekt (Bronze - Stufe 2)

Baue insgesamt 150 Gebäudestufen!


Punktekönig (Bronze - Stufe 2)

Steige in der Rangliste auf und erreiche 5.000 Punkte.


Rekrutierung vorantreiben (Bronze - Stufe 2)

Rekrutiere insgesamt 5.000 Einheiten!


Der Archäologe (Holz - Stufe 1)

Entdecke 2 einzigartige Reliquien.


Herr der Aufgaben (Holz - Stufe 1)

Schließe 40 Aufgaben ab!


Kaufmann (Holz - Stufe 1)

Handle 10-mal auf dem Marktplatz.


Ruhm und Reichtum (Holz - Stufe 1)

Habe 2 Reliquien ausgerüstet!


 
Erfolge in anderen Welten
Welt 251