Wpis z mikrobloga

#unity #unity3d #naukaprogramowania #programowanie

Zaproponowałem że zrobię rozpiskę dla UNITY 3D. Byli chętni więc oto jest :)

WSTĘP

Nauka Unity nigdy się nie kończy. Średnio co 2-3 miesiące wychodzi nowa wersja Unity, wraz z nowymi lub zmienionymi funkcjami, więc jeśli zdecydujesz się na Unity, to ciągle będziesz musiał się po trochu dokształcać, żeby nie zostać w tyle.

Ucz się zawsze najpierw jak najnowszej wersji. Nie wędruj zbyt daleko wstecz. Znajomość starszych wersji rzadko się przydaje. Projekty zapisane w nowszej wersji nie są kompatybilne ze starszą wersją Unity, przez co szybko zostaje zapomniana przez programistów.

Jeśli nigdy nie programowałeś wcześniej to nie będę Cię oszukiwał że przyjdzie to od razu, więc jeśli nie masz w sobie wystarczającego zaparcia i chęci żeby siąść do nauki przynajmniej 2-3 razy w tygodniu, przez około rok to daj sobie spokój już teraz, a czas wykorzystaj lepiej na zimne piwko z kolegami, zamiast dojść do tego samego wniosku za kilka tygodni.

Jeśli jest to dla Ciebie coś całkiem nowego nie bierz się od razu za zakup książek, które z doświadczenia wiem, potem zalegają u wielu osób na półkach pokryte grubą warstwą kurzu. Nawet jak jesteś wielkim antyfanem czytania w sieci to przynajmniej na początku zobacz czy to jest to co chciałbyś robić w życiu, a dopiero inwestuj pieniądze. Poza tym jeśli chcesz być programistą, czytania na monitorze i szukania informacji w sieci nie ominiesz.

TO CO NAJLEPSZE ༼ຈل͜ຈ༽

Unity pozwala na bardzo łatwy eksport na wiele platform:

-MOBILNE : iOS, Android, BlackBerry 10, Windows Phone 8

-STANDALONE : Windows, Mac, Linux

-PRZEGLĄDARKA : Unity Web Player, WebGL (będzie od Unity 5), NaCl (do Unity 4.2), Flash (do Unity 4.5)

-KONSOLE : PS3, PS4, PS VITA, PS Mobile, XBOX ONE, XBOX 360, Wii U

-INNE : Oculus Rift (będzie od Unity 5)

Tą samą scenę z grą można eksportować na wiele platform. Zazwyczaj zachodzi potrzeba jedynie bardzo drobnych modyfikacji, żeby przesiąść się z jednej na drugą, o ile wgl taka potrzeba istnieje.

Sam eksport gotowej sceny sprowadza się do 2-3 kliknięć, w tym jedno to wybór docelowej platformy.

Żeby móc eksportować aplikację na niektóre platformy potrzeba spełnić dodatkowe wymogi, takie jak bycie developerem danego typu konsoli i/lub jednorazowa instalacja wymaganego zestawu narzędzi(SDK) na komputerze z zainstalowanym Unity.

ŻEBY NIE BYŁO ŻE JEST TAK IDEALNIE ༼ ಥ_ಥ ༽

Gry stworzone w Unity jak w innych silnikach są wolniejsze niż te napisane np. w Visual Studio, dodatkowo zajmują więcej miejsca.

Dlaczego więc używa się Unity? Dlatego, że posiada ogromną ilość gotowych funkcji, po które wystarczy sięgnąć, zamiast pisać je od podstaw, a czas to wiadomo pieniądz.

Jednak gdy bardzo zależy nam na szybkości i skomplikowanie aplikacji nie jest duże to poszukałbym innej metody na napisanie jej.

Dodatkowo Unity bardziej jest nastawione na gry niż inne aplikacje i w tym kontekście ma większe wsparcie. Chcąc pisać użytkowe aplikacje musisz trochę więcej włożyć własnego wkładu.

CZYM WŁAŚCIWIE JEST UNITY? ( ͜͡ʖ ͡ᵔ )

Unity to silnik gier ze sporą ilością gotowych komponentów i wizualnym interfejsem wspierającym pracę z kodem.

