Skip to content
מדריכיםמדריך אופטימיזציה לשרת FiveM

מדריך אופטימיזציה לשרת FiveM

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


שלב 1: ניטור ביצועים

כלי ניטור מובנים

  1. פתחו את קונסול השרת והשתמשו בפקודות הבאות:
    resmon         # ניטור בסיסי של ביצועי סקריפטים
    txAdmin:info   # מידע על השרת
    status         # סטטוס כללי של השרת

שימוש ב-txAdmin

  1. גשו ללוח הבקרה של txAdmin.
  2. בדקו את הסטטיסטיקות בזמן אמת:
    • שימוש ב-CPU
    • ניצול זיכרון
    • זמני תגובה של סקריפטים

שימוש ב-Resource Monitor של FiveM

  1. הפעילו את ה-Resource Monitor בקונסול הלקוח:
    resmon true
    ה-Resource Monitor מציג את השימוש ב-CPU ובזיכרון עבור כל סקריפט ועוזר לזהות סקריפטים בעלי שימוש גבוה לצורך אופטימיזציה.

שלב 2: אופטימיזציה של סקריפטים

  1. הסרת סקריפטים שאינם בשימוש

    • מחקו סקריפטים או מודולים שאינם בשימוש מתיקיית resources כדי להפחית עומס.
  2. אופטימיזציה של סקריפטים

    • החליפו סקריפטים ישנים או לא יעילים בגרסאות חדשות ומאופטמות.
    • שלבו סקריפטים קטנים רבים לסקריפט אחד גדול ויעיל יותר כאשר אפשר.
    • השתמשו בערכי המתנה דינמיים בסקריפטים שלכם כדי להפחית עיבוד מיותר (ראו דוגמת Lua בהמשך).

זיהוי סקריפטים בעייתיים

  1. השתמשו ב-resmon כדי לזהות סקריפטים שצורכים משאבים רבים.
  2. שימו לב במיוחד ל:
    • זמני עיבוד גבוהים
    • שימוש גבוה בזיכרון
    • תעבורת רשת מוגברת

טיפול בסקריפטים בעייתיים

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

שלב 3: התאמות קובץ ההגדרות של השרת

  1. פתחו את קובץ server.cfg והתאימו את ההגדרות לשיפור הביצועים:

    sv_maxclients 64  # הגבלת מספר השחקנים לפי יכולת השרת
    sv_scriptHookAllowed 0  # השבתת ScriptHook
    sv_enforceGameBuild 2802  # הגדרת גרסת משחק ספציפית
  2. השבתת לוגים לא נחוצים:

    set mysql_debug false
    set txAdminMenu false

הגדרות OneSync

onesync on             # הפעלת OneSync
onesync_population true # שיפור ניהול הישויות

שלב 4: אופטימיזציה של מסד נתונים

תחזוקת MySQL

  1. בצעו אופטימיזציה של טבלאות באופן קבוע:
    OPTIMIZE TABLE table_name;
  2. הסירו נתונים ישנים שאינם נחוצים.

שימוש באינדקסים

  1. הוסיפו אינדקסים לעמודות בשימוש תכוף:
    CREATE INDEX idx_name ON table_name (column_name);

הגדרות MySQL מומלצות ב-server.cfg

# הגדרות MySQL
set mysql_connection_string "mysql://user:password@localhost/dbname?waitForConnections=true&connectionLimit=10"
set mysql_slow_query_warning 200
set mysql_debug false

שלב 5: שימוש במטמון ודחיסה

  1. הפעלת מטמון

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

    • דחסו קבצים גדולים (כגון .ytd או .ydr) כדי להפחית את גודל הסקריפטים ולשפר את זמני הטעינה.

שלב 6: תחזוקה שוטפת וניטור

  1. השתמשו בכלים חיצוניים כמו txAdmin לניטור ביצועים ולטיפול בבעיות.
  2. עדכנו סקריפטים לגרסאות האחרונות באופן קבוע.
  3. בדקו לוגים של השרת לאיתור שגיאות או אזהרות חוזרות.

שלב 7: דוגמת אופטימיזציה לסקריפטים ב-Lua

מדריך לאופטימיזציה של סקריפטים ב-FiveM עם ערכי המתנה דינמיים

בעת כתיבת סקריפטים ב-FiveM עם Lua, חשוב לבצע אופטימיזציה כדי להבטיח ביצועים חלקים. תרחיש נפוץ הוא שימוש בלולאות while true do לעדכונים תקופתיים, שעלולות להיות תובעניות אם לא מטופלות נכון. להלן מדריך שלב אחר שלב לאופטימיזציה של לולאות באמצעות בדיקות מרחק וערכי המתנה דינמיים.

1. הבנת הבעיה

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

2. הגדרת הלולאה

התחילו ביצירת הלולאה עם Citizen.CreateThread. בתוך הלולאה:

  • קבלו את הפד של השחקן (דמות השחקן).
  • קבלו את הקואורדינטות של הפד.

דוגמה:

Citizen.CreateThread(function()
    while true do
        local ped = PlayerPedId()
        local pedCo = GetEntityCoords(ped)
        local sleep = 1000 -- זמן המתנה ברירת מחדל

3. חישוב מרחק לנקודות עניין

נניח שיש לכם טבלה של מיקומים (לדוגמה Config.Locations) שבהם מתרחשת פעולה מסוימת:

  • השתמשו בלולאת for כדי לעבור על המיקומים.
  • חשבו את המרחק בין השחקן לכל מיקום.

דוגמה:

        for locationName, locationData in pairs(Config.Locations) do
            local placeDist = #(pedCo - locationData.pos)

4. הגדרת זמן המתנה דינמי

  • אם השחקן רחוק מכל נקודת עניין, שמרו על זמן המתנה גבוה (לדוגמה, 1000 ms).
  • אם השחקן קרוב לנקודה מסוימת (לדוגמה, בטווח של 1.2 יחידות), הקטינו את זמן ההמתנה לצורך עדכונים מהירים יותר (לדוגמה, 7 ms).

דוגמה:

            if placeDist <= 1.2 then
                sleep = 7 -- עדכונים מהירים יותר
            end
        end

5. סיום הלולאה עם Wait

לאחר בדיקת כל המיקומים, השתמשו ב-Citizen.Wait(sleep) כדי להשהות את הלולאה באופן דינמי. זה מפחית את עומס הסקריפט על ידי עדכון רק במידת הצורך.

דוגמה:

        Citizen.Wait(sleep)
    end
end)

קוד מלא לדוגמה

Citizen.CreateThread(function()
    while true do
        local ped = PlayerPedId()
        local pedCo = GetEntityCoords(ped)
        local sleep = 1000 -- זמן המתנה ברירת מחדל
 
        for locationName, locationData in pairs(Config.Locations) do
            local placeDist = #(pedCo - locationData.pos)
            
            if placeDist <= 1.2 then
                sleep = 7 -- עדכונים מהירים יותר כשקרובים
                -- קוד אינטנסיבי כמו ציור רכיבי UI
            end
        end
 
        Citizen.Wait(sleep)
    end
end)

6. יתרונות השיטה

  • אופטימיזציה של ביצועים: הסקריפט מריץ עדכונים אינטנסיביים רק כאשר השחקן קרוב לנקודת עניין רלוונטית.
  • הפחתת שימוש ב-CPU: ערכי המתנה דינמיים מונעים לולאות מיותרות.
  • משחק חלק: השחקנים לא יחוו השהיות כתוצאה מסקריפטים לא יעילים.

שלב 8: המלצות על חומרה ואחסון

  1. ודאו שספק האחסון שלכם עומד בדרישות המומלצות ל-FiveM:

    • CPU: ביצועי ליבה בודדת גבוהים.
    • RAM: לפחות 8GB לשרתים קטנים, יותר לשרתים גדולים יותר.
    • אחסון SSD: אחסון מהיר יותר מפחית זמני טעינה.
  2. שקלו לשדרג את התוכנית אם מספר השחקנים מגיע לעיתים קרובות למקסימום.


טיפים נוספים

אבטחה וביצועים

  • הפעילו הגנת DDoS דרך ספק האחסון שלכם.
  • הגבילו את מספר החיבורים לכל כתובת IP.
  • הגדירו תור חיבורים לשעות עומס.

תחזוקה שוטפת

  • בדקו ועדכנו סקריפטים באופן קבוע.
  • נטרו שימוש במשאבים לאורך זמן.
  • תעדו שינויים והשפעתם על הביצועים.

זכרו: אופטימיזציה היא תהליך מתמשך. בדקו ושפרו באופן קבוע כדי לשמור על ביצועים מיטביים.