Table of Contents

האתגר הגדול: אופטימיזציה של FLT:0 [Half-earsFLT] 1 לעשרות שנים של דיפוד

כמעט שלושה עשורים לאחר שחרורו, FLT:0 [Half-LifeFLT] 1 נשאר שם ציוני דרך - לא רק עבור המשחק שלה ואת סיפור הסיפור, אלא גם כעדות לאתגרים הטכניים של משחק שנכתב עבור סוף-1990s חומרה על פני הנוף העצום, המפרק של ארכיטקטורות מחשוב מודרני, מנוע אחסון GoldSrc המקורי, עצמו מנוע קורק שונה מאוד, תוכנן עבור עולם של מעבדים סטנדרטיים, כגון CPU-R.

⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇

"אדריכלות המודעת" עשויה להישמע מופשטת, אך עבור משחק כמו FLT:0 [Half-LifeveFLT]:1, היא מתרוממת לדרכים ספציפיות CPUs, GPUs, זיכרון ומערכות אחסון ודוחקת נתונים.כל דור של חומרה מציג מערכות הדרכה חדשות, חירש זיכרון ויכולות עיבוד מקבילות - כולן אינטראקציה ללא משפט עם קוד שנכתב בסוף 1990.

אדריכלות CPU: מ-one-Core ועד רבים

המקור (FLT:0)Half-LifeFLT:1hil רץ על ארכיטקטורת x86, במיוחד מותאם עבור אינטל Pentium II ו III הוראות הוראות. מודרני CPUs, בין אם x86-64 (מ- Intel או AMD) או אפילו ARM באמצעות חיקוי (כמו על כמה ניידות FLT:2Half-LifeFLT 3), להתמודד עם המשחק של שילוב ו-Comples דרך שילוב של שכבות:

  • (FLT:0) Instruction Set Evolution:FLT:1, המשחק משתמש בהוראות SIMD ישנות יותר (MMX, מוקדם SSE) כי CPUים מודרניים עדיין תומכים דרך נתיבי קוד מורשת, אבל אלה פחות יעילים מאשר פעולות AVX-512.
  • (ב) ⁇ :0) ,5 קראב: ⁇ 1 (המשחק העיקרי של גולדסאר) הוא כמעט כולו יחיד-הנקרא, בעוד CPUs מודרניים מצטיינים בעומסי עבודה רבים, FLT:2Half-LifeFLT 3 אינו יכול למנף יותר מאחת או שתיים ביעילות על Ccounts גבוה, המשחק עשוי להיות איטי יותר מאשר משימות חד פעמיות או יותר.
  • (FLT:0Cache and Memory Latency: Modern L3 caches יכול להיות 30-50 MB, אבל דפוסי הגישה של הקוד לעתים קרובות לגרום ל- caches כי המנוע מתייחס זיכרון כמרחב שטוח, מתפתל - גישה כי הפין יכול להיות 30-50 MB, אבל דפוסי הגישה הזיכרון של הקוד לעתים קרובות לגרום ל- cacheaches לעתים קרובות כי המנוע מתייחס זיכרון כמרחב שטוח, מתפתל - גישה כי הוא מעניש מודרני.

אדריכלות GPU: החל מפרסום קבוע ועד שדרים לא מזוהים

כאשר נשלחה כרטיס הגרפיקה הטיפוסי היה 3dfx Voodoo2 (התקן הפונקציונלי) או GeForce 256 (ה-GPU הראשון כדי לשלב ולהדליק). GPUים מודרניים מ- NVIDIA, AMD, ו- Intel הם ארכיטקטורות מאוחדת המיועדת למיזוג מקורי של המשחק.

  • (FLT:0Legacy API Emulation:FLT:1 נהגים מודרניים חייבים לתרגם הישן Direct3D 7 קורא למקבילות מודרניות (כמו DirectX 11 או Vulkan) שכבת תרגום זו (דרך D3D7to11 עטיפה או של Windows עצמו D3D9-on-12) מציג מעל פני ראש ויכול לשבור הנחות על פריסת זיכרון.
  • (FLT:0)Fixed-Function Fallbacks:BuildFLT:1) המנוע מבוסס על תכונות כי GPUים מודרניים כבר לא לחשוף את עצמם, כגון "שולחן הפוץ" או פורמט "מרקם דיגיטלי".
  • (ב) [ה] [ה]] [ה]] [ה] [ה]]] [ה][דרוש מקור]]]]]]] [ה]]]]][ה[[המאה ה-1], [ה[[המאה ה-20]]]]], יש צורך ליישב מחדש את ההשפעות הללו בתוכנה או באמצעות התאמות תאימות, אשר יכולות להפחית את הביצועים כאשר המשחק מנוהל ברזולוציה גבוהה או עם אנטי-פליהירות כפויות באמצעות נהגי רכב באמצעות נהגי רכב.

זיכרון ואדריכלות

רוחב פס זיכרון ועקביות השתנו באופן דרמטי.המשחק המקורי ציפה ל-SDRAM ב-66-133 MHz עם רוחב פס סביב 1 GB/s. מערכת DDR5 מודרנית מציעה 50-100 GBs/100 GBs, אבל ניהול הזיכרון של המשחק - הקצאה מתוקנת, תכופים תכופים של מגמגמות זמן נמשכות - לא בדיוק כמו, אחסון עבר מ- HDDs (ראו של 8-D) ל-0.1 כוכבים מהירים (לעתים קרובות) כדי להפחית את המטענים מהירים (אך) בעוד שלעתים קרובות לא תוכנן באופן דרסטי של מנוע SSD) ל-R) של מנוע SSD (אך לא תוכנן באופן דרסטי של מנוע טעינהמכונה גם על גבי נפח אבטחה מהיר).

אתגרים של GoldSrc Engine

מנוע גולדסאר שנשלח ב-1998 ועבר מספר תיקונים עד 2004 (עדכונים "SteamPipe") האדריכלות שלה משקפת את מגבלות תקופתה, והמגבלות הללו פועלות כעת ב-FLT:0a AgainstuaFLT:1 בביצוע חומרה מודרנית.

משחק יחיד-Threaded Game Loop

המנוע המקורי של ההרחבה:0 [Half-LifeFLT:1] מנוע משתמש בלולאה משחק סינכרונית שבה הפיזיקה, AI, קידוד ורשת רצף על חוט יחיד.זה היה סטנדרטי עבור 1998 כאשר CPUs היה ליבת יחיד ו- Hyperthread לא היה קיים.על מעבד מודרני של 8core CPU, המשחק משתמש הליבה אחת ב-100% בעוד ליבת השנייה שליד (מלבד מכשיר ראשי תיבות של מנועים) לא יכול להיות מספיק פעיל יותר מאשר לקצב עבודה אחד).

המונחים: Rate obent Physics

אחת מנקודות האופטימיזציה הידועות ביותר ב-FLT:0 [Half-LifeFelop ⁇ ] הייתה הפיזיקה התלת-בסיסית שלה.המנוע המקורי קשר את קצב עדכון הסימולציה לקצב המסגרת – טעות נפוצה במשחקים ישנים יותר. ריצה בשיעורי מסגרת גבוהה (למשל, מעל 100 FPS) עלולה לגרום לשחקן לדחוס דרך קירות או להאיץ את התנועה גולדה מאוחר יותר.

מפתחת Renderer Legacy

ה- Software Acter, בעוד ש-Accreback חיוני ב-1998, הוא בלתי אפשרי לחלוטין במערכות מודרניות בכל החלטה שניתן לשחק בה.זה משתמש ב- CPU rasterization ללא האצה GPU. עם זאת, נתיב התוכנה עדיין קיים בבסיס הקוד, וכמה בדיקות תאימות (כגון זיהוי ה- CPU על סטארט-אפ) יכולות להציג עיכובים.

צווארי בקבוק טכניים מרכזיים לאורך דורות של חומרה

שחקנים היום לרוץ (FLT:0)Half-LifeFLT:1 על כל דבר מהמחשב הנייד בן 15 לשולחן עבודה חדשני.

סצנות CPU-Bound: The Single-Core Wall

בשרתים מרובי-שחקנים צפופים (למשל, במודולים כמו Counter- ⁇ 1.6) או במפות של שחקן יחיד (כמו "Surface Tension" עם הרבה יצורים AI), ה-CPU הופך לצוואר הבקבוק הבלעדי. כי גולדסקוס לא יכול להשתמש יותר מגרעין אחד עבור לוגיקה משחק, כל שיפור ב- IPC (הוראות לשעון) מ- CPU חדש עוזר רק שולי של AFP5K5x, לעומת 2, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, כלומר, 2, כלומר, כלומר, כלומר, כלומר, כלומר, לעומת 2, כלומר, כלומר, כלומר, יותר מ- ilf ilf Ip 5K, יותר מ- iLT5, יותר מ- ilf Ix, יותר מ- ilf 1 מהיר יותר מ- ilf Ip, לעומת 2, לעומת 2, אם כן, הוא מהיר יותר מ- ilf מודרני של משחק Ip1, לעומת 2, לעומת 2.

סצנות GPU-Bound: החלטה ו Legacy Rendering

(FLT:0 âlf-LifeFLT:1 קשקשים היטב להחלטות גבוהות כי הגיאומטריה שלה נמוכה-poly ומרקמים הם קטנים (לעתים קרובות 256x256) עם זאת, חיקוי של תכונות מורשת (במיוחד במצב OpenGL תחת מנוע מודרני של NVIDIA) יכול לגרום צוק ביצועים.

זיכרון ואש: קיר הליטנסיות

CPUs מודרניים מסתמכים על צ'יפים גדולים ורוחב פס גבוה לזיכרון המסיכה (FLT:0Half-LifeFLT:1 של דפוס גישה הזיכרון של צמידים גבוה) - תוך התעלמות מרשימות מקושרות של ישויות ו- BSP על צומת - הוצאות סביב כתובות זיכרון באופן שבו קווי זיכרון של Evicts cache במהירות. זה גורם גישה תכופה, אפילו על CPU עם 32 של Faches עם אפקט FPS הוא 30 שניות לאחר מכן הוא מסוגל לרוץ על פני ה- 30 שניות.

Cross-Platform and Cross-Architecture Optimization אסטרטגיות

Valve והקהילה פיתחו מספר שיטות לשיפור:0 (Lifelf-LifeFelo) ביצועים של אל מעבר לחומרה מגוונת.טווח זה מטלמים רשמיים ועד לחתיפות של צד שלישי.

שכבות קשיחות: SDL ו-Vulkan Wrappers

נמל לינוקס של לינוקס:0 [LifeFearph:] (באמצעות Steam Play) משתמש ב- SDL (Simple Directmedia Layer) לקלט מופשט ולחלון.זה מאפשר למשחק לרוץ בשרתי תצוגה שונים (X11, Wayland) ללא שינוי משמעותי יותר, פרויקטים קהילתיים כמו FLT:2DXVKFLT-3 (a Direct3D3D) לתרגום ANGIFD5 (N) יכולים לעתים קרובות לרוץ עם ביצועים טובים יותר ו-D5GT) כדי להפעיל את ה-DDRDDRDGTERD5 (NERD) עם ביצועים טובים יותר טוב יותר על ידי לינוקס (FD5DGFD) כדי להפעיל על ידי לינוקס (FD) כדי להפעיל על ידי לינוקס (FD5D) עם ביצועים טובים יותר באופן משמעותי יותר טוב יותר באופן משמעותי יותר על ידי לינוקס (FLT 5DGFLT 5D) עם ביצועים טובים יותר.

בנוסף, כלים כמו EF:0 (DgVoodoo2veFLT) 1 עוטפים את המשחק המקורי Direct3D 7 קורא Direct3D 11, המספק תאימות טובה יותר עם GPUים מודרניים ומאפשר תכונות כמו רזולוציה שרירותית מדרגת ואנטי-aliasing ללא התרסקות.

דינמי Scaling וידוי Tuning

מכיוון שלגולדסאר אין קצבת איכות של צומת אוטומטי, השחקנים חייבים להתאים באופן ידני קומץ של הגדרות.

  • (FLT:0)Resolution ו-Dock:FLT:1 מנוע המשחק יכול להיאבק עם קצבי רענון מעל 120 הרץ בשל טיפול קבוע של קלט, קביעת כובע מסגרת (למשל, באמצעות fps max 72 ') לעתים קרובות מניב משחק חלק יותר.
  • (FLT:0)Render Distance:FLT:1 קונסולת ה- ’r farz’ משתנה שולט על מטוס ה-Tor רחוק.הורדתו מפחיתה את מספר הפוליגון שנשלח ל-GPU, אשר מסייע בגרפיקה משולבת.
  • (ב) ⁇ :0) ⁇ (=ה) ⁇ (=ה) ו-"gl polyoffset' Varis) ניתן להזיז את המרב והמרקם התלוי במערכות הזיכרון-מקודמות.
  • (FLT:0)Audio Backendrov: 1FLT (השתמש במערכת השמע "SDK" (Sensed) במקום "wav" יכול להקפיץ כמה ערבוב למעבד ביעילות רבה יותר במעבדים מודרניים.

נתיבי קוד-המימון

(הופנה מהדף macOS Native version of FLT:0 [LifephtureFOVA: 1 ] (ה- GoldSrc המקורי), אך הקהילה-התמכה:2Biolabph3 3 עבורk ו-FLT:4 Xash המקורי יכול להפוך את ה- CK3DFLT:5 מנוע relements את לוגיקה המשחק באמצעות קוד מודרני X3-Ler (המפתחים) או מספר גדול יותר ל-DPU (לא ניתן להפוך את ה-DPU) באופן מלא כדי להפוך את ה-DPU (DR) ל-DRicpleve) ל-DRicpletextextexer (DRateltexer) כדי להפוך את ה-DRicertretextextextexer) ל-DRateltexertretretextextexertexer) כדי להפוך את ה-DLT: 5DLT: 5DLT: 5DLT: 5DLT: 5DValtextextexertextexertexertextexertextextexertexer (D

בדיקה חדשנית: Community-Driven Compatibility

משום ש-FLT:0 [Half-earof-LifeFLT] פועל על מגוון רחב של חומרה, בדיקות אינן שלמות.הקהילה שומרת רשימות תאימות והגדרות עבור GPUs ספציפיים (למשל, "Half-Life Intel GPU Fix" כדי להשבית את התוכנה הופכת לפעילה באופן פעיל).

פתרונות מודרניים ותרומות קהילתיות

הדרך היעילה ביותר לרוץ (FLT:0)Half-LifecioFLT:1 על חומרה מודרנית היא לעתים קרובות לעקוף את המנוע המקורי לחלוטין.

Xash3D Engine

Xash3D הוא קוד פתוח מחדש של מנוע הזהב של ה-C. זה תואם ל-FLT:0Half-LifeFLT (ה-LifeFLT) של 1:1 ותומך בנו עבור Windows, Linux, macOS ו- Android.R.S להפוך את ה-Fretreader שלו ל-OpenGL, Vulcan, או Directd 11DIR מאפשר את ה-DPU החדש עם מערכות ההפעלה המקוריות יותר מ-DPU עם ה-GPU עם HD (DPU) ו-DPU עם מערכת ההפעלה HDDPU עם מערכת ההפעלה החדשה עם HDDPU עם מערכת ההפעלה החדשה עם HDDPU עם HDDPU גבוהה יותר עם HD (DPU עם , כולל , כולל , כולל , , כולל GPU ו-DPU עם מערכת ההפעלה HDDPU עם , , עם , עם .

מנוע קלאסי הראשון (FPCE)

עוד קביעה מחדש מודרנית, FPCE, מתמקדת דיוק, אבל גם מציגה שיפורים האצה חומרה.הוא תומך בהחלטות גבוהות יותר תאורה דינמי ללא ראש של נתיב התוכנה.

אפשרויות ל-Exchangeware ו-Tis for Specific Hardware

עבור שחקנים המעדיפים את המימוש המקורי, אפשרויות ההשקה הבאות (התקבלו באמצעות Steam) יכולות לעזור:

  • [01:0] 20 -h' 1080FreaLT:1] - כוח פתרון ספציפי; לפעמים הדה-דה-האוטומטי בוחר מצב לא נכון או תת-אופטימי.
  • (ב) ,0) - מצב OpenGL של כוח פתוח (בדרך כלל ביצועים טובים יותר מאשר Direct3D על GPUs מודרניים).
  • (ב) ,0) רכה (ב) , רק שימוש אם אין לך GPU; על מערכות מודרניות, להימנע מכך בכל מחיר.
  • (ב) [ה]0]-לא-מרפאל - לאופוטממפרסקים - לא כוח-נופולד'רמפוס 1 - האצת עכבר מותנית; אינה משפיעה על הביצועים אלא מפחיתה את הקלט, אשר יכול להרגיש כמו ביצועים חלקה יותר.

בנוסף, שחקנים ב- AMD GPUs נהנים לעתים קרובות מ"אופטימיזציה של פורמט הפנים" בלוח הבקרה של הנהג, כפי שהוא סותר את ההיגיון של הקצאת הטקסטורה של המנוע.

ביקורת: The Ever-Present Challenge of Legacy Performance

אופטימיזציה של ההרחבה:0 [Half-LifeFLT:1] עבור ארכיטקטורות חומרה שונות אינה בעיה שניתן לפתור עם תיקון אחד.מנוע גולדSrc של המשחק נבנה עבור עולם של מעבדים יחיד-core, GPU פונקציונלי קבוע, אחסון כונן קשיח - עולם שלא קיים יותר.

הפתרון שוכן בשילוב של קהילה אי-הג'וסיטי, הכלים העטיפה, ולפעמים גם שליח מנוע שלם. Xash3D ופרויקטים דומים מוכיחים שניתן לעשות משחק בן 25 רץ בצורה חלקה במחשב נייד מבוסס ARM או שולחן עבודה בעל רצף גבוה ללא דמעה.אבל עבור אלה לדבוק בבן המקורי, להבין את האתגרים האדריכליים הבסיסיים - CPU-CPU-Perfectial-of-to-to-to-to-of-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-to-

לקריאה נוספת על הפרטים הטכניים של מנוע גולדסשף ואופטימיזציה שלו, ראה את ה- .0Valve Developer Wiki (GoldSource) , The CommunityFLT:2Xash3D מנוע repositoryFLT 3: 3, ומדריך אופטימיזציה של FLT:4GamingWiki עבור Half-LifeFLT5:5D מנוע repositoryFLT5D מנוע repositoryFLT 3D.