AR Multiplayer: סנכרון מרחב בין iOS ל-Android
שני אנשים באותו חדר רואים את אותו אובייקט AR מזוויות שונות. נשמע פשוט. בפועל, מדובר בסנכרון של מרחבי ה-AR של שני מכשירים, שכל אחד חי במערכת קואורדינטות משלו,加上 חביון רשת ועוד סחיפה במיקום. ללא ארכיטקטורה מתאימה, דמות המשחק עבור השחקן הראשון תהיה במרחק מטר מהמקום שבו השחקן השני רואה אותה. הניסיון שלנו מראה: רוב הבעיות נפתרות על ידי בחירת מחסנית סנכרון נכונה — מ-peer-to-peer פשוט ועד ארכיטקטורת server-authoritative.
איך לסנכרן מרחבי AR בין פלטפורמות?
ARKit — Collaborative Session. מאז iOS 13, ARKit תומך ב-ARCollaborationData — חבילות בינאריות עם נקודות תכונה ומידע על עוגנים שמכשירים מחליפים ישירות. דרך MultipeerConnectivity (Bonjour, Wi‑Fi/Bluetooth peer-to-peer) או דרך שרת ממסר מותאם אישית. כל מכשיר בונה מפה מרחבית משותפת, ואובייקטים על ARAnchor מסונכרנים אוטומטית.
// Отправляем collaboration data другим участникам
func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) {
let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true)
sendToPeers(encoded)
}מגבלה: עובד רק iOS‑iOS, ללא Android. לפתרון חוצה פלטפורמות צריך פתרון אחר. מקור: תיעוד ARKit
פרטים טכניים של ARCollaborationData
`ARCollaborationData` מכיל `featurePoints`, `anchors` ו-`tracking state`. גודל חבילה ~50–200 KB. תדירות שליחה — 10–30 פעמים בשנייה. פרטים נוספים ב-[תיעוד Apple](https://developer.apple.com/documentation/arkit/arcollaborationdata).ARCore — Cloud Anchors. Google מספקת תשתית שרת: ARCore Cloud Anchors — // Отправляем collaboration data другим участникам func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) { let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data, requiringSecureCoding: true) sendToPeers(encoded) } מעלה את מפת התכונות של עוגן לענן, ומחזירה hostCloudAnchor(). המשתמש השני קורא ל-cloudAnchorId — ומקבל את אותו עוגן במרחב שלו. דרכו אנו מסנכרנים את המיקומים של כל האובייקטים המשותפים. עובד על iOS (ARCore SDK ל-iOS) ↔ Android. Cloud Anchors אמינים עד פי 3 יותר לסנכרון חוצה פלטפורמות מאשר פתרונות peer-to-peer מותאמים אישית. שימוש ב-Cloud Anchors מפחית עלויות תשתית שרת בעד 40%, וחוסך כ-$2,000 בחודש בחשבונות שרת לפרויקטים בגודל בינוני.
Unity + Photon + ARDK (Niantic Lightship). לפרויקטים של פיתוח משחקים, לעתים קרובות עדיף לקחת Niantic Lightship ARDK — תמיכה מקורית במרחבי AR משותפים, multiplayer דרך Photon, חוצה פלטפורמות. אבל זה Unity, לא פיתוח native.
| טכנולוגיה | פלטפורמות | סנכרון | חביון | מקרה שימוש |
|---|---|---|---|---|
| ARKit Collaborative Session | iOS בלבד | Peer‑to‑peer, רשת מקומית | 10–50 ms | אפליקציות AR באותו חדר |
| ARCore Cloud Anchors | iOS + Android | ממסר דרך ענן | 100–300 ms | פרויקטים חוצי פלטפורמות |
| Niantic Lightship + Photon | iOS + Android | שרת ממסר | 50–200 ms | משחקי AR בעומס גבוה |
עם MultipeerConnectivity החביון הוא 10–50 ms, מספיק לרוב משחקי ה-AR באותו חדר. שרת ממסר מוסיף 50–200 ms. ARKit Collaborative Session מציע חביון נמוך פי 2 מ-Cloud Anchors לתרחישים מקומיים של iOS בלבד.
למה אנחנו בוחרים בפיזיקת Server‑Authoritative?
אם לאובייקטי AR יש פיזיקה (כדור מתגלגל, קוביות נופלות) — צריך סימולציית פיזיקה סמכותית. עבור 2–4 שחקנים, גישת ה-server‑authoritative מגדילה את עומס השרת ב-20–30% אבל מבטלת desync. סימולציית server-authoritative עקבית פי 2 מחיזוי client-side בבדיקות. אפשרויות:
- Server‑authoritative: השרת (headless) מדמה פיזיקה, הלקוחות מקבלים מצבים ומבצעים אינטרפולציה. מבטל רמאות, דורש שרת חזק.
- Client prediction + rollback: הלקוח חוזה תוצאה מקומית, השרת מאשר או מחזיר לאחור. קשה יותר ליישום, אבל UX טוב יותר.
למשחקי AR מזדמנים, פיזיקת client-side עם סנכרון תקופתי דרך state snapshots מספיקה.
איך להימנע מטעויות אופייניות ב-AR Multiplayer?
| טעות | השלכות | פתרון |
|---|---|---|
| שימוש בפתרון iOS בלבד ללא התחשבות ב-Android | אובדן 40% מהקהל | לשלב חוצה פלטפורמות מהארכיטקטורה |
| חוסר אינטרפולציה בלקוח | אובייקטים רועדים עקב חביון | ליישם dead reckoning והחלקה |
| התעלמות מסחיפה | עוגנים מתפצלים אחרי 30 שניות | תיקון תקופתי דרך Cloud Anchors או סמכות שרת |
יישום אינטרפולציה מפחית חביון נראה לעין ב-50–100 ms.
מה כלול בעבודה
- תיעוד ארכיטקטוני (בחירת מחסנית סנכרון, תוכנית רשת)
- מאגר קוד (Swift/Kotlin/Flutter/Unity)
- אינטגרציה של ARKit/ARCore ומודול רשת
- הקמת צינור CI/CD לבדיקות על מכשירים אמיתיים
- מדריך פריסה ל-App Store / Google Play
- הדרכת צוות (1–2 ימים)
- תמיכה טכנית לחודש לאחר השחרור
תהליך
היישום עובר 5 שלבים:
- ניתוח — זיהוי מקרי שימוש, מספר שחקנים, פלטפורמות, דרישות חביון.
- עיצוב — בחירת מחסנית (ARKit לעומת ARCore לעומת Unity), ארכיטקטורת סנכרון (state sync לעומת delta sync), פרוטוקול (WebSocket/WebRTC).
- יישום — כתיבת קוד, אינטגרציה של שכבת AR ושכבת רשת, הגדרת אינטרפולציה ו-dead reckoning.
- בדיקות — על מכשירים אמיתיים במרחב אמיתי. CI/CD עם Xcode Cloud / Firebase Test Lab, אבל QA סופי פיזית.
- פריסה — פרסום בחנויות אפליקציות, ניטור דוחות קריסה ומדדים.
לוחות זמנים ועלות
- AR משותף בסיסי עם Cloud Anchors לשני שחקנים — 4–7 שבועות, החל מ-$5,000.
- משחק AR multiplayer עם סנכרון שרת, חדרים מרובים ופיזיקה — 3–6 חודשים, $30,000–$100,000.
- העלות כוללת פיתוח ובדיקות מלאים. קבלו ייעוץ — נעריך את הפרויקט שלכם ביום עבודה אחד.
הזמינו פיתוח AR multiplayer עכשיו — המהנדסים שלנו יעריכו את הפרויקט שלכם ביום אחד. צרו קשר כדי לדון בפרויקט שלכם. למהנדסים שלנו יש ניסיון של 10+ שנים בפיתוח מובייל והם השלימו 20+ פרויקטי AR. אנו מבטיחים סנכרון יציב ומסירה בזמן.







