הצעה למימוש האצת הזמן

עמוד
מוצגות 1 תגובות (מתוך 1 סה״כ)
  • מאת
    תגובות
  • #77146
    DL!
    משתתף

    שלום!

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

    1. לא להשפיע על המשחק יותר מדי: מקסימום האצה היא "כפול2", לא משהו מופרע לגמרי.
    2. ככל שההאצה הנוכחית גבוהה יותר, צריך להשקיע יותר משאבים כדי להגדיל אותה עוד, ולא לינארית.
    3. אם מפסיקים להשקיע, ההאצה דועכת.
    4. אפשר להגיע למצב של האצה קבועה נתונה, למשל "כפול1.5" לאורך כל המשחק.

    לא להבהל… זה טיפה מסובך.
    ____________________________________________

    טרמינולוגיה:
    סיבוב – הרצה מחזורית של כל השורדים, לפחות אופקוד אחד מכל שורד.
    תוספת זמן – הרצת אופקוד נוסף של שורד ספציפי, בסיבוב ספציפי.
     
    לדוגמא:
    בסיבוב אמיתי מס' 73 של תחרות מסויימת השורדים הראשון והשני מקבלים תוספת זמן, ולכן המנוע מריץ שני אופקודים שלהם. השורד השלישי לא מקבל תוספת זמן, ולכן המנוע מריץ אופקוד אחד בלבד שלו.
    ____________________________________________
     
    אלגוריתם:
    לכל שורד יהיה אוגר וירטואלי נוסף (בלתי נגיש ישירות) בשם "אנרגיה", בגודל 16 ביט.
    הערך ההתחלתי של האוגר יהיה 0, ובכל מקרה כל 5 אופקודים המנוע יחסיר 1 מערכו. אם היה אפס, ישאר אפס.
     
    רצף של 4 בתים שהיום מייצגים אופקוד לא חוקי יוגדרו במנוע כאופקוד ייעודי בשם
    NRG
    כל קריאה לאופקוד תוסיף 1 לאוגר האנרגיה.
     
    בכל סיבוב תחושב "מהירות" השורד עפ"י הנוסחא הבאה:
    Speed = log2(Energy) + 1
    אם ה"אנרגיה" היא אפס, גם המהירות תוגדר לאפס. בכל מקרה המהירות תהיה בתחום 0-10.
     
    "מהירות השורד" תשמש לקבוע האם השורד יקבל תוספת זמן-
    נניח המהירות היא 5, המשמעות תהיה שבסיכוי 50% המנוע יריץ אופקוד נוסף של השורד.

    בשורה התחתונה, בכל סיבוב המנוע יריץ לפחות אופקוד אחד של כל שורד, ולכל היותר שני אופקודים של כל שורד.
    ____________________________________________

    שאלה: למה להכניס אקראיות לעניין? למה שהמנוע לא יקבע בצורה דטרמיניסטית האם שורד מסויים יקבל תוספת זמן?

    תשובה: נניח שמהירות השורד היא 5, ז"א המנוע אמור להריץ 1.5 אופקודים שלו… בעיה! פתרון אפשרי יכול להיות לתת לשורד תוספת זמן פעם בשני סיבובים באופן דטרמיניסטי (נניח כל סיבוב זוגי), אבל כיוון שמהירות השורד יכולה להשתנות בינתיים – יהיה קשה יותר לחזות מה בדיוק יקרה.

מוצגות 1 תגובות (מתוך 1 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.