פיתוח משחקים עם Astra: Circuit Shift
Updated 2026-09-05
משימת Codex שהוגדרה עם Astra יצרה אב-טיפוס Godot מקומי עם שלושה חדרים, התנגשויות עובדות, חידות ממסרים, מצבי ניצחון והפסד והתקדמות שנשמרה. זהו המסלול מה-brief למשחק שנבדק, כולל התיקון שבדיקות המשחק החמיצו בתחילה.
התוצאה: לולאת משחק מלאה בשלושה חדרים
Circuit Shift הוא משחק חידות קטן במבט-על שנבנה ונבדק ב-Godot 4.5.1 על macOS. אתם מובילים את השליח CS-07 דרך שלושה חדרי תחנות ממסר, אוספים שלושה תאי אנרגיה בכל חדר, פותחים שערים ממוספרים, נמנעים מזקיפים נעים ומגיעים ליציאה. ההרצה המקומית האוטומטית הסופית השלימה את כל שלושת החדרים, בדקה הפסד והתחלה מחדש ושמרה את התקדמות הקמפיין ואת הזמנים הטובים ביותר. תהליך נפרד פתח את השמירה הזו בהצלחה.
התובנה השימושית לפרויקט משחק בסיוע AI היא השילוב בין brief מוגבל, בדיקות משחק שמונעות על ידי המנוע ובדיקה חזותית. בקשה ללולאה קטנה ושלמה אפשרה לבדוק יותר מתנועה: היציאה הייתה צריכה להישאר סגורה לפני איסוף התאים, השלמת חדר הייתה צריכה לפתוח את הסקטור הבא וההגדרות היו צריכות לשרוד הפעלה מחדש. הפרויקט להורדה מאפשר לבדוק את ההתנהגויות האלה בעצמכם.

ה-brief הראשוני הפך את ההשלמה למוחשית
המשימה הגדירה משחק מקורי בשם Circuit Shift, שלושה שלבים קצרים, פיזיקת מנוע, מתגים ושערים, תאים לאיסוף, ניצחון/הפסד/התחלה מחדש, תפריט פתיחה, הגדרות והתקדמות שמורה. היא דרשה גם צילומים אמיתיים, miniflow משחק עם מנוע אמיתי ופתיחה מחדש של מצב שמור. Godot 4.5.1 כבר היה מותקן ושימש שוב; הפיתוח התחיל בספריית משחק חדשה עם HOME זמני נפרד.
הקטע שלמטה הוא קטע מתוך ה-brief הראשוני האמיתי, עם מעברי שורה שנוספו לקריאות ועם הניסוח המקורי שמור. הקובץ המלא initial-prompt.txt כלול ב-ZIP קוד המקור. עבור brief משלכם, החלק הניתן להעברה ביותר הוא קריטריוני השלמה ניתנים לצפייה: הגדירו מה השחקן יכול לעשות ומה חייב להמשיך לעבוד לאחר סגירת המשחק.
Task: build an original polished small 2D Godot game called Circuit Shift.
Three short levels; controllable character, enginephysics/collisions,
switches and gates, collectible cells, exit, win/loss/restart,
start menu, smallsettings and savedprogress.מ-prompt לקבצים, משוב מנוע וחדרים עובדים
הסוכן כתב נתוני חדרים, GDScript, תפריטים, הגדרות, שמירות מקומיות ו-harness משחק, ואז הריץ שוב ושוב את המנוע ובדק את התוצאות. התנועה משתמשת ב-CharacterBody2D.move_and_slide; קירות ושערים משתמשים ב-StaticBody2D; תאים, סכנות ויציאות משתמשים בטריגרים של Area2D. חוזי המנוע האלה מחברים את החדר הנראה לשינויי התנגשות ומצב שה-harness יכול לצפות בהם.
הרשומה כוללת 13 הרצות של מנוע המשחק לאורך import, משחק, בדיקות רגרסיה, צילום מקומי, פתיחה מחדש, אריזה ובדיקת פיקסלים. הרצף כלל כישלון ראשוני של נוכחות סצנה לפני המימוש, משחק headless, צילומים מקומיים, תיקון חזותי ממוקד ובדיקות artifact סופיות. האמנות הספציפית למשחק צוירה פרוצדורלית בקוד CanvasItem של Godot, וחמישה אפקטי קול PCM סונתזו מקומית. העבודה שנצפתה כללה patchים שנכתבו בידי הסוכן, פקודות מקומיות, בקשות הרשאה להרצה מקומית ובדיקת צילומים; לא נצפו הכוונת משימה אנושית נוספת או תיקון קוד אנושי.

הפגם האמיתי: פוקוס מקלדת הקשה על קריאת כפתור
ההרצה המקומית הראשונה של המשחק עברה את ה-assertions שלה, אך בדיקת הצילומים חשפה טקסט בעל ניגודיות נמוכה בכפתור הראשי שבפוקוס. הדבר חשוב משום שתפריט התחנה תומך גם בניווט מקלדת: פעולה התחלתית שעובדת אינה מבטיחה שכפתור ההתחלה קריא. בדיקת רגרסיה ממוקדת נכשלה לאחר מכן ביחס ניגודיות של כ-1.36:1.
התיקון הגדיר במפורש את font_focus_color לצבע חזית כהה של הכפתור הראשי. הבדיקה הבאה מדדה בערך 10.57:1, וההרצה המקומית הסופית שמרה על assertion הניגודיות שעברה. הפלטים הגולמיים של ההרצה הכושלת והמצליחה נשארו בספריית הראיות. זו סיבה קונקרטית לשלב בדיקות משחק עם בדיקת מצבי UI בפוקוס ובבחירה: מעברי מצב יכולים להיות נכונים בעוד שהפקדים שחושפים אותם עדיין דורשים עבודה.
| שלב | תוצאה שנצפתה | רשומת ראיות |
|---|---|---|
| רגרסיה ממוקדת | ניגודיות כפתור בפוקוס 1.36:1; נכשל | 05-focus-regression |
| תיקון מפורש של צבע הפוקוס | ניגודיות כפתור בפוקוס 10.57:1; עבר | 06-focus-fixed |
| הרצה מקומית סופית | Assertion הניגודיות והמשחק עברו יחד | 09-native-final |
מה הבדיקות המקומיות באמת הפעילו
ה-miniflow הסופי של המשחק הפעיל פעולות Godot Input רגילות ואותות Control מקומיים; בדיקת מיפוי אחת שלחה InputEventKey. השליח נע באמצעות פיזיקת המנוע. ה-harness בדק התנגשות בקיר, חסימת שער סגור, פתיחה וסגירה של ממסרים, דרישת איסוף כל התאים ליציאה, שלושה ניצחונות חדר, הפסד מסכנה, התחלה מחדש, השהיה, הגדרות וטריגרים ליצירת והשמעת קול. הוא לא שיגר את השחקן, העניק תאים ישירות או הקצה מצב ניצחון.
הספירות למטה הן assertions בתוך הזרמים האלה, כולל waypoints וצילומים, ולא משימות benchmark עצמאיות. כל שלוש ההרצות המקומיות הסופיות יצאו בהצלחה עם stderr ריק. משחק קמפיין המקור הוא הבדיקה הרחבה ביותר; הרצת PCK קובעת טעינת חבילה והמשך מצב שמור, לא קמפיין מלא שני דרך המשחק הארוז.
| הרצה שנרשמה | בדיקות שעברו | תוצאה שנצפתה |
|---|---|---|
| 09-native-final | 62 | קמפיין מקומי מלא של שלושה חדרים עם בדיקות הפסד, התחלה מחדש, השהיה, הגדרות וטריגרי שמע |
| הרצה 10-native-reopen-compact | 6 | תהליך נפרד טען התקדמות והגדרות והמשיך אל סקטור שלוש |
| 12-native-pck | 6 | החבילה הופעלה מחוץ לספריית המקור, השמירה נפתחה מחדש ונכנסו לסקטור שלוש |
פתיחה מחדש בדקה התמדה ופריסה קומפקטית
תהליך מקומי חדש טען unlocked=3, completed=true, שלושה זמני best חיוביים, volume=0.35 ו-reduced_motion=true. Continue נכנס לסקטור שלוש. הדבר מפריד בין התמדה לבין ערך שפשוט נשאר בזיכרון בזמן שהמשחק פועל. המשחק שומר התקדמות בהשלמת חדר, ולכן נקודת ההמשך המיועדת היא חדר ולא המיקום האחרון של השליח.
ההרצה הקומפקטית סיפקה גם בדיקת פריסה שנייה: החדר, ה-HUD, הטיימר והפקדים נשארו ממוסגרים במלואם ב-720 x 540. צילומי שולחן העבודה הם בגודל 1280 x 960. לאורך הרצות המקור והחבילה הסופיות, שנים עשר צילומים מקומיים עברו דגימת פיקסלים לא-ריקה, ובדיקה חזותית בדקה מסגור וקריאות. אלה צילומי viewport מקומיים אמיתיים; התמונה הקטנה יותר מדגימה חלון שולחן עבודה קומפקטי.