Teoretycznie można by prawie każdą czynność dziejącą się w aplikacji Unity zapisać w postaci kodu. Poprzez kod wrzucalibyśmy modele obiektów na scenę. Nakazywalibyśmy im oddziaływać na siebie zgodnie z fizyką. Nasłuchiwać dźwięk z otoczenia itp. Jednak sporo czynności ułatwia interfejs graficzny. Zamiast żmudnie obliczać i ustawiać pozycję każdego drzewa na scenie poprzez kod można je ustawić przeciągając w wygodne dla nas miejsce kursorem na scenę. Jeśli chcemy żeby drzewo wydawało charakterystyczny szum to przeciągamy na nie odpowiedni komponent odpowiedzialny za źródło dźwięku. Można by podawać setki przykładów, ale generalnie chodzi o to że Unity wspomaga pracę z kodem. Niektóre czynności pomimo pozostawionego wyboru, szybciej po prostu wykonać wizualnie niż poprzez kod. Dlatego też bardzo ważne jest żeby sprawnie i ze zrozumieniem posługiwać się interfejsem Unity.

MATEMATYKA i FIZYKA..CZYLI KOSZMARY NIEJEDNEGO UCZNIA (,)

Matematyka i fizyka nierozłącznie związane są z programowaniem większości scen trójwymiarowych i niektórych dwuwymiarowych. Czym dalej będziesz się zagłębiał w algorytmikę, tym bardziej te dziedziny będą się zazębiać. Czym więcej nie uważałeś w szkole tym więcej czeka Cię do nadrobienia.

Zanim weźmiesz się za dalsze kroki przypomnij sobie albo nadrób chociaż podstawy matematyki: algebra, logika, podstawy statystyki, podstawy prawdopodobieństwa, stereometria, planimetria, przynajmniej jakaś podstawowe pojęcie o grafach, operacje na wektorach i podstawowe wzory fizyczne związane z poruszaniem się obiektu.

Dla odrobinę bardziej zaawansowanych przydają się również pochodne i różniczki, a dla jeszcze bardziej zaawansowanych kwaterniony.

Nie ucz się wzorów na pamięć. Zawsze możesz ich poszukać w internecie. Zamiast tego zajmij się ich zrozumieniem.

DO YOU SPEAK ENGLISH? ( ͠° ͟ʖ ͡°)

Niestety chcąc się uczyć Unity, języka angielskiego nie ominiesz. Nawet zaczynając naukę w języku polskim, przyjdzie taki moment, że będziesz musiał zajrzeć do anglojęzycznej dokumentacji. Z początku może być ciężko. Słownictwo jest bardzo specjalistyczne, którego nie uczą w szkołach. Jednak po nauczeniu się już kilkudziesięciu technicznych słówek okaże się że te teksty nie są wcale takie straszne i przypominają angielski co najwyżej na poziomie podstawowej matury.

Czy C# to C#? ﴾̯͡͡๏﴿

Unity na tą chwilę wspiera 3 języki : C#, UnityScript i Boo. Dni tego ostatniego jednak są policzone, aż do wydania Unity 5. Korzystał z niego tylko co dwusetny programista, więc postanowiono się w końcu z nim pożegnać.

Zdecydowanie dominuje C# posiadając około 80% rynku, pozostałe 20%, przypadło UnityScript. W obrębie jednego projektu, część kodu może być napisana w jednym, a druga część w drugim języku, więc najlepiej nauczyć się obu języków, żeby nie tracić zleceń, albo żeby nie ograniczać się do korzystania tylko z części gotowych rozwiązań znajdujących się w internecie, które proszą się o pobranie i wykorzystanie.

C# i UnityScript mogą korzystać z tego samego zestawu funkcji udostępnionych poprzez Unity. Różnią się za to składnią. Jednak znając jeden z języków, nauczenie się drugiego to kwestia maksymalnie kilkunastu godzin nauki.

UnityScript dużo częściej nazywany jest potocznie JavaScriptem, jednak nie ma z nim prawie nic wspólnego. UnityScript jest dostępny jedynie w obrębie Unity, dlatego o jego składni mniej wyczytasz, niż o C#, który jest dostępny również w VisualStudio. Co prawda napisałem polskojęzyczny kurs UnityScript, do którego podam link niżej, ale na początek polecam naukę C#, a dopiero potem weź się za ten kurs.

Należy także zwrócić uwagę, że C# w Unity nie jest "pełnowartościowym" językiem. Jest to język skryptowy, czyli wykonywany wewnątrz danej aplikacji i przez to ograniczony. Jego składnia w Unity jest okrojona.

Osoby mające problemy z językiem angielskim na początek mogę zacząć od nauki zupełnych podstaw C# dla VisualStudio. Ucząc się C# dla VisualStudio szczególną uwagę zwracaj na jego składnię, a nie na dostępne funkcjonalności, takie jak możliwość rysowania itp., bo Unity będzie posiadać w większości inny zestaw funkcji.

Jak już załapiesz o co chodzi, albo czujesz się na siłach to przerzuć się od razu na anglojęzyczny kurs okrojonego C# dla Unity.

Ostatnia i bardzo ważna rzecz jeśli chodzi o język programowania to należy pamiętać, że nie jest to książka fabularna i wszystkie źródła z których się uczymy czytamy bardzo powoli i wnikliwie, w razie potrzeby powtarzając zagadnienie, a czytanie przerywamy często ćwicząc zdobytą wiedzę. Pamiętaj, więcej czasu poświęcaj programowaniu, niż czytaniu o nim!

"I STAŁA SIĘ ŚWIATŁOŚĆ" ( ͡° ͜ʖ ͡°)

Wbudowane komponenty w Unity wspierają fizykę, grafikę, dźwięk i komunikację. W rzeczywistości są skryptami napisanymi przez programistów Unity i udostępnionymi do użytku w obrębie Unity. Dzięki nim na obiekty zacznie działać grawitacja, wykryta zostanie kolizja pomiędzy obiektami, obiekt będzie oświetlony, wróg będzie znał najkrótszą ścieżkę do gracz i wyświetlona zostanie stan życia bohatera. Aplikacja bez komponentów po prostu nie istnieje, więc regularnie korzystając z dokumentacji poznawaj ich jak najwięcej.

ALEŻ TO JEST NUDNE... ( ͠° ͟ʖ ͡°)

Z doświadczenia wiem że ludzie lepiej przyswajają na początku wizualne aspekty tworzenia aplikacji, a nie pisanie kodu, bo dla wielu jest to nudne i męczące. Efekty wizualne są szybko zauważalne na scenie, a ich tworzenie przypomina często zabawę. Unity posiada wbudowane narzędzie do tworzenia terenu i najlepiej od tego zacznij. Dodaj oświetlenie, wymodeluj prosty teren z górami i korytem rzeki, oteksturuj go, dodaj do terenu wodę, wstaw drzewa i trawę, dodaj niebo. Dodaj Character Controller na scenę, odpal grę i ciesz się z możliwości podziwiania swojej własnej mapy, chodząc po niej. Czy to nie super?

Dzięki temu nauczysz się interfejsu Unity i roli podstawowych komponentów. Jak już to ogarniesz to weź się za pisanie kodu.

ALE JA JESTEM TYLKO BIEDNYM STUDENTEM

Unity posiada za równo darmową i płatną wersję tzw. Unity PRO. Unity PRO to koszt 1500$ lub 75$ za każdy miesiąc(minimum 1 rok).

W skład Unity PRO nie wchodzą licencje Android PRO i iOS PRO. Każdą z nich można dokupić do Unity PRO za tą samą kwotę co Unity PRO.

Dodatkowo jest możliwość wypróbowania przez 30 dni triala wersji PRO. Na początku nauki nie skorzystaj jednak z tego. Zajmij się tylko podstawowym, darmowym Unity. Jak już ogarniesz je w pełni to skorzystaj z triala i naucz się funkcjonalności PRO i po miesiącu zdecyduj czy chcesz zakupić rozszerzoną wersję. No i weź się w końcu za zarabianie [̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅].

Tu znajdziesz porównanie podstawowych i płatnych licencji:

http://unity3d.com/unity/licenses

Na uwagę zasługuje, że podstawowe Unity może być używane do 100000 $ dochodu w skali roku podatkowego. Większość z was pewnie się zmieści w tym zakresie ;)

Z CZEGO CZERPAĆ WIEDZĘ ( ͡°͜ʖ͡° )

Podstawą wszelkiej twojej wiedzy jest dokumentacja Unity.

Zanim zaczniesz programować zapoznaj się z:

http://docs.unity3d.com/Manual/

Tu znajdziesz opisy poszczególnych komponentów, interfejsu itp.

Jeśli do nauki składni C# najpierw chcesz podejść w języku polskim to przerób te krótkie kursy:

http://www.centrumxp.pl/dotNet/20,kategoria,Kurs-C-cz-I.aspx

http://www.centrumxp.pl/dotNet/116,kategoria,Kurs-C-cz-II.aspx

Potem weź się za oficjalny tutorial od Unity dotyczący programowania:

https://unity3d.com/learn/tutorials/modules/beginner/scripting

Dla języka UnityScript(JavaScript) możesz skorzystać z mojego kursu w wersji online:

http://www.unitycommunity.pl/UnityScript.html

a potem ewentualnie znów się przerzucić na wyżej wymieniony tutorial od Unity.

Pisząc skrypty posiłkuj się tą dokumentacją:

http://docs.unity3d.com/ScriptReference/

