חורף של בניית משחק מחשב, חלק 1: חישובים שלוקח זמן לבצע
תיכננתי לכתוב פוסט על ביוקרטיה:
– ביוקרטיה של ניהול חיים מרחוק של אמא מבוגרת בישראל. צרות בסגנון מערכון של קישון.
– ביוקרטיה של שירות לקוחות שמשתמש AI. אולי הרעיון הכי גרוע של האנושות עד כה.
– ביוקרטיה של ארגון פסטיבלי בירה בישראל. תקראו את הסיפור המרתיח של קובי קרמר מול משרד הבריאות על פסטיבל Hoopy בתל אביב.
אממה? ענייני הביוקרטיה של אמא מבאסים קשות. גם כשנוכחיים יסתיימו – יהיו חדשים. נכנסתי לבאסה בזמן כתיבת הפוסט ולכן החלפתי לנושא חצי אפוי: משחק מחשב שאני בונה.

[סוג של Concept Art מהמשחק. אני הולך על איורים בסגנון ילדותי במקום אמנות AI]
בניית המשחק טרם הסתיימה. מי יודע אם אי פעם תסתיים? גם אם הוא יושלם, הוא יהיה מאד פשוט. עיקר הייחוד יהיה שאני כתבתי אותו – כמעט לבד, עם קצת עזרה מחברים! בשפה קשה כמו Rust! בלי מנוע משחקי מחשב.
המסע של יצירת משחק הוא בעצם משחק בפני עצמו – "משחק של לבנות משחקים". אני רוצה לנסות לסכם אותו בסדרת פוסטים. הפוסטים יהיו אולי לא ליניאריים, כי תהליך בניית המשחק היה מבולבל. כל פוסט יעסוק בנושא אחר שנתקלתי בו לאורך הדרך: לפעמים נושא טכני כמו הפעם, ולפעמים תרבותי.
הפוסטים לא יעלו אחד אחרי השני, אלא לאט לאט ויהיו פוסטים אחרים ביניהם. מקווה שיהיה לזה קהל כדי שתהיה לי מוטיבציה להמשיך.
הקדמה
סיום המלחמה השאיר אותי קצת חסר כיוון. שאלות ישנות חזרו לחיי: מה לעשות הלאה? לאיזה כיוון תעסוקתי ללכת? לא יודע. באותו הזמן הגיע לבקר חבר מברלין והציע שנעשה פרויקט ביחד בזמן הביקור. זה היה יותר בשביל החדווה של לעבוד ביחד – כמו שעשינו בברלין – מהמחשבה שאשכרה יצא משהו מהפרוייקט.
ישבנו לקפה, זרקנו רעיונות, ובסוף הוחלט על משהו שיושב לי בראש כבר שנים: משחק עם פונקציה מתמטית מיוחדת שמודדת זמן. קוראים לה VDF.
כדי להבין מה השם אומר ולמה בעצם מתכוון המשפט הסתום הזה, צריך לחזור רגע ארבע וחצי שנים אחורה – לחודש פברואר 2021:
שנת 2021
בפברואר 2021 היה לי קראש מטורף על משחק חדש בשם Dark Forests. זה משחק של חקר החלל. זה לא היה המשחק עצמו שהגניב אותי, אלא הרעיון מאחוריו. הגאוניות בה הם השתמשו בקריפטוגרפיה כדי ליצור עולם ויראטואלי עצמאי.
הרעיון של עולם כמו שלנו – אבל דיגיטלי – מלהיב אותי כבר שנים. דמיינו לכם: עולם מסתורי, שזור סודות שטרם התגלו. כי נכון, את גילוי אמריקה פספסתי – אבל גילוי יבשת בעולם וירטואלי? עדיין אפשרי.
רק שהעולמות הוירטואלים של המשחקים מרובי המשתתפים הם זיוף. הם נוצרו ע"י גוף מארגן שברא ויודע את כל הסודות שלהם. אתם לא באמת חוקרים אותם בעצמכם, אלא מול מי שמנהל את העולם שמודיע כש"גיליתם" משהו.
תגידו, זה עולם זה? עולם צריך להתקים עצמונית; לעמוד בפני עצמו. הסודות בו נוצרו בתהליך כלשהו, לא הוסתרו ע"י מישהו. הגילוי הוא ביניכם לבין העולם – לא ביניכם לבין ארגון גדול. העולמות הוירטואליים של משחקי מחשב הם "עולמות" כמו שספינת הפיראטיים בלונה פארק היא "ספינה".
כאן אנו מגיעים ל-Dark Forests. כי ב-Dark Forests יש עולם עצמוני, אוטונומי, מסתורי. אף אחד לא הסתיר בו סודות באופן יזום – הם נוצרו כחלק מתהליך הבניה של העולם. אף אחד, לא יודע מה מוסתר או איפה, כולל מתכנתי העולם. כשאתם מגלים סוד, אתם מגלים אותו לבד – לא צריכים אישוש של מישהו לגילוי.
במילים אחרות: Dark Forests הוא העולם הוירטואלי הכי קרוב לעולם אמיתי שראיתי אי פעם, וזה מלהיב.