תזמון ותצורה: כיצד לקרוא את רשומת ההרצה
ההתחלה המבוקשת הייתה 5 בספטמבר 2026 בשעה 05:35:51 UTC; ההשלמה נרשמה בשעה 06:00:11.007 UTC. זהו 1,460.007 שניות, בערך 24 דקות 20 שניות של זמן קיר שחלף. הוא כולל מימוש, הפעלת כלים, בדיקות, תיקונים, צילום ואריזה כשמנוע כבר היה זמין. זו אינה השהיית תגובת מודל או תחזית לזמן פיתוח של משחק אחר. Brief משימה ראשוני אחד הוביל לאיטרציות מימוש וכלים רבות.
זהו Codex שהוגדר עם Astra: המתאם רשם spawn_agent.model=gpt-6-astra עם reasoning_effort=xhigh. הדבר קובע רק את התצורה המבוקשת. זהות מודל תגובת API, שימוש בטוקנים, עלות ומספר קריאות מודל/API לא נחשפו ונשארו null ב-run-summary.json; לא נצפו בקשת APIsRouter ישירה או חיוב. בדיקת הקטלוג הציבורית ב-5 בספטמבר גם לא מצאה את Astra ב-APIsRouter. תיעוד המודל הרשמי והתצורה המקומית הזו אינם מוכיחים גישה דרך gateway.
הורידו והריצו את Circuit Shift ב-Godot
הורידו את ZIP קוד המקור כדי לבדוק את המימוש, ה-brief המלא, הפקדים, harness הבדיקות והראיות השמורות. חלצו אותו, ייבאו game/project.godot אל Godot 4.5.1 והריצו את הפרויקט. זוזו באמצעות WASD או מקשי החצים, הפעילו ממסר קרוב עם E או Space, התחילו מחדש עם R והשהו עם Escape. אספו כל תא כדי להפעיל את היציאה; מגע בזקיף מסיים את הניסיון.
לגרסה הארוזה, הורידו circuit-shift.pck והפעילו אותו עם runtime תואם של Godot באמצעות הפקודה שלמטה. PCK דורש Godot ואינו executable עצמאי. נבדקו תקינות ZIP, שוויון קבצים קריטיים בארכיון, שוויון המקור להרצה המקומית הסופית ושוויון SHA-256 של נכסים שהועתקו. PCK הופעל מספרייה זמנית מחוץ לפרויקט המקור. קישורי ההורדה לשני ה-artifactים, run-summary.json ומניפסט SHA-256 מופיעים למטה.
godot --main-pack circuit-shift.pckלמה אב-הטיפוס הזה מוכן בשלב הבא
הצעד השימושי הבא הוא playtest אנושי של לולאת שלושת החדרים: האם שחקן חדש מבין את מספור הממסרים, מבחין מדוע היציאה אטומה ויכול להתאושש מהפסד? במקרה הזה לא נאספו playtest אנושי, בדיקת האזנה או נתוני שימוש של משתמשים אמיתיים. השלמה אוטומטית ומאגרי שמע שנוצרו מבססים מסלולים פונקציונליים; הם אינם מבססים הנאה, איזון קושי, איכות שמע, שימור או שימושיות רחבה.
Windows, דפדפן, Steam, מגע ו-gamepad עדיין לא נבדקו; תבניות ייצוא לדפדפן לא היו זמינות מקומית. הרצות headless מואצות עדיין הפיקו אבחון אישורי macOS ואזהרות כיבוי של משאבי שמע, אף שהלוגים המקומיים הסופיים כללו stderr ריק. לפני בחירת יעד השקה, טפלו בבעיות הריצה הרלוונטיות והריצו בדיקות קלט, שמירה, אריזה וביצועים של היעד עצמו. התוצאה המעשית היא אב-טיפוס מקומי שניתן לבדיקה ותהליך אימות שניתן לחזור עליו ויכול להנחות את סבב הפיתוח הבא.
שאלות נפוצות
איזה סוג משחק יצרה המשימה?
Circuit Shift הוא אב-טיפוס Godot מקורי במבט-על עם שלושה חדרים. כל חדר משלב תאים לאיסוף, מתגי ממסר ממוספרים, שערים פיזיים, סכנות נעות ויציאה. הוא כולל תפריט תחנה, ניצחון/הפסד/התחלה מחדש, השהיה, הגדרות והתקדמות שמורה.
איך משחקים ב-PCK שהורד?
השתמשו ב-runtime תואם של Godot; במקרה הזה השתמשו ב-Godot 4.5.1. מהתיקייה שמכילה circuit-shift.pck, הריצו godot --main-pack circuit-shift.pck. כדי לבדוק או לערוך את המשחק, חלצו את ZIP קוד המקור ופתחו game/project.godot.
באילו פקדים להשתמש?
נועו בעזרת WASD או מקשי החצים. לחצו E או Space ליד ממסר, R כדי להתחיל מחדש את החדר ו-Escape כדי להשהות או להמשיך. התפריט תומך בעכבר, Tab ו-Enter. יש לאסוף כל תא לפני שהיציאה מופעלת.
איזו התקדמות שורדת התחלה מחדש?
השלמת חדר שומרת סקטורים שנפתחו, השלמת קמפיין וזמני best. הגדרות עוצמת הקול ותנועה מופחתת נשמרות גם הן. תהליך נפרד אימת את הערכים השמורים והמשיך אל סקטור שלוש; המשחק אינו שומר כל תנועה בתוך חדר.
מאין הגיעו האמנות ואפקטי הקול?
הוויזואליות הספציפית למשחק נוצרה פרוצדורלית בקוד ציור CanvasItem של Godot. חמישה אפקטי קול PCM מסונתזים מקומית בזמן ריצה. Godot מספק את הגופן המובנה שלו דרך המנוע שהותקן בנפרד.
מה כדאי לשחזר מתהליך העבודה הזה?
התחילו בלולאה קטנה ושלמה ובקריטריוני קבלה ניתנים לצפייה. הפעילו קלט מנוע אמיתי דרך איסוף, שערים, ניצחון, הפסד והתחלה מחדש; בדקו צילומים לאיתור פגמים חזותיים; פתחו מצב שמור בתהליך אחר; ואז בדקו את ה-artifact מחוץ לספריית המקור. שמרו כשלים כדי שלכל תיקון תהיה סיבה ניתנת למעקב.