Java czy C# dla gier 2D/3D i innych?

0

Witam. Od razu przepraszam jeśli zły dział. A więc do rzeczy. W przyszłości chciałbym tworzyć gry 2D, 3D, strony internetowe, oprogramowanie. Znam JavaScript, PHP, trochę C++. Teraz C# stał się open source to na pewno w niedalekim czasie będzie można tworzyć programy cross platformowe nie używając mono. C# jak i Javy łatwo jest mi się nauczyć. Dlatego kieruję pytanie do bardziej doświadczonych programistów: Uczyć się javy czy c#? Wiem że (chyba) było wiele takich tematów i jest nijaki sens pisania czegoś na co nie ma jednoznacznej odpowiedzi.

2

Jeśli odrzucasz Mono (z unity) to zasadniczą odpowiedzią na java.forGames || C#.forGames jest false.
A samo java vs c#? Mi osobiście java podchodzi. @somekind'owi C#. Nie ma w tym wypadku lepszego języka.

2

Naucz się obydwu języków, wtedy będziesz mógł sam wybrać ten, który bardziej Ci się spodoba i w którym łatwiej osiągniesz to co chcesz.

0

@spartanPAGE - Na grach aż tak bardzo mi nie zależy. Bardziej liczą się dla mnie programy cross platformowe i strony internetowe.
@wielki Szczur - Właśnie umiem obydwa. W obydwóch mi się dobrze pisze, dlatego napisałem ten temat żeby sięgnąć po radę.

2

Teraz C# stał się open source to na pewno w niedalekim czasie będzie można tworzyć programy cross platformowe nie używając mono.

Na pewno? Na razie jest co jest i lepiej zaczekać z werdyktem niż wróżyć z fusów.

Gry 3D to raczej w C++ się pisze, a kasa raczej niewysoka. Spośród popularnych wyborów to Java biznesowa da statystycznie najwięcej kasy i zatrudnienie się w niej będzie najłatwiejsze spośród dobrze płatnych posad.

Wygląda na to, że sam nie wiesz co chcesz robić i próbujesz wielu rzeczy naraz, a musisz pamiętać o tym, że jak rozpoczniesz pracę jako klepacz w dziedzinie X to im dłużej to X klepiesz to tym ciężej będzie się na coś innego przestawić. Przestawienie będzie wiązało się z tymczasowym spadkiem zarobków. Stąd ważne pytanie to: kiedy zamierzasz zacząć klepać komercyjnie?

0

Pisać komercyjnie zamierzam tak za 2 lata.

1

Częstym (tradycyjnym?) sposobem wejścia w Javę są wakacyjne staże w korpo. Gdybyś np chciał załapać się na staż w 2016 roku to masz niewiele ponad rok czasu do eliminacji do stażu, które to odbywają się typowo chyba w kwietniu. Staż jest od lipca do września, a więc praca na etat jest od października i właśnie od października miałbyś naliczany komercyjny staż.

W przypadku C# i C++ jest analogicznie.

PS:
To są informacje z grubsza i z autopsji. Jeśli ktoś sądzi inaczej niż w tym poście to niech sprostuje.

1

@Wibowit Z tego co widzę, to istnieje dość duża liczba korpo która wpuści cię na praktyki/staż w każdym okresie. I tak btw. nie musi to być korpo, kwestia farta.

1

Piszecie tak: Naucz się jednego języka, jak by to dało się całego nauczyć ze wszystkimi bibliotekami w dwa lata. Niektórzy po 5 letnich studiach nie znają w pełni, a co dopiero mówić w rok. Ale może jesteś geniuszem skoro są łatwe dla Ciebie. To tak jak z tymi ludźmi co po przeczytaniu Symfonii Grebosza, twierdzą że już znają C++. Do programowania gier Java, daje taki efekt jak to wygląda w grze Minecraft. To już chyba lepsze jest C# i Objective-C, w tym drugim to są ponoć dobre zarobki, bo mało jest gier na iSprzęt i poszukują developerów, twórców gier 2/3D. Mogę się mylić !=. Najlepiej programować gry w C++, ostatnio koleś pisał, że potrzebują koderów do drobnych gier w znających C++.

2

Naucz się jednego języka, jak by to dało się całego nauczyć ze wszystkimi bibliotekami w dwa lata.

Języka, a nie bibliotek - chodzi przede wszystkim o składnię, podstawy programowania, najpotrzebniejszą część biblioteki standardowej; Tego jak najbardziej da się nauczyć w jeden rok - trzeba tylko chcieć;

Do programowania gier Java, daje taki efekt jak to wygląda w grze Minecraft.

Czyli według Ciebie język stanowi barierę dla dobrej grafiki i efektów wizualnych? Bzdura - zarówno w Javie jak i w C# można zrobić dobre gry, trzeba tylko poznać język i użyć odpowiedniego API.

2

Gry 3D pisze się w C++, także te na Androida. 2D można spokojnie klepać w Javie czy czymkolwiek natywnym dla platformy (Android -> Java, WP -> C#, iOS -> Obj-C).

W 1.5 roku można spokojnie nauczyć się Javy na tyle, żeby dostać się na staż.

3
Wybitny Kot napisał(a):

Niektórzy po 5 letnich studiach nie znają w pełni, a co dopiero mówić w rok. Ale może jesteś geniuszem skoro są łatwe dla Ciebie

A to są jakieś studia, które uczą jakiegoś jeżyka programowania w stopniu zaawansowanym? Pierwsze słyszę, a zdaje mi się, że 30h wykładu + 30h laborek to za mało, żeby nauczyć języka...

1

Do programowania gier Java, daje taki efekt jak to wygląda w grze Minecraft.

akurat w minecrafcie taka grafika była zamierzona / takie były umiejętności twórców
to czym się zajmuje java i procesor software'owo akurat już jest obsłużone - wystarczy zmienić tekstury, dodać cieniowanie itp - tym się zajmuje karta graficzna bynajmniej i nie ma znaczenia jaki język jej wydaje rozkazy
zresztą można zobaczyć jakie cuda ludzie robią z modami do minecrafta

ja bym powiedział tak: jeżeli chcesz dołączyć do zespołu tworzącego grę, zatrudnić się w tej branży to tylko c++ - nawet na androida te bardziej złożone gry ze względu na wydajność są tworzone w ndk czyli w c++
jeżeli chcesz samemu stworzyć jakąś gierkę w krótkim czasie z dobrym rezultatem to polecam c#

javę znam a nawet programowałem komercyjnie w niej, ale kodowanie w javie kojarzy mi się tylko z masochizmem; chociaż akurat w najnowszej wersji już trochę się zbliża do c#

3

Minecraft ma grafę taką, a nie inną głównie z takiego powodu, że cały świat w Minecrafcie może być zmieniony. W dowolnym miejscu można postawić klocka lub go usunąć. Stąd bardzo ciężko robić optymalizacje takie jakie są robione w typowych grach, gdzie 99% krzaków i wraków jest niezniszczalna. Innym powodem była chęć utrzymania niskich wymagań sprzętowych oraz względnie niewielkie umiejętności i mała liczba osób w zespole (1?) na początku. Z czasem umiejętności i liczność zespołu wzrastała, ale cudów się nie zrobi i nie będzie gierki z grafiką jak w Crysisie i możliwością zmiany otoczenia jak w Minecrafcie.

Dla porównania, gierka oparta na podobnych fundamentach (czyli świat z dowolnie podmienialnych/ usuwalnych/ etc klocków):
Naklepana chyba w C++.

0

Dziękuję wszystkim za odpowiedzi :) Tak też sądziłem że w javie nie zrobi się sensownej gierki (chociaż może). Ale tak czy inaczej będę się jej uczył do pisania komercyjnych programów. Może gdy się już dobrze nauczę javy to doszkolę się w C++.

2

zawsze mnie bawią takie pytania :P nie mogę się oprzeć i wrzucę cytat:

My most recent articles have been about typical wannabe questions. This month let's take a look at another type of typical wannabe question, and analyze why it's a bad question.

I'm frequently asked which of two candidates I'd hire, or which of two courses of action I'd recommend, or which of two colleges a wannabe should attend. For lack of a better term, let's call these two-choices questions.

The asker of a two-choices question never realizes what should be obvious - that the world isn't black and white, that we always have other alternatives besides only the rock and the hard place.

http://www.sloperama.com/advice/lesson52.htm

w sumie... czemu nie C++(standardowy język do gier)? Albo nie Objective C (gry na iPhone)? Albo JavaScript (gry HTML5)? Albo Lua (skryptowanie)? Albo Python? Czy Swift?

Teraz C# stał się open source to na pewno w niedalekim czasie będzie można tworzyć programy cross platformowe nie używając mono

AFAIK w Unity3D jest wsparcie dla C# już od dawna.

Stąd bardzo ciężko robić optymalizacje takie jakie są robione w typowych grach, gdzie 99% krzaków i wraków jest niezniszczalna

Albo biorąc za przykład Wormsy. W dwu wymiarowych wersjach teren się ładnie rozpadał po uderzeniu bazooki, a Wormsy 3D to była porażka, bo zniszczenie terenu było prostokątne w zasadzie (jakby ktoś linijką wyciął) i wyglądało to masakrycznie źle i tanio.

2
Gepandza napisał(a)

Tak też sądziłem że w javie nie zrobi się sensownej gierki (chociaż może).

No to nadal nie rozumiesz... Język nie ma w tym przypadku wielkiego znaczenia, liczy się przede wszystkim użyta biblioteka do grafiki; Jak ktoś nie umie zbyt dobrze programować, to i w C++ zrobi beznadziejnie wyglądające dziadostwo; Natomiast jeśli ktoś umie bardzo dobrze programować w Javie i użyje sensownego API, to może zrobić bardzo dobrą grę;

Ucz się jakiego chcesz języka, dlatego że programiści Javy i C# jeszcze długo nie będą narzekali na brak pracy.

0

Dziękuję za objaśnienie :D

1

Tak też sądziłem że w javie nie zrobi się sensownej gierki (chociaż może).

Temat był wałkowany wielokrotnie. W Javie da się spokojnie zrobić gierki 3D, ale tylko takie gdzie krótkie pauzy spowodowane działaniem garbage collectora nie zabiją rozgrywki. Tak się składa, że wszystkie duże gry wymagają ciągłego refleksu gracza i tutaj np półsekundowa pauza co minutę doprowadziłaby gracza do furii. Garbage collector jest cechą wspólną wszystkich platform zarządzanych, czyli także .NET, Pythona, JavaScriptu itd

Gdyby w jakiś sposób udało ci się obejść problem pauz na odśmiecanie pamięci to wtedy wszystkie platformy, zarówno zarządzane jak i niezarządzane, nadawałyby się do tworzenia gier. Oczywiście niektóre mniej, a niektóre bardziej. Java nie jest dużo wolniejsza od C/ C++ (no chyba, że bierzemy pod uwagę ręcznie optymalizowany kod pod np SSE, AVX, AltiVec, NEON, itd). Natomiast Python pod standardowym interpreterem jest mega wolny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1