פיתוח משחקי דפדפן ב-WebGL: מאב-טיפוס לפריסה

משחק ה-Unity שלכם רץ בצורה מושלמת בעורך, אבל לאחר בנייה ל-WebGL, הדפדפן זורק שגיאות או שהטעינה אורכת זמן רב מדי. אנחנו מפתחים משחקי דפדפן על WebGL במפתח מלא, ופותרים בעיות תאימות ואופטימיזציה. הצוות שלנו מטפל בכל המחזור—מאב-טיפוס ועד פריסה—ומבטיח ביצועים יציבים בכל דפדפני היעד, עם תמיכה מתמשכת.

היכולות שלנו

שירותי סטודיו אחרים

יישומי VR/AR/MR מותאמים אישית

טבלו לקוחות וצוותים בחוויות דיגיטליות חדשות

פיתוח משחקי Unity

מקונספט לשחרור — משחקים שאנשים זוכרים

מידול ואנימציה בתלת-ממד

החיו את המוצר שלכם בגרפיקת תלת-ממד ואנימציה

סימולטורי ציוד VR תעשייתיים

אמנו מפעילים על ציוד בבטחה, ללא השבתה

הוראות AR לייצור

הנחיות שלב-אחר-שלב ישירות על הציוד — ללא נייר

סימולטורי VR לבטיחות

תרגול תגובה לשעת חירום ללא צורך בהגעה לשטח

תוכניות הכשרה ב-VR/AR

הכשרת עובדים בשירות, קליטה ומיומנויות רכות ב-VR

חידוני הכשרה לעובדים

בדיקת ידע באמצעות משחקים — בקלות וללא לחץ

הוראות וידאו ארגוניות

סרטונים ברורים להכשרת העובדים והלקוחות שלכם

גיימיפיקציה עסקית

הניעו צוותים עם מכניקת משחק ב-KPI ובמשאבי אנוש

יישומי קיוסק אינטראקטיביים

מסכים אינטראקטיביים לקמעונאות, תערוכות ומשרדים

מתקני VR/AR

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

תערוכות ומוזיאונים וירטואליים

התערוכות שלכם מגיעות לכל פינה בעולם, 24/7

מסעות אירועים ומשחקי מותג

משחקים בלתי נשכחים לכנסים ולאירועי לקוחות

שאלות נפוצות

העבודות האחרונות

  • פיתוח משחקים עבור Mortal Motors
    פיתוח משחקים עבור Mortal Motors
    1638
  • משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    משחק אסטרטגיה מבוסס תורות המתרחש בעולם פנטזיה, With Fire and Sword
    1123
  • פיתוח משחק עבור חברת Second term
    פיתוח משחק עבור חברת Second term
    751
  • אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    אנימציית תלת-ממד - טיזר למשחק Phoenix 2.
    830

משחקי WebGL בדפדפן: מאב-טיפוס לפריסה

לקוח מגיע עם אב-טיפוס של Unity: המשחק רץ בצורה מושלמת בעורך, אבל אחרי בנייה ל-WebGL, הדפדפן זורק שגיאת Out of Memory או שהטעינה אורכת 30 שניות. לפי המחקר של Google, 40% מהמשתמשים עוזבים עמוד אם זמן הטעינה עולה על 3 שניות. ל-WebGL יש 256 MB של זיכרון כברירת מחדל, thread אחד, אין גישה למערכת קבצים, ו-Safari עם המוזרויות שלו. אנחנו מפתחים משחקי WebGL turnkey מאז 2014—למעלה מ-10 שנות ניסיון ויותר מ-50 פרויקטים: משחקי hyper-casual לשיווק, סימולטורים חינוכיים, מצגות תלת-ממד אינטראקטיביות. הניסיון שלנו מראה: ללא אופטימיזציה עמוקה, הפרויקט לא ירוץ עבור חצי מהקהל. אנחנו עוזרים לכם לעבור מאב-טיפוס לפריסה, תוך הבטחת ביצועים יציבים בכל הדפדפנים היעד.

במה WebGL שונה מבנייה Native

זיכרון — המגבלה המרכזית

Unity WebGL מהדר C# ל-WebAssembly דרך IL2CPP ומריץ הכל ב-thread יחיד של הדפדפן. הדפדפן מקצה heap ליניארי בעת ההפעלה — 256 MB כברירת מחדל. חריגה מהמגבלה הזו מובילה ל-Out of Memory ולקריסת העמוד.

