למד כיצד למדוד זמן ולהשתמש בו כדי לשלוט בהיבטים שונים של המשחק שלך.
בפיתוח משחקים, הוספת אירועים מבוססי זמן יכולה לשפר מאוד את מכניקת המשחק ולהפוך את המשחקים למושכים יותר עבור השחקנים. על ידי שילוב טיימרים, אתה יכול להציג אתגרים, ליצור יעדים מוגבלים בזמן, או להוסיף תחושת דחיפות למרכיבי משחק מסוימים.
צור משחק פשוט
התחל ביצירת משחק פשוט כדי להבין את היסודות. בנה משחק שבו השחקן יכול לנוע ימינה ושמאלה, ותהיה פלטפורמה אחת. צור קובץ חדש בשם simple-game.py ולייבא את מודול הארקייד, המספק את הפונקציות הדרושות ליצירת המשחק.
הקוד המשמש במאמר זה זמין כאן מאגר GitHub והוא בחינם עבורך לשימוש תחת רישיון MIT.
לאחר מכן, הגדר את ה GameWindow class, שהיא תת-מחלקה של מִקמֶרֶת. חַלוֹן. בתוך המחלקה GameWindow, הגדר את __init__ שיטה, המאתחלת את החלון עם הרוחב, הגובה והכותרת שצוינו.
ה on_key_press השיטה מזהה לחיצות על מקשי החצים שמאלה או ימינה. לחיצה שמאלה יורדת שחקן_x ב-10 יחידות תוך לחיצה ימינה מגדילה אותו ב-10 יחידות. זֶה מאפשר לשחקן לנוע אופקית בתוך חלון המשחק.
כדי להפעיל את המשחק, הגדר את הפונקציה הראשית, צור מופע של GameWindow, קרא לשיטת ההתקנה כדי להגדיר את חלון המשחק, ולבסוף, התחל את לולאת המשחק באמצעות
arcade.run().עיצוב מבנה כיתת הטיימר
כדי ליישם טיימרים במשחק שלך, אתה יכול ליצור מחלקת טיימר עם התכונות והשיטות הנחוצות. מחלקה זו תספק פונקציונליות להפעלת הטיימר, עצירתו, אחזור הזמן שחלף ובדיקה אם פג תוקף הטיימר. להלן המבנה הבסיסי של כיתת טיימר:
יְבוּא זְמַן
מעמדשָׁעוֹן עֶצֶר:
def__init__(עצמי, משך זמן):
self.duration = משך זמן
self.start_time = 0
self.is_running = שֶׁקֶרdefהַתחָלָה(עצמי):
self.start_time = time.time()
self.is_running = נָכוֹןdefתפסיק(עצמי):
self.is_running = שֶׁקֶרdefזמן_חולף(עצמי):
אם self.is_running:
לַחֲזוֹר time.time() - self.start_time
לַחֲזוֹר0
defפג תוקף(עצמי):
לַחֲזוֹר self.get_elapsed_time() >= self.duration
שיעור טיימר לוקח א מֶשֶׁך פרמטר בשניות במהלך האתחול. המחלקה מכילה תכונות כגון שעת התחלה כדי לאחסן את השעה שבה הטיימר התחיל, ו רץ כדי לעקוב אחר מצב הטיימר.
ה הַתחָלָה() השיטה מגדירה את ה-start_time לזמן הנוכחי באמצעות זמן זמן() ומגדיר הוא_רץ אל נָכוֹן. ה תפסיק() השיטה פשוט מגדירה את is_running ל שֶׁקֶר. ה get_elapsed_time() השיטה מחשבת את הזמן שחלף על ידי הפחתת ה-start_time מהזמן הנוכחי.
אם הטיימר פועל, הוא מחזיר את הזמן שחלף; אחרת, הוא מחזיר 0. ה is_expired() השיטה בודקת אם הזמן שחלף גדול או שווה למשך הזמן, מה שמציין שהטיימר פג.
הטמעת טיימרי ספירה לאחור
כדי להדגים ספירה לאחור במשחק שלך, אתה יכול להפעיל את הטיימר כאשר השחקן לוחץ על מקש מסוים, כגון מקש הרווח. הדפס את הספירה לאחור למסוף באמצעות פקודת ההדפסה של Python. צור קובץ חדש בשם timer.py והוסיפו את הקוד עם העדכונים הבאים:
יְבוּא זְמַן
מעמדGameWindow(מִקמֶרֶת. חַלוֹן):
def__init__(עצמי):
super().__init__(WIDTH, HEIGHT, "משחק פשוט")
self.player_x = WIDTH // 2
self.player_y = HEIGHT // 2
self.timer = טיימר(10)defon_key_press(עצמי, מפתח, משנה):
אם key == arcade.key. מֶרחָב:
self.timer.start()
defon_draw(עצמי):
# קוד קיים
אם self.timer.is_running:
elapsed_time = self.timer.get_elapsed_time()
r_time = self.timer.duration - elapsed_time
resting_time = max (r_time, 0)
הדפס(f"ספירה לאחור: {זמן שנותר:.1ו} שניות")
ודא שאתה יכול לראות את חלון הטרמינל ואת חלון המשחק בו זמנית. לאחר מכן הקש על מקש רווח ותראה את הטיימר סופר לאחור:
טיפול באירועי טיימר ופעולות הפעלה
אתה יכול גם להפעיל פונקציה ש מצייר מלבן כאשר טיימר הספירה לאחור יפוג. צור קובץ חדש בשם handle-event.py והוסיפו את הקוד עם העדכונים הבאים:
defon_draw(עצמי):
# קוד קיים
אם self.timer.is_expired():
self.draw_rectangle()
defציור_מלבן(עצמי):
arcade.draw_rectangle_filled (WIDTH // 2, HEIGHT // 2, 100, 100, אדום)
להלן הפלט:
השהייה, איפוס וחידוש הטיימר
כדי להוסיף פונקציונליות להשהיה, איפוס וחידוש הטיימר, אתה יכול להרחיב את שָׁעוֹן עֶצֶר כיתה עם שיטות מתאימות. הנה דוגמה:
מעמדשָׁעוֹן עֶצֶר:
# קוד קייםdefהַפסָקָה(עצמי):
self.duration -= self.get_elapsed_time()
self.is_running = שֶׁקֶרdefאִתחוּל(עצמי):
self.start_time = 0
self.is_running = שֶׁקֶר
defקורות חיים(עצמי):
self.start_time = time.time()
self.is_running = נָכוֹן
הוספת משוב חזותי לטיימר
כדי לספק משוב חזותי לטיימר, ניתן לשלב טקסט או אלמנטים גרפיים על מסך המשחק. צור קובץ חדש בשם visual.py והוסיפו את הקוד עם העדכונים הבאים:
defon_draw(עצמי):
# קוד קיים
אם self.timer.is_running:
טקסט = f"ספירה לאחור: {זמן שנותר:.1ו} שניות"
arcade.draw_text (טקסט, 10, 10, שחור, 18)
כעת תראה את הטיימר ישירות בחלון המשחק במקום בקונסולה:
כולל תכונות נוספות
כדי לשפר עוד יותר אירועים מבוססי זמן, אתה יכול לשקול ליישם את התכונות הנוספות הבאות במשחקים שלך.
כוח-אפים או בונוסים מבוססי זמן
הצג כוח-אפים או בונוסים המופיעים מעת לעת לאורך המשחק. ההעצמות הללו יכולות לספק יכולות זמניות, נקודות נוספות, מהירות מוגברת או כלי נשק משופרים.
על ידי הפיכתם לזמן מוגבל, על השחקנים לאסוף אותם אסטרטגית בתוך מסגרת זמן מסוימת כדי להשיג יתרון. זה מוסיף התרגשות ומתגמל חשיבה מהירה.
אתגרים מוגבלים בזמן
צור אתגרים מוגבלים בזמן שבהם השחקנים חייבים להשלים משימה בתוך מסגרת זמן מסוימת. לדוגמה, קטע חידה או פלטפורמה שדורש פתרון תוך זמן נתון.
זה מאתגר את השחקנים לחשוב ולפעול במהירות, ומוסיף תחושת דחיפות מרגשת למשחק. השלמה מוצלחת של אתגרים אלו יכולה לפתוח תגמולים או לקדם את הסיפור.
מכשולים או אויבים מתוזמנים
יישם מכשולים או אויבים מתוזמן המהווים איום על השחקן. למשל, פלטפורמות נעות המופיעות ונעלמות במרווחי זמן קבועים, או אויבים שהופכים לבלתי מנוצחים לזמן מוגבל.
שחקנים חייבים לתזמן את הפעולות והתנועות שלהם בצורה נכונה כדי לנווט במכשולים אלה או להביס אויבים לפני שיגמר הזמן. זה מוסיף שכבה של אסטרטגיה ותיאום למשחק.
שיטות עבודה מומלצות לאירועים מבוססי זמן
בעת יישום אירועים מבוססי זמן במשחקים שלך, חיוני לעקוב אחר השיטות המומלצות הללו.
בדיקה ואיזון
בדוק את האירועים המבוססים על הזמן שלך ביסודיות כדי להבטיח שהם הוגנים ומאוזנים. כוונן את משך הזמן, הקושי והתגמולים כדי ליצור חוויות משחק מהנות.
משוב משתמש
ספק משוב ברור ואינטואיטיבי לשחקנים לגבי מצב הטיימר וכל אירוע מבוסס זמן. הוספת אפקטים קוליים, אינדיקטורים חזותיים או רמזים טקסטואליים יכולים לעזור לשחקנים להבין את אילוצי הזמן ואת ההשלכות של מעשיהם.
מדידת זמן עקבית
השתמש במערכת מדידת זמן עקבית לאורך כל המשחק שלך. לדוגמה, השתמש בשניות כיחידה עבור כל הטיימרים והחישובים הקשורים לזמן. זה מבטיח עקביות וקלות הבנה הן לשחקנים והן למפתחים.
תיקי ידית קצה
שקול תרחישים שבהם המשחק עשוי להיות מושהה, ממוזער או פועל ברקע. טפל במצבים אלה בחן כדי לשמור על תזמון מדויק ולמנוע התנהגות לא מכוונת כאשר המשחק מתחדש.
על ידי ביצוע שיטות עבודה מומלצות אלה, אתה יכול ליצור אירועים מבוססי זמן המשפרים את המשחק, מאתגרים שחקנים ומספקים חוויה מאוזנת ומהנה.
הופכים משחקים למהנים יותר עם אירועים מבוססי זמן
על ידי שילוב אירועים מבוססי זמן במשחקים שלך, אתה יכול ליצור חוויה דינמית ומרתקת לשחקנים. אתגרים מוגבלים בזמן מוסיפים ריגוש ודחיפות, בעוד הפעלת כוח או מכשולים מתוזמנים יכולים ליצור הזדמנויות אסטרטגיות לקבלת החלטות.
התנסו עם מכניקות שונות מבוססות זמן כדי למצוא את האיזון המתאים למשחק שלכם, וזכרו לבצע בדיקה וחזרה כדי למקסם את הכיף וההנאה.