שילוב Netcode for GameObjects למולטיפלייר נייד ב-Unity

מובייל מרובה משתתפים תמיד אומר איזון בין מהירות פיתוח, זמן השהיה ועלויות שרת. אנו משלבים את Netcode for GameObjects (NGO) בפרויקט Unity שלך, תוך שימוש בפתרונות הרשמיים של Unity Gaming Services להתחלה מהירה ללא הקמת תשתית. הצוות שלנו מספק אינטגרציה מלאה - מהגדרת NetworkManager ו-Relay ועד תמיכה שוטפת - ומבטיח משחק מרובה משתתפים אמין ל-2-8 שחקנים.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב Netcode for GameObjects למולטיפלייר נייד ב-Unity
מורכב
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

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

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

שילוב Netcode for GameObjects למולטיפלייר נייד (Unity)

אנו משלבים את Netcode for GameObjects (NGO) למולטיפלייר נייד ב-Unity. עם ניסיון של למעלה מ-5 שנים ו-30+ פרויקטי מולטיפלייר שהושלמו, אנו משיגים בעקביות פריסה מהירה ב-30% מפתרונות מותאמים אישית. NGO הוא הפתרון הרשתי הרשמי של Unity, המשולב עמוק עם Unity Gaming Services: Relay, Lobby ו-Matchmaker עובדים ישירות מהקופסה. עבור אפליקציית הנייד שלך, זה אומר התחלה מהירה ללא צורך בהגדרת תשתית שרת. בהשוואה ל-Mirror, NGO מקצר את זמן פיתוח ה-MVP בחצי ומפחית עלויות שרת ב-40% באמצעות Relay מובנה.

הגדרת NetworkManager ו-Relay למשחקי נייד

NGO דורש NetworkManager עם transport מוגדר. לנייד, אנו ממליצים על UnityTransport עם RelayServerData — Unity Relay מעביר תעבורת UDP דרך השרתים שלו, עוקף NAT ללא שרת ייעודי:

async Task StartHost()
{
    var allocation = await RelayService.Instance.CreateAllocationAsync(maxPlayers: 4);
    var joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId);
    var relayServerData = new RelayServerData(allocation, "udp");
    NetworkManager.Singleton.GetComponent<UnityTransport>()
        .SetRelayServerData(relayServerData);
    NetworkManager.Singleton.StartHost();
    // joinCode передаём в Lobby для других игроков
}

ה-async Task StartHost() { var allocation = await RelayService.Instance.CreateAllocationAsync(maxPlayers: 4); var joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId); var relayServerData = new RelayServerData(allocation, "udp"); NetworkManager.Singleton.GetComponent<UnityTransport>() .SetRelayServerData(relayServerData); NetworkManager.Singleton.StartHost(); // joinCode передаём в Lobby для других игроков } הוא מחרוזת של 6 תווים שלקוחות משתמשים בה כדי להתחבר דרך joinCode. זה מבטל את הצורך ב-IP ציבורי ל-P2P או בשרת ייעודי ללובי קטן. ללא Relay, NAT חוסם עד 40% מהמשתמשים הפוטנציאליים.

NetworkVariable כבסיס לסנכרון

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

public class PlayerState : NetworkBehaviour
{
    private NetworkVariable<int> _health = new NetworkVariable<int>(100, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server);

    public override void OnNetworkSpawn()
    {
        _health.OnValueChanged += OnHealthChanged;
    }

    private void OnHealthChanged(int previous, int current)
    {
        healthUI.SetValue(current);
    }

    [ServerRpc]
    public void TakeDamageServerRpc(int damage, ServerRpcParams rpcParams = default)
    {
        _health.Value = Mathf.Max(0, _health.Value - damage);
    }
}

NetworkVariable<T> — רק השרת כותב. public class PlayerState : NetworkBehaviour { private NetworkVariable<int> _health = new NetworkVariable<int>( 100, NetworkVariableReadPermission.Everyone, NetworkVariableWritePermission.Server ); public override void OnNetworkSpawn() { _health.OnValueChanged += OnHealthChanged; } private void OnHealthChanged(int previous, int current) { healthUI.SetValue(current); } [ServerRpc] public void TakeDamageServerRpc(int damage, ServerRpcParams rpcParams = default) { _health.Value = Mathf.Max(0, _health.Value - damage); } } — רק הבעלים של האובייקט כותב. עבור חיזוי בצד הלקוח, הבעלים כותב מקומית, אך השרת הוא סמכותי ויכול לבצע rollback. בפרויקט אחד, זה הפחית את צריכת הרשת ב-50% על ידי הפחתת תדירות RPC.

NetworkBehaviour ובעלות

NGO מבדיל בקפדנות: NetworkVariableWritePermission.Server, NetworkVariableWritePermission.Owner, Owner, IsServer. IsClient עבור האובייקט הנשלט על ידי לקוח זה. טעות נפוצה היא לא לבדוק IsHost ב-IsOwner, מה שגורם לכל הלקוחות לעבד קלט עבור כל השחקנים. העברת בעלות דרך IsOwner = true שימושית עבור פריטי איסוף.

מה כלול בעבודה

אנו מספקים:

  • קוד מקור לשילוב NGO עם Relay, Lobby, NetworkVariable.
  • הגדרת סשן רקע ל-iOS/Android.
  • אופטימיזציית תעבורה (batching, ticks, דחיסה).
  • תיעוד על API ותהליך העדכון.
  • הדרכת צוות (שעתיים אונליין).
  • תמיכה בפריסה ל-App Store ו-Google Play.

השוואת NGO מול Mirror לפרויקטי נייד

קריטריון Netcode for GameObjects Mirror
שילוב Relay מובנה דורש הגדרה ידנית
תמיכה ברקע בנייד כן, דרך OnApplicationPause לא, דורש עבודה מותאמת
פינג ממוצע (4 שחקנים) 50–80 אלפיות השנייה דרך Relay 60–100 אלפיות השנייה דרך שרת ייעודי
זמן פיתוח MVP 1–2 שבועות 3–4 שבועות

Boss Room כהתייחסות

Unity פרסמה את Boss Room — פרויקט לדוגמה על NGO עם co-op מלא לנייד. הוא מיישם: סנכרון פעולה-אנימציה, anticipation (הלקוח מנגן אנימציה לפני אישור השרת), ותנועה עם סמכות לקוח ותיקון שרת. זהו המקור הטוב ביותר לתבניות NGO — הורד מ-GitHub לפני כתיבת קוד משלך.

בעיות מולטיפלייר נייד נפוצות ופתרונות NGO

בעיה פתרון NGO
חביון בנייד הורדת קצב ticks ל-15 הרץ
אובדן חיבור ברקע טיפול ב-OnApplicationPause + reconnect
בעלות על מספר שחקנים שימוש ב-ChangeOwnership עם colliders

Lobby ו-Matchmaking

var options = new CreateLobbyOptions
{
    IsPrivate = false,
    Data = new Dictionary<string, DataObject>
    {
        { "GameMode", new DataObject(DataObject.VisibilityOptions.Public, "deathmatch") },
        { "Map", new DataObject(DataObject.VisibilityOptions.Public, "forest") }
    }
};
var lobby = await LobbyService.Instance.CreateLobbyAsync("My Lobby", 4, options);

Lobby SDK מאחסן מטא-דאטה, סינון דרך IsOwner. Heartbeat דרך Update — בלעדיו, הלובי נמחק לאחר 30 שניות.

ניואנסים לנייד

רקע. קרא ל-networkObject.ChangeOwnership(clientId) ב-var options = new CreateLobbyOptions { IsPrivate = false, Data = new Dictionary<string, DataObject> { { "GameMode", new DataObject(DataObject.VisibilityOptions.Public, "deathmatch") }, { "Map", new DataObject(DataObject.VisibilityOptions.Public, "forest") } } }; var lobby = await LobbyService.Instance.CreateLobbyAsync("My Lobby", 4, options); ב-iOS — אחרת חיבור ה-Relay נתקע ולא מתאושש בחזרה. ב-QueryFilter — קרא ל-LobbyService.Instance.SendHeartbeatPingAsync שוב עם ה-joinCode השמור.

Batching. NGO מאגד הודעות כברירת מחדל. NetworkManager.Singleton.Shutdown() קובע את קצב ה-ticks (30-60 הרץ). למשחקים מבוססי תורות, ניתן להוריד את ה-tick ל-10 הרץ — פחות אגודות, פחות תעבורה. בפרויקט אחד, הורדנו את ה-tick ל-15 הרץ, וחסכנו 35% תעבורה לכל סשן.

גרסאות. OnApplicationPause(true) + OnApplicationPause(false) — בעת עדכון האפליקציה, לקוחות ישנים לא יתחברו לשרתים חדשים. בנייד, יש לבדוק את גרסת הלקוח לפני תחילת סשן.

למה אנו בוחרים ב-NGO על פני Mirror

NGO מציע חיסכון של 30% בזמן פריסה, Relay ו-Lobby מובנים, ותמיכה רשמית של Unity. בפרויקטים מסחריים, זה מפחית סיכונים ומאיץ את זמן היציאה לשוק.

ניסיון ולוחות זמנים

אנו צוות של מפתחי נייד עם ניסיון של למעלה מ-5 שנים ו-10 מהנדסים. השלמנו 30+ פרויקטי מולטיפלייר על Unity — מדו-קרבים היפר-קז'ואליים לאסטרטגיות תחרותיות. שילוב NGO הוא הפרקטיקה היומיומית שלנו.

שילוב NGO בסיסי עם Relay, Lobby ו-NetworkVariable ל-2–4 שחקנים: 1–2 שבועות (החל מ-$5,000). מערכת מלאה עם חיזוי לקוח, matchmaking ואופטימיזציה לנייד: 1.5–2.5 חודשים ($15,000–$30,000). המחיר מחושב באופן אישי — צור קשר כדי להעריך את הפרויקט שלך. קבל ייעוץ לפרויקט שלך.

הזמן מולטיפלייר עם Netcode for GameObjects — קבל פתרון turnkey אמין עם תאימות מובטחת ל-App Store ו-Google Play.