Съдържание:

(Мултиплейър) Борба в GameGo с Makecode Arcade: 6 стъпки
(Мултиплейър) Борба в GameGo с Makecode Arcade: 6 стъпки

Видео: (Мултиплейър) Борба в GameGo с Makecode Arcade: 6 стъпки

Видео: (Мултиплейър) Борба в GameGo с Makecode Arcade: 6 стъпки
Видео: MakeCode Space Destroyer MultiPlayer Demo BrainPadArcade and MeowBit 2024, Ноември
Anonim

GameGo е съвместима с Microsoft Makecode ретро игрална преносима конзола, разработена от TinkerGen STEM образование. Той е базиран на чип STM32F401RET6 ARM Cortex M4 и е създаден за STEM преподаватели или просто хора, които обичат да се забавляват при създаването на ретро видео игри. Можете да следвате този урок и да изпробвате играта в Makecode Arcade simulator и след това да я стартирате на GameGo.

В статиите, които публикувахме преди, вече се опитахме да направим игра на платформер и римейк на Battle City. Този път исках да използвам интерфейса на Jacdac, за да свържа две GameGo заедно и да позволя на играчите да се борят за надмощие в мултиплейър бойна игра. За съжаление, разбрах, че блоковото програмиране за мултиплейър Jacdac е в бета етап от сега и има някои грешки - все още е възможно да се правят по -прости игри, но няма късмет за моята бойна игра. И така, в тази инструкция публикувам три версии на играта (която нарекох "Cthulhu Combat":))

- версия за един играч с прост AI противник

- мултиплейър версия за игра в аркадна симулация

- мултиплейър версия с Jacdac (непълна, ще бъде актуализирана по -късно)

Консумативи

GameGo

Аркада на Microsoft Makecode

Стъпка 1: При стартиране и Round_setup функции

На функциите Start и Round_setup
На функциите Start и Round_setup

Ще опиша подробно кодирането на игра за един играч и след това в следващите стъпки обсъждаме как да го превърнем

а) симулатор за мултиплейър

б) Jacdac мултиплейър.

Започваме с поставянето на картата на плочки на тъмно подземие и създаването на спрайтове за играч и AI бот - и двете ще принадлежат към вида Player. Зададохме ускорението им по оста y на 600 - за да не летят след скока. Също така инициализираме снаряди от бот и плейър, преди да извикаме функцията round_setup. Функцията round_setup се грижи за подготовката на нов кръг за нас - причината, поради която я превръщаме във функция, е, че в играта може да има общо 3 кръга и искаме да избегнем повтарянето на един и същ код. В тази функция първо проверяваме дали някой от играчите има 2 победи - ако това условие се оценява като вярно, значи играта е приключила. Ако и двамата играчи имат по -малко от две победи, ние увеличаваме променливата round_num с една и поставяме играчите на техните начални места, допълваме живота им до 100 и обявяваме началото на нов кръг.

Стъпка 2: Поток на играта

Поток на играта
Поток на играта

В тази игра самият свят е статичен и игровият поток е обвързан с действията на играчите. В четири блока дефинираме повечето правила за игра, тези блокове са: при натиснат бутон нагоре, натиснат бутон надолу, натиснат бутон А и натиснат бутон В. Нека да разгледаме всеки от тези блокове.

натиснат бутон нагоре - логика за двоен скок. Ако натиснахме бутона за скок по -малко от 3 пъти, тогава задаваме скоростта на играча vy на - 140 (придвижване нагоре). Нашият играч е настроил ускорението на 600, така че след като скочим, скоростта ни ще намалява бързо. След като достигне 0 (не се движи по вертикална ос), отново задаваме jump_count на 0.

при натиснат бутон надолу - логика на щита за далечна атака. Ако бутонът надолу е натиснат, играчът променя изображението си на "екраниран" и задава променлива екранирана на 1.

на бутон А натиснат - стреля с снаряд. Това е само по себе си обяснително.

при натискане на бутон В - атака в меле, подобна на щита в изпълнение.

Задаваме изображения на спрайтовете на играчите и техните екранирани/атакуващи променливи на 0 на всеки 500 ms при актуализацията на играта на всеки.. ms блок. Можехме да зададем независими таймери за всяко действие, но за по -простота просто ще използваме основния цикъл за актуализиране на играта.

Условията за спечелване тук са доста лесни - когато животът на играча достигне 0, другият играч е спечелил рунда, след това съхраняваме броя на победите по играч в променлива.

И накрая, има два блока, които контролират щети от далечни атаки и щети от атака в близко движение. Във всеки един от тях проверяваме за сблъсък на спрайт и дали екранираната/атакуващата променлива за атакуващия играч е настроена на 0/1.

Стъпка 3: Игра 1: AI противник

Игра 1: Противник на AI
Игра 1: Противник на AI

В първата игра ще създадем сравнително прост противник на AI, който да бъде втори играч. Вътре в актуализацията на играта на всеки 200 мс първо правим проверка на разстоянието между играча и AI - ако е по -малко от 20, ние настройваме нашия AI в режим на меле, като повишаваме шанса за атака в близко положение на 30 и даваме шанс за атака на 30. Ако разстоянието е по -голямо от 20 ние задаваме шанс за атака в меле на нула (няма пинта в меле атака, тъй като играчът е твърде далеч) и преместваме шанс на 70. След като променливите за шансове за действие са зададени, продължаваме да изпълняваме тези действия с посочените шансове. Ако сами опитате да играете срещу този прост AI, ще видите, че въпреки поведението му е много просто, спечелването срещу него не е лесно - толкова често в случай на компютърно контролирани противници той печели най -вече защото може да извърши повече действия в секунда, отколкото човешки играч.

Ако сте останали при кодирането, можете да изтеглите пълния код в нашето хранилище на GitHub за този проект и да го отворите в Makecode Arcade.

Стъпка 4: Игра 2: Симулатор Мултиплейър

Игра 2: Симулатор Мултиплейър
Игра 2: Симулатор Мултиплейър
Игра 2: Симулатор Мултиплейър
Игра 2: Симулатор Мултиплейър

Вариантът на играта за двама играчи в симулация е много подобен на версията за един играч, с изключение на това, че заменяме блока за поведение на AI с четири блока, натиснати с бутон 2, със съдържание вътре в тези блокове, отразяващи съдържанието на същите блокове за играч 1. Имайте погледнете екранната снимка, за да добиете по -добра представа какви промени трябва да направите. Отделно от това, ние също трябва да добавим ход плейър 2 с бутони, включени в стартовата функция и да променим крайния екран за игра на две игра на WIN вместо LOSE.

Стъпка 5: Игра 3: Jacdac Мултиплейър

Игра 3: Jacdac Мултиплейър
Игра 3: Jacdac Мултиплейър

Намерих общностна реализация на Jacdac мултиплейър с Makecode аркадни блокове в тази тема на форума

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

Тествах примерната игра там (Space Invaders) и установих, че работи много добре. За съжаление, механиката на играта на Cthulhu Combat използва много променливи и изглежда, че истинските мултиплейър разширения все още не поддържат синхронизиращи променливи - така че го накарах да работи, действията на двамата играчи се синхронизират на различни устройства, но животът не може не пада на устройството на опонентите. Също така има нещо нередно в механиката на снарядите, изглежда, че снарядите не изчезват след удар в стената, което води до загуба на играта след изстрелване на около 10 снаряда.

Можете да изпробвате мултиплейъра, като изтеглите-p.webp

Стъпка 6: Нека борбата с Ктулху започне

Нека борбата с Ктулху започне!
Нека борбата с Ктулху започне!

Има още много подобрения, които могат да бъдат направени в нашата проста бойна игра - например можете да добавите по -сложно поведение на AI или да използвате разширение, за да добавите комбинации от бутони и/или анимационни последователности. Успех и забавление, докато програмирате собствените си игри с GameGo и Makecode Arcade.

Ако все пак направите подобрена версия на играта, споделете я в коментарите по -долу! За повече информация относно GameGo и друг хардуер за създатели и преподаватели по STEM посетете нашия уебсайт https://tinkergen.com/ и се абонирайте за нашия бюлетин.

Препоръчано: