Id Tech 4

**id Tech 4** (ידוע גם כ-Doom 3 Engine - המנוע של דום 3) הוא מנוע משחק מבוסס OpenGL, שפותח על ידי id Software. המנוע, שתוכנן על ידי מייסד החברה ג'ון קארמק, יועד לשימוש במקור עבור המשחק דום 3, אך מאוחר יותר בוצע בו שימוש גם עבור מספר משחקים נוספים.

## היסטוריית פיתוח
[ממוזער|אזהרה שהייתה מופיעה לשחקן ב[דום 3 אם היה בוחר בהגדרות הגרפיות הגבוהות ביותר, המתריעה לשחקן על כמות ה-VRAM הגבוהה הנדרשת.]]
במקור, המנוע כיוון להיות גרסה משופרת של קודמו id Tech 3 ששימש את המשחק Quake 3 ובעצמו היה שיפור גרפי של Quake Engine הוותיק. התכנון היה לשכתב את מנוע פריסת התצוגה (רינדור) בלבד תוך שמירה על יתר המרכיבים (ניהול זיכרון, עבודה עם קבצים ועבודה ברשת). ההחלטה להשתמש בשפת התכנות C++ המתקדמת בהרבה לעומת שפת C בה השתמשו בכתיבת המנועים הקודמים, חייבה את צוות הפיתוח לשכתב את כלל הקוד של מנוע המשחק.

דרישות החומרה המקוריות של מנוע המשחק היו גבוהות לזמנן, ודרשו כרטיס מסך מתקדם עם יחידות הצללה נפרדות (Shaders) הניתנות לתכנות, כגון כרטיסי GeForce 3 של נוידיה או Radeon 8500 של ATi, עם לפחות 64 MB של זיכרון VRAM. בתערוכת E3 של שנת 2002 הוצג דמו של המשחק דום 3, שהשתמש במנוע, רץ על מחשב לדוגמה עם כרטיס המסך Radeon 9700. אף על פי שחומרת הכרטיס המתקדמת ותכונותיו המתקדמות (תמיכה ב-DirectX 9, אפיק נתונים ברוחב 256 סיביות וארכיטקטורה חדישה יותר) לא היו באמת נחוצות להרצת המשחק, קארמק הציע כי כרטיס המסך המומלץ להרצת המשחק בצורה חלקה ואופטימלית ככל האפשר, עם הגדרות גרפיות גבוהות, יהיה "תואם DirectX 9.0b באופן מלא" עם לפחות 128MB של זיכרון VRAM. נוסף על כך, כאשר שוחרר דום 3 התברר כי לא היה אפשר להריץ אותו כלל על ההגדרות הגרפיות הגבוהות ביותר, כיוון שאלו דרשו זיכרון VRAM של לפחות 512 MB, וכרטיסי מסך ששווקו באותה השנה לא כללו כמות כזו של זיכרון גרפי. למעשה, כמות זיכרון שכזו הפכה לסטנדרט לפחות שנתיים מאוחר יותר.

המנוע למעשה הביא את עידן כרטיסי המסך מבוססי Direct3D 7 בשוק הגרפיקה אל קיצו, והוציא מכלל שימוש כרטיסים דוגמת GeForce 2 או Radeon 7000 Series שעדיין הופצו בצורה נרחבת באותן השנים, וגם כרטיסי מסך מיושנים יותר דוגמת TNT של נוידיה ו-Rage של AMD וכן את סדרת Voodoo הוותיקה והמפורסמת של 3dfx, וכן הביא לסופה של תקופה בה מעבד מרכזי חזק היה יכול לפצות על כרטיס מסך חלש באמצעות שימוש בהאצת תוכנה במקום בהאצת חומרה, עקב היכולות הגרפיות המתקדמות שהוצגו במנוע. קארמק הזהיר גיימרים מלרכוש כרטיסי מסך מדגמי GeForce 4 MX, או ממחשבים המכילים אותם - באותו הזמן כרטיס זה היה נפוץ מאוד במערכות מחשב מורכבות מראש, והצרכן הממוצע היה נוטה להתבלבל ולחשוב שמדובר בכרטיס מסך מתקדם בעוד שלמעשה היה מדובר בגרסה "מחודשת" של GeForce 2. לאחר יציאת המשחק, מקצועני גרפיקה הצליחו להריץ את המשחק על חומרה שאינה נתמכת אך כרטיסים מיושנים אלו לא יכלו לעבד את התכונות הגרפיות החדישות שהוצגו במנוע.

בכנס QuakeCon של שנת 2007 הודיע קארמק כי בשלב מסוים קוד המקור של המנוע יוצא לאור כתוכנה חופשית, בדומה לקודמיו, אך לא ציין מתי. כמה שנים מאוחר יותר, בשנת 2011, קארמק צייץ בחשבון הטוויטר שלו כי הוא נאלץ לשכתב מספר חלקים מקוד המקור של המנוע על מנת להימנע מבעיות משפטיות הקשורות ל"אלגוריתם קארמק" - אלגוריתם הצללה שפותח על ידיו, שאיפשר הצגה של צללים בעלי נפח וצורה מוגדרת. קוד המקור יצא בסופו של דבר ב-GitHub תחת הרישיון הציבורי הכללי של גנו, ללא המימוש של אלגוריתם קארמק.

## תכונות
### גרפיקה
המנוע הציג מספר תכונות גרפיות חדשניות שלא היו קיימות עד כה בקודמיו. חלק מתכונות אלו כללו מיפוי נורמלי (Normal Mapping)  ו-Specular highlighting , אך החידוש הגדול היה דווקא בתחום התאורה וההצללה. בעוד שמנועים קודמים מימשו שיטה פשוטה למדי לניהול האור והצל בעזרת שימוש במפות תאורה ובהצללת גוראוד, שייצרו תאורה "סטטית" עבור מפות ושלבים במשחק, המנוע הציג שיטת תאורה-עבור-פיקסל (Per-pixel lightning) דינמית, שחישבה בזמן אמת את ערכי התאורה עבור כל פיקסל מרונדר. בכך התייתר הצורך בשימוש בטכניקות נפרדות עבור משחקי אור/צל, ובנוסף לכך, הודות לאלגוריתם ההצללה הנפחית שפותח על ידי קארמק, תרמה שיטת התאורה וההצללה החדשה עבור תחושת הריאליזם.

המודלים במנוע המשחק מונפשים בעזרת אנימציית שלד, ומנוע המשחק היה יכול לשלב מספר אנימציות יחד. כיוון שתהליך זה נחשב תהליך "כבד" עבור המעבד, המפתחים ביצעו מיטוב לתהליך באמצעות שימוש בסט הפקודות SSE של אינטל (בו בוצע שימוש במעבדי אינטל החל מפנטיום 3 ואילך).

#### MegaTexture
הגרסאות הראשוניות של מנוע המשחק עוצבו עבור משחקים "אפלים" כדום 3 ו-Quake 4 המתרחשים ברובם בחללים סגורים. משום כך המנוע לא היה יכול להתמודד כמו שצריך עם רינדור סצנות המתרחשות בשטח פתוח לאור היום, וזכה לביקורות על כך. כדי להתגבר על בעיה זו, הטמיעו המפתחים בגרסאות המתקדמות יותר של המנוע טכנולוגיה בשם MegaTexture, שבמסגרתה ניתן לרנדר אזורים שלמים על ידי שימוש בטקסטורה בודדת במידות גדולות (32000*32000 פיקסלים לדוגמה. גרסאות מתקדמות יותר תמכו אף בסדרי גודל גדולים אף יותר). הטכנולוגיה אפשרה גם לשמור נתונים על אופי המשטח עליו "מולבשת" הטקסטורה, למשל כמות החיכוך עבור המשטח או ציון אפקט סאונד שיושמע כאשר הולכים על משטח מסוים (משטח מסולע, דשא וכיוצא בזה). המשחק קווייק וורס היה הראשון להשתמש בטכנולוגיה זו, וגרסאות משופרות שלה הוצגו במנועים מתקדמים יותר של איד כגון id Tech 5 (מנוע המשחק Rage) ו-id Tech 6 (מנוע המשחק דום משנת 2016).

### סקריפטינג
המנוע כלל שפת סקריפטים מובנית, בה המשתמש יכול להיעזר עבור פיתוח מודים למשחק. שפה זו דומה למדי לשפת C++, בה השתמשו עבור פיתוח המנוע. עם זאת, הדבר אינו מונע ממפתחי מודים להשתמש בשפת C++ כדי לפתח מודים שירוצו בצורה "טבעית" על מנוע המשחק.

### סאונד ורשת
במסגרת הסכם שנחתם עם חברת Creative (ידועה בעיקר מסדרת כרטיסי הקול המפורסמת Sound Blaster מתוצרתה) הקשור לרישום הפטנט על אלגוריתם ההצללה הנפחית (שהתגלה באופן עצמאי על ידי מעבדות החברה), החליטו המפתחים להכליל במנוע המשחק את ממשק הקול OpenAL, יחד עם הרחבות **EAX** תוצרת Creative. העבודה על הכללת ה-API התבצעה על ידי Creative ולא על ידי איד.

קוד הרשת של מנוע המשחק מבוסס, בדומה לקודמיו, על מודל לקוח-שרת, ומומש בצורה דומה לצורה בה מומש בקודמו, id Tech 3, אך הפך לזמין יותר עבור מפתחי מודים המעוניינים במידע נוסף על פרוטוקולי התקשורת בהם משתמש המנוע.

## משחקים המשתמשים במנוע
* דום 3 (2004) – id Software
** חבילת ההרחבה Resurrection of Evil (2005)
** Doom 3: BFG Edition (2012)
* Quake 4 (2005) – Raven Software ,id Software
* Prey (2006) – Human Head Studios
* Enemy Territory: Quake Wars (2007) – Splash Damage
* Wolfenstein (2009) – Raven Software
* Brink (2011) – Splash Damage
* The Dark Mod (2013) - רימייק למשחק Thief: The Dark Project שבוצע על בסיס דום 3, והפך למשחק עצמאי לאחר שחרור קוד המקור.
* Quadrilateral Cowboy (2016) – Blendo Games

## ראו גם
* id Tech 2
* id Tech 3
* id Tech 5
* Unreal Engine
* Source

## קישורים חיצוניים
* 

## הערות שוליים

קטגוריה:מנועי משחק
קטגוריה:תוכנה חופשית