Spisu treści:

(Multiplayer) Walka na GameGo z Makecode Arcade: 6 kroków
(Multiplayer) Walka na GameGo z Makecode Arcade: 6 kroków

Wideo: (Multiplayer) Walka na GameGo z Makecode Arcade: 6 kroków

Wideo: (Multiplayer) Walka na GameGo z Makecode Arcade: 6 kroków
Wideo: World War Z - Player VS Player VS Zombies 2024, Listopad
Anonim

GameGo to przenośna konsola do gier retro zgodna z Microsoft Makecode, opracowana przez TinkerGen STEM Education. Oparty jest na chipie STM32F401RET6 ARM Cortex M4 i jest przeznaczony dla nauczycieli STEM lub po prostu osób, które lubią dobrze się bawić tworząc retro gry wideo. Możesz śledzić ten samouczek i wypróbować grę w symulatorze Makecode Arcade, a następnie uruchomić ją na GameGo.

W artykułach, które opublikowaliśmy wcześniej, próbowaliśmy już swoich sił w tworzeniu platformówki i remake'u Battle City. Tym razem chciałem użyć interfejsu Jacdac, aby połączyć ze sobą dwa GameGo i umożliwić graczom walkę o dominację w wieloosobowej grze typu fighter. Niestety, dowiedziałem się, że programowanie blokowe dla multiplayera Jacdac jest obecnie w fazie beta i ma pewne błędy - nadal można tworzyć prostsze gry, ale nie mam szczęścia do mojej bijatyki. Tak więc w tej instrukcji publikuję trzy wersje gry (którą nazwałem "Cthulhu Combat":))

- wersja dla jednego gracza z prostym przeciwnikiem AI

- wersja dla wielu graczy do gry w symulacji Arcade

- wersja multiplayer z Jacdac (niekompletna, zostanie zaktualizowana później)

Kieszonkowe dzieci

GameGo

Microsoft Makecode Arcade

Krok 1: Funkcje Start i Round_setup

O funkcjach Start i Round_setup
O funkcjach Start i Round_setup

Opiszę szczegółowo kodowanie gry dla jednego gracza, a następnie w kolejnych krokach omówimy, jak to zrobić

a) symulator multiplayer

b) multiplayer Jacdac.

Zaczynamy od ustawienia mapy kafelków na dark dungeon i stworzenia sprite'ów dla gracza i bota AI - obaj będą jednak należeć do rodzaju Player. Ustawiliśmy ich przyspieszenie w osi Y na 600 - żeby nie latały po skoku. Inicjujemy również pociski od bota i gracza przed wywołaniem funkcji round_setup. Funkcja round_setup zajmuje się za nas przygotowaniem nowej rundy - dlatego robimy z niej funkcję, ponieważ w grze może być łącznie aż 3 rundy i chcemy uniknąć powtarzania tego samego kodu. W tej funkcji najpierw sprawdzamy, czy któryś z graczy ma 2 zwycięstwa - jeśli ten warunek zostanie uznany za Prawda, gra się kończy. Jeśli obaj gracze mają mniej niż dwa zwycięstwa, zwiększamy zmienną round_num o jeden i umieszczamy graczy na ich miejscach startowych, odnawiamy ich życie do 100 i deklarujemy początek nowej rundy.

Krok 2: Przebieg gry

Przebieg gry
Przebieg gry

W tej grze sam świat jest statyczny, a przebieg gry jest powiązany z działaniami graczy. W czterech blokach definiujemy większość reguł gry, te bloczki to: na wciśniętym przycisku w górę, na wciśniętym przycisku w dół, na wciśniętym przycisku A i na wciśniętym przycisku B. Przyjrzyjmy się każdemu z tych bloków.

po naciśnięciu przycisku w górę - logika podwójnego skoku. Jeśli wcisnęliśmy przycisk skoku mniej niż 3 razy, to ustawiamy prędkość gracza na - 140 (ruch w górę). Nasz gracz ma przyspieszenie vvy ustawione na 600, więc gdy skoczymy, nasza prędkość będzie szybko spadać. Gdy osiągnie 0 (nie porusza się po osi pionowej), ponownie ustawiamy jump_count na 0.

po naciśnięciu przycisku w dół - logika tarczy ataku dystansowego. Po naciśnięciu przycisku w dół gracz zmienia swój obraz na „shielded” i ustawia zmienną „shielded” na 1.

na wciśniętym przycisku A - wystrzel pocisk. To jest prawie oczywiste.

po naciśnięciu przycisku B - atak wręcz, podobny do tarczy w wykonaniu.

Ustawiamy obrazy duszków graczy i ich osłoniętych/atakujących zmiennych na 0 co 500 ms podczas aktualizacji gry co … ms blok. Mogliśmy ustawić niezależne zegary dla każdej akcji, ale dla uproszczenia użyjemy tylko głównej pętli aktualizacji gry.

Warunki wygranej są tutaj dość proste - gdy życie gracza osiągnie 0, drugi gracz wygrał rundę, następnie przechowujemy liczbę wygranych przez gracza w zmiennej.

Wreszcie są dwa bloki, które kontrolują obrażenia od ataku dystansowego i obrażenia od ataku w zwarciu. W każdym z nich sprawdzamy, czy nie ma kolizji duszków i czy zmienna osłona/atakowanie dla atakującego gracza jest ustawiona na 0/1.

Krok 3: Gra 1: Przeciwnik AI

Gra 1: Przeciwnik AI
Gra 1: Przeciwnik AI

W pierwszej grze stworzymy stosunkowo prostego przeciwnika AI, który będzie drugim graczem. W trakcie aktualizacji gry co 200 ms najpierw sprawdzamy odległość między graczem a AI - jeśli jest mniejsza niż 20, ustawiamy naszą AI w trybie walki wręcz, zwiększając jej szansę na atak wręcz do 30 i szansę na atak dystansowy do 30. Jeśli odległość jest wyższa niż 20 ustawiamy szansę na atak wręcz na zero (brak kufla w ataku wręcz, ponieważ gracz jest za daleko) i przesuwamy szansę na 70. Po ustawieniu zmiennych szans na akcje kontynuujemy wykonywanie tych akcji z określonymi szansami. Jeśli sam spróbujesz grać przeciwko tej prostej sztucznej inteligencji, zobaczysz, że pomimo jej zachowania jest bardzo proste, wygrana z nią nie jest łatwa - jak to często w przypadku przeciwników sterowanych przez komputer wygrywa głównie dlatego, że może wykonać więcej akcji na sekundę niż ludzki gracz.

Jeśli utknąłeś podczas kodowania, możesz pobrać pełny kod z naszego repozytorium GitHub dla tego projektu i otworzyć go w Makecode Arcade.

Krok 4: Gra 2: Symulator Multiplayer

Gra 2: Symulator Multiplayer
Gra 2: Symulator Multiplayer
Gra 2: Symulator Multiplayer
Gra 2: Symulator Multiplayer

Wariant gry dla dwóch graczy w symulacji jest bardzo podobny do wersji dla jednego gracza, z wyjątkiem tego, że zastępujemy blok zachowania AI czterema blokami naciśniętymi na przycisk gracza 2 - zawartość wewnątrz tych bloków odzwierciedla zawartość tych samych bloków dla gracza 1. spójrz na zrzut ekranu, aby lepiej zorientować się, jakie zmiany musisz wprowadzić. Oprócz tego musimy również dodać ruch gracza 2 z przyciskami zablokowanymi w funkcji startowej i zmienić ekran końcowy dla gracza drugiego na WYGRAĆ zamiast PRZEGRAĆ.

Krok 5: Gra 3: Jacdac Multiplayer

Gra 3: Tryb wieloosobowy Jacdac
Gra 3: Tryb wieloosobowy Jacdac

W tym wątku na forum znalazłem społecznościową implementację trybu wieloosobowego Jacdac z blokami arkadowymi Makecode

forum.makecode.com/t/new-extension-real-mu…

Przetestowałem tam przykładową grę (Space Invaders) i stwierdziłem, że działa bardzo dobrze. Niestety, mechanika gry w Cthulhu Combat wykorzystuje wiele zmiennych i wygląda na to, że rozszerzenia Real Multiplayer nie obsługują jeszcze synchronizacji zmiennych - więc udało mi się to zadziałać, działania dwóch graczy są synchronizowane na różnych urządzeniach, ale życie może nie nie upuszczaj na urządzenie przeciwnika. Coś jest też nie tak z mechaniką pocisków, pociski nie znikają po uderzeniu w ścianę, co powoduje, że gra traci połączenie po wystrzeleniu około 10 pocisków.

Możesz wypróbować tryb multiplayer, pobierając plik-p.webp

Krok 6: Niech rozpocznie się walka Cthulhu

Niech rozpocznie się walka Cthulhu!
Niech rozpocznie się walka Cthulhu!

Nadal istnieje wiele ulepszeń, które można wprowadzić do naszej prostej bijatyki - na przykład możesz dodać bardziej skomplikowane zachowanie AI lub użyć rozszerzenia, aby dodać kombinacje przycisków i/lub sekwencje animacji. Powodzenia i baw się dobrze podczas programowania własnych gier za pomocą GameGo i Makecode Arcade.

Jeśli stworzysz ulepszoną wersję gry, podziel się nią w komentarzach poniżej! Aby uzyskać więcej informacji o GameGo i innym sprzęcie dla producentów i nauczycieli STEM, odwiedź naszą stronę internetową https://tinkergen.com/ i zapisz się do naszego newslettera.

Zalecana: