Dopiero co był Sylwester, a już powoli mija luty. Lubię wracać do przeszłości dlatego poświęcę teraz parę zdań na temat programu, który poznałem już lata temu będąc jeszcze dzieckiem. Mianowicie, "Unity". Od jakiegoś czasu jestem aktywny również na Quora, serwisie polegającym na odpowiadaniu na pytania z interesujących dla nas dziedzin. W anglojęzycznym serwisie już kilkakrotnie natrafiałem na pytania typu: "czy Unity nadaje się do gier 2D?". Postanowiłem na swojej stronie głównej opisać uzasadnienie czemu uważam, że ten znakomity silnik NIE pasuje do dwuwymiarowych gier.

UNITY I 2D TO NIE JEST DOBRE POŁĄCZENIE

Wiem co piszę. Od czasów, kiedy aktualizowałem Just Shoot ponad rok temu, do Unity już wcale nie zaglądam. Prawda jest taka, że program ten został od samego początku zbudowany dla gier trójwymiarowych. Świadczą o tym screeny z 2005 roku kiedy powstała wersja 1.0. Kiedy w 2013 roku wprowadzili pierwszy system dla budowania gier 2D, wyglądał na naprawdę starannie dopracowany. Jednak fakty są takie, że gdy sam jeszcze się uczyłem jego obsługi dwa lata później, miałem nieprzyjemne przygody dotyczące pewnych artefaktów w renderze.

To jest pierwszy powód dla którego zrezygnowałem z Unity. Korzystając ze sprite sheet'u, można było się narazić na "najechanie" o jeden rząd pikseli za dużo w sytuacji gdy pojedyncze sprite'y stały jeden obok drugiego (nie dzieliła ich żadna wolna przestrzeń). Z tego powodu można było dostrzec ostrą krawędź sąsiadującej grafiki gdy taki sprite był już na scenie. Nie wiem czy to zostało naprawione albo czy jest na to jakieś obejście, uwzględniam czasy tworzenia swoich pierwszych trzech gier (2015 rok).

Gdy wybierze się tryb dwuwymiarowy dla tworzonej gry, to mimo wszystko można manipulować osią Z. To jest druga przyczyna czemu Unity odpada jako kandydat do tworzenia gier 2D. Rozumiałbym użyteczność tej osi gdyby nie było innej opcji modyfikowania kolejności renderowania, ale taka możliwość istnieje. Przecież wprowadzili warstwy sortujące ("Sorting layers") i dziwiło mnie do tamtej pory, że system kolejności rysowania warstw jest już w pełni sprawny i ukończony, a mimo tego ta oś Z nadal się pałęta. Sama oś nie stanowiłaby problemu gdyby nie to, że zdecydowana większość metod kontrolująca pozycję obiektów nadal korzysta z trzech osi zamiast dwóch. W Unity powinny być alternatywy tych samych metod dla "dwuwymiaru", a tak trzeba było wymuszać tę oś Z, która jeszcze sprawiała problemy w pozycjonowaniu kamery przez co obraz zanikał z powodu wyzerowania pozycji w osi Z, a kamera sama w sobie musiała być nieco odsunięta od początku układu współrzędnych.

Unity

Unity jest bardzo zaawansowanym i powszechnie znanym silnikiem do tworzenia gier, aczkolwiek nie radzi sobie perfekcyjnie z perspektywą 2D.

To była dla mnie istna bolączka i z tych dwóch powodów zrezygnowałem z tego silnika. Moim zdaniem NIE jest jeszcze do końca przystosowany do widoku 2D. Żeby nie było, nadal uważam go za bardzo dobre narzędzie i jedne z najlepszych. Robi wrażenie i z pewnością grupa ludzi się zapracowała na śmierć, ale jeśli nadal ciągle muszę wpisywać jakieś śmieci do osi Z wiedząc, że nie będę z niej korzystał, po prostu mnie to odrzuca. Są lepsze programy do renderowania grafiki 2D. Z pewnością do niego wrócę jak będę na tyle doświadczony, że zacznę tworzyć trójwymiarowe gry.


Nie pisałem tego dla sentymentów tylko żeby każdego uprzedzić, że jeśli będzie chciał stworzyć kiedykolwiek gierkę 2D właśnie w Unity, niech jak najszybciej rozważy zmianę oprogramowania.