• Psst! Ano, Ty! Ještě nejsi zaregistrovaný na našem herním fóru? Přicházíš tak o možnost zapojit se do diskuzí a navíc si tu můžeš zkrátit čekání například při výstavbě nové budovy či jednotek. Zaregistruj se ještě dnes pomocí následujícího odkazu:

    » Vytvořit účet na fóru

Mapa divokých kmenů - "konkurenční" projekt

Stav
Uzavřeno pro další odpovědi.

DeletedUser

Guest
2 Settler:

Napadlo mne pár programátorsky i drobných, ale i větších vylepšení. Náročnost jen odhaduji (někdy pár minut, někdy možná neřešitelné, dané java mašinou - sám ty limity přesně neznám, jsem low level Cčkař, ne Javista).

Takže se nejprve ptám, smí se do tohoto tématu dávat i návrhy na zlepšení?

Aby se to tu pak nezvrhlo v nesmyslné časově náročné požadavky. Nebo raději ingame message? Na druhou stranu, bude-li to tady, mohl by být vidět i zájem ostatních - že to nebude jen vychytávka pro jednoho hráče ;-)

Když se to tu už nakouslo :)
 

DeletedUser2029

Guest
Když se to tu už nakouslo :)
Ne ne, rozhodnutí bych opravdu nechal na Settlera.

Už jsem párkrát zažil, i na vlastní kůži, jak to může dospět do stádia "pro dobrotu na žebrotu". A místo, aby si lidé vážili, že někdo udělal něco zdarma (nebo to nepoužívali, když jim to nesedí), tak na projekt dští síru s ohněm, že je to blbý, autor neschopný a arogantní a že na ostatní kašle. A to často jen proto, že zrovna jejich "drobný" požadavek (který ale programátorsky znamená třeba 20 člověkodní) byl zamítnut. A jsou naštvaní (a dávají to všude na konferencích najevo) i přes vysvětlení proč to nejde (složitost) a i přes fakt, že dokud nebyla zamítnuta ta jejich supr dupr jasně drobná vychytávčička, tak program vynášeli do nebes.
 

DeletedUser3752

Guest
2 Settler:

Napadlo mne pár programátorsky i drobných, ale i větších vylepšení. Náročnost jen odhaduji (někdy pár minut, někdy možná neřešitelné, dané java mašinou - sám ty limity přesně neznám, jsem low level Cčkař, ne Javista).

Takže se nejprve ptám, smí se do tohoto tématu dávat i návrhy na zlepšení?

Aby se to tu pak nezvrhlo v nesmyslné časově náročné požadavky. Nebo raději ingame message? Na druhou stranu, bude-li to tady, mohl by být vidět i zájem ostatních - že to nebude jen vychytávka pro jednoho hráče ;-)

Jasně, návrhy klidně piš (tedy pište všichni). :)

Nejdřív kousek off topic:
Já doteď (když už jsem programoval, není to můj hlavní job) taky dělal víceméně jen v čistém C, ale už mě u větších věcí unavovalo, jak se místo soustředění na jádro problému musím soustředit na to abych např. nezapomněl uvolnit paměť (jinak je ale C skvělý jazyk :) ). Takže jsem si řekl, že se naučím ještě něco dalšího (s vyšší úrovní abstrakce) a volba padla na Javu, protože je multiplatformní a pod Linuxem s ní nemám problém. Tohle je moje úplně první aplikace v Javě a podle toho vypadá, :)

Největší problém je, co s tolika daty. Nemůžu nutit každého instalovat SQL server a zatím nevím, co všechno Java na tomto poli nabízí, takže držím všechno v RAM a zobrazuji všechno (applet 0.4 to nedělal, spojoval se s SQL serverem). V poslední betě jsem si ještě udržoval vesnice v poli objektů (aby to bylo čistě objektově javovské), ale to žralo paměť strašným způsobem. Pod Linuxem to ještě jakž takž jelo, ale pod Windows za chvíli došla paměť na heapu (což je zajímavé, že se to na každém OS chovalo trošku jinak). Teď to udržuji v poli stringů, to je na paměť lepší, ale celkově ne ideální. Před pár dny jsem zjistil, že Java přímo umí hashtable, ale nejsem si jist, jestli bych si pomohl.

Každopádně s nápady sem, nicméně nic neslibuji. Sám jsem si řekl, že na to teď pár týdnů nesáhnu a budu se věnovat jiným věcem, ale třeba mne přesvědčíte. :)


