תאימות דפדפן חוצה של משחקי HTML5: מטריצת מבחן
1) מדוע משחקי HTML5 ”כואבים”
משחקים משפיעים כמעט על כל שכבות הפלטפורמה: גרפיקה (Canvas/WebGL/WebGPU), טיימרים ונחלים (RAF/Workers), סאונד (WebAudio/Media policy), קלט (מקלדת/מצביע/מגע/גמפד), רשת ומטמונים (Sw/Cach/CAcAcach/In epad exddB), אינטגרציה (מסך מלא/אוריינטציה/PWA). מנועים שונים - כרומיום (כרום/אדג '/אופרה/אנדרואיד), WebKit (ספארי/macOS, iOS/iPadOS בכל הדפדפנים), Gecko (פיירפוקס). בנוסף להבדלים בחיסכון בכוח, לשוניות רקע חונקות, מגבלות זיכרון ומדיניות נתיחה אוטומטית.
2) סביבות נתמכות: מטריצת מטרה
דפדפנים/OS (גרסאות מינימום הן דוגמה, החלף את ה-SLAs שלך):- שולחן עבודה: כרום/אדג '116 +, פיירפוקס 115 +, ספארי 16 + (macOS 12 +).
- מובייל: Chrome Android 116 + (אנדרואיד 9 +), Samsung Internet 21 +, Safari iOS/iPadOS 16 +.
- WebView: Android WebView 116 +, iOS - רק WebKit (כל הדפדפנים ב-iOS משתמשים ב-WebKit).
- PWA (התקנה): שולחן עבודה/נייד Chromium, Safari iOS 16. 4 + (הוסף למסך הבית עם הגבלות).
- נמוך (תקציב נייד, 2 GB RAM)
- מדיום (נייד/אולטרה-ספרים, 4-8 GB RAM)
- גבוה (שולחן עבודה/צרכן GPU, 8-16 + GB)
3) מטריצת מבחן גדולה (תבנית)
צור שולחן אמיתי בגשש שלך. להלן הבלוקים והסטטוסים (OK/Partical/N/A) שצריכים להימדד.
3. 1 גרפיקה
3. 2 מדיניות שמע ומדיה
3. 3 קלט וממשק
3. 4 ביצועים וחיסכון באנרגיה
3. 5 שמירות/רשת לא מקוונת
4) סט מינימלי של תסריטים ידניים (עשן)
1. התחלה ראשונה: טעינת נכסים, התזה, התחלה רמה <3 s על מעמד הביניים.
2. קלט: מגע/עכבר/מקלדת/gamepad, אצבעות מרובות, hold, swips.
3. מסך: מסך מלא, מנעול אוריינטציה, אזור בטוח (אייפון עם פוני).
4. אודיו: תו ראשון לאחר מחווה מותאמת אישית, אילם/לא אילם, מיקס מוסיקה/FX.
5. WebGL: אובדן/התאוששות של הקשר (הדמיה), צללים/צללים/קנה מידה.
6. מחזור חיים: התמוטטות/התרחבות, קריאה/הודעה, לשונית ברקע.
7. חיסכון: התקדמות/הגדרות ב ־ IndexdDB/LouthStorage, התאוששות לאחר הפעלה מחדש/מחובר.
8. רשת: 3G מצערת/RTT גבוה, אובדן רשת, מגש מחדש, מטמון באמצעות SW.
9. PWA: התקנה (Chromium/iOS), סמלים, עמוד מנותק, עדכון גרסה.
10. ישיבה ארוכה: 20-30 דקות ללא דליפות (FPS/Heap יציב).
5) אוטומציה: כיצד וכיצד
מחזאי (מומלץ): צולב מנוע, הדמיה ניידת, נהג WebKit, וידאו/רצועות.
ברוש: לולאת dev מהירה, אבל WebKit/mobile מוגבלת.
WebDriver/Selenium: שילוב ענן.
עננים: דפדפן, מעבדות רוטב - מכשירים אמיתיים וספארי iOS.
פרופיל: Chrome Devotols Protocol, Spari Web Inspector (מרוחק), Firefox Profiler.
תסריטי Perf: k6/דפדפן עבור תסריטי טעינת נכסים דמויי רום.
טיפ: לשמור ”חבילה” של אוטוטסטים למשך 3-5 דקות (עשן) עבור כל יחסי ציבור: טעינה, מחזור משחק אחד, הפסקה, החלפת אוריינטציה, בדיקת שמירה.
6) ביצועים: מדדי מטרה וטלמטריה
FPS: יציב 60 fps (או 120 על Prootion) - לצעוד מסגרת לכידה, לא רק הממוצע.
תקציב מסגרת: 16. 7 ms (או 8. 3 ms) בעדכון + render, GC <2-3 ms לפריים.
latency: <80 ms mobile, 50 ms desktop
זמן למסגרת ראשונה (TTFF): <1. 5 אס (לאחר טעינת נכסים).
צמיחת ערימה: לא יותר מ-10% לכל 20 דקות הפעלה; היעדר הקצאות בריחה.
איחור אודיו: <עגול 100ms.
MEMBED RUM: שלח FPS, TTFF, Heap, WebGL הקשר אבד טלמטריה, ביצוע שגיאות על ידי 'דפדפן/o/התקן'.
7) אי ־ התאמה תכופה וכיצד לטפל
7. 1 גרפיקה/מעבד
הגודל הלוגי של HIDPI Canvas-Set = CSS px, פיזיקלי = 'css' PixelRatio.
הקשר WebGL אבוד: הקשיבו ל- webglcontextlost/webglcontextressed, אחסנו משאבים לאתחול מחדש.
מרקמים/צללים: להימנע מהרחבות לא אוניברסליות; בדוק את המרקם _ float, EXT _ color _ buffer _ float, ו-fallback.
WebGPU: roll Feature-Flag; לשמור על הנתיב WebGL2 כנסיגה.
7. 2 אודיו/ניתוח אוטומטי
התחל הקשר Audow עם מחווה מותאמת אישית (”tape/click”) ולשמור את הדגל ”מותר”.
ב-iOS, היכונו להשעות בעת מזעור/החלפה.
7. 3 קלט/מחוות
מאזינים לאירועים הופכים פסיביים כברירת מחדל; איפה ”מראש ברירת מחדל” הוא לנטרל באופן מפורש פסיבי.
אירועים פוינטר + מגע - הימנע מעיבוד כפול; שכבת הקלט המופשטת.
בדוק את הנווט. Getepads () "באמצעות RAF, לקחת בחשבון את פריסת הכפתורים.
7. 4 מסך מלא/אוריינטציה/אזור בטוח
עבור iOS, חשוב על env (אזור בטוח - inset-), הוסף ריפוד אל הבד/Overlay UI.
אוריינטציה ננעלת רק לאחר מחווה למשתמש; יש לי כפתור ”מסך סיבוב”.
7. 5 סטוריג 'י/Offline
IndexDB: פעולות עטיפה בפסקי זמן/מגשים מחדש; ב-iOS, המכסות קטנות, שמור על חסכונות קלים.
עובד שירות: ”Stale-Back-Revalidate” אסטרטגיה לנכסים; גרסאות נכים בכנות (תוכן-חשיש).
אחסון אוטומטי אינו זמין במצבים פרטיים - מתדרדר לזיכרון מזהיר.
7. 6 טיימרים/רקע
ברקע, טיימרים מתקבצים עד 1 אס או יותר. לעצור את ההיגיון הכבד, לעצור את המשחק.
אפשר ראות עמודים/” ראיה ”ועדכונים מונעי אירועים במקום מרווחים.
8) אספת צינורות לברוסר הצולב
Transpilation: TypeScript/Babel 'es2020' (או נמוך יותר עבור צפיות רשת ישנות יותר).
פוליפילס: זיהוי מאפיינים בלבד, לא UA.
נכסים: גיליונות ספרייט, טקסטורות עם פורמטי פלבק (WebP/PNG), אודיו (AAC/OGG/Opus).
הפרדת קוד: חתיכות עצלות לפאנלים של עורך/לא משחק.
דחיסה: Brootli/Zstd; HTTP/2/3; סי-די-אן עם ויסות בלתי ניתן לשינוי.
דגלים: WebGPU/OffscreenCanvas/Thrads - מאפשרים על ידי Whitelist.
9) תבניות רשימת בדיקות
9. 1 טלפון חכם (אנדרואיד/כרום, אייפון/ספארי)
[ ] Touch + multi-touch; מחוות לא ”למשוך” הדף[ ] פולסקרן ואוריינטציה; אזור בטוח נכון[ ] צליל ראשון אחרי סטפס; עבודות אילמות[ ] FPS 50 (מעמד נמוך), אין מסגרת מרופטת[ ] לשמור/לשחזר את ההתקדמות לאחר ההפעלה מחדש[ ] סצנה לא מקוונת/הפעלה מחדש של SW[ ] קריאת חפיפה במערכת (שיחה נכנסת) * השהייה נכונה9. 2 שולחן עבודה (חלונות/macOS)
[ ] עכבר + גלגל + מקלדת, IME[ ] Gamepad (MISnput/Generic)[ ] 60/120Hz צגים:[ ] Alt-Tab/צגים מרובים/מסך מלא/חלונות[ ] זיכרון <גבול, אין דליפות (20 + דקות)10) דוגמאות קוד (קטעים)
קנבס IDPI:פונקציית js ressizCanvas (בד)
const proper = Math. min (חלון. יחס פיקסלים         1, 2);
Const Flight Width: W, W, Light Hight: h = canvas;
קנבס. רוחב = מת '. רצפה (w dpr);
קנבס. גובה = קומה (h dpr);
const ctx = קנבס. גט קונטקסט ('2d');
ctx. שינוי צורה (dpr, 0, 0, dpr, 0);
}js st gl = קנבס. Gettast ('Webgl', ( Buffer: false);
קנבס. Adderventist ("webglcontextlost', e => [ ברירת מחדל (); עצור = אמת;?);
קנבס. Adderventure Listener ('webglcontextressed', () => עצור = כוזב;?);js let audon unlocked = false;
חלון. Adderventure Listener ("pointerdown', () =>
אם (
Const ctx = Audow Context החדש ();
const = ctx. באפר (1, 1, 22050);
חסרונות = ctx. BufferSource ();
s. buffer = b; s. להתחבר (ctx. יעד); ס. התחלה (0);
Audio לא נעול = נכון;
}
פעם אחת, נכון, פסיבי, נכון);מסמך js. Adderventist (”visibilitychange”, () =>
אם (מסמך. חבוי) P  Game ();
Else  Game ();
});11) ניהול סיכונים ותעדוף
חוק מרפי ל-iOS: בחן כל גרסה שולית של iOS מהמטריצה שלך - רגרסיות הן תכופות.
WebView OEM: התקני אנדרואיד עם WebView מיושנים הם שכבת סיכון נפרדת (enter greylist).
דגלים פונקציונליים: כולל מאפייני בעיה על ידי מותג/שוק-טייסים.
Rollout: 1% = 10% = 50% + 100% עם שערי רום (FPS, התרסקות, TTFF).
12) תצפית ודיווחי באג
כלול בכל דיווח באגים: ua ',' גרסת דפדפן ',' os ',' התקן ',' gpu/renderer ',' זיכרון ',' fps', 'לוגים' (שגיאות WebGL/WebAudio), 'צעדים', 'repro video'.
שליחה אוטומטית של מצבורי קריסה (שגיאות JS/משאבים), ”הקשר אבד”, ”אודיו פותח אירועים נכשלו”.
לוחות מחוונים: FPS על ידי דפדפן/התקן, TTFF ממוצע, שיתוף אבוד הקשר, שגיאות IndexDB, להיטים מנותקים SW.
13) מטריצת תבנית סופית (דג CSV)
פלטפורמה, דפדפן, גרסה, תכונה, תרחיש, צפוי, מצב, הערות
אנדרואיד, כרום, 116 +, WebGL2, הקשר אבוד/שחזור, מצב משוחזר, אישור, iOS,Safari,16. צליל 6,Audio,First ברז, מנגן, חלקי, מתג שקט משפיע
Desktop, Firefox, 115 +, Fullscreen, Enter/Exit, ללא קפיצת פריסה, OK, Android, WebView, 116 +, מכסת אחסון, IndexedDB, שמור 5MB,PARTIAL,Quota נמוך יותר במכשיר X iOS,Safari,16. 4 +, PWA, התקן & השקה מחדש, המדינה המשיכה, בסדר, "
---
14) רשימת מוכנות לייצור
[ ] דפדפן/גרסה/מטריצת התקן ועדכון SLA.
[ ] Smoke-Set of Autotests (מחזאי) מושק ביחסי ציבור וליליות; דוחות עם וידאו/רצועות.
[ ] שגיאות RUM טלמטריה FPS/TTFF/Heap/WebGL עם קטע דפדפן/התקן.
  Folbeki:   WebGPU; אודיו לפתוח; מצביע/מגע מופשט.
