בשנת 1993 הוציאה חברת מחשבים קטנה, "id Software", את משחק המחשב הידוע "Doom” שסחף את העולם בסערה [1]. למי שמצוי בעולם המחשבים ורגיל למשחקי תלת ממד משוכללים ולקונסוליות משחקים קשה שלא להתפעל מהמשחק, שנראה תלת ממדי ויצא בתקופה שבה לא היו מאיצים גרפיים שעושים חישובים מהירים, והוא רץ על המעבד, שהיה די איטי. כיצד זה נעשה?
המטרה במשחקי תלת ממד היא "לרמות" את המשתמשים ולהעניק להם אשליה של חוויה מציאותית. גם דוּם הצליח בכך ונתן למשתתפים תחושה ריאליסטית של קרב יריות אכזרי המתרחש תוך כדי מעבר בין חדרים אפלים שורצי מפלצות. מאחורי האשליה היה בעצם טריק, שכן דום לא היה באמת משחק תלת ממד, שבו מייצגים את כל הגופים באמצעות שלוש הקואורדינטות (x,y,z), אלא משחק דו ממד מחופש: במהלך המשחק, המחשב היה שומר את צורת כל חדר באמצעות מפה דו ממדית (ראו תמונה באתר), ורק כשהשחקן נכנס לחדר הוא היה מוסיף ציור רקע של קירות ודלתות, שהיו תמיד מאונכים לרצפה, מה שהעניק אשליית תלת ממד וחסך בחישובים מורכבים. לפיכך הגיבור, שדרך עיניו ראה השחקן את העולם, היה מסתכל תמיד קדימה ולצדדים, אבל אי אפשר היה להפנות את מבטו כלפי מעלה או מטה, כיוון שאז צריך היה לעשות מידול תלת ממדי אמיתי.
כדי להאיץ את המשחק השתמשה התוכנה באלגוריתם חכם הקרוי BSP או [2] binary space partitioning, שהקטין את כמות החישובים. בשיטה זו, תכולת כל חדר הייתה מחולקת למקטעים קטנים שנשמרו בזיכרון, כך שניתן היה לגשת למקטעים הקרובים יותר לגיבור ולצייר את תכולתם לפני הרחוקים. אם מקטע אחד הסתיר את השני מעיני הגיבור, התוכנה זיהתה זאת ודילגה על הציור השני, ובכך חסכה הרבה חישובים. גם אופן ציור הדמויות היה מעניין [3]: המתכננים השתמשו ב-16 תמונות דו ממדיות של אותה דמות שצוירו מזוויות שונות, ופשוט החליפו ביניהן כדי ליצור אשליית תלת ממד. אכן, החוסר בחומרה גרפית גרם למתכננים להיות יצירתיים!
בעקבות ההצלחה של המשחק יצאו לו גרסאות המשך. ב-1996 הוציאה החברה את המשחק Quake, שהיה בעל מנוע משופר ותלת ממדי באמת, והכיל תמיכה משוכללת בתאורה ובהצללה. כאשר החברה שחררה את הקוד לציבור התגלה דבר מוזר: כדי לממש ביעילות חישוב של אחד חלקי שורש מספר, פעולה חשובה בגרפיקה, נעשה בקוד חישוב מקוצר שלא היה מתועד ונראה כמו באג. אולם בדיקות רבות גילו שהקירוב טוב דיו לגרפיקה [3]. מאז, מתכנני משחקים למדו שבגרפיקה אפשר לוותר על דיוק, והם משתמשים בחישוב מקורב של הפונקציה ("RSQRT"). עוד תרומה של החברה!
מחקרים על פריצות דרך מראים שאלמנט מרכזי בהצלחה הוא אופי האנשים המעורבים בו. ואכן, המתכנת המוביל בחברה, ג'ון קארמק, היה טיפוס מיוחד: בגיל 23, אחרי שבילה שנה במוסד לעבריינים צעירים, פרש מהלימודים ופוטר מהעבודה, פנה לעסוק במשחקי מחשב. בזכות דרך החשיבה הייחודית שלו הוא הוביל את החברה להישג שפרץ את הדרך למשחקי תלת ממד נוספים.
כשאנו חושבים על חדשנות כדאי להיזכר ביצירה של דוּם ובג'ון קארמק: כשיש אילוצים קשים, זה הזמן להיות יצירתיים.
הערות והרחבות:
[1] דום - Doom
[2] אלגוריתם BSP
[3] מידול הדמויות
[4] הקוד ב-Quake