Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

مشكل استهلاك cpu والبطء في الالعاب

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • مشكل استهلاك cpu والبطء في الالعاب

    السلام عليكم
    كيفكم شباب ان شاء الله طيبين

    حبيت اضع هدا الموضوع كوسيلة لتعرف على الاشياء التي تتسبب في بطء الالعاب وخاصة الالعاب دات الجرافك الضعيف والمتوسط .
    لدا اوجه لكل الاعضاء دعوة للمشاركة في الموضوع ووضع مقترحاتهم وطرقهم التي قامو بها لتخفيف من البطء بغية ايصال الافادة لكل شخص واجه هده مشاكل بدون ان يعرف السبب .

    وأول سبب لبدا النقاش هو عامل ال fps بمعنى frames per second

    فعملية تحديد fps اللعبة جيدة جدا وخاصة بالنسبة للاجهزة الضعيفة
    فبالرغم من كون اللعبة بسيطة فانها يمكن ان تتسبب في مشاكل لجهاز المستعمل كالرفع في Cpu usage
    وهدا الاخير الدي يتسبب في بطأ شديد للجهاز .

    وهناك الكتير من الاسباب لاكن اترك لكم المجال لتكلم في هدا الموضوع


  • #2
    إستخدام خامات عالية الجودة , 2k , 4k >>> يعتمد لإي جهاز تريد تصدر فالموبايل يكتفي ب 256 أو 512

    إستخدام أجسام عدد المثلثات فيها عالي لا يصلح للألعاب >>> إما تقليلهن أو تصميم الجسم بوجوه أو مثلثات أقل

    البرمجة فيها أخطاء.



    تعليق


    • #3


      السلام عليكم ورحمة الله وبركاته

      اشكرك على هذا الموضوع المفيد, و صراحتا انا اعطي اهتمام كبير بهذا الجانب و هو مهم جدا جدا و خصوصا لكل من يطور العاب على موبايل او العاب بصيغة HTML5, بالنسبة لي سوف اتكلم عن تجربتي مع محرك GameMaker و في تطوير العاب 2D, وانا استخدم هذه طريقة و اتوقع معظم الالعاب الاحترافية تستخدم طرق مشابهه, لا اعلم كثيرا من ناحية العاب ثلاثية الابعاد لكن اتوقع اساس الذي اتكلم عنه يمكن تطبيقة على ما اعتقد بطريقة مشابهه ولكن لا احب ان اتكلم عن شي اجهله في عالم XYZ و اترك هذا الجانب لأخواننا ذو الخبرة بهذا المجال..

      المهم, الطريقة التي اتبعها بجيم ميكر لتسريع الالعاب هي كالتالي, والتي تعرف game optimisation.

      1- الاساس الأول: تنشيط و عدم تنشيط الأوبجكت في الالعاب.

      أول اساس هو, عمل Deactivation كامل لكل شي و جعله خاص في اوبجكت parent مثلا obj_deactive.

      وهذا اوبجكت اقوم بجعله parent لكل اوبجكت حيث تكمن اهمية دوره مثلا عند ظهور في شاشة أو اقترابه من لاعب, على سبيل المثال
      اضعه لاوبجكت كبارنت لـ obj_wall, obj_enemys و غيرها, فمثلا العدو اذا كان بعيدا فدورة غير مهم لانه بعيد عن لاعب ولا يحدث نشاطة الا عند اقترابه و نفس شي بالنسبة للحوائط فلاعب يتفاعل معها عند وجودها في شاشة وعند ملامسته لها و ليس خارج شاشة اذن فاهميتها خارج شاشة يتم ازالتها من خلال عدم تفعيلها حيث تعتبر وكانها غير موجودا اساسا..

      للعلم عملية Deactiveation ليس محصورة على رسوم draw render فقط !! ولكن حتى بالنسبة للوجك اللعبة logic codes تكون وكانها غير موجودة حتى لا تتعب ذاكرة cpu..

      اما طريقة اخرى في نفس هذا الاساس, هي تدمير او ازالة كل شي غير مهم الا عند ظهورة في شاشة اللعبة, على سبيل مثال تأثير لانفجار قنبلة أو تناثر الدماء, فقط تظهر عند شاشة لعبة ولكن عند ذهاب لاعب عنها بعيدا و تكون خارج شاشة يتم تدميرها و ازالتها كليا بالكامل.


      2- الاساس الثاني: جعل كل رسوم في تكستر عملاق يمكن تقسيمه على 2 (8,32,64,544,640 و الخ)

      هذا غير مهم بالنسبة لالعاب الحاسب الشخصي (PC Games) لكن مهم جدا جدا في العاب كونسول و العاب تقنية HTML5 والعاب هواتف الذكية, وهي عمل كل مصادر في sprite_sheet عملاق بحيث تكمن فيها كل الرسوم اللعبة ويمكن بان يكون هناك اكثر من سبرايت شيت واحد, وهذا مثال على هذا سبرايت شيت الذي اتكلم عنه وهو يحتوي على سبرايت, خلفيات و تايلست وحتى حروف نصوص اللعبة !!:



      لحسن الحظ هناك محركات كثيرة تدعم هذه الطريقة مثل محرك GameMaker و حتى Construct2 و اعتقد ايضا rpg maker و stencyl
      يعمل نفس شي تقريبا, لكن كما ذكرت هذا غير مهم بالنسبة لالعاب PC كون ذاكرة عالية و سريعة نسبيا لكن بالنسبة لاجهزة كونسول او العاب الموبايل و HTML5 تكون مهمة جدا.

      وطبعا هذا ليس له علاقة مباشرة في سرعة اللعبة او تاثيرها على CPU لكن له تاثير مهم في سرعة sprite load في اللعبة, فعند عمل لود لصورة مختلفة و اخرى مختلفة تكون عملية بطيئة واحيانا تبطئ و تأثر سلبا على طريقة رسوم اللعبة, لكن لو كانت في sprite sheet عملاق
      تكون سريعة جدا جدا, لانه sprite load فقط سوف يعمل على صورة واحدة و بقية سيعمل على load لهم من خلال خريطة توزيع تماما تشبه طريقة التي تستخدم في tileset, فلو كان كل صورة على حداها لاتعبت هذه عملية طريقة sprite load وحتى حجم ملف اللعبة, فكما ذكرت تظهر بصورة اوضح على اجهزة الموبايل او العاب الكونسول ولكن على اجهزة pc في غالب لا تكون واضحة هذه المشكلة الا على اجهزة القديمة ربما..

      3- الاساس الثالث: عمل معادلة حسابية لتغير سرعة اللعبة في حالات اختلاف سرعة FPS !!

      هذه الطريقة, هي طريقة المحترفين جدا و ذو فهم عميق في المعادلات الرياضية (mathmatics), ولكن سوف احاول شرحها بصورة مبسطة حتى يفهمها الجميع, فمثلا سرعة FPS في اللعبة هي 30 مثلا, وطبعا عند نشاط بعض برامج أو ضعف جهاز المستخدم للعبة أو نشاط شاشة اللعب تتغير سرعة و تنقص و تصل مثلا إلى 15 !! فيعمل مطور اللعبة على معادلة معقدة تحاول جعل إذا كانت سرعة 30 تكون سرعة حركة لاعب و سرعة انميشن مثلا 5 و عند نقصنانها إلى 15 مثلا !! يتم تحويل سرعة انميشن و حركة لاعب إلى 15 !! و هكذا على سبيل المثال:
      كود:
      if fps>29
      {
      speed=5
      }
      if fps<16
      {
      speed=15
      }

      هذا بختصار الطرق التي استعملها في تطوير العاب سواء على جيم ميكر او بقية المحركات, واتمنى اني افدتكم

      و تحياتي لكم و شكرا مرة اخرى على هذا الموضوع المفيد.
      :: Social Services Links ::

      YOUTUBE
      TWITTER
      FACEBOOK

      I heard it once said that if 3D is our world then Script is the glue that holds it all together

      تعليق


      • #4
        المشاركة الأصلية بواسطة i386 مشاهدة المشاركة
        إستخدام خامات عالية الجودة , 2k , 4k >>> يعتمد لإي جهاز تريد تصدر فالموبايل يكتفي ب 256 أو 512

        إستخدام أجسام عدد المثلثات فيها عالي لا يصلح للألعاب >>> إما تقليلهن أو تصميم الجسم بوجوه أو مثلثات أقل

        البرمجة فيها أخطاء.
        كلامك صح فالتكستر الكبير يلعب دور مهم في قوة رندر لاكن له انعكاساته على الجهاز

        تعليق


        • #5
          المشاركة الأصلية بواسطة Prinsu-kun مشاهدة المشاركة


          السلام عليكم ورحمة الله وبركاته

          اشكرك على هذا الموضوع المفيد, و صراحتا انا اعطي اهتمام كبير بهذا الجانب و هو مهم جدا جدا و خصوصا لكل من يطور العاب على موبايل او العاب بصيغة HTML5, بالنسبة لي سوف اتكلم عن تجربتي مع محرك GameMaker و في تطوير العاب 2D, وانا استخدم هذه طريقة و اتوقع معظم الالعاب الاحترافية تستخدم طرق مشابهه, لا اعلم كثيرا من ناحية العاب ثلاثية الابعاد لكن اتوقع اساس الذي اتكلم عنه يمكن تطبيقة على ما اعتقد بطريقة مشابهه ولكن لا احب ان اتكلم عن شي اجهله في عالم XYZ و اترك هذا الجانب لأخواننا ذو الخبرة بهذا المجال..

          المهم, الطريقة التي اتبعها بجيم ميكر لتسريع الالعاب هي كالتالي, والتي تعرف game optimisation.

          1- الاساس الأول: تنشيط و عدم تنشيط الأوبجكت في الالعاب.

          أول اساس هو, عمل Deactivation كامل لكل شي و جعله خاص في اوبجكت parent مثلا obj_deactive.

          وهذا اوبجكت اقوم بجعله parent لكل اوبجكت حيث تكمن اهمية دوره مثلا عند ظهور في شاشة أو اقترابه من لاعب, على سبيل المثال
          اضعه لاوبجكت كبارنت لـ obj_wall, obj_enemys و غيرها, فمثلا العدو اذا كان بعيدا فدورة غير مهم لانه بعيد عن لاعب ولا يحدث نشاطة الا عند اقترابه و نفس شي بالنسبة للحوائط فلاعب يتفاعل معها عند وجودها في شاشة وعند ملامسته لها و ليس خارج شاشة اذن فاهميتها خارج شاشة يتم ازالتها من خلال عدم تفعيلها حيث تعتبر وكانها غير موجودا اساسا..

          للعلم عملية Deactiveation ليس محصورة على رسوم draw render فقط !! ولكن حتى بالنسبة للوجك اللعبة logic codes تكون وكانها غير موجودة حتى لا تتعب ذاكرة cpu..

          اما طريقة اخرى في نفس هذا الاساس, هي تدمير او ازالة كل شي غير مهم الا عند ظهورة في شاشة اللعبة, على سبيل مثال تأثير لانفجار قنبلة أو تناثر الدماء, فقط تظهر عند شاشة لعبة ولكن عند ذهاب لاعب عنها بعيدا و تكون خارج شاشة يتم تدميرها و ازالتها كليا بالكامل.


          2- الاساس الثاني: جعل كل رسوم في تكستر عملاق يمكن تقسيمه على 2 (8,32,64,544,640 و الخ)

          هذا غير مهم بالنسبة لالعاب الحاسب الشخصي (PC Games) لكن مهم جدا جدا في العاب كونسول و العاب تقنية HTML5 والعاب هواتف الذكية, وهي عمل كل مصادر في sprite_sheet عملاق بحيث تكمن فيها كل الرسوم اللعبة ويمكن بان يكون هناك اكثر من سبرايت شيت واحد, وهذا مثال على هذا سبرايت شيت الذي اتكلم عنه وهو يحتوي على سبرايت, خلفيات و تايلست وحتى حروف نصوص اللعبة !!:



          لحسن الحظ هناك محركات كثيرة تدعم هذه الطريقة مثل محرك GameMaker و حتى Construct2 و اعتقد ايضا rpg maker و stencyl
          يعمل نفس شي تقريبا, لكن كما ذكرت هذا غير مهم بالنسبة لالعاب PC كون ذاكرة عالية و سريعة نسبيا لكن بالنسبة لاجهزة كونسول او العاب الموبايل و HTML5 تكون مهمة جدا.

          وطبعا هذا ليس له علاقة مباشرة في سرعة اللعبة او تاثيرها على CPU لكن له تاثير مهم في سرعة sprite load في اللعبة, فعند عمل لود لصورة مختلفة و اخرى مختلفة تكون عملية بطيئة واحيانا تبطئ و تأثر سلبا على طريقة رسوم اللعبة, لكن لو كانت في sprite sheet عملاق
          تكون سريعة جدا جدا, لانه sprite load فقط سوف يعمل على صورة واحدة و بقية سيعمل على load لهم من خلال خريطة توزيع تماما تشبه طريقة التي تستخدم في tileset, فلو كان كل صورة على حداها لاتعبت هذه عملية طريقة sprite load وحتى حجم ملف اللعبة, فكما ذكرت تظهر بصورة اوضح على اجهزة الموبايل او العاب الكونسول ولكن على اجهزة pc في غالب لا تكون واضحة هذه المشكلة الا على اجهزة القديمة ربما..

          3- الاساس الثالث: عمل معادلة حسابية لتغير سرعة اللعبة في حالات اختلاف سرعة FPS !!

          هذه الطريقة, هي طريقة المحترفين جدا و ذو فهم عميق في المعادلات الرياضية (mathmatics), ولكن سوف احاول شرحها بصورة مبسطة حتى يفهمها الجميع, فمثلا سرعة FPS في اللعبة هي 30 مثلا, وطبعا عند نشاط بعض برامج أو ضعف جهاز المستخدم للعبة أو نشاط شاشة اللعب تتغير سرعة و تنقص و تصل مثلا إلى 15 !! فيعمل مطور اللعبة على معادلة معقدة تحاول جعل إذا كانت سرعة 30 تكون سرعة حركة لاعب و سرعة انميشن مثلا 5 و عند نقصنانها إلى 15 مثلا !! يتم تحويل سرعة انميشن و حركة لاعب إلى 15 !! و هكذا على سبيل المثال:
          كود:
          if fps>29
          {
          speed=5
          }
          if fps<16
          {
          speed=15
          }

          هذا بختصار الطرق التي استعملها في تطوير العاب سواء على جيم ميكر او بقية المحركات, واتمنى اني افدتكم

          و تحياتي لكم و شكرا مرة اخرى على هذا الموضوع المفيد.
          رد جميل جدا ومفيد فانا صراحة لم اكن اعرف ان جمع تكستر في تكستر عملاق يلعب دور مهم في الاجهزة الكونسول
          وايضا عملية ملائمة ال fps مع مجريات اللعبة . شيء جميل جدا واحترافي ,شكرا لك

          وهناك عامل اخر ايضا واللدي يتمتل في الضلال المتحركة .فهو ياتر بشكل كبير على تقل وبطا اللعبة لدا تحويله من متحرك الى تابت يجعل اللعبة سريعة .

          تعليق


          • #6
            في النمذجة ..... في بعض الاحيان نترك بعض الأوجه التي لا ياراها الاعب ...ولكن الحاسب يبقى يعملها رندر 30 مرة في الثانية او أكثر
            مما يسبب في إمتلاء شريحة الذاكرة و إثقال الـ cpu بحسابات غير مهمة
            لا إله إلا الله محمد رسول الله
            ***
            twitter : @Arrow_x86
            هناك علامات لوجود حياة

            تعليق


            • #7
              السلام عليكم:
              موضوع جميل,
              انا عن نفسي استخدم تقنية الfrustum (اي نقوم برسم ما تراه الكامرا ونهمل باقي المجسمات) وهذا يزيد من سرعة اللعبة بشكل واضح.
              [URL="http://www.atg-syria.com/vb/forums/atg60/"]
              http://www.atg-syria.com/vb/uploaded...1354873953.jpg
              [/URL]

              تعليق


              • #8
                هذه التقنية أساسية في محركات كثيرة كالـ Unity .
                لقد ذكرتها في حالة المحركات المستقلة ... أو المبرمجة شخصيا
                لا إله إلا الله محمد رسول الله
                ***
                twitter : @Arrow_x86
                هناك علامات لوجود حياة

                تعليق


                • #9
                  احد عوامل بطئ اللعبة: هو استخدام الإضاءة بكثرة, لذلك يجب التقليل من مصادر الاضاءة قدر الإمكان.
                  [URL="http://www.atg-syria.com/vb/forums/atg60/"]
                  http://www.atg-syria.com/vb/uploaded...1354873953.jpg
                  [/URL]

                  تعليق


                  • #10
                    المشاركة الأصلية بواسطة ammar4dev مشاهدة المشاركة
                    السلام عليكم:
                    موضوع جميل,
                    انا عن نفسي استخدم تقنية الfrustum (اي نقوم برسم ما تراه الكامرا ونهمل باقي المجسمات) وهذا يزيد من سرعة اللعبة بشكل واضح.
                    كلامك صح فهدا شيء اخر ادا اهملناه يسبب في بطأ لدا شيء دكي من الشخص ان يحدف الاشياء البعيدة عن الكمرااو خلفها .
                    كما ان العديد من المحركات الحالية تحتوي على هده الميزة

                    تعليق


                    • #11
                      هناك عامل اخر ويتمتل في طريقة البرمجة فختيار طريق طويلة لبرمجة شيء ياتر سلبا على الداكرة وبهدا تاخد وقت كبير في العمليات الحسابية عكس السكربتات الصغيرة والتي مفعولها سريع

                      تعليق


                      • #12
                        السلام عليكم:
                        موضوع جميل,
                        انا عن نفسي استخدم تقنية الfrustum (اي نقوم برسم ما تراه الكامرا ونهمل باقي المجسمات) وهذا يزيد من سرعة اللعبة بشكل واضح.
                        وعليكم السلام ورحمة الله وبركاته

                        هذا مشابه تماما لطريقة التي ذكرتها و التي اتبعها بجيم ميكر:


                        1- الاساس الأول: تنشيط و عدم تنشيط الأوبجكت في الالعاب.

                        أول اساس هو, عمل Deactivation كامل لكل شي و جعله خاص في اوبجكت parent مثلا obj_deactive.

                        وهذا اوبجكت اقوم بجعله parent لكل اوبجكت حيث تكمن اهمية دوره مثلا عند ظهور في شاشة أو اقترابه من لاعب, على سبيل المثال
                        اضعه لاوبجكت كبارنت لـ obj_wall, obj_enemys و غيرها, فمثلا العدو اذا كان بعيدا فدورة غير مهم لانه بعيد عن لاعب ولا يحدث نشاطة الا عند اقترابه و نفس شي بالنسبة للحوائط فلاعب يتفاعل معها عند وجودها في شاشة وعند ملامسته لها و ليس خارج شاشة اذن فاهميتها خارج شاشة يتم ازالتها من خلال عدم تفعيلها حيث تعتبر وكانها غير موجودا اساسا..

                        للعلم عملية Deactiveation ليس محصورة على رسوم draw render فقط !! ولكن حتى بالنسبة للوجك اللعبة logic codes تكون وكانها غير موجودة حتى لا تتعب ذاكرة cpu..

                        اما طريقة اخرى في نفس هذا الاساس, هي تدمير او ازالة كل شي غير مهم الا عند ظهورة في شاشة اللعبة, على سبيل مثال تأثير لانفجار قنبلة أو تناثر الدماء, فقط تظهر عند شاشة لعبة ولكن عند ذهاب لاعب عنها بعيدا و تكون خارج شاشة يتم تدميرها و ازالتها كليا بالكامل.
                        المشاركة الأصلية بواسطة amineGS مشاهدة المشاركة
                        هناك عامل اخر ويتمتل في طريقة البرمجة فختيار طريق طويلة لبرمجة شيء ياتر سلبا على الداكرة وبهدا تاخد وقت كبير في العمليات الحسابية عكس السكربتات الصغيرة والتي مفعولها سريع
                        كنت انسى اهمية هذا العنصر, معك حق يا اخي الكريم, كل ما تم تقليل كتابة الاكواد و اختصارها و عملها بحيل ذكية كل ما كان ذلك افضل و اخف على لوجك اللعبة.
                        :: Social Services Links ::

                        YOUTUBE
                        TWITTER
                        FACEBOOK

                        I heard it once said that if 3D is our world then Script is the glue that holds it all together

                        تعليق


                        • #13
                          كلام جميل ...فقط لتصحيح بعض المعلومات الغير دقيقة 100٪ ..


                          2- الاساس الثاني: جعل كل رسوم في تكستر عملاق يمكن تقسيمه على 2 (8,32,64,544,640 و الخ)

                          هذا غير مهم بالنسبة لالعاب الحاسب الشخصي (PC Games) لكن مهم جدا جدا في العاب كونسول و العاب
                          هذه القاعدة تنطبق على ألعاب ال-PC أيضاً.
                          على فكرة هذا النوع من الخامات يسمى : أطلس "Texture Atlas".

                          لحسن الحظ هناك محركات كثيرة تدعم هذه الطريقة مثل محرك GameMaker و حتى Construct2 و اعتقد ايضا rpg maker و stencyl
                          هذا ليس له علاقة بنوع المحرك. يمكن إستعمال الأطلس كصورة لخامة بغض النظر عن المحرك أو في داخل برنامج التصميم الثلاثي الأبعاد. في يونيتي يمكن إستخدام ذلك أيضاً.

                          نقطة مهمة أيضاً :
                          في المثال لديك. أنت تستعمل ملف PNG . لكن لديك تقريباً 50 ٪ من مساحة الصورة خالية. هذا يتطلب حساب أكثر في المعالج. في هذه الحالة يفضل تحويل الصورة إلى jpg ويتم إستبدال المساحة الخالية بلون يتم الإستغناء عن إستعماله. طبعاً في حال إستعمال صورة واحدة لكل اللعبة قد لا يؤثر ذلك، لكن عند إستعمال عدد كبير منها و كلها تحتوي على مساحات خالية فهذا سيؤثر سلبياً على التردد. حساب ال-"Transparancy" مكلف جداً.

                          طبعاً لا يجب أن ننسى نوع ضغط (الملف-Textures) له أيضاً عامل كبير ، فهناك فرق بين التصدير للهواتف أو ال-PC.


                          موضوع جميل,
                          انا عن نفسي استخدم تقنية الfrustum (اي نقوم برسم ما تراه الكامرا ونهمل باقي المجسمات) وهذا يزيد من سرعة اللعبة بشكل واضح.
                          لا أعلم إن كانت هناك خاصية يمكن اضافتها في محركات 2D من هذا النوع.
                          لكن هذه التقنية "المخروط الناقص-frustum" هي أساس كل تقنية في أي برنامج له واجهة ثلاثية الأبعاد. اي الطريقة الرياضية (من رياضيات) المستخدمة لعرض عالم ثلاثي الأبعاد على سطح الشاشة. (2D إلى 3D) و العكس.

                          أعتقد أنك تقصد ال-Frustum Culling و هذا شيء أخر. و هو مدى بعد مجال رؤية الكاميرا. و إن كانت نقطة ما داخل هذا المخروط الناقص أم لا. وعلى اساسها يتم عرض هذه النقطة (rendering) أو لا. لكن هذه متوفرة في أي محرك أو حتى برامج رسم ثلاثية الأبعاد.

                          مثلاً في يونيتي يمكنك التحكم بإعدادات هذا المخروط الناقص بتعديل إعدادات الكاميرا ..أي لست مضطراً لكتابة خوارزمية لعمل ذلك، هذه التقنيات متوفرة في هذه البرامج دائماً .. لا أكثر.


                          اضغط على الصورة لعرض أكبر. 

الإسم:	Frustum.png 
مشاهدات:	1 
الحجم:	2.8 كيلوبايت 
الهوية:	3284631

                          تعطيل و تشغيل ال-GameObject خلال اللعب ليس له علاقة بموضوع ال-frustum، حتى لو كان هناك تشابه في موضوع إخفاء و إظهار عناصر في اللعبة.

                          هذه التقنية أساسية في محركات كثيرة كالـ Unity .
                          تماماً

                          هناك عامل اخر ويتمتل في طريقة البرمجة فختيار طريق طويلة لبرمجة شيء ياتر سلبا على الداكرة وبهدا تاخد وقت كبير في العمليات الحسابية عكس السكربتات الصغيرة والتي مفعولها سريع
                          ث - ز - ذ - ظ

                          هذا ليس له أي علاقة.. قد يكون سكريبت صغير جداً لكن له ضغط كبير على المعالج.
                          الأهم هو جودة البرمجة و كيفية تواصل السكربت مع سكريبت أخر (Logic). بغض النظر عن طوله. (بإمكانك كتابة سكريبت يحتوي على 1000 سطر وقد يكون أسرع من سكريبت طوله 10 أسطر ).


                          مثلاً في يونيتي .. يفضل التقليل من إستعمال الدلات التي تعمل كل فريم .. مثل update .. أي لا تستعملها إلا إذا لم تجد أي طريقة اخرى. أو مثلا إستخدام الكود هذا في داخل update سيسبب بطئ في اللعبة .. هذه أيضاً طريقة سيئة للبرمجة.

                          كود:
                          GameObject.Find("gameobject name ")؛
                          و هذا كود لا يزيد عن 3 إلى 4 أسطر ...

                          3- الاساس الثالث: عمل معادلة حسابية لتغير سرعة اللعبة في حالات اختلاف سرعة FPS !!

                          هذه الطريقة, هي طريقة المحترفين جدا و ذو فهم عميق في المعادلات الرياضية (mathmatics), ولكن سوف احاول شرحها بصورة مبسطة حتى يفهمها الجميع,
                          محترفين جداً ^^، محترفين بعض الشيء .. محترفين 10 ٪ ^^؟ .... إما يكون الشخص محترف أو لا ^^.

                          لماذا تحتاج إلى كل هذا التعقيد. بإمكانك قراءة سرعة التردد في أي وقت من اللعبة و عند نقصها تقوم بتعديل سرعة الأنميشين، لا أكثر.
                          عن أي معادلات رياضيات تتحدث ؟ هل لديك أمثلة ؟

                          أساساً إذا كان هناك مشاكل في سرعة التردد فالمشكلة في المطور أولاً و طريقة عمله.

                          هذا النوع من المشاكل قد يحدث إذا مثلاً بدأ الأنتي فيروس بالعمل في الخلفية أو قام مثلاً ويندوز بعمل تحديثات. و هذا قليل جداً. (يقتصر على ال PC). لذلك هناك دائماً (أدنى المواصفات و أفضال المواصفات للجهاز ) المذكورة على غلاف اللعبة، و في هذا المجال يجب أن تعمل اللعبة بشكل جيد.
                          ============

                          ============

                          تعليق


                          • #14
                            المشاركة الأصلية بواسطة akkawi مشاهدة المشاركة

                            هذا ليس له أي علاقة.. قد يكون سكريبت صغير جداً لكن له ضغط كبير على المعالج.
                            الأهم هو جودة البرمجة و كيفية تواصل السكربت مع سكريبت أخر (Logic). بغض النظر عن طوله. (بإمكانك كتابة سكريبت يحتوي على 1000 سطر وقد يكون أسرع من سكريبت طوله 10 أسطر ).
                            كلامك صح لاكن لو نضرنا من وجهة نضر اخرى ساعطيك متال

                            كود:
                            function move_me()
                            {
                            	if(key_w==1)
                            	{
                            		move_forward=1;
                            	}
                            	if(key_s==2)
                            	{
                            		move_back=1;
                            	}
                            	if(key_w==0)&&(key_s==0)
                            	{
                            		move_back=0;
                            		move_forward=0;
                            	}
                            	if(move_forward == 1)
                            	{
                            		c_move(me,vector(10,0,0),nullvector,GLIDE);
                            	}
                                    }
                            	if(move_back == 1)
                            	{
                            		c_move(me,vector(-10,0,0),nullvector,GLIDE);
                            	}
                            	
                            }
                            هدا سكربت تاني
                            كود:
                            function move_me()
                            {
                            	
                            	move_x += (key_w - key_s) * time_step;
                            	c_move(me,vector(move_x,0,0),nullvector,GLIDE);
                            }
                            هادين سكريبتين لهما نفس العمل وهو تحرك للامام والخلف لاكن في رايك ايهما الدالة ستشتغل اسرع ولا تنسى دالة c_move بطيئة

                            فهدا هو ماكان قصدي يعني دالك السكربت دا 10 اسطر يمكنك كتابته بطريقة وصيغة اسهل ويمكنك ايضا الاستغناء على الكتير من الاشياء فيه لاكن لا انفي ان كلامك صح لان هناك دوال بطيءة جدا على المعالج ومختلفة في نفس الوقت من محرك لاخر وساعطيك متالز

                            متلا امر حساب fps فهو مختلف تماما في كل محرك بمعنى يمكن تجد متلا اليونيتي قد قام مطوريه بحساب ال fps بطريقة و في الجيم ستوديو قام مطوريه بحساب ال Fps بطريقة اخرى ويكفيك فقط البحت عن كود لحساب fps في الانترنت وسترى الاف الامتلة كلها مختلفة عن الاخرى وحتى في سرعة.

                            تعليق


                            • #15
                              المشاركة الأصلية بواسطة akkawi مشاهدة المشاركة




                              محترفين جداً ^^، محترفين بعض الشيء .. محترفين 10 ٪ ^^؟ .... إما يكون الشخص محترف أو لا ^^.

                              لماذا تحتاج إلى كل هذا التعقيد. بإمكانك قراءة سرعة التردد في أي وقت من اللعبة و عند نقصها تقوم بتعديل سرعة الأنميشين، لا أكثر.
                              عن أي معادلات رياضيات تتحدث ؟ هل لديك أمثلة ؟

                              أساساً إذا كان هناك مشاكل في سرعة التردد فالمشكلة في المطور أولاً و طريقة عمله.

                              هذا النوع من المشاكل قد يحدث إذا مثلاً بدأ الأنتي فيروس بالعمل في الخلفية أو قام مثلاً ويندوز بعمل تحديثات. و هذا قليل جداً. (يقتصر على ال PC). لذلك هناك دائماً (أدنى المواصفات و أفضال المواصفات للجهاز ) المذكورة على غلاف اللعبة، و في هذا المجال يجب أن تعمل اللعبة بشكل جيد.
                              في هده النقطة لا اوافقك يمكن انك لم تفهم مقصده .فطريقة الاخ جيدة جدا في جعل اللعبة سريعة في نضر المستعمل بمعنى رغم ان اللعبة تبطأ فان حركة الاوبجكت فيه لازم تكون عادية وكأنما اللعبة لم تبطأ و هدا يحتاج فكرة او ابتكار معادلة من عندك.

                              تعليق

                              يعمل...
                              X