Autor Wątek: Co myslicie o Java jako platformie do pisania gier?  (Przeczytany 11765 razy)

Offline Kamil

  • Użytkownik
    • Homepage

# Maj 24, 2006, 22:27:14
Raczej niewielu znajdziesz tu sympatykow javy.  Ja osobiscie pisze sobie swoje gry w javie i jakos zyje;) jak dla mnie to pisz w czym chcesz, wazne by projekt skonczyc :), jesli chodzi o szybkosc javy to ogolnie przyjety dogmat ze jest wolna jest pozostaloscia myslenia z poprzedniej epoki;), pewnie ze nie jest tak szybka jak natywne aplikacje ale jestem na 99% pewny ze do twojego projektu jest spokojnie wystarczajaca :)

Offline Mr. Spam

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

Offline macabre13

  • Użytkownik

# Maj 25, 2006, 11:59:03
Java jest (wg. mnie oczywiscie) dobry narzedziem do robienia szybkich i prostych innych narzedzi. Natomiast do gier nie sadze zeby sie to ustrojstwo nadawalo. Chyba za maja byc to proste i szybkie gry, takie jakie mozna znalezc na komorkach. Nie sadze aby java miala szanse przejac lub w ogole zagrozic c/c++ na rynku profesjonalnych gier.

Offline Kamil

  • Użytkownik
    • Homepage

# Maj 25, 2006, 17:39:29
Ustrojstwo? hmm.. kwestia gustu. Java to po prostu narzędzie tak jak C# czy C++, prawdę mówiąc jedyny problem z java jaki widze to fakt że trzeba powalczyć by ją uruchomić gdyż zamiast exe mamy jar (choć temu można łatwo zaradzić prostym programikiem typu exe4java), oraz to, że wymaga zainstalowania jre.

Znam c++, jave oraz c# i w moim osobistym przeświadczeniu (nie wszyscy musza sie zgadzać z nim)  c++ zostanie wyparty przez te języki(bądź nowsze) z biegiem czasu, pozostanie używany pewnie tylko do pisania częsci jądra w systemach operacyjnych bądź aplikacjach które naprawdę potrzebują szybkości. Spójrzmy na takiego C#, dużo łatwiej i szybciej się w nim tworzy aplikacje czy gry, a sama szybkość jego działania jest prawie jednakowa z C++, Microsoft stawia na ten język jako język przyszłościowych aplikacji na platforme windows. Czemu więc nie powstaje masa programów w C#? Wydaje mi się, że główną przeszkodą jest właśnie wymaganie zainstalowanej dot net na komputerze, bez którego aplikacja nie chce działąć.  Jednakże przypominam że mówimy o wyparciu C++ w przyszłości a nie teraz, a wieć przenieśmy się do czasów gdzie windows Vista(który będzie odrazu z .Net) będzie mniej wiecej w stadium jak teraz Windows 98 czy 2000. I co? I już nie ma problemu istnienia frameworka bo jeśli ktoś go nie ma to znaczy, że tkwi w epoce za murzynami.. Przy okazji prędkość procesorów CPU jak i GPU oraz ilość ramu w PC,wzrośnie więc też nikt nie będzie się przejmować tym że C# jest ciut wolniejszy..

Z javą jest podobnie, co prawda nie ma co liczyć, że Microsoft będzie ją dołączać do swojego windowsa, ale prawde mówiąc nie jest to aż taki problem, w sumie windows jest jedyną platformą która nie ma odrazu javy. Jeśli spojrzeć na mac'a to java jest tak połączona z OSem, że użytkownik nie ma pojęcia czy program jest w java czy nie, odpala się tak samo, chodzi tak samo szybko, a jeśli użyjemi swt zamiast swinga to nawet wygląda tak samo jak natywna aplikacja. Co więcej już teraz instalując nowego OS X'a mamy odrazu zainstalowany jre nie wiedząc nawet o tym. W linuxie dystrybucje typu suse czy mandriva tez odrazu instaluja jave, moze nie jest tak zintegrowana jak w macu ale jeden skrypcik czy programik odpalajacy i wio..

Offline MadMax

  • Użytkownik
    • http://mobiledeveloper.cba.pl/

# Maj 25, 2006, 17:51:41
Witam

Java moze i nadaje sie do gier, ale tak jak mowili przedmowcy niezbyt rewelacynjych - (anyway) osobiscie nie bardzo za nia przepadam.

Jako ciekawostke dodam, ze jesli ktos chcialby programowac gierki w jave na telefon, a bardziej lubi pascala niz jave to polecam MidletPascal :

http://www.midletpascal.com

Pozdrawiam,
MadMax

Offline fremen

  • Użytkownik

# Maj 28, 2006, 20:33:48
imho java to przyszlosc jezeli chodzi o _rts online_. poki co w tej tematyce zarowno actionscript jak .net czy ajax nie maja szans dogonic jave w tej dziedzinie. jak swiatlo dzienne ujrzy dajmy na to taki broodwar 100% online i free to ludzie zaczna bardziej laskawym okiem na to patrzec.



Offline Kamil Trzciński

  • Użytkownik

# Maj 28, 2006, 21:46:43
ostatnio widzialem jakas giere mmorpg napisana w javie z uzyciem 3d, uruchomilem ja na moim kompie (turion 1.8, 512 ramu, x700 128MB mobilny) chodzilo tak srednio 5-6fps, co nie jest imo zbyt dobrym wynikiem... wszystkie inne giery napisane w C/C++ chodza bardzo plynnie i przypyszczam ze tak tez by bylo w tym wypadku, jesli ta gra by zostala napisana w C/C++, a nawet C#, poniewaz oprawa wizualna nie jest powalajaca...

Offline Kamil

  • Użytkownik
    • Homepage

# Maj 29, 2006, 01:52:38
Zalerzy czego ona uzywala do tego 3D.. wczesne wersjie JOGL'a mialy niekiedy problemy z rozpoznawaniem poprawnie sprzetu, poza tym zalerzy tez jak byla napisana, nawet w c++ da sie sworzyc cos co wyglada badziewnie i ma 5-6 fps

Offline macabre13

  • Użytkownik

# Maj 29, 2006, 10:16:56
OT?
Od siebie powiem, ze ludzie nabieraja zlych nawykow. Poniewaz wraz ze wzrostem szybkosci procesorow, pozwalaja sobie na pisanie coraz wolniejszych kodow, lub korzysatnie z wolniejszych rozwiazan, jezykow, etc. Przez takie rzeczy nie idziemy do przodu. Nic nie dzieje sie szybciej choc powinno, IMO cofamy sie. IMHO aplikacje staja sie jak wiekszosc amerykanow, czyli tlusta i powolna.
Przyklad? MS Office. Ten pakiet nie potrafi zrobic juz tylko herbaty, choc i tego nie jestem powien. Nie rozumiem, dlaczego pisze sie coraz wieksze pakiety, ktore laduja sie wszystkie. A uzywa sie z regulu 15-20%. Dlaczego uzywac sie javy skoro i tak aplikacja jest pisana na windowsa? ITD.
Java moze i bedzie platforma do pisania aplikacji czy gier, ALE (IMO) tylko tam gdzie nie bedzie mozna pisac w c/c++. Ale to tylko moje skromne zdanie.

Ps. Osobiscie do javy nie mam nic, przydatne ustrojstwo. :)
/OT?

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Maj 29, 2006, 10:27:54
Zalerzy czego ona uzywala do tego 3D.. wczesne wersjie JOGL'a mialy niekiedy problemy z rozpoznawaniem poprawnie sprzetu, poza tym zalerzy tez jak byla napisana, nawet w c++ da sie sworzyc cos co wyglada badziewnie i ma 5-6 fps

ta, tylko, że w Javie nie trzeba się starać, żeby coś takiego osiągnąć ;)

co do Macabre13: Nikt ci nie każe ładować całego Office'a :P

Offline Kamil Trzciński

  • Użytkownik

# Maj 29, 2006, 11:02:39
nawet zasoby ramu sa ograniczone (widac to na przykladzie chrome gdzie same jvm zajmowalo u mnie 100-200MB, imo to lekka przesada), dokladnie w javie masz z marszu kiepska wydajnosc, a nie lada wyczynem jest napisac wydajna giere...

Offline snakeo

  • Użytkownik

# Październik 16, 2006, 01:48:42
natomiast w javie przy wykorzytaniu samego Java 2D "¶miga" :) - jak narazie to moge pochwalic sie tylko screenami na mojej stronie gdyz release ani dema jeszcze nie bedzie w sieci ;) -> robie levele, ktorych mam juz 16.
Ja bym nie pokazywal na twoim miejscu screenow z wszystkich leveli, przeciez po to sie gra w jakis level zeby zobaczyc jaki jest nastepny ;)

Offline Esidar

  • Użytkownik

# Październik 16, 2006, 19:42:41
imho java to przyszlosc jezeli chodzi o _rts online_

Czemu akurat "rts online" ? :) W innych gatunkach inne platformy są lepsze ? :) Jak rozumiem język Java się rozwinął w kierunku pisania aplikacji "rts online" i inni są daleko w tyle ? :)


MS Office. Ten pakiet nie potrafi zrobic juz tylko herbaty, choc i tego nie jestem powien. Nie rozumiem, dlaczego pisze sie coraz wieksze pakiety
Jeśli nowe funkcje MS Office 2007 są dla Ciebie niewygodne albo niepotrzebne używaj MS Office 2000. Problem z głowy

Co do samej Javy. W c++ brakuje wiele rzeczy, garbage collector, zarządzanie kodem i typami danych, skryptowanie itd. Używanie tych rzeczy to cecha współczesnego kodu, który powinien powstawać szybciej i z mniejszą ilością błędów. Typowy developer woli walczyć z problemami w grze, a z nie narzędziem którym się posługuje. Pytanie tylko czy Java jest do tego najlepsza. Do wyboru są przecież różne języki skryptowe typu Python albo LUA. Teraz jest też .NET. Ja wybrałem .NET gdyż przez 2-3 lata osiągnał więcej niż np. Java przez 15 lat (najlepiej się uczyć na czyichś błędach). To mi pozwala przypuszczać, że przez kolejne 2-3 lata zmieni się jeszcze bardziej.

« Ostatnia zmiana: Październik 16, 2006, 19:59:24 wysłana przez Esidar »

Offline parmezan

  • Użytkownik

# Październik 20, 2006, 12:33:39
Teraz jest też .NET. Ja wybrałem .NET gdyż przez 2-3 lata osiągnał więcej niż np. Java przez 15 lat (najlepiej się uczyć na czyichś błędach). To mi pozwala przypuszczać, że przez kolejne 2-3 lata zmieni się jeszcze bardziej.
Specjalnym zwolennikiem javy nie jestem, ale:
<flame>
Słyszałeś o jakimś systemie klasy enterprise zrobionym w .net? Pewnie nie, bo ,,niet'' działa tylko na pewnym systemie biurkowym, przez co z biurka nigdy nie zlezie.
To taki lepszy VB.
</flame>

bies

  • Gość
# Październik 20, 2006, 12:49:00
Co do samej Javy. W c++ brakuje wiele rzeczy, garbage collector, zarządzanie kodem i typami danych, skryptowanie itd. Używanie tych rzeczy to cecha współczesnego kodu, który powinien powstawać szybciej i z mniejszą ilością błędów. Typowy developer woli walczyć z problemami w grze, a z nie narzędziem którym się posługuje.

Bez żartów, spróbuj niedeterministycznym GC odłączyć połączenie od bazy albo zamknąć gniazdko. Akurat pamięć jest najmniejszym problemem. A jak koniecznie potrzebujesz GC (czyli tak naprawdę modelujesz graf) to w C++ znam przynajmniej 2 implementację (deterministyczną i nie). Choć trzeba przyznać, że są wolniejsze od tego w Javie. Poza tym spróbuj w Javie (nie wiem jak to będzie w C# czy Pythonie) zapewnić na etapie kompilacji że parametr funkcji lub jej wartość zwracana jest != null.

Chyba nigdy nie miałeś do czynienia z dobrym programem w C++ lub dużym programem w Javie. Typowy deweloper ma w Javie problemy na poziomie podstawowym (polecam pomyśleć nad odpowiednikiem const w Javie - da się, ale pomyśl jak to zrobić).

Co do skryptów: to już żarty, widziałeś może CppTcl, Boost.Python, luabind, SWIG.

Offline Kamil

  • Użytkownik
    • Homepage

# Listopad 08, 2006, 17:35:54
snakeomeister widze ze odgrzewasz stare posty ;) Opinia wzieta pod uwage, moze czesc usune niebawem :).

Zalerzy czego ona uzywala do tego 3D.. wczesne wersjie JOGL'a mialy niekiedy problemy z rozpoznawaniem poprawnie sprzetu, poza tym zalerzy tez jak byla napisana, nawet w c++ da sie sworzyc cos co wyglada badziewnie i ma 5-6 fps
ta, tylko, &#191;e w Javie nie trzeba si&#234; stara&#230;, &#191;eby co&#182; takiego osi&#177;gn&#177;&#230; ;)

Nie zgodze sie z tym stwierdzeniem. Mam wrazenie ze takie opinie wydaja ludzie, ktorzy nic tak naprawde nie robili w javie, by chociaz sprawdzic jak ona dziala. Jasne, jesli robiles gre 2D przy uzyciu api Java 2D to nie problem dojsc do takich szybkosci jak 5-6fps, tyle ze to api to taki javowy odpowiednik windowsowego gdi(choc i tak uwazam ze szybszy ciutke), sproboj napisac cos w czystym gdi, ciekawe czy bedzie szlo jak burza.. Tak na marginesie od wersji java 1.6, Java 2D ma wewnetrzenie  uzywac opengl.

Piszac gry w C/C++ czy jakimkolwiek innym jezyku, glowym miejscem ktory "zjada" fpsy to grafika, dlatego tez uzywa sie bibliotek zapewniajacych akceleracje sprzetowa, opengl czy tez directx. Java tak samo jak c/c++ ma mozliwosc dobrania sie do api tych bibliotek (choc glownie uzywany jest opengl gdyz uzywanie directx na platformie przenosniej mija sie z celem) i zapewniam ze szybkosc dzialania takiej aplikacji jest dla przecietnego programisty w zupelnosci wystarczajaca. Jest nawet silnik (w tej chwili darmowy) storzony przez Disneya i uzywany w jakiejs komercyjnych gierkach, napisany w Pythonie (Python jest wolniejszy od Java). Dziala to z zupenie przyzwoita predkoscia. Co do opengl w javie to radze np zerknac na http://jmonkeyengine.com  http://www.jpct.net  http://www.lwjgl.org  oraz http://www.tribaltrouble.com  i  http://technopolies.net

Java jak dla mnie bije c++ pod wzgledem dostepnosci narzedzi dla programisty. C++ moze w wersji darmowej poszczycic sie Visualem Expresem (ktory jest dosc ekh..toporny, nawet komunikaty o bledach kompilacji wyswietla dosc nieczytelnie w porownaniu z platna wersja), badz tez Code:Blocks ktory odpowiada funkcjonalnoscia mniejwiecej Visualowi 6.0. Javowe narzedzia jak Netbeans czy Eclipse (oba darmowe), bija  na glowe te dostepne w przypadku C++.


