İçindekiler:

(Çok Oyunculu)Makecode Arcade ile GameGo'da Dövüşmek: 6 Adım
(Çok Oyunculu)Makecode Arcade ile GameGo'da Dövüşmek: 6 Adım

Video: (Çok Oyunculu)Makecode Arcade ile GameGo'da Dövüşmek: 6 Adım

Video: (Çok Oyunculu)Makecode Arcade ile GameGo'da Dövüşmek: 6 Adım
Video: Makecode arcade platformer tutorial 2024, Aralık
Anonim

GameGo, TinkerGen STEM eğitimi tarafından geliştirilen, Microsoft Makecode uyumlu retro oyun taşınabilir konsoludur. STM32F401RET6 ARM Cortex M4 çipine dayanmaktadır ve STEM eğitimcileri veya sadece retro video oyunları yaratmayı sevenler için yapılmıştır. Bu öğreticiyi takip edebilir ve oyunu Makecode Arcade simülatöründe deneyebilir ve ardından GameGo'da çalıştırabilirsiniz.

Daha önce yayınladığımız makalelerde, bir platform oyunu ve Battle City Remake yapmak için zaten elimizi taşın altına koymuştuk. Bu sefer iki GameGo'yu birbirine bağlamak ve oyuncuların çok oyunculu bir dövüş oyununda üstünlük için savaşmalarına izin vermek için Jacdac arayüzünü kullanmak istedim. Ne yazık ki, Jacdac çok oyunculu için blok programlamanın şu anda beta aşamasında olduğunu ve bazı hataları olduğunu öğrendim - daha basit oyunlar yapmak hala mümkün, ancak dövüş oyunum için şansım yok. Bu yüzden, bu talimatta oyunun üç versiyonunu yayınlıyorum ("Cthulhu Combat" olarak adlandırdım:))

- basit AI rakibi ile tek oyuncu versiyonu

- Arcade simülasyonunda oynamak için çok oyunculu versiyon

- Jacdac ile çok oyunculu versiyon (tamamlanmamış, daha sonra güncellenecektir)

Gereçler

GameGo

Microsoft Makecode Oyun Salonu

Adım 1: Başlangıç ve Round_setup İşlevlerinde

Başlangıç ve Round_setup İşlevlerinde
Başlangıç ve Round_setup İşlevlerinde

Tek oyunculu oyunu kodlamayı ayrıntılı olarak anlatacağım ve sonraki adımlarda nasıl yapılacağını tartışacağız.

a) simülatör çok oyunculu

b) Jacdac çok oyunculu.

Karo haritasını karanlık zindana ayarlayarak ve oyuncu ve AI bot için sprite oluşturarak başlıyoruz - her ikisi de Oyuncu türüne ait olacak. Onların y ekseni ivmesini 600'e ayarladık - böylece zıpladıktan sonra uçmasınlar. Ayrıca round_setup işlevini çağırmadan önce mermileri bot ve oyuncudan başlatıyoruz. round_setup fonksiyonu bizim için yeni tur hazırlığı ile ilgilenir - bunu bir fonksiyon haline getirmemizin nedeni, oyunda toplamda 3 tur olabileceği ve aynı kodu tekrar etmekten kaçınmak istememizdir. Bu fonksiyonda önce oyunculardan herhangi birinin 2 zaferi olup olmadığını kontrol ederiz - bu koşul Doğru olarak değerlendirilirse oyun biter. Her iki oyuncunun da ikiden az zaferi varsa, round_num değişkenini bir arttırıyoruz ve oyuncuları başlangıç noktalarına yerleştiriyor, hayatlarını 100'e yeniliyor ve yeni bir turun başlangıcını ilan ediyoruz.

2. Adım: Oyun Akışı

Oyun akışı
Oyun akışı

Bu oyunda dünyanın kendisi statiktir ve oyun akışı oyuncuların eylemlerine bağlıdır. Dört blokta oyun kurallarının çoğunu tanımlıyoruz, bu bloklar şunlardır: yukarı düğmesine basıldı, aşağı düğmesine basıldı, A düğmesine basıldı ve B düğmesine basıldı. Bu blokların her birine bir göz atalım.

yukarı düğmesine basıldı - çift atlama mantığı. Atlama düğmesine 3 defadan az basarsak, oyuncu vy hızını - 140(yukarı hareket) olarak ayarlarız. Oyuncumuzun vy ivmesi 600'e ayarlanmış, bu yüzden bir kez zıpladığımızda hızımız hızla azalacak. 0'a ulaştığında (dikey eksende hareket etmiyor) jump_count'u tekrar 0'a ayarlıyoruz.

aşağı düğmesine basıldığında - menzilli saldırı kalkanı mantığı. Aşağı düğmesine basılırsa, oyuncu görüntüsünü "korumalı" olarak değiştirir ve korumalı değişkeni 1'e ayarlar.

A düğmesine basıldığında - bir mermi ateşleyin. Bu oldukça açıklayıcı.

B düğmesine basıldığında - uygulamadaki kalkana benzer yakın dövüş saldırısı.

Her.. ms bloğunda oyun güncellemesinde oyuncuların sprite görüntülerini ve onların korumalı/saldıran değişkenlerini her 500 ms'de bir 0'a ayarladık. Her eylem için bağımsız zamanlayıcılar ayarlayabilirdik, ancak basitlik adına sadece ana oyun güncelleme döngüsünü kullanacağız.

Buradaki kazanma koşulları oldukça kolaydır - oyuncu ömrü 0'a ulaştığında, diğer oyuncu raundu kazandı, daha sonra oyuncuya göre kazanma sayısını bir değişkende saklıyoruz.

Son olarak, menzilli saldırı hasarını ve yakın muharebe saldırı hasarını kontrol eden iki blok vardır. Her birinde sprite çarpışmasını kontrol ediyoruz ve saldıran oyuncu için korumalı/saldıran değişkenin 0/1 olarak ayarlanıp ayarlanmadığını kontrol ediyoruz.

3. Adım: Oyun 1: Yapay Zeka Rakibi

1. Oyun: Yapay Zeka Rakibi
1. Oyun: Yapay Zeka Rakibi

İlk oyunda, ikinci oyuncu olmak için nispeten basit bir AI rakibi yaratacağız. Oyun güncellemesinde her 200 ms'de bir önce oyuncu ile AI arasındaki mesafe kontrolünü yapıyoruz - eğer 20'den azsa, AI'mızı yakın muharebe saldırı şansını 30'a ve menzilli saldırı şansını 30'a yükselterek yakın dövüş moduna ayarlıyoruz. Mesafe daha yüksekse 20'den fazla yakın dövüş şansını sıfıra (oyuncu çok uzak olduğu için yakın dövüşte pint yok) ve şansı 70'e çıkardık. Bu basit AI'ya karşı kendiniz oynamayı denerseniz, davranışının çok basit olmasına rağmen, ona karşı kazanmanın kolay olmadığını göreceksiniz - bilgisayar kontrollü rakipler söz konusu olduğunda, çoğunlukla bir saniyeden daha fazla eylem gerçekleştirebildiği için kazanıyor. insan oyuncu

Kodlama yaparken takıldıysanız bu proje için GitHub depomuzdaki kodun tamamını indirebilir ve Makecode Arcade'de açabilirsiniz.

Adım 4: Oyun 2: Simülatör Çok Oyunculu

2. Oyun: Simülatör Çok Oyunculu
2. Oyun: Simülatör Çok Oyunculu
2. Oyun: Simülatör Çok Oyunculu
2. Oyun: Simülatör Çok Oyunculu

Simülasyondaki iki oyuncu için oyun varyantı, tek oyunculu sürüme çok benzer, ancak AI davranış bloğunu, oyuncu 2'de düğme basılı dört blokla değiştiriyoruz - bu blokların içindeki içerik, oyuncu 1 için aynı blokların içeriğini yansıtıyor. Hangi değişiklikleri yapmanız gerektiğine dair daha iyi bir fikir edinmek için ekran görüntüsüne bir göz atın. Bunun dışında ayrıca 2. oyuncuyu başlatma fonksiyonunda blok butonları ile hareket ettirmemiz ve ikinci oyuncu için bitiş ekranını KAYBET yerine KAZAN olarak değiştirmemiz gerekiyor.

Adım 5: Oyun 3: Jacdac Çok Oyunculu

Oyun 3: Jacdac Çok Oyunculu
Oyun 3: Jacdac Çok Oyunculu

Bu forum başlığında Makecode arcade bloklarıyla Jacdac çok oyunculu bir topluluk uygulaması buldum

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

Oradaki örnek oyunu (Space Invaders) test ettim ve çok iyi çalıştığını gördüm. Ne yazık ki, Cthulhu Combat'ın oyun mekaniği çok fazla değişken kullanıyor ve Görünen o ki Gerçek Çok Oyunculu uzantılar henüz değişkenleri senkronize etmeyi desteklemiyor - bu yüzden çalışmasını sağladım, iki oyuncunun eylemleri cihazlar arasında senkronize edildi, ancak hayat bunu yapamazdı. Rakiplerin cihazına düşmeyin. Ayrıca mermi mekaniğinde bir sorun var, mermiler duvara çarptıktan sonra kaybolmuyor gibi görünüyor, bu da yaklaşık 10 mermi ateşlendikten sonra oyunun bağlantısını kaybetmesine neden oluyor.

Denemek için GitHub depomuzdan-p.webp

Adım 6: Cthulhu Savaşı Başlasın

Cthulhu Savaşı Başlasın!
Cthulhu Savaşı Başlasın!

Basit dövüş oyunumuza hala yapılabilecek pek çok iyileştirme var - örneğin, daha karmaşık AI davranışı ekleyebilir veya düğme kombinasyonları ve/veya animasyon dizileri eklemek için uzantı kullanabilirsiniz. GameGo ve Makecode Arcade ile kendi oyunlarınızı programlarken iyi şanslar ve iyi eğlenceler.

Oyunun geliştirilmiş bir versiyonunu yaparsanız, aşağıdaki yorumlarda paylaşın! Yapımcılar ve STEM eğitimcileri için GameGo ve diğer donanımlar hakkında daha fazla bilgi için https://tinkergen.com/ web sitemizi ziyaret edin ve bültenimize abone olun.

Önerilen: