Autor Zpráva
Geralt
Profil
Zdravim!

Nedávno (29.7.2005, 10:44:57) se tu objevilo téma 'Programování her v Javě'. Nejspíše se ale nakonec žádný tým nevytvořil, a proto zakládám téma nové, které snad bude mít větší úspěch ...

V poslední době se věnuju programování her v Jave (sice jsem ještě žádnou hru nevytvořil, ale dost už jsem o tom přečetl a prozkoušel na uvedených příkladech). Jenže vytvoření opravdové hry je pro jednoho člověka úkol trošku nadlidský :).

Proto bych rád sehnal pár prorgamátorů (nebo grafiků, zvukařů ...), kteří by byli ochotní se mnou spolupracovat. Nemám na mysli profesionální tým, spíše pár lidí mírně až středně pokročilých, co je programování opravdu baví.

Zpočátku bychom mohli třeba programovat s nějaké 2D plošinovky nebo tak něco, a až získáme zkušenosti, dáme se na vytvářní skutečných 3D akční, sportovních či strategických her ...

Kdokoliv máte zájem, napište mi na email Geralt..riv@seznam.cz, nebo ICQ 220 432 624.

Thx, Geralt
peta
Profil *
Geralt Podle toho jake hry. Pokud programujes hru typu rd2, jak ano :) Mam oblibe javascript a sem treba vytvoril sokobana, natahl tam levely z inetu a je to v poho. www.volny.cz/peter.mlich/hry/hry.htm
Geralt
Profil
peta Nejdrive bych chtel naprogramovat nejake lehci hry (napr. 2D plosinove) a postupne prejit na opravdove 3D akcni (sportovni, strategicke ...). To zalezi na domluve.

Ale myslim, ze Javascript by diky svym omezenim (znacne omezena prace s grafikou, zakazany pristup na disk) nebyl tim nejvhodnejsim resenim ...

Kdyztak se ozvi, Geralt
Geralt
Profil
Jeste bych mel podotknout, ze ty hry nejsou pro mobilni telefony, nybrz pro PCcka, i kdyz to asi vyplyva z meho 1. prispevku ...
Wan-To
Profil *
Nedávno jsem dostal nápad - udělat budovatelskou strategii, něco jako Transport Tycoon, v Javě a kompletně 3D. A zjistil jsem, že jí naprogramovat nemůžu. Při rozlišení 640x480, 16 bitové barvě a procesoru 2,2GHz se skoro seká jen samotný terén. To jsem ani nezkoušel přidávat různé 3D objekty, jako jsou třeba stromy. Navíc nemám představu, jak bych to všechno nacpal do paměti. Použitý 3D renderer byl z knihy Vývoj her v jazyku Java od Davida Brackeena, který je velice dobře optimalizovaný.

Co jsem tímhle chtěl říct? Že Java je na hry pomalá.

Takže do týmu je navíc potřeba někdo, kdo umí pracovat s Java3D nebo s vazbami na OpenGL.
thingwath
Profil
Wan-To

Nemyslím, že by tohle bylo Javou, srovnatelně rychlé nebo pomalé by to nejspíš bylo v jakémkoliv jiném jazyce, maximálně deset dvacet procent sem tam okolo :-)
Wan-To
Profil *
To je sice pravda (navíc HotSpot Javu kompiluje), ale nic to němění na tom, že je potřeba umět OpenGL nebo Javu3D :-)
Geralt
Profil
Wan-to

I ja vlastnim exemplar knihy Vyvoj her v jazyce Java a zmineny render se mi na Celeronu 500Mhz s 8MB grafarnou neseka. Seka se vam snad v prikladove 3D hre, tak, jak jej pouzil Brackeen? Me rozhodne ne ... A co jsem tim chtel rict? No jenom jestli nebude chyba jinde nez v Jave ci v renderu ...

Samozrejme nemam nic proti pouziti OpenGL ci Javy3D (s vyjimkou tech, ktere popisuje Brackeen ve sve knize, takze je nema cenu rozepisovat), jen nevidim duvod, proc na ne shanet specialniho programatora?
Wan-To
Profil *
Je pravda, že renderer se v příkladu neseká. Já tady popíšu situaci, ve které se sekal při rozlišení 1024x768:

Potřebuji nakreslit terén s mřížkou 1000x1000 polygonů. Milión instancí třídy TexturedPolygon3D se do paměti nevejde. Takže jsem zvolil jiné řešení. Vytvořím si pro každý typ polygonu, který se může v terénu objevit (zatím je pouze jeden, protože terén je rovný) pouze jednu instanci TexturedPolygon3D. Ta se do paměti v klidu vejde :-)
Ve kreslící funkci si podle pozice polygonu v mřížce nastavím vlastnosti objektu tempXForm (vytvořený v konstruktoru, abych pro každý polygon nemusel volat nákladné new). Polygon posunu (napsal jsem si vlastní funkci translate, která narozdíl od Brackeenovi add nezapočítává rotaci, takže je rychlejší) a nakreslím. Vše se kreslí správně, volné paměti je pořád dost, jenže jeden snímek trvá asi 10 sekund.

Takže jsem omezil počet kreslených a transformovaných polygonů. Na základě pozice kamery jsem v mřížce určil střední polygon, od kterého se polygony po vrstvách kreslí. Kreslí se tak dlouho, dokud není zaplněný z-buffer nebo maximální viditelnost (počet vrstev, offset od středního polygonu) nepřesáhne 75.

Vše je rychlé a při rozlišení 640x480 se to vůbec neseká.
Je tu však jeden problém - je to zatím jenom terén. Když budu chtít přidat další objetky, třeba stromy (které budou mít polygonů asi dost), tak se zase buď zaplácá paměť, nebo se o hodně zvýší počet transformací, které vše značně zpomalují.

No, teď jsem si stáhnul tutoriál Java3D a začal jsem se jí učit. Je jednoduchá a zdá se, že i rychlá :-)

Geralt
A co jsem tim chtel rict? No jenom jestli nebude chyba jinde nez v Jave ci v renderu ...
Viz. výše uvedený postup. Chtělo by to trochu lepší algoritmus pro vybírání viditených polygonů, ale jinak s tím skoro nic dělat už nejde. BTW, neříkal jsem že je v rendereru chyba.


Celeronu 500Mhz s 8MB grafarnou neseka
Renderer nevyužívá grafickou kartu... Zkoušel jsi rozlišení 1024x768?

s vyjimkou tech, ktere popisuje Brackeen ve sve knize, takze je nema cenu rozepisovat
Co máš proti Java3D a OpenGL?
Geralt
Profil
Want-To

To musi byt poradna mapa, kdyz na ni pouzivas 1000*1000 polygonu na teren ...

Co máš proti Java3D a OpenGL?

Brackeen pise, ze Java3D neni soucasti standardniho SDKcka 1.4 ... nevim, jak je to v 1.5, zmenila se snad situace? Nebo si ji uzivatel porad musi zvlast stahovat a instalovat?

Renderer nevyužívá grafickou kartu...

Ne? A jak tedy kresli mnohouhelniky na monitor/displej? :)

Zkoušel jsi rozlišení 1024x768?

Rozliseni 1024x768 jsem samozrejme zkousel a musim priznat ze k mirnemu sekani dochazelo ... nicmene jsem jeste nepotkal hru, ktera by na mem pocitaci bezela absolutne bez sekani ...
Wan-To
Profil *
Ne? A jak tedy kresli mnohouhelniky na monitor/displej? :)
Pochopitelně jsem myslel akceleraci a ujládání scény do videopaměti.

Brackeen pise, ze Java3D neni soucasti standardniho SDKcka 1.4 ... nevim, jak je to v 1.5, zmenila se snad situace? Nebo si ji uzivatel porad musi zvlast stahovat a instalovat?
Java3D se musí stahovat a můžeš jí bezplatně používat v nekomerčních produktech. Navíc existuje jen pro Linux, Windows a Solaris, ale když si uvědomíš, kolik her běhá jen pod Win, tak to není špatné. Navíc potřebuješ buď DirectX nebo OpenGL.
Light Weight Java Game Library je na tom trochu líp, taky se sice musí stahovat, ale dá se zahrnout do hry a nemusí se instalovat. Potřebuje OpenGL a OpenAL (to je snad na všech počítačích). Navíc je pro všechny systémy a je úplně zdarma. Jediná nevýhoda je, že LWJGL neumí používat AWT a Swing. Sice běhá v okně, ale ne v Javovském, ale V OpenGLovském.
Geralt
Profil
Pochopitelně jsem myslel akceleraci a ujládání scény do videopaměti.

Pochopitelne ... proto jsem uvadel i velikost pracovni pameti me grafarny ...