Odpověď dalším:
Čtverečky jsou malé záměrně, aby byl vidět co největší výřez mapy. Já sice problémy s trefením se nemám, ale změnit velikost čtverečku v nějaké další verzi můžu (teď jsou 3x3 pixely). Já tam i předběžně počítal se zoomem a leccos mám na něj připravené.

Volba barev je záměrná, protože jsou to barvy s nejvysšší hodnotou jednotlivých složek RGB. Měl jsem za to, že budou nejlépe vidět, ale je možné, že jiné by byly lepší. Klidně pište návrhy (pořád je to jednodušší, než doprogramovávat výběr barvy).


- Settler
 

DeletedUser2029

Guest
Paráda. Takže začnu od (doufám) nejjednodušších k nemožným.

- Hůře se mi vpravo orientuje, kde zrovna jsem. Myslím, že by i docela stačilo, aby se "Souřadnice:" vlevo (vč. Kxx) vypisovaly vždy a ne jen když najedu na vesnici/hráče. Nepůjde-li to vlevo (je-li svázáno napevno s vesnicí) škoda, alternativně by se souřadnice (hlavně kontinent) mohly vypisovat ve statusbaru.

- Nějak špatně se mi vpravo posouvá mapa při drag (LBdown + mousemove). Když dělám mousemove pomalu, vůbec nedojde k posunu. JInak se pohne až po delším tažení. Přitom, když dělám hodně rychlé posuny, tak (i když trochu "skáče") tak se mi překresluje rychle - tedy očividně redraw problém nebude.

- Vlevo na náhledové mapě by byl hezký drag. Teď mi reaguje jen na LBup (a to dokonce bez mezilehlého mousemove). Chápu, že tady by redraw mohl být časový problém, takže nechť mapa vpravo má klidně zpoždění a cuká se. Důležité je, aby skončila tam, kde jsem (vlevo) provedl LBup.

- Umožnit maximize okna resp. window resize (hezky se to řekne, co ;-)) ... kdo ví, jestli to v principu půjde nějak jednoduše.

- Zoom (ale nejen do plusu ale i do mínusu) jsem si skoro netroufal ani navrhovat, ale když už byl zmíněn ;) ... ehm, nejlépe navázat i na mousewheel

- A "drobnost". Nějak i vlevo do náhledu celé mapy dostat barvy (zvýrazněné kmeny). Neptej se mne jak to rozumně shrinkovat, aby byly vidět vyznačené body i když jsou hluboko pod rozlišovací úrovní a přitom nebyly rušivé. Netuším. Ty jsi kluk šikovný, určitě Tě něco napadne. :D

Pro informaci:
XP pro SP2 CZ
java -version:
java version "1.6.0_02"
Java(TM) SE Runtime Environment (build 1.6.0_02-b06)
Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode)
 

DeletedUser2029

Guest
A pro informaci, žere mi to celkem stabilně 69-72MB a startuje 2-4s. Takže naprostá pohoda.Jaké operace jsou pro paměť náročné? Mohu vyzkoušet.
 

DeletedUser

Guest
Jen tak dál ste sikovný (kazdej si zaslouzi pochvalu pro inspiraci neco zlepsovat)
 

DeletedUser2029

Guest
Sám jsem si řekl, že na to teď pár týdnů nesáhnu a budu se věnovat jiným věcem, ale třeba mne přesvědčíte. :)
Jdu přesvědčovat. Myslím, že většina toho co dávám jako nápad, je technického ražení. Nemělo by, snad, měnit koncepci návrhu či základní principy (až na ten resize, možná).

Takže určitě se to hodí jako zkušební materiál, pohrát si, co vše ještě půjde s Javou ošetřit a co už neprojde. Taková příležitost, no nevyužij to ... ]:->
 

DeletedUser3752

Guest
- Hůře se mi vpravo orientuje, kde zrovna jsem. Myslím, že by i docela stačilo, aby se "Souřadnice:" vlevo (vč. Kxx) vypisovaly vždy a ne jen když najedu na vesnici/hráče. Nepůjde-li to vlevo (je-li svázáno napevno s vesnicí) škoda, alternativně by se souřadnice (hlavně kontinent) mohly vypisovat ve statusbaru.
Tohle je detail, souřadnice vím pořád, takže je můžu vypisovat kdykoliv.
Osobně ale nechápu, co máte všichni pořád s tím kontinentem. :) Je to sice takové jakoby logické dělení, ale nějak to o ničem nevypovídá (může ke mě být daleko blíž člověk s číslem kontinentu o deset větším, než člověk na kontinentu stejném - BTW, na to mám napsanou webovou aplikaci na hledání nejbližších). Nicméně kontitent si každý přeje, tak ho udávám a udávat budu. :)

- Nějak špatně se mi vpravo posouvá mapa při drag (LBdown + mousemove). Když dělám mousemove pomalu, vůbec nedojde k posunu. JInak se pohne až po delším tažení. Přitom, když dělám hodně rychlé posuny, tak (i když trochu "skáče") tak se mi překresluje rychle - tedy očividně redraw problém nebude.
Máš pravdu, tohohle jsem si všiml taky a nechápal jsem, čím to může být, když poctivě zpracovávam každý mouseDragged event. Prostě mi nepřijde. Teď jsem vygoogloval, že by to mohlo být citlivostí samotného mouseDragged a že změna chování se dá docílit jen přepsáním na kombinaci mousePressed a mouseMoved (jak to vlastně popisujš ty). To by neměl být problém.

- Vlevo na náhledové mapě by byl hezký drag. Teď mi reaguje jen na LBup (a to dokonce bez mezilehlého mousemove). Chápu, že tady by redraw mohl být časový problém, takže nechť mapa vpravo má klidně zpoždění a cuká se. Důležité je, aby skončila tam, kde jsem (vlevo) provedl LBup.
Že tam není drag, to zapracovala kombinace mé lenosti a strachu ze zmíněného časového problému. :)
To, že mouseClicked (tedy LBdown následovaný LBup) není nejvhodnější řešení mě nenapadlo, dochází mi to, až tohle píšeš. Zavedu tam drag a tím zmizí i tento problém.

- Umožnit maximize okna resp. window resize (hezky se to řekne, co ;-)) ... kdo ví, jestli to v principu půjde nějak jednoduše.
Hehééé, tak tomuhle jsem se vyhýbal jak čert kříži. Je fakt, že spoustu věcí mám v konstantách (přesněji obdobě #define v C), ze kterých by mělo stačit udělat proměnné a ty měnit, ale... No v další verzi určitě ne. :)
- Zoom (ale nejen do plusu ale i do mínusu) jsem si skoro netroufal ani navrhovat, ale když už byl zmíněn ;) ... ehm, nejlépe navázat i na mousewheel
Na mousewheel samozřejmě. Jinak platí předchozí, zoom nebo resize, to už je v pohledu "zevnitř" vlastně jedno.

- A "drobnost". Nějak i vlevo do náhledu celé mapy dostat barvy (zvýrazněné kmeny). Neptej se mne jak to rozumně shrinkovat, aby byly vidět vyznačené body i když jsou hluboko pod rozlišovací úrovní a přitom nebyly rušivé. Netuším. Ty jsi kluk šikovný, určitě Tě něco napadne. :D
Tak to já netuším taky. :) Už když jsem generoval mapy jen jako 1000x1000 pixelů PNG a barvil pixely podle kmenů, tak se ztrácely a nebyly k nalezení. A tady mám docílit lepšího výsledku na ploše 25x menší? :) Zázraky na počkání, nemožné do tří dnů? :) Napadá mne jen vyřešit to nějakou prioritou. Pokud je v daném poli 5x5 alespoň jedna vesnice, kterou chci obarvit, tak ten bod obarvím příslušnou barvou. Pokud je tam více vesnic různých kmenů, použiji barvu kmene, který tam má nejvíce vesnic (a ostatní zazdím). Pokud bych nějak "skládal barvy", tak si s tím lidský mozek neporadí. :)
A s tou prioritou by to nemuselo být ani tak složité na implementaci (kdybys viděl, jak jednoduše je implementováno generovaní toho zmenšeného náhledu! :) ).

A pro informaci, žere mi to celkem stabilně 69-72MB a startuje 2-4s. Takže naprostá pohoda.Jaké operace jsou pro paměť náročné? Mohu vyzkoušet.

Tohle zřejmě o ničem moc nevypovídá, JVM se stará o správu přidělené paměti interně sama (garbage collector a tak), takže hodnoty viděné z venku nemusí být přílíš vypovídající, navíc můžou být jiné u různých OS. K zjištění, co se opravdu děje musím používat Runtime.totalMemory() a Runtime.freeMemory().
Každopádně se mi zdá, že k uložení necelých 10MB dat je to dost. Tedy z velkých položek tu navíc ještě máme 8MB samo pole "ukazatelů" na vesnice, 2x 1MB na interní "pozadí" a 1.5MB obrazových dat výřezu...
 

