Autor Wątek: Java i gry na PC z czego korzystać  (Przeczytany 3032 razy)

Offline Shusty

  • Użytkownik

# Marzec 08, 2011, 17:59:25
Używając googla i szukając porad na temat pisania gier w javie można się pochlastać. Owszem znajdziesz od cholery tutków dotyczących urządzeń mobilnych.

Poznałem trochę Javę i chętnie zabrałbym się za pisanie jakiejś gierki na PC, lecz nie znam bibliotek, ani pomocnych materiałów.

W C++ jak piszę to używam allegro czy SDLa, do fizyki BOX2d i już kodzę.

Javy nie znam kompletnie od strony graficznej.

Byłbym wdzięczny za jakieś porady, wskazanie bibliotek graf./fizycznych i pomocnych materiałów wartościowych.

Jeśli chodzi o C++ i gry materiałów jest po dziurki w uszach, z Javą znacznie gorzej, a w J2ME nie chce pisać.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Marzec 08, 2011, 18:07:11
W javie gierek na PC raczej się nie pisze (ja jestem wyjątkiem). Skoro znasz C++ i biblioteki do niego to po co zmieniasz język.

Jeżeli chodzi o bibliotekę do GUI to jesteś skazany na SWINGa, bo AWT ma za małe możliwości a SWT nadaje się tylko do rozwiązań biznesowych bo jest bardzo mało modyfikowalny.

Do grafiki używam funkcji wbudowanych Javy, nie korzystam z zewnętrznych bibliotek (do grafiki 2D). Jest coś takiego jak Java3D, to może cię zainteresować

Offline Liosan

  • Redaktor

# Marzec 08, 2011, 18:11:21
Jest taki silnik jak jMonkey, kiedyś dawał radę, teraz pewnie też :)

Liosan

Offline Shusty

  • Użytkownik

# Marzec 08, 2011, 18:12:25
C++ porzuciłem na razie dla Javy, bo Algorytmy i Struktury Danych mam w Javie, więc koncentruję się na tym języku dlatego póki co. No i nie powiem, bo Java b. mi się spodobała.

Z tego co wiem to Java jest niezła do gier na przeglądarki, dzięki apletom. Więc zawsze coś ciekawego.

Dzięki za odp.

Offline Liosan

  • Redaktor

# Marzec 08, 2011, 18:15:16
E tam, na przeglądarki to Flash rządzi. Gier w javie jako appletach jest bardzo mało, choć nie z braku technicznej możliwości (wide darmowy Minecraft).

Liosan

Offline t4fun

  • Użytkownik

# Marzec 08, 2011, 18:27:51
W Javie możesz użyć OpenGL poprzez np: JOGL. Java jest fajna ale jakoś do grafiki wolę C++.

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Marzec 08, 2011, 22:32:27
Jeżeli chodzi o aplety to mam już pewne doświadczenie w ich tworzeniu (klient Gizarmy jest appletem), więc może to cię zainteresuje:

Kilka faktów o Appletach (testowanych firefox 3.6 i IE 8)

1. Applet javy ma ograniczenie na pamięc. Standardowo jest to 64 lub 96 MB. Można ten limit rozszerzyc, ale wymaga to wchodzenie w panel sterowania i wpisywania odpowieniej cyferki w odpowiednim miejscu (co potencjalnego odbiorce twojej gry może przerosnąc). Poza tym wymaga to uprawnień administratora.

2. Ograniczenie na pamięc nie dotyczy każdej instancji twojego appletu, tylko jest sumowane. Jeżeli w jednej przeglądarce odpalisz 2 applety to dzielą one jeden limit pamięci.

3. Punkty 1 i 2 nie były by jeszcze takie złe, gdyby nie to, że śmieciarka we wtyczkach javy które testowałem, zdaje się nie działac do końca dobrze. Już mówię o co chodzi

Załużmy, że mam prosty applet, który po włączeniu alokuje 60MB pamięci. Za pierwszym razem działa poprawnie, jednak jeżeli odświerzysz stronę na której go umieściłeś okazuje się, że dostajesz zabrakło pamięci. Wygląda to tak jak by w twojej puli pamięci były śmieci z poprzedniego już zamkniętego appletu.

Na szczęście udało mi się znaleźc rozwiązanie tego problemu. W metodzie init wstawiam następujący kod:

try {Thread.sleep(10000);} catch (Exception e) {}
for (int i=0; i<100; ++i)
System.gc();

Sleep jest dla tego, że System.gc() na samym początku inita potrafiło zawiesic przeglądarke, System.gc() to oczywiście wywołanie śmieciarki. Nie przypadkowo jest to robione 100 razy, jeden raz to za mało (co jest dziwne). 100 zostało dobrane empirycznie.

4. Jeżeli w trakcie wykonywania apletu puścisz jakiegoś RuntimeException, odświerzenie strony nie sprawi, że applet zacznie z powrotem działac. Aby naprawic sytuacje będzie trzeba zrestartowac przeglądarkę. W firefoxsie nie pomorze zresztą nawet to, bo po jego zamknięciu, jego proces wciąż będzie "żył". Aby uruchomic go ponownie musisz najpierw wejśc w listę procesów i ubic go ręcznie (koszmar)

5. Wtyczka javy jest dużo mniej popularna niż wtyczka flash

Oczywiście moim zdaniem mimo wszystko da się w tej technologii robic gry. Java jest językiem który znam najlepiej i według mnie wygodnym w użyciu. Gizarma ma mocno rozbudowaną logikę i nie wyobrażam sobie pisania tego we falshu

Offline Avaj

  • Użytkownik

# Marzec 08, 2011, 22:47:24
Jeśli chodzi o OpenGL to polecam LWJGL. Jest też JOGL ale nie używałem.

Offline dzemeuksis

  • Użytkownik
    • Blog quodmeturbat

# Marzec 08, 2011, 22:48:19
Killer Game Programming in Java - kapitalny - moim zdaniem - podręcznik dostępny w sieci.
Świat 3D w Javie - artykuł z SDJ opisujący podstawy Java 3D.
« Ostatnia zmiana: Marzec 08, 2011, 22:51:38 wysłana przez dzemeuksis »

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Marzec 12, 2011, 14:38:42
Szczerze mówiąc liczyłem po cichu, że ktoś (najlepiej doświadczony) ustosunkuje się jakoś do mojego poprzedniego długaśnego posta i wspomoże mnie w mojej nierównej walce z apletami javy :).

Na prawdę nikt nie korzysta z tej technologii?

Offline t4fun

  • Użytkownik

# Marzec 12, 2011, 14:52:55
Możesz też użyć technologii "Java Web Start" znika limit 64MB, każda odpalenie odpala swoją maszynę javy, nie zawiesza przeglądarki. Ja się właśnie tak bawiłem OpenGL pod Javą, ale po jakimś czasie i przeszło i wróciłem do C++

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Marzec 12, 2011, 19:21:20
Tak, to rozwiązuje częśc problemów, ale zupełnie zmienia charakter gry. Przy zastosowaniu JWS masz normalną aplikacje desktopową z "darmowym" auto-updatem. Applet sprawia, że twój program jest postrzegany jako częśc strony internetowej (raczej wolałbym tą opcje).

Poza tym aplet korzysta z cachu przeglądarki, co jest w moim przypadku porządane. Wiem, że JARy dla JWS też są cachowane, ale np. obrazki dynamicznie sciągane w trakcie wykonywania programu już nie (prawda?)

Swoją drogą jakieś plotki słyszałem, że w FF 4 pluginy mają chodzic jako oddzielne procesy, co prawdopodobnie rozwiąże częśc problemów

Offline t4fun

  • Użytkownik

# Marzec 12, 2011, 20:09:52
Poczytaj więcej o JWS, aplety też można tym startować.

Offline Troll

  • Użytkownik
    • Oficjalna strona gry Gizarma

# Marzec 12, 2011, 23:03:25
Poczytaj więcej o JWS, aplety też można tym startować.

Googlowałem trochę o tym, ale nie jestem pewien, czy rozumiem co masz na myśli. Czy chodzi ci o to? Jeżeli tak, nie jest to to, o co mi chodzi, bo AppletViewer odpala ci twój program w nowym oknie a nie na stronie. Poza tym AV odcina cię od przeglądarki i uniemożliwia komunikacje z nią.

Offline t4fun

  • Użytkownik

# Marzec 13, 2011, 12:05:08
Żaden AppletViewer. Chodzi mi o odpalanie appletu w przeglądarce używając JavaWebStart