בפועל, זה אומר:

  • כל הנכסים שנטענים דרך Resources.Load או Addressables חיים באותו מאגר זיכרון יחד עם קוד ה-wasm וה-stack.
  • טקסטורות דורשות דחיסה אגרסיבית: ETC2 ו-ASTC אינן נתמכות ב-WebGL — רק DXT (Desktop) ו-PVRTC (Safari/iOS, עם הסתייגויות). אנחנו משתמשים בדחיסת crunch + fallback ללא דחיסה עבור Safari.
  • AudioClip בפורמט WAV הוא 40 MB. אותו קליפ ב-Vorbis (OGG) הוא 3 MB — פי 13 קטן יותר. בהקשר של heap של 256 MB, זה קריטי.

לפרויקטים עם נפחי תוכן גדולים, אנחנו עוברים למגבלת 512 MB דרך PlayerSettings.WebGL.memorySize, אבל זכרו: זה שומר זיכרון מיד בטעינת העמוד, ללא קשר לשימוש בפועל. הפחתת draw calls ב-30% דרך batching ו-occlusion culling גם מורידה את עומס הזיכרון.

איך להתמודד עם מגבלת הזיכרון של WebGL

חוסר ב-Multithreading ופתרונות חלופיים

Threading ב-WebAssembly דורש SharedArrayBuffer, שחסום ברוב השרתים ללא כותרות CORS מתאימות (Cross-Origin-Opener-Policy: same-origin + Cross-Origin-Embedder-Policy: require-corp). בפועל, אנחנו מאפשרים threading רק אם אנחנו שולטים בשרת.

ללא threading, כל המשימות—פיזיקה, אנימציות, פענוח אודיו—רצות על ה-main thread. האילוץ הזה כופה גישה ארכיטקטונית שונה:

  • Coroutines עם yield במקום לולאות Update() כבדות — מפזרות חישובים על פני פריימים.
  • ה-Burst Compiler עובד ב-WebGL גם ללא threading — הוא מהדר נתיבים חמים ל-wasm מותאם SIMD, ומפחית את זמן הביצוע ב-20–40%.
  • אלגוריתמים עם סיבוכיות O(n²) שלא מורגשים על PC יהרגו את קצב הפריימים בדפדפן.

איך להפחית את גודל הבנייה וזמן הטעינה

בניית Unity WebGL סטנדרטית ללא אופטימיזציה שוקלת 30–60 MB (gzip). משתמשים מחכים לטעינה ועוזבים. אנחנו מייעלים:

  • Managed Stripping Level: High — מסיר קוד .NET שאינו בשימוש. חוסך 5–15 MB.
  • IL2CPP Code Generation: Faster runtime לייצור (קומפילציה איטית יותר, ריצה מהירה יותר).
  • דחיסת Brotli במקום gzip — השרת חייב לתמוך ב-Content-Encoding: br. Brotli טוב ב-20% מ-gzip, ומקטין עוד יותר את גדלי הקבצים.
  • Addressables לנכסים — טוענים רק מה שצריך לסצנה הנוכחית, והשאר לפי דרישה.

מקרה אמיתי: משחק hyper-casual לקמפיין שיווקי. בנייה ראשונית — 48 MB gzip. אחרי stripping, אופטימיזציית טקסטורות ופיצול ל-Addressable bundles — 11 MB טעינה ראשונית, שאר הנכסים נטענים ברקע. הזמן עד למשחק הראשון ירד מ-18 ל-4 שניות — פי 4.5 מהר יותר. חיסכון של 40% בעלויות אירוח עקב פחות תעבורה.

אופטימיזציה השפעה
Code Stripping High חיסכון של 5–15 MB
דחיסת Brotli הפחתה של 20% בגודל לעומת gzip
Addressables הפחתה של 50% בזמן הטעינה
דחיסת טקסטורות Crunch הפחתה של 50% בזיכרון

למה משחק WebGL עלול לא לעבוד ב-Safari

Safari מיישם WebGL בצורה שונה מ-Chrome ואינו תומך ב-threading. בנוסף, ניהול הזיכרון שונה: ב-iOS, הקונטקסט של WebGL יכול להישמט כשהמשאבים נמוכים. אנחנו בודקים על מכשירים אמיתיים באמצעות BrowserStack ו-LambdaTest כדי להבטיח תאימות. צרו קשר לבדיקת פרויקט WebGL — נזהה צווארי בקבוק ונציע פתרונות.