DeletedUser3752

Guest
A mám se s tím vůbec dělat?

A mám se s tím vůbec psát, když existuje tohle (nezkoušel jsem)?

http://www.twplus2.com/features.aspx

Funkcionalitou je to o pár tříd výše, jen to mluví anglicky a není to multiplatformní (i když .NET bych snad spustit i pod Linuxem, jen ty Window Forms mě děsí).


Každopádně se stejně nedá očekávat, že bych v následujících třech týdnech vydal novou verzi, mám teď dost našlapaný program...
 

DeletedUser2029

Guest
Díky moc za vyčerpávající odpovědi. A taktéž díky, že uvažuješ o další verzi.

------------------

Re: Kontinenty

Brát blízkost (spíše než kontinent) je pochopitelně lepší. Já to beru z pohledu mého (většího) kmene. Chtě nechtě, musíš rozložit pravomoci. Jeden člověk nezvládne všechno. A hrou poskytnuté kontinenty jsou jednou z možností, jak přesně vymezit pole působnosti. Sám jsem dělal zemského velitele, takže vím, že jeden kontinent je tak akorát, aby měl člověk přehled o lidech, věděl o vlastních co kdo je zač, jak bývá on-line (k dispozici), jak je schopný, jaká je konkurence, ...

Jinak je to pochopitelně jen a jen umělá hranice. Pro běžného hráče celkem nepotřebná - možná až na tabulky kontinentů, že tak rychleji najde ve svém okolí (tedy do cca 1 a půl dne, vlastní kontinent a ty blízké) které kmeny si jak stojí. Ne každý je programátor, aby si na to napsal vlastní sw.
---

Re: mouseDragged

... njn, asi jakmile nejde člověk na low level (button down, mouse move, ...) tak si to stejně dělá co chce. A to, jestli chápu, jsi od té nízké úrovně utekl právě proto, aby ses o ní nemusel starat. Budeš-li se tím zabývat, docela by mne zajímal výsledek. Stejně časem budu muset něco dělat (či upravovat) i v Java, takže bych měl plus, na co si dát pozor.
---

Re: Resize, zoom:

Já nic já muzikant. :)

Jen ten zoom by i mohl jít narychlo zazáplatovat nějak hodně hloupě - až na konci pomocí StretchBlt (Když už i drag bude stejně řešen nějak svosjky - pak by (vlastní výstup z) drag stačilo násobit zoomen a bylo by i toto ošetřeno. Scrollbary nejsou. Jo ještě zpětné zjištění polohy (ukázání na vesnici) - ale i to je jen násobení zoomem)
---

Re: Runtime.totalMemory() a Runtime.freeMemory().

Pokud bys potřeboval pomoci s testováním a dal tam jejich výstupy to do nějaké debug verze (menu, statusbar, ..), jsem k dispozici. Mám hned před sebou k dispozici od W98 (ale pravda bez javy, tu jsem nezkoušel) až po XP ať už fyzicky či ve virtuálních mašinách (vše legálně - i různé OS i virtuální mašiny - i staší MSVirtualPC i nové VMWare Workstation, výstupy možno použít i komerčně). Vzdáleně pak i Visty různých typů (home/bussiness).
---

Re: Náhledová mapa vlevo dole.

Úpravy příjemné, líbily by se, ale vidím to na moc práce a nejistý výsledek. Pochopím, když (většinu/všechno) hodíš za hlavu. A jak s vyznačením barev, to vůbec netuším. Nevím, jak by vypadal výsledek. Musel bych si to naprogramovat, podívat a zahodit že tohle ne. Atd, atp. Moc práce. Ber jako inspiraci.
---------------------------------------------------------------

P.S.: I pro ostatní. Stále mějme na paměti, že Settler to dělá pro radost (a hlavně pro sebe). Nelze očekávat "splnění" našich požadavků a být naštvaní když něco nebude implementováno. A naopak, každá věc navíc je prostě takový bonus, při kterém můžeme být rádi, že nám autor zdarma věnoval svůj čas (místo aby vydělával jinde) a udělal změnu, kterou ani sám nepotřeboval.
 
Stav
Uzavřeno pro další odpovědi.
Nahoru