Dlaczego uzywac sie javy skoro i tak aplikacja jest pisana na windowsa?
Jesli piszesz tylko pod windows to albo jestes hobbista ktory tworzy gry dla siebie i znajomych albo jestes czlonkiem jakiegos studia ktore tworzy tytuly klasy AAA (choc i te w pewnym momecie portuje sie na inne systemy). Natomiast jesli jestes indiedeveloperem, ktory proboje sam cos zarobic to pomijanie Maca, to jakby samemu sobie strzelanie w plecy gdyz jak ogladam dane ze sprzedarzy to ta sama gra czesto lepiej sie sprzedaje na macach niz windowsach.

1 . Bez &#191;artów, spróbuj niedeterministycznym GC od&#179;&#177;czy&#230; po&#179;&#177;czenie od bazy albo zamkn&#177;&#230; gniazdko.[..]
2 . Poza tym spróbuj w Javie (nie wiem jak to b&#234;dzie w C# czy Pythonie) zapewni&#230; na etapie kompilacji &#191;e parametr funkcji lub jej warto&#182;&#230; zwracana jest != null.
3 .Typowy deweloper ma w Javie problemy na poziomie podstawowym (polecam pomy&#182;le&#230; nad odpowiednikiem const w Javie - da si&#234;, ale pomy&#182;l jak to zrobi&#230;).

Co do skryptów: to ju&#191; &#191;arty, widzia&#179;e&#182; mo&#191;e CppTcl, Boost.Python, luabind, SWIG.

1. Jakos java w aplikacjach enterprisowych dziala glownie na bazach danych roznych typow (lokalnych, sieciowych, rozproszonych) i nie ma problemu z polaczeniem czy rozlaczeniem sie z baza. Jesli chodzi o sockety to java ma dosc przyjemne api i jakos nigdy nie mialem problemow z zamknieciem gniazdka.. Masz racje w przypadku gdyby ktos umieszczal kod zamykajacy socket w "destruktorze", ale tak naprawde te problemy ktore teraz wymieniles sa czysto filozoficzno/akademickie. W paktyce jak chcesz sie rozlaczyc z baza danych czy tez zamknac gniazdko to poprostu wywolujesz odpowiednia funkcje close i tyle..

2. Elipse potrafi przed kompilacja (parsowanie wewnetrzne) powiedziec ci ze : a) nigdy nie uzywasz pewnych zmiennych, nigdy nie wyolujesz funkcji prywatnych danej klasy, masz partie kodu do ktorego program nigdy nie wejdzie.
 Sama java potrafi w momecie kompilacji powiedziec ze probujesz odczytac wartosc ze zmiennej, ktora wczesniej nie byla zainicjalizowana jakas wartoscia.

3. poszukaj slowa kluczowego "final"

Jezyki skryptowe czeto takze maja bindingi do javy (napewno python ma).



Wiem, ze lubie jave i dlatego w moich postach ja bronie. Ale tak prawde mowiac moim zdaniem jezyk c++ za kilka/kilkanascie lat przestanie byc wiadacym w grach. Popatrzcie na gigantyczne produkcje pokroju obliviona, ktore powstaja coraz dluzej przy czym maja tez coraz wiecej bugow. W pewnym momecie developerzy zaczna sie rozgladac za jezykiem(narzedziem), ktore pozwoli zwiekrzyc ich produktywnosc oraz bedzie patrzec im na rece i w jak najwczesniejszym stadium eliminowac typowe bledy. I nie upieram sie, ze tym jezykiem ktory zastapi c++ bedzie java, moze bedzie to jeszcze jakis inny jezyk np c# (juz teraz mozna programowac xboxa w c#) lub cos co stworza dopiero w przyszlosci, ale to sie napewno stanie. Takie jest moje zdanie.