Chciałem dziś podzielić się z Wami moimi doświadczeniami z pisaniem gier komputerowych (konkretnie przy użyciu silnika Unity3d), pokazać jak zrobiłem grę oraz zachęcić do własnych eksperymentów. Pisanie gier daje dużo frajdy i jest świetnym pomysłem, by zainteresować tym.. dzieci.
Zastanawialiście się kiedyś czemu obecnie jest tyle rożnych gier na każdą platformę ? Wysyp róznych produkcji na androida, ipone, na steam, na gog itd. Ja po zrobieniu własnej platofmówki razem z moim 7mio letnim synem przestałem się już zastanawiać. Wiem dlaczego, to jest naprawdę łatwe i w połączeniu z tym, że robienie gier jest bardzo przyjemne i daje dużo satysfakcji, nie dziwię się, że robi to teraz tyle osób.
Pamiętam czasy, kiedy kiedyś, jeszcze w podstawówce uczyłem się QBasica (ktos to pamięta jeszcze poza mną?), a potem Pascala. Próbowałem pisac w tych środowiskach/językach proste, ale na tamte czasy strasznie dla mnie skomplikowane, gry. Pamiętam, jak trudno było korzystać z 320 linii na ekranie, jak po wrzuceniu do pamięciu ledwie kilkunastu sprite’ów kończyła się on tak szybko, że trzeba było decydować, które obrazki wczytywać od razu, a które w trakcie gry z dysku. Pamiętam też problemy z dźwiękiem i jego odczytem, oraz z obsługą klawiatury no i oczywiście wydajnością na moim starym 486DX2 66Mhz, który uważałem za dość szybki komputer ;-)
Teraz zaś, gdy spróbowałem Unity3d totalnie zmieniłem podejście do gier. Uważam, że naprawdę każdy, kto chwilę poczyta materiałów o tym środowisku może napisać swoją własną i całkiem ładnie wyglądającą grę. Nie trzeba nawet programować.
W Unity działa to tak, że mamy środowisko pracy podobne do typowego programu do obróbki grafiki 3d. Jeśli ktoś z takowego krozystał, w Unity odnajdzie się momentalnie. Gra w Unity podzielona jest na tak zwane sceny, którymi może być np jedna plansza, jeden poziom, albo menu startowe. Do każdej sceny możemy dodać obiekty takie jak duszki (sprity), platformy, tło, przyciski itp. Jest to naprawdę proste, bo dodajemy obiekt, a potem nadajemy mu pewne cechy poprzez nałożenie na obiekt różnych skryptów jak: obiekt, który koliduje z innymi, obiekt, który się rusza, obiekt, który można zebrać, obiekt, który można zniszczyć itp. Jeśli nie chcemy programować, to naprawdę wystarczy, że sciągniemy sobie ze sklepu Unity (są tam darmowe i płatne assety) jakiś silnik do gry, którą chcemy stworzyć. Silink taki, o ile jest dobrze napisany, umożliwia nam stworzenie gry kompletnie bez kodowania przy użyciu tylko i wyłącznie interfejsu graficznego.
Tak wiem, że opisując jak to wszystko działa uprościłem trochę proces tworczy, ale wierzcie mi, jeśli chcemy stworzyć grę z typową mechaniką, czy to jest point’nclick, czy platformówka, czy nawet strzelanka3d, to naprawdę nie musimy umieć kodować. Wystarczy przeczytać kilka tutoriali, dobry i udokumentowany silniik i to tyle. Reszta to konfiguracja i układanie z klocków.
Kroki jakie musiałem podjać, by zacząć robić grę były wiec następujące:
- Przeczytać kilka tutoriali odnośnie Unity
- Wybrać grę jaką chcę napisać i znaleźć na tyle rozbudowany engine, by nie musieć zbytnio w nim grzebać – wybór padł na Corgi platformer engine i w sumie zrozumienie działania engine zajeło mi więcej czasu niż pkt 1. Corgi to świetny engine, niestety… trochę kosztuje, nie jest darmowy.
- Wybrać grafikę, animacje, ludzików i przeciwników – tutaj korzystałem z darmowych, albo prawie darmowych assetów.
A dalej, to cóż.. przyznaję, tworząc swoją grę musiałem jednak trochę poprogramować. Chciałem dodać kilka swoich elementów do istniejącego silnika, ale mimo wszystko, takie programowanie jest bardzo proste i można się go dośc szybko nauczyć. To już nie te same problemy, które miałem pod DOSem, gdzie trzeba było pisać własną funkcję do zapalania piksela w assemblerze, bo te oryginalne z Pascala były za wolne i zużywały za dużo cykli procesora ;-)
Jak już jednak udało mi się stworzyć ‘kręgosłup’ gry, przygotować jej szkielet, obiekty, muzykę, menu itp, to dopiero wtedy zaczęła się zabawa, do której dołączył mój syn. Prototypował sobie mapy poziomów przy użyciu klocków, co trwało czasem po kilka godzin, bo zabawa bardzo mu się podobała. Potem zaś robiliśmy zdjęcie i wprowadzaliśmy prototyp do Unity. Najpierw wspólnie, ale potem syn sam załapał jak się to wszystko robi (tak jak pisałem, Unity jest proste!) to sam siedział i klikał. Wciągnął się w to bardzo, czemu się nie dziwie, bo przyjemnie jest widzieć, jak tworzy się świat (choćby mały), a potem można go przejść, zebrać monety, które samemu się umieściło i pokonać wrogów, których samo powołało się do istnienia.
Poziomy to jednak nie wszystko, bo są jeszcze dźwięki. Tutaj również praca twórcza przerodziła się w zabawę i wymyślanie dźwięków w kuchni za pomocą różnych łyżek, folii itp. Oczywiście nie wszystkie dźwięki da się w ten sposób stworzyć, no ale od czego są serwisy takie jak freesound, czy soundcloud.
I to w sumie tyle. Wystarczy na zachętę. Jeśli ktoś chce się zagłebić w temat unity, stworzyć własną grę, lub pobawić z dziećmi, to zachęcam do inwestygowania tematu. Unity ma jeszcze jedną zaletę, o której nie wspomniałem. Robi się w nim jedną grę, a potem wybiera, czy ma działać na Androida, IOS, PC, Linuxa, XBoxa itd. Duże, naprawdę duże ułatwienie.
Jeśli ktoś chciałby zobaczyć, co mi wyszło, to można tutaj pobrać grę na androida. Oczywiście jest ona darmowa.
I na koniec jeszcze uwaga, gdyby komuś po przeczytaniu mojego artykułu przyszedł do głowy wspaniały pomysł rzucenia swojej obecnej kariery i pisania gier w celach zarobkowych to.. niech pamięta, że skoro jest to teraz takie łatwe, to konkurencja jest tak duża, że wcale nie jest łatwo z tego wyżyć.
Mnie to w sumie zainspirowało :) fajny tekst, przyjemnie się czyta
Może to głupie co napiszę, ale wydawało mi się, że Unity to nie tylko IDE, ale też engine. Co daje Corgi czego nie ma Unity samo w sobie? Ew. co ma unikalnego, że warto za to zapłacić całkiem spory pieniądz jak na zabawę z dzieckiem?
Bardzo atrakcyjna, dobra treść, dziękuję.123movies