מה כוללת העבודה שלנו (Deliverables)

  • ניתוח דרישות והגדרת דפדפנים יעד (2–3 ימים)
  • ארכיטקטורת נכסים עם קבוצות Addressables
  • פיתוח ואופטימיזציה ל-WebGL עם זיכרון וביצועים מובטחים
  • QA על מכשירים אמיתיים (Safari, Chrome, מובייל)
  • פריסה עם MIME types נכונים והגדרת CDN
  • תיעוד מלא של הפרויקט (תצורות, צינורות בנייה, מדריך)
  • גישה לקוד המקור ולמאגרי הבנייה
  • תמיכה לאחר ההשקה (חודש אחד של תיקוני באגים כלול)
  • הכשרת הצוות שלכם לתחזוקת WebGL

Stack וכלים

מנוע: Unity LTS עדכני, URP (Built-in pipeline אינו רצוי ל-WebGL — legacy). ShaderGraph עם מגבלות: חלק מהצמתים לא מתורגמים נכון ל-WebGL GLSL; אנחנו מוודאים דרך Preview בעורך.

אינטראקציה עם הדפדפן: תוספי JavaScript דרך קבצי jslib ב-Assets/Plugins/WebGL/. קריאה ל-JS מ-C# באמצעות [DllImport("__Internal")]. קריאה ל-C# מ-JS באמצעות SendMessage() או Module.dynCall. לאינטגרציות מורכבות (OAuth, מערכות תשלום, אנליטיקה), אנחנו כותבים עטיפות JS מותאמות מעל Unity.

Multiplayer ב-WebGL: WebSocket במקום UDP. Mirror עם SimpleWebTransport — עובד מעל WSS. Photon Fusion תומך ב-WebGL דרך WebSocket relay. ה-Latency גבוה יותר מ-UDP, ולכן אנחנו מתחשבים בזה בתכנון.

אנליטיקה ומודעות: UnityAds ל-WebGL עובד דרך iframe. לאנליטיקה מותאמת אישית, אנחנו קוראים ישירות דרך jslib ל-Google Analytics / Amplitude. Firebase SDK ב-WebGL — רק Firebase Analytics ו-Firestore (Auth ו-Realtime Database מוגבלים).

תאימות דפדפנים

דפדפן WebGL 2.0 Threading הערות
Chrome 100+ כן כן (עם COOP/COEP) תמיכה מיטבית
Firefox 100+ כן כן (עם COOP/COEP) תמיכה טובה
Safari 15+ כן לא מוזרויות זיכרון
Edge (Chromium) כן כן (עם COOP/COEP) זהה ל-Chrome
Mobile Chrome כן לא האטת GPU ברקע
Mobile Safari חלקי לא מגבלות רבות

אנחנו בודקים על מכשירים אמיתיים. BrowserStack או LambdaTest — לאוטומציה.

תהליך הפיתוח

  1. ניתוח דרישות (2–3 ימים). קביעה: דפדפנים יעד, דרישות זיכרון, האם נדרש multiplayer, אינטגרציה עם שירותים חיצוניים (auth, תשלומים, אנליטיקה). פרויקט WebGL מתחיל מאילוצים, לא מתכונות.
  2. ארכיטקטורת נכסים. תכננו קבוצות Addressable מההתחלה — אילו נכסים בבנייה הראשונית, מה נטען תוך כדי תנועה. טעות: הוספת Addressables באמצע הפרויקט — זה דורש refactoring של כל נתיבי טעינת הנכסים.
  3. פיתוח ואופטימיזציה. לצד הפיתוח, בניות סדירות ומדידת גודל דרך Build Report. Unity Profiler עובד ל-WebGL דרך Development Build ופרופיילינג מרחוק מהעורך.
  4. QA על פלטפורמות יעד. חובה: Safari נייד אמיתי, Chrome אמיתי על מכשיר אנדרואיד בינוני. אמולטורים של DevTools לא משקפים את צריכת הזיכרון בפועל ואת האטת ה-GPU.
  5. פריסה. Nginx עם MIME types נכונים (.wasm → application/wasm, .data → application/octet-stream) ו-Brotli/gzip. CDN לנכסים סטטיים — טעינת נכסים מצומת קצה במקום מה-origin מפחיתה משמעותית את הזמן עד לפריים הראשון.

לוחות זמנים — משבוע עד שבועיים למשחקי casual פשוטים ועד חודשיים לפרויקטים mid-core עם multiplayer ואינטגרציה מורכבת. העלות מחושבת באופן אישי לאחר ניתוח המפרט הטכני. אנחנו מבטיחים בנייה יציבה ומספקים ייעוץ ראשוני. צרו קשר — נעריך את הפרויקט שלכם ונציע אסטרטגיית פיתוח אופטימלית.