Java3D se musí stahovat a můžeš jí bezplatně používat v nekomerčních produktech. Navíc existuje jen pro Linux, Windows a Solaris, ale když si uvědomíš, kolik her běhá jen pod Win, tak to není špatné. Navíc potřebuješ buď DirectX nebo OpenGL.
Light Weight Java Game Library je na tom trochu líp, taky se sice musí stahovat, ale dá se zahrnout do hry a nemusí se instalovat. Potřebuje OpenGL a OpenAL (to je snad na všech počítačích). Navíc je pro všechny systémy a je úplně zdarma. Jediná nevýhoda je, že LWJGL neumí používat AWT a Swing. Sice běhá v okně, ale ne v Javovském, ale V OpenGLovském.


No prave o tom to je ... budto nutis uzivatele instalovat si zvlastni software jenom kvuli tve hre (a uprimne, kolik Tycoonovskych hracu ma jen poneti, co je to nejaka Java ...), nebo prijdes o funkce Swingu a AWTcka ...
Wan-To
Profil *
Pochopitelne ... proto jsem uvadel i velikost pracovni pameti me grafarny ...
Asi si nerozumíme :-) Brackeenův renderer do grafárny nic neukládá a nepřímo jí využívá akorát ke kreslení.

Pak je tu ještě rozhraní, o kterém také psal Brackeen - neaktualizuje se, ale je kompatibilní s AWT. Ale nevím, jak je to s tím rozhraním dneska. Ještě existuje nějaké JOGL - vazby na OpenGL - ale o tom vůbec nic nevím.

nebo prijdes o funkce Swingu a AWTcka
Funkce AWT a Swing jsou sice pěkné :-) ale když uděláš nějakou hru s tlačítky, tak zjistíš, že jejich využívání je poněkud nepraktické. Mnohem lepší a jednodušší je prostě použít dva obrázky, zkontrolovat pozici myši a místo ActionListeneru používat GameAction mapovanou na levé tlačítko myši.
Navíc je potřeba NullRepaintManager, a jak jsem zjistil, správně funguje jen u tlačítek. Třeba takové JComboBoxy se po kliknutí vůbec neotevřou.
Wan-To
Profil *
Teď jsem si pořádně prohlídl Java3D...
Musel bych si pořádně přečíst celou licenci, ale na https://java3d.dev.java.net píšou, že Java3D se dá BEZPLATNĚ používat i v komerčních produktech, pokud není její API modifikováno.
Geralt
Profil
Asi si nerozumíme :-) Brackeenův renderer do grafárny nic neukládá a nepřímo jí využívá akorát ke kreslení.
Asi ne ... :) snad cim rychleji dokaze graficka karta kreslit na monitor, tim rychleji a plynuleji pobezi i hra, ne?

Funkce AWT a Swing jsou sice pěkné :-) ale když uděláš nějakou hru s tlačítky, tak zjistíš, že jejich využívání je poněkud nepraktické. Mnohem lepší a jednodušší je prostě použít dva obrázky, zkontrolovat pozici myši a místo ActionListeneru používat GameAction mapovanou na levé tlačítko myši.
Navíc je potřeba NullRepaintManager, a jak jsem zjistil, správně funguje jen u tlačítek. Třeba takové JComboBoxy se po kliknutí vůbec neotevřou.

Jenze me nejde o par tlacitek, ale o slozitou, nekolikaurovnovou nabidku (nastaveni options, ukladani stavu hry, nastaveni multiplayer ...), jakou obsahuji vsechny dnesni hry ... A to bude nejspise jednodussi se Swingem nez s obrazky ...
milos
Profil
Hosi, ja si chci taky hrat. Ale uz jsem starsi a tvrdsi.
A Brackeena taky mam.
Taky se odivejte na renderer http://mrl.nyu.edu/~perlin/
Mizera si kresli sam a mel to uz v jave 1.1
WanTo
Profil
243-256-590 :) Už jsem se dohodnul s Geraltem, že něco uděláme, tak se ho zeptám a určitě se k nám budeš moct přidat :)
geralt.riv
Profil *
Prave jsem se vratil z nemocnice, kde jsem stravil posledni tyden, a proto budu tedka bohuzel jeste minimalne par dni spatne dostupny. Jinak samozrejme nevidim jediny duvod, proc milose neprijout.

ICQ stale 220-432-624 ;)
Vrana
Profil *
Kto si mysli, ze java je na 3d hry pomala, tak nech len si pozrie tieto stranky

http://www.bytonic.de/html/jake2.html

http://www.tribaltrouble.com/

http://technopolies.net/index.php?option=com_wrapper&Itemid=45

Luci sa Vrana
Toto téma je uzamčeno. Odpověď nelze zaslat.

0