Po ostatnich wpisach na temat tworzenia gry marynarzyk, która osiągnęła ogromny nakład finansowy i pozwoliła upaść takim rynkowym gwiazdom jak EA czy Ubisoft dostaliśmy zlecenie od Lorda Archimonda na aplikację.
Lord Archimonde pisze:
Aplikacja, którą przygotujesz ma wspierać plagę ... dzieci oczywiście. Musimy je wychować na dobrych nieumarłych ludzi. Aplikacja ma być stworzona dla dzieci od 0 do 3 lat i ma pozwolić dzieciom w spokoju sobie poklikać na ekranie podczas gdy dorośli będą coś majstrować w kuchni.
Poważne zlecenie. Dzieci w tym wieku oglądają jeśli już muszą to reklamy, co jest bardzo ciekawe - co powoduje, że dzieci lubią oglądać reklamy, są kolorowe? W każdym razie nieważne, mamy zlecenie i już.
Ogólnie pomyślałem o czymś takim:
- Włączamy dziecku grę
- Dziecko naciska sobie klawisze (na jakiejś taniej klawiaturze za 20zł) i coś się dzieje - fajerwerki, dźwięki i tak dalej.
- Wyłączenie aplikacji jest trudne
- Dziecko (być może) zauważa korelację między wciśnięciami klawiszy, a efektami
- Spędza 18 lat na wciskaniu klawiszy
- Jest ekspertem od tego, wciska 4 klawisze na sekundę przez co zasuwa na kasie w biedronce za 3 osoby
Czy to ma sens? Nie wiem.
Nowy projekt
Zacznijmy od stworzenia nowego projektu (oczywiście) i stwórzmy pusty pokój z czarnym tłem i obj_controller do zarządzania nim. Dodajmy obj_controller w pokoju.
Zróbmy mechanizm (wstępny), że co 2 sekundy w losowym miejscu pojawi się prosty efekt. Do tego będziemy potrzebować
- Alarmu, czyli timera, który co 2 sekundy coś zrobi
- Zrobi losowy efekt
- Aktywuje sam siebie za 2 sekundy
Dodajmy event Create
Event Create naturalnie uruchamia się w momencie tworzenia obiektu, alarm wywołujemy w ten sposób:
alarm[0] = room_speed*2;
Alarm 0 aktywuje się gdy pomnożymy 2 razy klatki pokoju. Ogólnie jak wiecie gry renderują się w FPSach, czyli klatkach na sekundę. Jeśli mamy 60 FPSów oznacza, że gra jest rysowana w 60 klatkach na sekundę. Jeśli wymnożymy ilość klatek * 2 to znaczy, że kod wykona się po 120 klatkach, czyli 2 sekundach.
Alarm[0] wykonuje kod jak zostanie aktywowany, czyli u nas po 2 sekundach.
Oczywiście aby zadziałało musimy utworzyć event alarm 0 i wkleić kod
effect_create_above(ef_firework, random(room_width), random(room_height), choose(0, 1, 2), make_color_hsv(random(255), 255, 255));
alarm[0] = 2*room_speed;
Pierwszy kod znacie, został pożyczony ogólnie z dokumentacji Game Makera, ale jest na tyle fajny, że omówię o co w nim chodzi.
Na dole mamy kod ten sam co w create. Chodzi o to, że jak już się alarm[0] wykona, by po 2 sekundach wykonał się ponownie - i tak w kółko ;)
Ale pierwsza linijka. Narysuj efekt ef_firework w pozycji losowej (szerokość room i wysokość room), potem wybierz rozmiar losowo od 0 do 2 tworząc nowy kolor, w którym odcień jest wybierany losowo (Hue), a nasycenie (Saturation) i Value (ciemność / jasność?) jest stała na poziomie 255.
Alternatywnie można losować kolor z palety RGB (Czerwony, Zielony, Niebieski), ale zostawmy na razie jak jest.
Po wciśnięciu klawisza zrób losowy fajerwerk.
Na razie wszystko będziemy na fajerwerkach robić (bo czemu nie?) Z czasem urozmaicimy. Wciskając losowy klawisz zrób losowo fajerwerk.
Nie wiem w którą stronę iść - czy samo wciśnięcie ma coś sprawić? Czy może trzymanie klawisza? Można to przedyskutować. Na razie zróbmy z grupy Keyboard wybierzmy i wklejmy pierwszą linijkę odpowiadającą za fajerwerki, czyli:
effect_create_above(ef_firework, random(room_width), random(room_height), choose(0, 1, 2), make_color_hsv(random(255), 255, 255));
Jak odpalimy grę i przyciśniemy np. spację to będziemy mieli ładny deszcz sztucznych ogni :)
Pytanie czy to tak ma działać - to od Was zależy. Po prostu czy dziecko naciskając jakiś klawisz (np. roczne) powinno widzieć pełny "potencjał gry", czy może powinno walić w klawiaturę i widzieć z każdym walnięciem jakiś efekt.
Na zakończenie
Na razie to wszystko. Nie będzie to może Crysis 3 ani nawet Mario, ale musimy (w teorii) analizować każdą grę i myśleć jak ją wykonać. Nie wiem czy ta seria tego uczy czy nie, ale głupie gry potrafią być ciekawymi w tworzeniu. Oczywiście głupie dla jakiejś grupy, bo dla rodziców chcących zająć czymś dziecko to może być potencjalnie wybawienie - mama chce zrobić pranie, podłącza klawiaturę za 20zł, daje dziecku - dziecko się bawi, matka szybko robi pranie i ma parę chwil na swoje potrzeby. Oczywiście nie namawiamy do wyjścia z domu wtedy, bo dziecko dalej jest pod opieką rodziców - ale kątem oka patrzeć na dziecko i coś robić raczej można.