(מרובי משתתפים) לחימה ב- GameGo עם ארקייד Makecode: 6 שלבים
(מרובי משתתפים) לחימה ב- GameGo עם ארקייד Makecode: 6 שלבים
Anonim

GameGo היא קונסולה ניידת למשחקי רטרו תואמת Microsoft Makecode שפותחה על ידי TinkerGen STEM education. הוא מבוסס על שבב STM32F401RET6 ARM Cortex M4 ומיועד לאנשי STEM או רק לאנשים שאוהבים ליהנות ממשחקי וידאו רטרו. תוכל לעקוב אחר הדרכה זו ולנסות את המשחק בסימולטור ארקייד של Makecode ולאחר מכן להריץ אותו על GameGo.

במאמרים שפרסמנו לפני שכבר ניסינו את עצמנו ביצירת משחק פלטפורמה ורימייק סיטי קרב. הפעם רציתי להשתמש בממשק Jacdac כדי לחבר שני GameGo's יחדיו ולאפשר לשחקנים להילחם על עליונות במשחק קרב מרובי משתתפים. למרבה הצער, גיליתי שתכנות חסימות עבור מרובי Jacdac נמצאות בשלב הבטא כרגע ויש לה כמה באגים - עדיין אפשר ליצור משחקים פשוטים יותר, אך אין מזל למשחק הלחימה שלי. אז במדריך זה אני מפרסם שלוש גרסאות של המשחק (שאותו כיניתי "Cthulhu Combat":))

- גרסת שחקן יחיד עם יריב AI פשוט

- גרסה מרובת משתתפים לשחק בסימולציית ארקייד

- גרסה מרובת משתתפים עם Jacdac (לא שלמה, תתעדכן מאוחר יותר)

אספקה

GameGo

Microsoft Makecode Arcade

שלב 1: בפונקציות התחלה והגדרת סיבובים

בפונקציות התחלה והגדרה עגולה
בפונקציות התחלה והגדרה עגולה

אתאר קידוד של משחק שחקן יחיד בפירוט ולאחר מכן בשלבים הבאים נדון כיצד להפוך אותו

א) סימולטור מרובה משתתפים

ב) מרובי משתתפים של Jacdac.

אנו מתחילים בהגדרת מפת האריחים לצינוק כהה ויצירת ספריטים לשחקן ולבוט AI - שניהם יהיו שייכים לסוג השחקנים. הגדרנו את האצת ציר ה- y שלהם ל -600 - כדי שלא יעופו לאחר הקפיצה. אנו מאתחלים גם קליעים מבוט ומשחקן לפני שמתקשרים לפונקציית round_setup. פונקציית round_setup דואגת לנו להכנת סיבובים חדשים - הסיבה שאנו הופכים אותה לפונקציה היא מכיוון שיכולים להיות עד 3 סיבובים בסך הכל במשחק ואנחנו רוצים להימנע מחזרה על אותו הקוד. בפונקציה זו ראשית אנו בודקים אם לאחד השחקנים יש 2 ניצחונות - אם מצב זה מוערך כנכון, אז המשחק נגמר. אם לשני השחקנים יש פחות משני ניצחונות, אנו מגדילים את המשתנה round_num באחד ומציבים שחקנים על נקודות ההתחלה שלהם, ממלאים את חייהם ל -100 ומכריזים על תחילת סיבוב חדש.

שלב 2: זרימת משחק

זרימת משחק
זרימת משחק

במשחק הזה העולם עצמו סטטי וזרימת המשחק קשורה לפעולות השחקנים. בארבעה בלוקים אנו מגדירים את רוב חוקי המשחק, הבלוקים הללו הם: לחצן למעלה למעלה, לחיצה על כפתור למטה, לחיצה על כפתור A ועל לחצן B. בואו נסתכל על כל אחד מהגושים האלה.

כפתור למעלה נלחץ - לוגיקת קפיצה כפולה. אם לחצנו על כפתור הקפיצה פחות מ -3 פעמים, אז הגדרנו את מהירות הווי נגן ל -140 (נעים כלפי מעלה). לשחקן שלנו האצת vy מוגדרת ל -600, כך שכאשר נקפוץ, המהירות שלנו תרד במהירות. ברגע שהוא מגיע ל -0 (לא זז על ציר אנכי) אנו קובעים שוב את jump_count ל -0.

על כפתור למטה לחוץ - היגיון במגן התקפה בטווח. אם לוחצים על כפתור למטה השחקן משנה את תמונתו ל"מגן "ומגדיר את המשתנה המוגן ל -1.

על כפתור A נלחץ - יורה קליע. זה די מסביר את עצמו.

על כפתור B נלחץ - התקפת תגרה, בדומה למגן ביישום.

הגדרנו תמונות של השחקנים והמשתנים המוגנים/תוקפים שלהם ל -0 כל 500 אלפיות השנייה בכל עדכון המשחק בכל בלוק. יכולנו להגדיר טיימרים עצמאיים לכל פעולה, אך לשם הפשטות נשתמש בלולאת עדכוני המשחק הראשית בלבד.

תנאי הניצחון כאן די קלים - כאשר חיי השחקנים מגיעים ל -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 Multiplayer

משחק 3: Jacdac Multiplayer
משחק 3: Jacdac Multiplayer

מצאתי יישום קהילתי של מרובי Jacdac עם בלוקי ארקייד של Makecode בשרשור זה בפורום

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

בדקתי את המשחק לדוגמה (Space Invaders) ומצאתי שהוא עובד טוב מאוד. לרוע המזל, מכניקת המשחקים של Cthulhu Combat משתמשת בהרבה משתנים ונראה שהתוספים מרובי משתתפים עדיין אינם תומכים במשתנים מסונכרנים - אז הצלחתי לפעול, פעולות שני השחקנים מסונכרנים בין מכשירים, אך החיים לא יכולים אל תפיל על מכשיר היריבים. כמו כן, יש משהו לא בסדר במכניקת הקליעים, נראה שהקליעים לא נעלמים לאחר שפגעו בקיר, מה שגורם למשחק לאבד את החיבור לאחר שכ -10 קליעים נורו.

אתה יכול לנסות את המשתתפים מרובי משתתפים על ידי הורדת קובץ ה--p.webp

שלב 6: תן למאבק Cthulhu להתחיל

תנו למאבק Cthulhu להתחיל!
תנו למאבק Cthulhu להתחיל!

עדיין יש הרבה שיפורים שניתן לבצע במשחק הלחימה הפשוט שלנו - לדוגמה, תוכל להוסיף התנהגות AI מסובכת יותר או להשתמש בתוסף להוספת שילובי כפתורים ו/או רצפי אנימציה. בהצלחה ותהנה בזמן שאתה מתכנת משחקים משלך עם GameGo ו- Makecode Arcade.

אם אכן יצרת גרסה משופרת של המשחק, שתף אותה בתגובות למטה! למידע נוסף על GameGo וחומרה אחרת ליצרנים ולמחנכי STEM, בקר באתר האינטרנט שלנו, https://tinkergen.com/ והירשם לניוזלטר שלנו.