Inhoudsopgave:

(Multiplayer)Vechten op GameGo met Makecode Arcade - Ajarnpa
(Multiplayer)Vechten op GameGo met Makecode Arcade - Ajarnpa

Video: (Multiplayer)Vechten op GameGo met Makecode Arcade - Ajarnpa

Video: (Multiplayer)Vechten op GameGo met Makecode Arcade - Ajarnpa
Video: 60 кооперативных компьютерных игр десятилетия, в которые можно играть с друзьями 2024, November
Anonim

GameGo is een Microsoft Makecode-compatibele draagbare retro-gamingconsole, ontwikkeld door TinkerGen STEM-onderwijs. Het is gebaseerd op de STM32F401RET6 ARM Cortex M4-chip en gemaakt voor STEM-docenten of gewoon mensen die graag plezier hebben met het maken van retro-videogames. Je kunt deze tutorial volgen en het spel proberen in de Makecode Arcade-simulator en het vervolgens uitvoeren op GameGo.

In de artikelen die we eerder publiceerden, probeerden we al een platformgame en een Battle City Remake te maken. Deze keer wilde ik de Jacdac-interface gebruiken om twee GameGo's met elkaar te verbinden en de spelers in staat te stellen om voor de suprematie te vechten in een vechtspel voor meerdere spelers. Helaas kwam ik erachter dat blokprogrammering voor Jacdac-multiplayer zich vanaf nu in de bètafase bevindt en enkele bugs bevat - het is nog steeds mogelijk om eenvoudigere games te maken, maar geen geluk voor mijn vechtgame. Dus in deze instructable publiceer ik drie versies van het spel (die ik "Cthulhu Combat" noemde:))

- versie voor één speler met eenvoudige AI-tegenstander

- multiplayer-versie om te spelen in Arcade-simulatie

- multiplayer-versie met Jacdac (onvolledig, wordt later bijgewerkt)

Benodigdheden

GameGo

Microsoft Makecode Arcade

Stap 1: Op Start en Round_setup Functies

Op Start- en Round_setup-functies
Op Start- en Round_setup-functies

Ik zal het coderen van een spel voor één speler in detail beschrijven en in de volgende stappen bespreken we hoe je het kunt maken in

a) simulator-multiplayer

b)Jacdac-multiplayer.

We beginnen met het instellen van de tegelkaart op een donkere kerker en het maken van sprites voor speler en AI-bot - beide zullen echter van het type Speler zijn. We hebben hun y-asversnelling ingesteld op 600 - zodat ze niet zouden vliegen na het springen. We initialiseren ook projectielen van bot en speler voordat we de round_setup-functie aanroepen. De functie round_setup zorgt voor de voorbereiding van een nieuwe ronde voor ons - de reden dat we er een functie van maken is omdat er in totaal wel 3 rondes in het spel kunnen zijn en we willen voorkomen dat dezelfde code wordt herhaald. In die functie controleren we eerst of een van de spelers 2 overwinningen heeft - als deze voorwaarde als Waar wordt beoordeeld, is het spel afgelopen. Als beide spelers minder dan twee overwinningen hebben, verhogen we de variabele round_num met één en plaatsen we spelers op hun startplaatsen, vullen hun levens aan tot 100 en verklaren het begin van een nieuwe ronde.

Stap 2: Spelverloop

Spelstroom
Spelstroom

In dit spel is de wereld zelf statisch en is het spelverloop gebonden aan de acties van de spelers. In vier blokken definiëren we de meeste spelregels, deze blokken zijn: op de knop omhoog, op de knop omlaag, op de A-knop ingedrukt en op de B-knop ingedrukt. Laten we elk van deze blokken eens bekijken.

op omhoog-knop ingedrukt - dubbele spronglogica. Als we minder dan 3 keer op de springknop hebben gedrukt, stellen we player vy velocity in op - 140 (omhoog bewegen). Onze speler heeft een versnelling ingesteld op 600, dus zodra we springen, zal onze snelheid snel afnemen. Zodra het 0 bereikt (niet bewegend op de verticale as), stellen we jump_count opnieuw in op 0.

op omlaag-knop ingedrukt - logica voor afstandsaanvalschild. Als de omlaag-knop wordt ingedrukt, verandert de speler zijn afbeelding in "afgeschermd" en stelt variabele afgeschermd in op 1.

op knop A ingedrukt - vuur een projectiel af. Die is vrij veel zelfverklarend.

op knop B ingedrukt - melee-aanval, vergelijkbaar met schild in implementatie.

We hebben afbeeldingen van de sprites van spelers en hun afgeschermde/aanvalsvariabelen ingesteld op 0 elke 500 ms in op game-update elk.. ms-blok. We hadden voor elke actie onafhankelijke timers kunnen instellen, maar voor de eenvoud gebruiken we gewoon de update-lus van het hoofdspel.

De winvoorwaarden hier zijn vrij eenvoudig - wanneer het spelersleven 0 bereikt, heeft de andere speler de ronde gewonnen, dan slaan we het aantal overwinningen per speler op in een variabele.

Ten slotte zijn er twee blokken die schade op afstand en schade door melee-aanvallen regelen. In elk van hen controleren we op sprite-botsing en of de afgeschermde/aanvalsvariabele voor de aanvallende speler is ingesteld op 0/1.

Stap 3: Spel 1: AI-tegenstander

Spel 1: AI-tegenstander
Spel 1: AI-tegenstander

In het eerste spel zullen we een relatief eenvoudige AI-tegenstander creëren als tweede speler. Binnenin bij game-update elke 200 ms doen we eerst de afstandscontrole tussen speler en AI - als deze minder dan 20 is, zetten we onze AI in melee-modus door de kans op melee-aanval te verhogen naar 30 en de kans op afstandsaanvallen naar 30. Als de afstand groter is dan 20 stellen we de kans op een melee-aanval in op nul (geen pint in een melee-aanval, omdat de speler te ver is) en de kans op 70. Nadat de variabelen voor actiekansen zijn ingesteld, gaan we door met het uitvoeren van deze acties met de gespecificeerde kansen. Als je zelf tegen deze eenvoudige AI probeert te spelen, zul je zien dat ondanks zijn gedrag heel eenvoudig is, het niet gemakkelijk is om ertegen te winnen - zoals vaak bij computergestuurde tegenstanders, wint het meestal omdat het meer acties per seconde kan doen dan een menselijke speler.

Als je vastloopt tijdens het coderen, kun je de volledige code downloaden in onze GitHub-repository voor dit project en openen in Makecode Arcade.

Stap 4: Spel 2: Simulator Multiplayer

Spel 2: Simulator Multiplayer
Spel 2: Simulator Multiplayer
Spel 2: Simulator Multiplayer
Spel 2: Simulator Multiplayer

De spelvariant voor twee spelers in simulatie lijkt erg op de versie voor één speler, behalve dat we het AI-gedragsblok vervangen door vier op speler 2 ingedrukte blokken - met inhoud in deze blokken die de inhoud van dezelfde blokken voor speler 1 weerspiegelt. bekijk de schermafbeelding om een beter idee te krijgen welke wijzigingen u moet aanbrengen. Afgezien daarvan moeten we ook speler 2 verplaatsen met knoppenblokkering in de startfunctie toevoegen en het eindscherm voor speler twee game-over veranderen in WINNEN in plaats van LOSE.

Stap 5: Spel 3: Jacdac Multiplayer

Spel 3: Jacdac Multiplayer
Spel 3: Jacdac Multiplayer

Ik heb een community-implementatie van Jacdac-multiplayer met Makecode-arcadeblokken gevonden in deze forumthread

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

Ik heb daar het voorbeeldspel (Space Invaders) getest en vond het erg goed werken. Helaas gebruikt de spelmechanica van Cthulhu Combat veel variabelen en het lijkt erop dat de Real Multiplayer-extensies nog geen synchronisatievariabelen ondersteunen - dus ik heb het aan de praat gekregen, de acties van twee spelers worden op verschillende apparaten gesynchroniseerd, maar het leven kan niet niet laten vallen op het apparaat van de tegenstander. Ook is er iets mis met de projectielmechanica, de projectielen lijken niet te verdwijnen na het raken van de muur, waardoor het spel de verbinding verliest nadat er ongeveer 10 projectielen zijn afgevuurd.

Je kunt de multiplayer proberen door het.png-bestand uit onze GitHub-repository te downloaden om het uit te proberen - zodra de Jacdac-blok-API volwassen is, zal ik dit deel van het artikel bijwerken met werkende code.

Stap 6: Laat het Cthulhu-gevecht beginnen

Laat het Cthulhu-gevecht beginnen!
Laat het Cthulhu-gevecht beginnen!

Er zijn nog steeds veel verbeteringen die kunnen worden aangebracht aan ons eenvoudige vechtspel - je kunt bijvoorbeeld ingewikkelder AI-gedrag toevoegen of een extensie gebruiken om knopcombo's en/of animatiereeksen toe te voegen. Veel succes en plezier terwijl je je eigen games programmeert met GameGo en Makecode Arcade.

Als je een verbeterde versie van de game maakt, deel deze dan in de reacties hieronder! Voor meer informatie over GameGo en andere hardware voor makers en STEM-docenten, bezoek onze website, https://tinkergen.com/ en abonneer je op onze nieuwsbrief.

Aanbevolen: