ניסיתי להכין את אותו אב טיפוס למשחק דו-ממדי ב- React, Unity, Godot, Construct, Game Maker ו- Phaser. הנה מה שמצאתי.

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

יש לי רקע כלשהו ב- JavaScript וב- C #, ויצאתי לדרך כמו שרבים עושים: על ידי הקדשתי זמן מופרז בשרשור "באיזו מסגרת עלי להשתמש" ובקריאת תיעוד מבלי להכין דבר.

הבזק קדימה חודשים רבים, ועכשיו ביליתי יותר זמן בעבודה (ובהיאבקות) ב- React, Unity, Godot, Construct 3, Studio Maker Studio 2 ו- Phaser 3, בניסיון להבין מה גורם להם לתקתק.

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

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

בנוסף, חוויה זו מבוססת על פיתוח של משחק קלפים דו-ממדי, כך שלא אדון במנועי תלת מימד, בפיזיקה וכו '.

אתה יכול גם לדלג לתחתית עבור TL; DR.

האב-טיפוס

המשחק שלי, Entromancy: Hacker Battles , הוא משחק קלפי סייבר -פאנק תחרותי עם מכניקת TCG-light. אתה יכול לקרוא עוד באתר שלנו או לראות איך זה אמור להיות מושמע בסרטון זה. אבל מספיק לומר שכמשחק קלפים, זה דורש מסגרת דיגיטלית פוטנציאלית שתומכת בדברים בסיסיים כמו ניהול מדינה, ממשק משתמש, UX גרור ושחרר ווים וקצה אחורי ליישום מרובי משתתפים.

בהתחשב בדרישות אלה, בחנתי את המסגרות והמנועים הבאים כדי לראות איזו מהן מתאימה ביותר להכנת המשחק שלי ... במקום לעשות את המשחק בפועל (אני שמח לומר שכעת התמקמתי במסגרת, אני מתקדם הרבה יותר).

אתה יכול לגשת לגרסה הניתנת להשמעה כאן, ולמרות שהמשחק נמצא רחוק יותר ממה שמציע אב הטיפוס החי, גרסה זו די יציבה (ב- Chrome לפחות).

לְהָגִיב

לאחר שכבר בניתי אב טיפוס של מחולל דמויות ב- React עבור RPG שולחני שתכננתי, חשבתי שצעד טבעי יהיה לתת למסגרת סיבוב למשחק הקלפים. מצאתי שהנהלת המדינה היא משב רוח ( אחרי הכל מה שעושה תגובה ), ואילו יישום פונקציונליות גרירה ושחרור פשוטה של ​​כרטיסים הוכיח את עצמו כסיוט.

ישנן כמה ספריות שיכולות לעזור עם גרור ושחרר בסיסי (למשל React DnD), אך גיליתי שבמשחק קלפים נדרשתי לפיתרון אלגנטי יותר עבור dropzones, מכיוון שהקרבות האקרים מאוד ספציפיים לגבי אילו קלפים יכולים להיות מושמע איפה ומתי.

הניסיון הזה הביא אותי לבדוק את boardgame.io, שיכול לעבוד יחד עם React. אך בסופו של דבר זה דרש ממני ללמוד מסגרת נוספת על גבי מסגרת קיימת, שהיתה פחות אידיאלית למטרותיי.

אַחְדוּת

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

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

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

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

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

כמו כן, סרגל צד שעשוי להיות שימושי עבור חלק: בתחילה התרגשתי מאוד מחנות הנכסים, עם הרעיון שאוכל לרכוש תבנית משחק קלפים שתקל עלי את תהליך הפיתוח. זה לא הצליח. רובם היו MTG / Hearthstone / וכו '. שיבוטים שידרשו זמן פיתוח לא פחות ממני בכדי לארגן אותם מחדש למשחק הקלפים שלי כמו שזה היה פשוט מתחיל מאפס.

גודו

המחשבה הראשונה שלי שנתקלתי בגודוט הייתה: "מנוע משחק קוד פתוח התומך ב- C #? הירשם לי!" ואז הורדתי אותו, עבדתי על מספר מדריכים בסיסיים, והיה לקרוס על הבנייה. הרם.

כמה חיפושים, התקנות מחדש ושיערות של גוגל משכו מאוחר יותר, הבנתי שזה קשור לגירסה שלי ל- VS Build (אני חושב?), שהובילה אותי במורד חור ארנב נפרד. ידעתי מניסיון שמנועים אחרים - ראשי אחדות ביניהם - עלולים לגרום לבעיות בשבירת משחקים לגמרי מחוץ לקוד שלך, אבל זה היה מכשול מעצבן שכנראה צבע את שאר החוויה שלי עם גודו.

מבחינת העורך, די אהבתי את היישום המבוסס על הצומת של גודו, שלמעשה מצאתי שהוא אינטואיטיבי שמקורו בטרומי הטרומי של יוניטי, אך בסופו של דבר התחמם אליו. למעשה הייתי מרחיק לכת ואומר שהפונקציונליות הדו-ממדית שלו טובה יותר מזו של Unity, אך היא חסרה את הקהילה, חנות הנכסים (ראה סרגל הצד לעיל), ובעיקר את התיעוד שיש לאחדות. אם אתה מתכוון לעבוד ב- C # עם Godot, למשל, היה מוכן לחפש תשובות ב- GDScript המותאם אישית של המנוע ואז לתרגם אותן ל- C #.

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

בנה 3

בסייגים שציינתי לעיל ציינתי שאני לא כולל תמחור כנקודת דיון. ובכל זאת, אני מרגיש שאני צריך להעלות את זה עם Construct 3, מכיוון שהתברר שהוא משפיע על החוויה שלי.

שלא כמו מנועי המשחק האחרים המפורטים כאן, אשר לרוב הם חופשיים לשימוש (ל- Game Maker Studio 2 יש ניסיון חינם למשך 30 יום), הרוב המכריע של הפונקציונליות של Construct עומד מאחורי חומת תשלום, ודמי מנוי ב- זֶה. אוף

אני מאוד מאוד אוהב את גזרת הג'יב של קונסטרוקט למשחקי דו מימד פשוטים. העורך מרגיש קצת כמו שדרוג מ- MS Paint, אבל הוא מטפל בניהול ספרייט ואובייקטים ממש טוב, והוא פשוט פשוט לשימוש. אני לא אוהב שזה משתמש בסגנון "תסריט חזותי", אך לאחרונה הם הוסיפו את התכונה של כתיבת JavaScript ישן רגיל ונראה שזה עובד פחות או יותר.

הצלחתי לסובב ארכיטקטורה מאוד ראשונית לאב הטיפוס תוך זמן קצר לפני סגירת ההדגמה של Construct 3 (שפועלת בדפדפן) ... ואז ניסיתי את הכל שוב מאוחר יותר עם הדגמה חדשה. אני מרגיש שלפחות במשחק הקלפים הזה אוכל לעשות הרבה עם Construct 3, אבל אני פשוט לא מוכן לשלם 99 $ לשנה (או יותר, כעסק) עבור אב טיפוס.

סטודיו Maker Game 2

משחקי YoYo עשו בבירור הרבה מאוד עבודה כדי להפוך את Game Maker Studio 2 לנגיש וניתן לניווט בקלות, וזה נראה. מכל המנועים בהם השתמשתי לפרויקט זה, אני הכי אוהב את עורך ה- GMS. לפרויקט קטן קל להתמצא ולנהל את העסק שלך. אני חושד, עם זאת, שפרויקט גדול יותר עלול לצאת משליטה די מהר.

זה עשוי להיות מושפע מהשפה הקניינית של Game Maker Studio, GML (אם כי GMS 2 תומך בתסריט חזותי, בו לא השתמשתי). זה עובד, אבל אם אתה מגיע אליו משפה אחרת של OOP (או, באמת, מכל שפה אחרת שנמצאת בשימוש נרחב), אתה עלול לשרוט את הראש ביישום או להבין איך לעשות כמה דברים. אם אתה מתחיל או מוכן להשקיע זמן בכדי להבין כיצד GMS רוצה שתשתמש ב- GML, כנראה שיהיה בסדר.

חוויתי מוזרויות מסוימות בפונקציונליות הגרירה והשחרור של Game Maker Studio - כלומר, זיהוי מצביעי העכבר בעת גרירה הוא מעט משוגע ודורש פיגומים כדי לעבוד בצורה נכונה.

אני חושב - וזו העדפה אישית ועצלנות מצדי - שאם GMS מציע את היכולת להשתמש בשפת תכנות אחרת ולא קניינית, הייתי מקדיש את הזמן לעשות כאן יותר נזק. אני כל כך מטפל במיומנויות מרובות תוך כדי עבודה, ואילו ההוצאות על הזמן להיות מומחה בעורך ה- GMS וב- GML מבלי שאוכל ליישם את הידע הזה בקלות במקום אחר לא נראה כדאי.

ובכל זאת, זהו עורך דו-מימדי די עבוד, ולמרות שהתמיכה בקהילה עשויה שלא להיות זהה לזו של יוניטי, היא עדיין די טובה. היזהר גם מכך שברגע שתקופת הניסיון בחינם תסתיים, תצטרך לשלם כדי להמשיך להשתמש ב- Game Maker Studio 2.

פייזר 3

Phaser היא מסגרת משחקית קוד פתוח עם קוד פתוח. יש כמה Phaser IDE מסביב, אבל אם אתה מהסוג שרוצה לעבוד בעיקר בקוד, ייתכן שתסיים כאן באמצעות Atom, Sublime או העורך המועדף עליך.

Phaser 2 היה ונמצא בשימוש נרחב ומתועד היטב עם המון מדריכים להיעזר בהם. Phaser 3 הוא ההפך. יש לו עקומת למידה גבוהה יחסית למתחילים, עם הרבה דוגמאות ולא הרבה הקשר סביבם.

הרבה מהמדריכים שם תומכים ב- Phaser 2, ולמרות שהלמידה ניתנת להעברה, הקוד לא. בנוסף, המפתחים הודיעו לאחרונה שהם יעברו תמיכה ל- Phaser 4 (ו- TypeScript ולא ל- ES6), וזה לא נהדר אם ביליתם זמן בעבודה ב- Phaser 3.

אם אינך מתכנת מקצועי (אני לא) ומעודכן בשיעורי ES6 ובשיטות עבודה מומלצות ב- JavaScript (לא הייתי), אתה עלול להתסכל במהירות מחוסר האחיזה של פייזר ומהצורך להגדיר את IDE וזרם עבודה משלי (הייתי).

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

אם אתה מפתח ממשק קצה, אולי תרצה או יהיה לך נוח עם קואורדינטות פיקסל קשיחות לכל דבר, אבל שיש, זו עבודה קפדנית זו. בנוסף, אם אתה לא מעודכן בכל JavaScript, סביר להניח שתחפש תשובות במעגלים שאינם של Phaser ואז תחיל אותם על הפרויקט שלך, שיש לו תועלת משלו, אני מניח.

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

סיכום

בהתחשב בכל האמור לעיל, האב-טיפוס שדבקתי בו וממשיך לחזור עליו הוא זה שבניתי עם Phaser 3. אני מבין שזה עשוי להיות נגד שיא, מכיוון ש- Phaser אינו מטבעו "טוב" יותר מ- מסגרות ומנועים אחרים בפיתוח משחקים דו-ממדי (למעט אולי React, שלא מנסה להיות מתחרה במרחב המשחקים הדיגיטלי).

נראה כי פייזר מטפל בניהול גרירה ושחרור וניהול לולאת משחק עבור קרבות האקרים בצורה חלקה יותר, ולמטרתי זה חשוב. אני גם נהנה מכך שהשימוש ב- Phaser מחייב אותי להשקיע יותר במערכות האקולוגיות של JavaScript ובקהילות, אבל אני מעוניין לעשות זאת בכל מקרה כדי שזה ירגיש כמו בונוס.

אם אתה יותר מהסוג "במה אני יכול לבנות משהו ולא אכפת לי מההקשר שבו המנוע ממוקם", YMMV.

TL; DR

תגובה: נהדר לפיתוח חזית. לא ישתמש בו למשחקים, במיוחד גרור ושחרר.

אחדות: אתה יכול ליצור כל סוג של משחק דו-מימדי אם אתה מוכן להיאבק עם העורך ועם הייחודיות התלת-ממדית הבסיסית. תמיכה נהדרת בקהילה ו- C # מדהים. חנות נכסים קיימת, אך עשויה שלא להיות שימושית למטרותיך.

Godot: קוד פתוח ותומך ב- GDScript, C #, אפילו C ++ ו- Python אם אתה מוכן לעשות הרבה הרמות כבדות. השלכות טובות דו-ממדיות אך כמעט לא פחות מתמיכה בקהילה כמו משהו כמו אחדות. כמו כן, הניסיון שלי היה באגי.

מבנה 3: ממש קל לשימוש, חסם כניסה גבוה בגלל קיר המשכורת למנוי. סקריפטים חזותיים עשויים לעלות על העצבים שלך אם אתה מחפש להשתמש או ללמוד קוד, אם כי כעת יש תמיכה מסוימת ב- JavaScript.

Game Maker Studio 2: עורך ידידותי למשתמש עם תמיכה טובה בקהילה. GML או תסריט חזותי לא יכול להיות כוס התה שלך אם אתה מגיע משפת תכנות פופולרית אחרת, אבל היי ברומא. כמו כן, נדרש תשלום לאחר תקופת ניסיון בחינם למשך 30 יום.

Phaser 3: מצפה לקודד הכל, ולעשות הרבה חיפוש כדי להבין איך לגרום לדברים לעבוד. זה עובד בשבילי עבור המשחק והאב טיפוס המסוים הזה, אבל Phaser 4 בדרך, אז יש את זה.

אני מקווה שהפוסט הזה שימושי בתהליך החיפוש וההבחנה שלך. אשמח לשמוע גם על החוויות שלך עם כל אחד מהמסגרות / מנועים האלה או אחרים!

אם נהנית ממאמר זה, שקול לבדוק את המשחקים והספרים שלי, להירשם לערוץ היוטיוב שלי או להצטרף לדיסקורד ה- Entromancy .

MS פרזן, Ph.D. כתב ועבד בחברות משחקי וידיאו מפורסמות ובאתרי עריכה כגון Electronic Arts, Perfect World Entertainment, Modus Games ו- MMORPG.com, ושימש כמנהל הקהילה למשחקים כמו Dungeons & Dragons Neverwinter ו- Mass Effect: Andromeda. . הוא מנהל הקריאייטיב ומעצב המשחקים הראשי של אנטרומנסי: RPG של פנטזיה בסייברפאנק ומחבר הספר טרילוגיית שביל הלילה . מצא את MS Farzan בטוויטר @sominator.