איך יוצרים עולם וירטואלי עצמוני?
איך הצליחו Dark Forests לברוא עולם וירטואלי עצמאי? הם השתמשו בטריק של ביטקוין.
תשארו איתי רגע גם אם המשפט הבא ישמע כמו סינית. הטכניקה של מציאות כוכבים במשחק היא בול אותה הטכניקה בה כורים מטבעות ביטקוין. קוראים לה Proof of Work, או בקיצור: PoW.
אני אסביר בקצרה איך זה עובד, כי זה רלוונטי להמשך.
לכל נקודה על המפה במשחק יש קואורדינטות. אתם לוקחים את הקואורדינטות האלה, ומריצים עליהם פונקציה שנקרא לה PoW (זה לא לגמרי מדויק, כי PoW זאת השיטה לא הפונקציה עצמה, אבל זה לא מבחן פה אז נזרום עם הפישוט הזה).
הדבר הבא שעושים זה בוחרים מספר ממש, אבל ממש ממש קטן (נגיד, 0.000000000001 או משהו אפילו יותר קטן). נקרא לו סף (כמו "סף הדלת"). אם בשלב מסוים של חישוב PoW אתם נתקלים במספר קטן מהסף – מזל טוב! מצאתם כוכב. אם לא – תמשיכו לחשב
(במציאות מספר החישובים בכל קואורדינטה ב-Dark Forest כנראה מוגבל, כדי שלא כל אחד יוכל למצוא כוכב בכל נקודה אם הוא ינסה מספיק).
יש הרבה פרטים שהשמטתי בתיאור הזה. אם מצאתם כוכב, איך אתם מודיעים עליו לשאר (בלי שהם יצטרכו לעשות את אותו החישוב, כי זה לוקח המון זמן?). מה קורה אם שני אנשים מוצאים את אותו הכוכב – איך מחליטים מי גילה אותו ראשון? מה עושה שתי מפות שונות אחת מהשניה? וכו' וגו'.
אבל הנקודה החשובה היא שמי שיצר את המפה לא קבע את מיקומי הכוכבים – הם נקבעים ע"י פונקציה ה-PoW. ובשביל לגלות כוכב לא צריך לתקשר עם אף אחד – אפשר פשוט להריץ את הפונקציה PoW על המחשב שלכם עד שמצאתם כוכב.
לבד. עצמאי. המפה הוירטואלית היא כמו העולם האמיתית שלנו, מסתירה סודות שכל אחד יכול לגלות.
בעיות?
גם אתם לא יודע איך PoW עובד, ואני מניח שרוב הקוראים לא ממש יודעים אפילו אחרי ההסבר הפשטני שלי, בטח שמעתם שכריית ביטקוין לוקחת המון אנרגיה – כמות אנרגיה של מדינה קטנה. לא צריך להיות גרטה כדי לחשוב שלהשתמש בשיטה הזאת כדי לכרות כוכבים במשחק נשמע קצת… לא אחראי? האם אפשר להחליף אותה במשהו יעיל יותר?
כדי לענות על זה חשוב לדעת למה PoW צורך כל כך הרבה אנרגיה.
איך מאטים חישוב?
אזהרה: חלק פסאודו-מתמטי. אם אתם קוראים אותו ולא מבינים – לא נורא! ואם בא לכם אתם יכולים לדלג לחלק הבא.
הבעיה של PoW היא שאפשר לעשותו אותו במקביל: על מחשבים שונים בו-זמנית. ככל שיש לכם יותר מחשבים שמנסים לעשות חישוב PoW, כך הסיכוי שלכם לסיים אותו ראשונים גדל. מכונות כרייה של ביטקוין הן בעצם מחשבים שמריצים אלפי או מליוני חישובי PoW במקביל. זה מביא לתחרות בין הכורים של מי יכול להריץ יותר חישובים בו זמנית. זאת הסיבה שביטקוין מבזבז כל כך הרבה אנרגיה.
נסכם: כריית ביטקוין נעשית ע"י חישוב שנקרא PoW. החישוב הזה נעשה יותר מהר כשעושים אותו בכמה מחשבים במקביל. זאת הסיבה שביטקוין מבזבז כל כך הרבה אנרגיה.
נשאלת השאלה – האם אפשר להמציא חישוב דומה ל-PoW שאי אפשר יהיה לעשות אותו במקביל? כי אם כן, אז אולי נצליח להמציא ביטקוין שלא מבזבז אנרגיה, נכון?
את השאלה הזאת שאלו כבר ב-2011, זמן קצר לאחר שביטקוין הומצא, מחמודי, טל מורן (הוא משלנו!) וודהאן. הם כתבו מאמר שהמציא קונספט חדש: Proof of Sequential Work – או בקצרה PoSW.
[כן, אני יודע שכל הקיצורים האלה מפוצצים את השכל. אבל גם לכתוב את השם המלא כל פעם לא הופך את הטקסט לקריא במיוחד, ובאמת שאין לי פתרון מוצלח יותר.]
הרעיון של PoSW פשוט: הם יצרו חישוב שאפשר לעשות רק עם סדר פעולות מסוים שנעשה אחד אחרי השני. את החישוב האלף אי אפשר לעשות לפני שנעשה החישוב ב-999. גם אם תקחו מליון מעבדים, הם לא יעשו את זה יותר מהר ממעבד אחד: החישובים חייבים להיעשות באופן סדרתי (אחד אחרי השני) ועבודה במקביל לא תעזור פה.
הייתה תקופה שתהו אם אפשר לבסס בלוקציין על PoSW ובכך לחסוך המון אנרגיה? זה לא ממש הצליח, מכל מיני סיבות שלא נכנס אליהן.
אבל מי שהמשיך וניסה לפתח את הרעיון הוא בראם כהן (ממציא ביטורנט) שב-2018 פירסם מאמר עם אלגוריתם יותר מוצלח של PoSW. האמת היא שעל הרעיון של PoSW למדתי מהרצאה שלו על המאמר שפירסם. יש אותה ביוטיוב, אבל באיכות באמת נוראית, כמעט בלתי ניתנת לצפיה.
בראם כהן המשיך ויצר מטבע בשם Chia. המטבע עדיין קיים, אם כי אני לא בטוח כמה שימוש יש בו. הוא מנסה ליצור בלוקצ'יין ידידותי לסביבה. בשלב מסוים הם מאד קידמו את הרעיון של חישוב סדרתי, אם כי אני לא בטוח עד כמה – ואם – זה חלק מהפרוטוקול הנוכחי שלהם.
למען השלמות חובה לציין שמתישהו הרעיון של PoSW הוחלף ברעיון דומה בשם Verifiable Delay Function או VDF.
אל תתנו לשם לבלבל אתכם, הרעיון מאד דומה לזה של PoSW: חישובים שחייבים לעשות בסדר מסוים. ההבדל העיקרי הוא כזה. ב-PoSW מוכיחים שעשיתם מספר מסוים של חישובים, אבל אתם לא מוכיחים את התוצאה שהחישוב הגיע אליה.
ב-VDF לעומת זאת אתם כן מוכיחים את החישוב שהגעתם אליו (אם יש חסרון: ההוכחה של כמה חישובים עשיתם היא פחות מדויקת, ויש אפשרות לרמאות קלה ב-VDF אם יש לכם מספיק מזל).
איך כל זה קשור למשחק שרצינו לעשות?
המחשבה הראשונה שעברה בראשי כשנתקלתי ב-Dark Forest ב-2021 היא, היי, למה לא משתמשים פה ב-VDF לגילוי הכוכבים? המכניקה תהיה די זהה, רק הרבה יותר ידידותית לסביבה! הרעיון הזה נשאר לי תקוע בראש במשך כמה שנים, מחכה להזדמנות לבחון אותו.
כך קרה שבבוקר קריר אחד, ישבו שני חברים ותיקים בבית קפה בוורשה, והחליטו לבזבז את השבוע הקרוב של חייהם על לעשות משחק מבוזר שמשתמש ב-VDF.
איזה משחק בדיוק רצינו לבנות? לא ידענו עדיין. רק ידענו שרוצים משהו מבוזר שמשתמש ב-VDF בשביל משהו. היה צריך רעיון למשחק מאד פשוט. כזה ששני אנשים בלי נסיון בפיתוח משחקי מחשב יכולים לבנות בשבוע.
על מה החלטנו בסוף? נראה בפוסט הבא בסדרה.














