Tworzenie gier na androida - Java i C#

0

Witam.
Od jakiegoś czasu uczę się programować w Javie i na razie kumam tylko podstawy. Chcę się zająć tworzeniem gier na androida i mnie zastanawia czy nie powinienem się przerzucić na C#. Nawet nie mogę za bardzo znaleźć w google jakie gry są w jakim języku napisane (te popularne dzisiaj na świecie). Wiem, że do Javy jest silnik graficzny LibGdx, ale też o tym za dużo nie wiem. Do C# jest ten Unity i te gry wydaje mi się, że lepiej wyglądają. Mam zielone pojęcie w tym temacie i nie wiem czy nie tracę czasu na opanowywanie Javy.

1

Tak, bardzo wiele (może nawet większość?) gier mobilnych buduje się w Unity (także sporo tych koszmarnych albo innych P2W ;)) - także z tego powodu, że Unity jest wieloplatformowe.

0

A znacie jakąś grę popularną poza Minecraftem i Angry Birds zaprogramowaną w Javie?
Raczej póki co zamierzam się skupić na Androidzie, więc może Java wystarczy?

2

Jeśli chodzi o gry, to niestety Java nie jest zbyt przyjazna. Do gier mobilnych, paradoksalnie wszystkie duże/dobre/rozbudowane środowiska idą inną ścieżką niż Java.

Pewnie Java by się nadawała do gier mobilnych równie dobrze, jak reszta technologii, jednakże to co oferują duże środowiska dla innych języków po prostu sprawia, że tworzenie nowych gier w Javie to masochizm. Znacznie trudniej i dłużej wychodzi stworzenie kompletnej gry w niedojrzałych, okrojonych technologiach, które jeszcze są utrzymywane dla Javy. Te gry w Unity "lepiej wyglądają", bo większość gier mobilnych jest tworzonych właśnie w nim. Na pewno znajdzie się wiele, które wyglądają gorzej, bo to zależy od twórcy - a w Unity roi się od amatorów. Wiele silników pozwala na tworzenie własnych materiałów i shaderów. Praktycznie w każdym kompletnym silniku można osiągnąć wygląd z innego silnika. Ale silniki różnią się dostarczanymi ze sobą standardowymi materiałami i chyba większość twórców ceni sobie Unreal Engine za jego standardowe wyposażenie.

1

Dzięki za rzetelną odpowiedź :)

0

Pytanie, o jakich grach mowa? Czy np ta gra: https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftA9HM jest napisana w C# i Unity?

1
Meini napisał(a):

Pytanie, o jakich grach mowa? Czy np ta gra: https://play.google.com/store/apps/details?id=com.gameloft.android.ANMP.GloftA9HM jest napisana w C# i Unity?

Z tego co piszą na wikipedii, Asphalt używa Jet Engine.

https://en.wikipedia.org/wiki/Asphalt_9:_Legends

Nie potrafię go wygooglować... Może to jest jakiś własnościowy silnik developera?

Tutaj można przeglądnąć kilka bardziej znaczących tytułów zrobionych w Unity: https://en.wikipedia.org/wiki/List_of_Unity_games
m. in. Hearthstone, Pokemon Go, SUPERHOT, Super Mario Run, Beat Saber, Cuphead, trochę nowszych gier z serii Angry Birds...

Takiego Asphalta bez problemu można by napisać w "C# i Unity", jak wiele innych gier wyścigowych, które już powstały.

0

Ale to, co wymieniłeś, to jakieś popierdułki pod względem graficznym. Chodzi mi o zaawansowane gry 3D, jak Asphalt, Need For Speed, czy jakieś strzelanki przeładowane efektami typu mgła, woda, krople deszczu, a nie kreskowe platformówki.

0

No to masz chociażby Dooma na Switchu:

Poza tym nawet "popierdułka pod względem graficznym" może być dobrą, współczesną grą. Nie każda nowa gra musi wymagać od sprzętu pełnej mocy.

1

Ale to nie zarzut. Po prostu, interesuje mnie technologia, w której są tworzone najbardziej zaawansowane efekty 3D, wyciskające ze sprzętu wszystko, co się da. Dobrym przykładem jest tu benchmark 3D w AnTuTu chociażby. AngryBirds się do tej grupy nie zalicza

1

Znalazłem w Google artykuł "Feast your eyes on the Android games with the best graphics". Nie gram w giereczki, zwłaszcza na telefonie, więc nie mam pojęcia czy to jest już szczyt możliwości grafiki, ale pewnie nie jest ;)

  • Nimian Legends: BrightRidge - autor się chwali na forach Unity swoją pracą,
  • Returner 77 - posługują się tagiem #unity3d,
  • Darkness Rises - na Artstation jest post w którym jest powiedziane "Using Unity Engine",
  • Shadowgun Legends - Unity, za https://en.wikipedia.org/wiki/Shadowgun_Legends,
  • Tekken Mobile - prawdopodobnie UE4, tak jak jego starszy brat Tekken 7,
  • PUBG Mobile - Unreal Engine 4,
  • Lineage II: Revolution - Unreal,
  • Dead Trigger 2 - Unity (https://en.wikipedia.org/wiki/Dead_Trigger_2).

Czyli jak w "dużym" świecie - jak coś zrobiła duża firma to UE4, jak mniejsza, to Unity ;)
BTW, ten C# w Unity to jest tylko do skryptów (więc użycie tego i tak nie jest takie jak w normalnym świecie się używa C#), a i tak jest kompilowany do C++.

0
Ktos napisał(a):

BTW, ten C# w Unity to jest tylko do skryptów (więc użycie tego i tak nie jest takie jak w normalnym świecie się używa C#), a i tak jest kompilowany do C++.

Chyba nie do końca. Wydaje mi się, że kompilacja do C++ nie jest narzucona. Możesz jej użyć w swoim release, ale to jest opcja, z której korzystasz lub nie.

screenshot-20200610135458.png

Jeśli chodzi o ładną grafikę, to są różne sztuczki, które więcej lub mniej wymagają od twórcy.
Np. Jak robisz grę 2D, to renderowanie brzydkiego sprite kosztuje tyle samo, co renderowanie ładnego sprite'a - pod warunkiem, że oba sprite'y mają taką samą rozdzielczość.

Na małym ekranie, materiały obiektów 3D lepiej, żeby nie korzystały ze zbyt wielu tekstur...
Jeśli każdemu obiektowi w grze dowalimy wszystkie możliwe "mapy" i jeszcze nie zadbamy o ich niską rozdzielczość, to nie jest "mobile friendly". Wszystkie kwadraciki to miejsca, na które możemy przeciągnąć odpowiednie tekstury (Albedo, Metallic itd.):
Shader

Jeśli używamy post-efekty, to też trzeba je dobrze zoptymalizować, a z części zrezygnować...

Kiedy robimy grę dla high-endowych urządzeń, to możemy się trochę mniej ograniczać. Ja bym jednak nie przesadzał. Nie chcemy, żeby dzieciakom nabijającym reklamy gierka zamulała ;)

2

Przechodzę na C# i Unity :) dzięki za pomoc.

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