[ ] מחזור חיים מעובד/ראות, הפסקה/קורות חיים, לא מקוונים, הקשר אבד.
[ ] Persistence יציב (IndexedDB + Desgradation), גרסת נכס בלתי ניתנת לשינוי באמצעות SW/CDN.
[ ] פרופילים במכשירים אמיתיים (iOS/Android) ו-60/120 שולחנות עבודה.
[ תיעוד ] של הגבלות ידועות (ניתוח אוטומטי של iOS, מכסות IDB, אוריינטציה).
[ ] תוכניות Rollback/Feature-Flages לתכונות בעייתיות (WebGPU/Thrads).
[ ] ערוץ משוב במשחק (משוב + מזבלה יומן).
---
המשך תקציר
תאימות לדפדפן מוצלב של משחקי HTML5 אינה תיבת צ 'ק אחת ”עובדת בספארי”, אלא משמעת: מטריצת פלטפורמה קשיחה, מדדים מדידים (FPS/TTFF/Heap), אוטוטסטים על התקנים אמיתיים, עמקים של גרפיקה/קלט ועבודה זהירה עם מחובר ו הצלות. הזן צינור בדיקה יציב, לאסוף רום ולשמור את התכונות מאחורי הדגלים - בדרך זו המשחק יהיה חלק וצפוי באותה מידה על כרום, ספארי ופיירפוקס, בטלפון ובשולחן העבודה שלך.