Kolejna część serii z napisanym przeze mnie kodem. Zapraszam.
Ostatnio przypomniało mi się o paru niedokończonych grach i mając okazję podpiąłem stary dysk do komputera, żeby je zbackupować na kiedyś, zanim do reszty o nich zapomnę, a szkoda, bo całkiem miło do nich wrócić. Krótko tu podsumuję co odzyskałem.
7DaysToColonise
Gra którą zacząłem robić tuż po wrzuceniu Memo Boxes, mocno pod wpływem gry AdVenture Capitalist. Miał to być typowy klikacz, ale ponieważ baaardzo lubiłem i do teraz z sentymentem wspominam przeglądarkowe Ogame, postanowiłem, że będzie w kosmosie.
Mechanika gry – budować fabryki na startowej planecie Ziemi, pieniądze generowane w fabrykach można za kliknięciem zebrać i zainwestować w kolejne (będą generować więcej pieniędzy), lub też w kolonizację następnej planety. Do gracza należałaby decyzja co bardziej się na dany moment opłaca, pamiętając, że w ciągu 7 dni (prawdziwych 7 dni) musi skolonizować Układ słoneczny. Pieniądze z fabryk zbierałoby się za każdym ponownym otwarciem gry na telefonie, pieniądze które w tym czasie powinny się wygenerować obliczałbym z delty czasu pomiędzy ostatnim a aktualnym uruchomieniem. Jeśli ktoś przestawiłby datę i wykryłbym to (musiałby w końcu kiedyś przestawić ją ponownie na aktualną), musiałby liczyć się z dwoma problemami: Komunikatem od gry – twoje finansowe imperium zostało zbombardowane przez nieznaną, międzygwiezną cywilizację, a także zwykłą nieopłacalnością takiego procederu – w końcu budowa fabryk też trwałaby swoje i byłaby to strata czasu, gdyby dla 1 dnia generowania się pieniędzy stracić powiedzmy 12 godzin w których nic by się nie budowało.
Prototyp zrobiłem na paru darmowych assetach z internetu, kod, poza tym, że jest porażką, nie kryje nic specjalnego. Mogę w charakterze ciekawostki pokazać obliczanie pozycji w ruchu eliptycznym planet:
ileDodacX i ileDodacY to zwyczajne offsety na układzie współrzędnych, height i width to szerokość i wysokość takiego zakreślonego okręgu/elipsy, po pierwszym if-ie uaktualniam również obrót planety wokół własnej osi.
Mad Pirates
Gra pisana przez chwilę, pare miesięcy przed Speechlist. W gimnazjum sporo grałem w Empire: Total War, gdzie w bardzo przyjemny sposób zrealizowano bitwy morskie, dla przykładu:
Chciałem zrobić coś podobnego, również byłoby możliwe sterowanie okrętem ręcznie, ustawianie żagli, rodzaju kul (kartacze, łańcuchowe), oddawanie salw lewą lub prawą burtą, do tego dodałbym możliwość zarządzania załogą, ekwipunkiem i losowy świat – Karaiby. Całość oczywiście dwuwymiarowo, jeśli ktoś jeszcze miał złudzenia, że porwałbym się na trójwymiar.
Całość zarzuciłem na rzecz sporo ciekawszego Speechlist które faktycznie skończyłem po paru miesiącach.
Ciekawe rozwiązania w kodzie?
Przez jakiś czas walczyłem z ruchem statku w kierunku ostatniego kliknięcia, niby banał, ale w końcu postawiłem na rozwiązanie z internetu, bo w rozwiązaniu z mojej ręki statek zamiast powoli się obracać w nakazanym kierunku – twerkował:
Po poprawkach:
Na ten moment mam pomysł na recykling tego kodu, w końcu potrzebna nam gra do dźwiękowego backendu z serii Sound Processing. Czemu by więc nie przerobić Mad Pirates na klona Steam Birds, gdzie między turami za pomocą dźwięku wymieniane byłyby wektory po których miałyby poruszać się statki graczy.
Kod, który obliczał na podstawie X i Y miejsca kliknięcia kąt, o jaki powinien obrócić się statek, aby tam zmierzać.
Black Hat
W styczniu 2016 zebraliśmy się w 4 osoby w celu zrobienia gry pod konkurs którego nazwy już nawet nie pamiętam. Celem było stworzenie gry takiej jak Uplink, ale mocno fabularyzowanej, z wielotorową historią, różnymi zakończeniami etc. Cała gra miała dziać się na ekranie komputera wewnątrz gry, stąd nasz cel numer jeden – stworzyć dobrą mechanikę i niebanalną historię, aby zapełnić deficyt jaki tworzyła nasza prosta grafika.
Całkiem poważnie się za to zebraliśmy, spotkaliśmy się raz lub dwa na dłużej, gdzie jeden robił za skrybę a reszta dzieliła się pomysłami, do tego na dysku mam ~300 MB rozmowy na Skype, gdzie robimy dokładnie to samo.
Jak szybko zaczęliśmy, tak szybko całość zarzuciliśmy na etapie prac pokazanym na filmiku wyżej. Czekało nas mnóstwo pracy, którą można było podsumować smutnym “nawet nie wiadomo czy to wypali”.
Poniżej przedstawiam jeden z kilku skryptów naszych ustaleń:
Wstęp do gry
Po włączeniu gry włącza się intro wykonane w komiksowy sposób – przedstawia ona historię poruszając kamerą po statycznych obrazkach, z lektorem w tle. Być może lektor będzie ważną częścią rozgrywki, w tle będziemy słyszeli myśli bohatera gry, jego wewnętrzne przemyślenia wobec trudnych decyzji. Być może chwilowe cutscenki również w komiksowy sposób, a na ekranie pojawią się też “mrugnięcia” oczu bohatera gdy będzie mówił i jego spoglądanie po pokoju.
Ale wracając:
Po intrze płynnie trafia się przed komputer do pokoju głownego bohatera, przed jego komputer (z jednym lub dwoma monitorami)(Miejscem całej rozgrywającej się akcji jest jego pokój i komputer) – Kamera skierowana jest na monitor, pokój jest zaciemniony, monitor wyłączony. Świeci się jedynie na czerwono przycisk włączenia monitora.
Cała akcja stoi, aż do momentu właczenia monitora przez gracza.
Wtedy odgrywa się nieco przerażający dźwięk (8 bitowy, włączania komputera).
Po paru sekundach monitor się lekko rozjaśnia ale nadal jest ciemny. Pojawia się logo EnvyOS.
Czekanie kilku sekund (w tle dźwięki pracy dysku, komputera, przydadzą się takie efekty dźwiękowe).
Ekran jaśnieje na kolor kremowy/beżowy.
Pojawiają się na nim pytania (a raczej wyostrzają się, są na początku rozmyte, lekko przeźroczyste).
Rozpoczyna się kwestionariusz.
Są to pytania, kreujące przeszłość bohatera jakim kierujemy, początkowy podział jego punktów umiejętności i możliwe że część początkowej fabuły.
Kwestionariusz znajduje się w dokumencie kwestionariusz.
Po wykonaniu kwestionariusza ekran znowu ciemnieje.Tym razem gdy po paru sekundach się rozjaśnia trafiamy na pulpit.
Dalszą część obejmuje dokument fabuła.
Aby zobaczyć wygląd systemu i jego działanie, zajrzyj do dokumentu system.
Czyste pomysły
Wśród znalezisk znalazłem również krótki plik tekstowy z koncepcjami do użycia w nieokreślonej przyszłości, znalazły się tam m.in:
Klon “Miecze i sandały“ z fabułą osadzoną gdzieś w czarodziejskim świecie, analogicznie ulepszamy ekwipunek – różdżki, runy, cokolwiek, a zdobyte punkty ładujemy w jakieś drzewko umiejętności. Być może dodałbym multiplayer, nie byłoby to specjalnie trudne ze względu na to, że gra byłaby turowa, jak chociażby Hearthstone, wystarczyłoby więc zwyczajnie postować i getować co jakiś czas jakieś RESTowe API jak to robię w Speechlist przy pobieraniu testów.
Dwuwymiarowy, pixel-artowy klon League Of Legends; miałem w planach przełożyć mechanikę gry praktycznie 1:1, z tą różnicą, że na dwuwymiarowy świat. Pomijam, że nawet teraz ambitne byłoby się za to zabrać, mogąc faktycznie kupić jakieś assety i przejmować się jedynie programowaniem (co ze względu na aspekt interakcji graczy na żywo, gdzie liczyłyby się dziesiętne części sekundy, mogłoby mnie przerosnąć).
Klon Don’t Starve. Tu chyba nie muszę tłumaczyć, takich gier robionych w różnej maści Game Makerach jest aż za dużo.