אהבתי. מצפה לפוסט הבא 🙂
תודה!
שאלה של הדיוטית, אם pow יכול לשמש למציאת "נקודה" טופוגרפית ,ניתן להשתמש בו גם במציאות ( טילים/ כלי טיס) ?
אין בעיה, קשה להבין את הקונספט. לקח לי המון זמן כשנתקלתי בו לראשונה. ופה עוד נתתי תיאור לא שלם ופשטני, אז בטח שקשה להבין.
החישובים של PoW הם חסרי משמעות במציאות. הערך היחיד שלהם זה שהם לוקחים זמן, ושאנחנו יודעים בערך כמה זמן לוקח כל חישוב.
את המפה של המשחק בונים במיוחד ככה שתהיה משמעות לתוצאות החישוב של PoW (ואותו הדבר בביטקוין, תיכננו את ביטקוין ככה שלתוצאות החישוב של PoW תהיה משמעות).
במילים אחרות: אין לתוצאות החישוב שימוש בדברים שקשורים לעולם הפיזי. רק בעולם הוירטואלי של כסף או משחקים.
אגב, היו נסיונות לתכנן פונקצית PoW שיש משמעות לחישובים שלה! כדי לא לבזבז את כל כוח החישוב הזה סתם. אבל אף אחד לא הצליח להגיע לכלום, ובשנים האחרונות אפילו לא שמעתי על אנשים שמנסים בכלל.
נשמע מענין מאד!
במקרה הייתי ביום ראשון בכנס משחקים עצמאי בבוסטון, https://www.bostonfig.com/fest2025-homepage/
הרבה משחקים מגניבים, גם משחקי שולחן וגם משחקי מחשב.
נראה לי היית משתלב שם 🙂
לא כתבת את זה במפורש, אבל אני מבין שהמשחק הוא רב-משתתפים. האם כך?
כן, צודק, שכחתי לכתוב. הוא מרובה משתתפים, אחרת אין צורך בכל ההמולה הזאת.
אני גר בוורשה ויש פה כמות אינסופית של מפתחי משחקים ואירועים. אבל אני לא באמת מפתח משחקי, אלא יותר חובבן שכותב שטויות ומשחק עם טכנולוגיות. הלכתי כמה פעמים לאירועים האלה וזה מעניין ותענוג לראות כמה אנשים יצירתיים, אבל אני לא מחזיק נר לידם.
אני במתח!!
למרות שהבנתי חלק מהדברים רק חלקית, עדיין הנושא מעניין וההסברים שלך טובים 🙂
ושולח לך חיזוקים במסע שלך במסדרונות הבירוקרטיה.