هو الهدف CA لغة مناسبة للألعاب ثلاثية الأبعاد؟

StackOverflow https://stackoverflow.com/questions/928925

  •  06-09-2019
  •  | 
  •  

سؤال

أرى الكثير من النقاش ذهابا وإيابا على أي لغة تستخدمها لتطوير الألعاب ثلاثية الأبعاد في الوقت الفعلي، والتوافق الآراء العام هي أن C أو C ++ هي اللغات الوحيدة التي يمكن أن تقدم أداء مناسبا للنظام 3D المكثف ألعاب. أرى الكثير من الناس يقولون C # أو جافا أو بيثون بطيئة للغاية، خاصة بسبب جمع القمامة. ماذا عن الهدف ج؟ هل الهدف ج لديه جمع القمامة التلقائي؟ ما إلى جانب مجموعة القمامة التلقائية جعل لغة "بطيئة جدا" أو غير المناسبة للألعاب ثلاثية الأبعاد؟

ربما يكون هذا السؤال أكثر من "تجربة فكرية" لأنني أشك في أنني سأطور لعبة غزيرة للغاية بحيث تحتاج إلى معالجة هذه الأسئلة، ولكن كونك مبرمجا، فأنا مهووس بشكل غير مفهوم بالأداء، لذلك أنا لا يزال D Like لمعرفة فقط لمكاتلي.

هل كانت مفيدة؟

المحلول

Objective-C 2.0 يحتوي على مجموعة من القمامة متوفرة على Mac OS X 10.5، لكنه اختياري - لا يزال بإمكانك ترجمة تطبيقات الهدف - C دون مجموعة القمامة إذا اخترت. على منصات أخرى (iPhone، Mac OS X قبل 10.5، وأي شيء آخر)، لا توجد مجموعة من القمامة، وعليك إدارة ذاكرتك يدويا.

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

نصائح أخرى

التباطؤ الحقيقي الحقيقي مع الهدف - ج بحد ذاتها ستكون آلية المراسلة - وحتى ذلك الحين، عادة ما تكون مكونات إطار الكاكاو الذي من شأنه أن يبطئ الأمور. إرسال رسالة الهدف-C لا تؤذي الأداء حقا الذي - التي كثير.

على أي حال، بالنسبة لمعظم الألعاب، ستأتي غالبية اختناقات الأداء من رمز الرسومات: إذا قمت بتفويض الاشياء الرسومات إلى OpenGL، وهو سريع يبعث على السخرية، فلا ينبغي أن يكون هناك مشكلة في استخدام الهدف - C للألعاب. المكان الآخر الوحيد حيث أستطيع أن أرى الهدف - C أو الكاكاو توفير الاختناقات سيكون لتوفير رمز الفيزياء المكثف - وربما يجب كتابة ذلك في C / C + C ++ على أي حال. كل شيء آخر، على الرغم من أنه لا ينبغي أن يهم حقا ذلك كثيرا.

أن نكون صادقين، وأعمر أن غالبية ألعاب OS X مكتوبة في هذه الأيام مكتوبة في الهدف - C باستخدام أطر الكاكاو، مع كتابة التعليمات البرمجية الحساسة للأداء في C / C + C ++ (ومع رمز الرسومات باستخدام OpenGL).

أنا مهتم أيضا بالموضوع ووجدت هذاhttp://wiki.gnustep.org/index.php/3dkit.

يبدو ميتا للغاية ولكن الآن مع Clang / LLVM 2.9 العديد من الأشياء الجيدة في الهدف - C 2 متوفرة على Linux ويمكن أن تكون مثيرة للاهتمام للحصول على واجهة برمجة تطبيقات ثلاثية الأبعاد.

الهدف - C ليس لديه مجموعة القمامة التلقائية. يحتوي Java على طرق مختلفة من جمع القمامة وبعضها مصمم لتتوافق مع الألعاب بحدوثها بشكل تدريجي على فترات منتظمة. سأفاجأ إذا لم يكن لدى C # أو أي شيء آخر أيضا مجموعة من القمامة طرق متعددة للاختيار من بينها، بعضها متوافق مع الألعاب.

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

PS لمعالجة سؤالك الأصلي، أنا متأكد من أن أي شخص لديه لمسة iPod أو iPhone سيكون قادرا على إخبارك أن الهدف - C هو بالتأكيد حتى الألعاب ثلاثية الأبعاد :)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top