DK Mapa
Program pro vizualizaci dat poskytovaných provozovateli on-line her "Divoké kmeny" ("Tribal Wars", "Die Stämme", ...).1. Screenshot
Jak známo, jeden obrázek vydá za tisíc slov:
2. Historie verzí
- v0.1 - jednoduchý generátor mapy kmene v Perlu s raw výstupem
- v0.2 - jednoduchý generátor XML dat v Perlu pro flashovou aplikaci "DYI Map"
- v0.3 - generátor obrázku mapy v jazyce C spojený se sadou scriptů v Perlu pro generování webové stránky (spojení klikací mapy a onMouseOver)
- v0.4 - první Java verze programu, běžící jako applet na stránkach "Ghaata Royal Cartographic Service" (k běhu byl vyžadován SQL backend běžící tamtéž)
- v0.5.x - (od 18.2.2008) - první samostatně fungující verze (původní stránky této řady)
- v1.0beta1 - (6.6.2008) - první betaverze nové řady, ve které byly provedeny tyto hlavní změny:
- program byl z asi 90% přepsán, byl změněn objektový model, bylo znovuvytvořeno grafické rozhraní
- aktualizace světů probíhá přes grafické rozhraní
- je možná změna velikosti okna a jeho roztažení na celou obrazovku
- je možné označit libovolné množství kmenů/hráčů/vesnic jednou ze 32 barev
- byl implementován zoom
- program ukazuje doby přesunu jednotlivých jednotek
- je možné přímo z programu otevřít stránku kmene/hráče/vesnice
- bylo doplněno rozhraní v angličtině (automaticky aktivní na jiných než českých a slovenských OS)
- v1.0beta2 - (5.8.2008) - oproti předchozí betaverzi byly provedeny tyto hlavní změny:
- původní generovaný kód GUI layoutu byl přepsán ručně (částečně vidět na vzhledu programu)
- nyní jsou k dispozici tři nezávislé seznamy k označení kmenů/hráčů/vesnic
- položky druhého a třetího seznamu lze promítat do mapy prvního seznamu předdefinovanými barvami
- dialog pro přidávání položek do seznamů byl zcela přepracován
- položkám v seznamu lze dodatečně měnit barvu
- při vyhledávání není třeba dodržovat velikost písmen
- je možné vyhledat i kmeny s číselným tagem
- byla přidána funkce přesunu na zadané souřadnice nebo kontinent
- funkce "Mapa podle bodů vesnic" byla nahrazena funkcí "Mapa podle bodů hráčů"
- v1.0 - (3.2.2009) - je zřejmě poslední mnou vydaná verze s těmito změnami:
- v menu přibyla položka "Automatické znovuvytváření mapy", kterou se dá vypnout automatické přegenerování mapy po každé manipulaci se seznamy; manuální přegenerování se pak spustí klepnutím na progress bar vpravo dole
- ve stahovaných a ukládaných souborech bylo zohledněno přejmenování "tribe" na "player"
- byl doplněn .exe spuštěč vytvořený pomocí Launch4j
- protože končím s aktivním vývojem, byl uvolněn kompletní zdrojový kód pod licencí GNU GPL v3
3. Požadavky na systém
Program je napsán v jazyce Java 6 a proto běží na jakékoliv platformě, pro kterou je k dispozici příslušné JRE (Linux, Windows 2000 a výše, ...). Pokud nemáte JRE (Java Runtime Environment) v počítači nainstalováno, aktuální verzi si můžete stáhnout například zde: http://java.com/en/download/index.jsp.4. Download
DKMapa-1.0.zip [81kB]5. Instalace
Stažený ZIP soubor rozbalte do adresáře dle vlastního výběru. Vlastní program je v souboru DKMapa, což je soubor typu .jar s odstraněnou příponou (někteří méně chápaví na něj totiž tvrdojíšně poklepávali a program se pak nespouštěl se správnými parametry). Ke spuštění slouží na platformě Linux script 'DKMapa-linux.sh', na platformě Windows pak spustitelný soubor 'DKMapa(.exe)' (na platformě Windows je rovněž možné použít script 'DKMapa-windows(.cmd)', v tomto případě bude možné sledovat výpisy případných výjimek).Protože se na fóru a v e-mailu množí dotazy od lidí, kteří buď neumí číst a nebo sedí u počítače, ačkoliv jej neumí používat, znovu opakuji, že .zip soubor se musí rozbalit, nestačí do něj vlézt a pokoušet se něco vevnitř spouštět. Windows toto nesmyslné chování bohužel umožňují...
6. Návod k použití
a) Aktualizace dat
Po úspěšném spuštění se objeví okno programu, které je vzápětí následováno dalším oknem "Zdroje dat", ve kterém je možné provádět aktualizace dat světů a vybírat svět k prohlížení. Vždy stačí myší označit řádek s příslušným světem a stisknout "Aktualizovat data světa" resp. "Prohlížet svět".Provozovatelé serveru mají v provozních podmínkách uvedeno, že stahování aktuálních dat je povoleno maximálně jedenkrát za hodinu. Protože i hodinové aktualizace jsou zbytečně časté, program odmítne provést aktualizaci dat z příslušného serveru, pokud od předchozí aktualizace neuběhlo více než osm hodin.
b) Prohlížení
Po stisku "Prohlížet svět" se chvíli importují data světa a pak se zobrazí mapa. Vlevo dole je zobrazena zmenšená mapa celého světa, bílý čtverec v ní ukazuje, na jaký výřez mapy se právě díváte. Vlastní výřez/mapa je ve střední části okna. Podklad mapy je zelený, na něm jsou šedě zobrazeny opuštěné vesnice a hnědě aktivní vesnice.Pohyb po mapě je možný více způsoby. Stiskem tlačítka myši na zmenšené mapě světa, stiskem a následným tažením tamtéž a nebo stiskem a tažením myši ve výřezu. Kolečkem myši je možné si mapu v určitém rozsahu přiblížit a oddálit (tzv. zoom), obdobně fungují i klávesy '+' a '-' na numerické části klávesnice (pro klávesnice bez numerického bloku fungují stejně i klávesy 'a' a 'q').
Přejetím myši nad vesnici se o ní v tzv. tooltipu zobrazí dostupné informace. Pokud na vesnici kliknete, tak ji tím vyberete a údaje se přesunou vlevo nad zmenšenou mapu světa. Výběr vesnice lze využít dvěma způsoby. Jednak se při přejetí myší přes jinou vesnici v tooltipu začnou objevovat i doby přesunu jednotek mezi těmito dvěma vesnicemi, druhak je možné využít odkazů vlevo pro přímý přístup na stránku vesnice/hráče/kmene. Výběr vesnice je možné zrušit kliknutím na zelenou část mapy.
Důležitou funkcí programu je zvýrazňování vesnic. Seznamy označených objektů jsou v pravé části okna. Objekty je možno přidávat buď klikem pravého myšítka nad konkrétní vesnicí na mapě (přidává objekty související s příslušnou vesnicí) nebo stiskem téhož myšítka nad seznamy (přidává objekty podle zadaného tagu/názvu/souřadnic/id).
Je možné používat tři nezávislé sady seznamů, které se přepínají stiskem tlačítek nad seznamy. Druhý a třetí seznam lze volbou v hlavním menu promítat do mapy prvního seznamu jednou z ve hře předdefinovaných barev (jako spojence, dohodu o neútočení a nebo nepřátele).
c) Mapa podle bodů hráčů
Protože experimentální funkce mapy podle bodů vesnic se ukázala jako nepoužitelná, byla nahrazena jinou experimentální mapou, která tentokrát zohledňuje body hráče v závislosti na jeho umístění na mapě.V zásadě jde o to, že je porovnán celkový počet bodů hráče s průměrem celkových počtů bodů hráčů v jeho okolí. Výsledek je pak zobrazen barevně. Žluté vesnice patří průměrným hráčům. Čím více je hráč nadprůměrný, tím více je jeho vesnice zabarvena do zelena, čím více je podprůměrný, tím více je zabarvena do červena.
Poznámka: Po prvním přepnutí do toho zobrazení v právě prohlíženém světě se provádí podrobná analýza dat, která může trvat až několik desítek sekund. Algoritmus lze sice velmi dobře optimalizovat, ale k tomu jsem se již nedostal.
d) Speciality
- Pokud si přejete přidat do seznamu světů další svět, stačí otevřít v nějakém textovém editoru (vi,
Poznámkový blok) soubor 'worlds.dat' a přidat příslušný řádek ve formátu:
Jméno světa,adresa.sveta,rychlost,rychlost_jednotek
- V posledních verzích programu již nejsou data světů uchovávána ve vlastním formátu programu, ale v původních (leč rozgzipovaných) souborech. Je tedy možné programu pro zobrazení předhodit libovolnou vlastní - třeba předfiltrovanou - databázi. Jména příslušných souborů jsou snadno odvoditelná a nebudu je tedy blíže rozebírat.
- Z příkazové řádky lze programu zadat parametr, který svět se má okamžitě po spuštění načíst a zobrazit, je tedy možné si vytvořit např. zástupce pro "rychlé" spouštění jednotlivých světů. Parametrem je číslo řádku v seznamu světů (číslováno od 1).
7. Stav projektu
Na konci roku 2007 jsem se rozhodl, že se naučím další programovací jazyk - Java. Shodou okolností jsem tehdy hrál Divoké kmeny a tak mi tvorba mapového programu pro tuto hru připadala jako vhodný projekt pro základní seznámení s tímto jazykem. Po několika měsících vlažného hraní se mi Divoké kmeny omrzely, nicméně z několika důvodů jsem stále pokračoval v občasném hraní a ve vylepšování programu.Nyní již Divoké kmeny nehraji a další programování DKMapy již také neplánuji. Proto jsem se rozhodl vydat verzi z aktuálních zdrojových kódů jako finální verzi 1.0, i když ještě stále chybí některé původně plánované vlastnosti. Současně jsem se rozhodl vydat i zdrojové kódy pod licencí GNU GPL v3.
Co tedy není, leč mělo by být dokončeno:
- Mnoho výjimek by mělo být ošetřeno lépe, než prostým printStackTrace() (nějaký error dialog?).
- Když jsme u ošetřování výjimek, nejdůležitější jsou ty v SwingWorker threadech. Tam dokonce ani printStackTrace() nevypíše do konzole nic a ladění je pak komplikované.
- ColorListCellRenderer, ListItem and ListModel jsem chtěl přesunout jako vnořené třídy do MainWindow.
- Vztahy a vzájemná komunikace mezi třídami MainWindow a Visualizer by měly být méně chaotické.
- Mělo by být doplněno grafické rozhraní pro manipulaci s 'worlds.dat' souborem (přidat/odebrat svět).
- Možnost načítání a ukládání nezávislých seznamů by byla pěkná.
- Často požadovanou funkcí je uložení celé mapy jako obrázku.
- Vyladění grafického rozhraní.
8. Licence
Tento program je šířený pod licencí GNU GPL v3.9. Zdrojový kód
DKMapa-1.0-source.zip [49kB]10. Kontakt
Dikuse o programu probíhala zde: http://forum.divokekmeny.cz/showthread.php?t=3746Pro přímý kontakt v souvislosti s tímto programem použijte prosím e-mail: jirkas72 (zavináč) centrum (tečka) cz.
created: June 6, 2008, last modification: February 25, 2010





