Tworzenie gier w Javie (Java)

Witam!

Mam pytanie: Czy w języku Java można napisać grę mmorpg w przeglądarce ( typu RuneScape ) ? Jeżeli nie można takiej gry napisać w języku Java to w jakim można? Wiem ile pracy kosztuję napisanie gry bo miałem już styczność z c++ więc proszę o zaoszczędzenie wykładów na ten temat. Z góry dziękuje za pomoc :slight_smile:

Jeżeli miałeś styczność z jakimś językiem programowania to wiesz że w każdym języku można napisać dowolny program. Wybór pomiędzy Javą, Ruby, PHP, Pythonem czy C# zależy od osobisty preferencji, dostępności hostingu.

Swoją drogą przydałby się tu przypięty topic, odpowiednik "Jaki Linux - wybór dystrybucji " z działu Linuksa :slight_smile:

To jest chyba dobry pomysł. Mógłby się przydać wielu osobom, bo temat wciąż powraca…

To może zacznę od prostego szkieletu i ktoś to uzupełni, choćby dlatego że nie jestem zbyt obiektywny :slight_smile:

Krótka charakterystyka zastosowań różnych języków programowania:

assembler - stosowany w częściach jądra systemu operacyjnego, fragmentach sterowników - generalnie należy go unikać, chyba że się nie da bez niego obejść albo chcemy poznać dokładnie sposób działania komputera - zalecany kompilator: NASM

C - solidny proceduralny język ( choć złośliwi mówią, że to przenośny assembler ), wciąż bardzo szeroko stosowany (niestety). Nie ogranicza programisty w żaden sposób więc łatwo sobie zrobić krzywdę np. zarządzaniem pamięcią :P, kompilatory - patrz niżej

C++ - zorientowany obiektowo następca C. Używany najczęściej do wszelakich większych projektów oraz aplikacji z graficznym interfejsem użytkownika. Do czasu rozkwitu Javy i .NET praktycznie bezkonkurencyjny. Zalecane środowiska: Visual Studio (Express Edition) - VS to jedna z tych rzeczy które Microsoftowi dobrze wyszły, ewentualnie Borland C++ Builder. Jeżeli robisz aplikacje działającą w konsoli wystarczy DevC++ oparty na mingw( port gcc). Jeżeli potrzebujemy coś działającego w DOSie( sic) polecam DJGPP. W żadnym wypadku nie używamy starego zabugowanego Turbo C.

C# - odpowiedz Microsoftu, wraz z całym środowiskiem .Net , na Javę Suna. Środowisko - tylko Visual Studio, ewentualnie MonoDeveloper. Zastosowania i możliwości - patrz Java :slight_smile:

Java - uniwersalny język obiektowy, z automatycznym zarządzaniem pamięcią. Można w nim tworzyć zarówno aplikacje okienkowe, jak i sieciowe czy po prostu strony internetowe. Krytykowana za ociężałość ( raczej niesłusznie) i apetyt na pamięć ( słusznie :slight_smile: . Popularne IDE: Eclipse i NetBeans

PHP - język skryptowy w którym wygodnie i prosto tworzy się strony internetowe. Jeśli planujemy jednak stworzyć coś dużego i skomplikowanego warto jednak spojrzeć na Jave/C# , a przynajmniej oprzeć się na jakimś rozbudowanym i sprawdzonym frameworku np. Symphony

Ruby - w Polsce mało popularny język, dorobił się słynnego pakietu Ruby on Rails umożliwiającego bardzo szybkie tworzenie stron internetowych

Perl - język wyspecjalizowany w przetwarzaniu tekstu, często powstają w nim skrypty do administracji systemami komputerowymi

Python - kolejny język skryptowy, podobnie jak Perl ma dużą liczbę bibliotek do absolutnie wszystkiego. Tak jak Ruby dorobił się Railsów tak Python ma Django i Pylons

Pascal - teoretycznie język ten miał służyć do edukacji, w praktyce służy do męczenia uczniów :slight_smile: Jeżeli ktoś szuka języka który narzuci trochę ograniczeń które uchronią przed głupimi błędami proponuje raczej bardzo zblizony język Ada

Od jakiego języka zaczynać?

Są dwie szkoły - jedna mówi: najpierw C, później coś obiektowego, druga mówi: najpierw coś obiektowego, a języki proceduralne później albo wcale. Osobiście uważam że dla początkujących lepiej jest by się nie bawili z zarządzaniem pamięcią, dlatego najlepiej zacząć od C#, Javy lub np. Pythona ( podobno najłatwiejszy język do nauki programownaia) . No i oczywiście PHP jeśli zamierzamy robić strony internetowe, bo z pozostałymi językami jest niestety ciężko o hosting.

a ja się uprę przy flashu :slight_smile: chyba najprostszy program do robienia prostych gierek również online.

Po pierwsze rozmowa trochę nie na temat zeszła, ale może jakiś moderator mógłby wydzielić te posty…

Bo? Co takiego złego jest niby w assemblerze?

Złego to nic, zależy do czego się go stosuje.

Jeśli chodzi o środowiska to jest jeszcze SharpDevelop. Tylko po co. Visual Studio jest bezkonkurencyjne.

Pisanie, że C# to odpowiedź na Javę jest bardzo naciągane. Platforma .NET opiera się na zupełnie innej filozofii, niż Java. Można na nią tworzyć w wielu językach (Basic, C++, J#, C#, a obecnie wiele innych) i umożliwia ona współpracę komponentów pisanych w różnych językach. C# jest akurat natywnym i najwygodniejszym do tworzenia, ponadto posiada zalety C++ i Javy, ale jest pozbawiony ich wad.

C# i .NET jest to najlepsze rozwiązanie, jeśli ktoś chce tworzyć aplikacje pod systemy Microsoftu.

Natomiast Java, to jeden język - więc jeśli chce się zrobić w niej nową wersję programu napisanego w jakimś innym języku, to trzeba niestety przepisać kod. A zarzuty o jej pamięciożerność i ospałość są jak najbardziej słuszne :slight_smile:

Początkujący niech się najpierw dowiedzą co to jest zmienna, jakie są ich typy, jak używać instrukcji sterujących, pętli, tablic, funkcji wbudowanych i jak tworzyć własne. Na takim poziomie zarządzanie pamięcią nie jest potrzebne. A za języki obiektowe brać się, gdy się już będzie znało podstawy.

Nie jest ciężko o hosting. Ciężko jest o pieniądze, żeby za niego zapłacić :slight_smile:

  • nieprzenośny pomiędzy architekturami

  • ogromne ilości kodu potrzebne do zrobienia czegokolwiek - dużo kodu do utrzymania, dużo miejsca na zrobienie błedów

  • jeżeli się nie jestem jakimś magikiem kompilatory np C generują szybszy kod… jakoś automatowi łatwiej przeanalizować jak będą zajęte pipeliny, itp.

Reszta to protezy dla tych którzy VS nie mogą uzywać /uruchomić (linux).

Ale prawdziwe mniej lub bardziej( a J# to już nie ma co dyskutować - swoją droga MS go porzuca :P). To że MS wprowadził CLR liczy mu się bardzo na plus. Szczególnie jak Python przeportowany na .NET chodzi szybciej niż standardowy :). A i sama rozwój Javy ruszył się żywiej z miejsca gdy za plecami pojawiła się realna konkurencja, atakująca spokojną do dej pory segment. No po prostu modelowy przykład konkurencji - programiści są dopieszczeni i mają do wyboru dwa dobre środowiska.

Takie bardzo sloganowe to zdanie :slight_smile:

Taki skrót myślowy, właśnie o to mi chodziło że względnie drogi jest.

Zdaje się, że mamy odmienne doświadczenia :wink:

Ponadto jeśli chodzi o przenośność pomiędzy architekturami, należało by uwzględnić, że assembler nie jrzt wykorzystywany tylko na PC, w przypadku np. mikrokontrolerów odmienności pomiędzy poszczególnymi architekturami są pozytywnym zjawiskiem pozwalającym osiągnąć wymagane założenia przy minimalnym wkładzie środków sprzętowych. I w takich sytuacjach assembler radzi sobie znacznie lepiej niż C.

Ciekawe, czy gdyby sterowniki do Twojej karty graficznej napisane byłyby w Javie zacząłbyś doceniać asemblera :smiley:

W C# istnieją tablice wielowymiarowe, klasy generyczne, można operować na wskaźnikach, przeciążać operatory, właściwości są wbudowane w język. Pewno jeszcze parę rzeczy. Zdaje się, że w tej książce było więcej: http://helion.pl/ksiazki/vsnetb.htm