Po nauce składni poznaj jak największą ilość klas i ich składowych. Nie musisz od razu znać wszystkiego na pamięć. Musisz wiedzieć że istnieją klasy o takich funkcjach, wiedzieć gdzie ich szukać i jak ich używać na podstawie dokumentacji.

Następnie zacznij się uczyć zagadnień na konkretnych przykładach:

https://unity3d.com/learn/tutorials/modules

Najpierw przerób TOPICS, a potem możesz się wziąć za PROJECTS.

Jak to przerobisz przyjrzyj się jak wyglądają projekty innych osób. Ściągnij kilka darmowych:

https://www.assetstore.unity3d.com/en/

i ucz się z gotowych rozwiązań.

Poszukaj także wideotutoriale z jak najnowszą wersją Unity i czerp z nich wiedzę. Skupiaj się na zrozumieniu zagadnienia, a nie na powtarzaniu czynności które wykonuje lektor. Spróbuj za każdym razem zmodyfikować to co zobaczysz. Jeśli masz film ze skryptem chodzenia, to spróbuj zrobić tak żeby postać poruszała się szybciej niż na filmiku itp. Dzięki temu połączysz wszystko w jedną logiczną całość.

Jedyną znaną mi polskojęzyczną książką do Unity jest:

http://helion.pl/ksiazki/projektowanie-gier-w-srodowisku-unity-3-x-will-goldstone,prgun3.htm

Książka jest nie najgorsza, ale dotyczy Unity 3, a niebawem możemy się spodziewać Unity 5. W międzyczasie trochę się zmieniło więc niestety moim zdaniem jest przestarzała. Gdybyś jednak miał możliwość dostać ją za małą kwotę, zawsze możesz poczytać sobie ją przed snem.

GDZIE SZUKAĆ POMOCY ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)

Najłatwiej otrzymać pomoc od angielskiej społeczności Unity, bo tam jest największe skupisko użytkowników:

http://forum.unity3d.com/

http://answers.unity3d.com/

W Polsce istnieją praktycznie dwa fora o tej tematyce. Pierwsze założone przeze mnie i za razem największe w Polsce:

http://www.unitycommunity.pl/forum/

oraz drugie trochę mniejsze:

http://www.forum.unity3d.pl/

Pomoc można także otrzymać na:

http://forum.warsztat.gd/


To wszystko z mojej strony i mam nadzieję, że komuś pomogłem.

  • 53
  • Odpowiedz
C# w Unity nie jest "pełnowartościowym" językiem


@sztacheta28: Podałbyś jakieś przykłady? Trochę kodzę w C# w Unity i nie zauważyłem żeby był okrojony. Bez szydery, po prostu z ciekawości gdzie mogę się spodziewać ograniczeń.

I a propos jeszcze wersji PRO: w necie jest multum sposobów na obejście ograniczeń darmowej wersji, działających całkiem dobrze. Mi do tej pory udało się na darmowej wersji zrobić:

- motion blur

- vignette blur

- skala
  • Odpowiedz
Unity na tą chwilę wspiera 3 języki : C#, UnityScript i Boo. Dni tego ostatniego jednak są policzone, aż do wydania Unity 5.


@sztacheta28:

Towarzystwo, przygody i stal przeciwko stali. Oto jak powstają legendy! Prawda, Boo?


Co też od wersji 5 pocznie biedny, samotny, Minsc (,)

#pdk #niezabijajcieboo
  • Odpowiedz
No i weź się w końcu za zarabianie [̲̅$̲̅(̲̅ ͡° ͜ʖ ͡°̲̅)̲̅$̲̅].


@sztacheta28: w jaki sposób da się na tym zarobić? zlecenia? własne gry?

Tak czy siak dzięki za wpis :)
  • Odpowiedz
@blaxy: Pewniejszym źródłem zarobków są zlecenia. Najlepiej je szukać na zagranicznych portalach, bo są większe stawki. Nie poszukiwać konkretnie zleceń na Unity, ale na dziedziny które opanowaliśmy. Większość osób nie obchodzi w czym to wykonamy. Klient ma dostać aplikację i tyle :)

Jeśli chodzi o własne gry to raczej tam gdzie rynek jest nadal nienasycony. Stawiałbym na aplikacje mobilne i być może niedługo na WebGL i Oculusa, i na trochę szczęścia
  • Odpowiedz
@sztacheta28: Ściana tekstu, a tak naprawdę to bardzo ogólnie opisane... co oznacza tylko, że Unity naprawdę jest cholernie ciężkim kawałkiem chleba, mimo i tak wielkiego ukłonu w stronę twórców amatorów.
  • Odpowiedz