«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > C++: одержимость скоростью в игровой индустрии

C++: одержимость скоростью в игровой индустрии

Опубликовано 1 августа 2024 г.
Просматривать:296

C   : speed obsession in the game industry

Когда нам действительно нужна скорость

C уже давно стал стандартным языком для игр и графического программного обеспечения. И на то была реальная причина — работа с графикой в ​​реальном времени и физикой требует высокой производительности. Обработка геометрии, управление буферами, матричные вычисления — все это требует времени.
А как насчет логики высокого уровня? Игровая механика, пользовательский интерфейс, управление хранилищем, сетевые запросы? Стабильность и безопасность там гораздо более востребованы, чем скорость.

Распределение ответственности

Мы можем реализовать функции, требующие высокой производительности, на компилируемом языке, например C, и вызывать их из программы, написанной на динамическом языке, например Python.
Но сегодня у нас уже есть хорошо документированные и простые в использовании библиотеки для Python (pygame, pyopengl, pyassimp, pybullet, numpy), которые реализованы в основном на C/C и предоставляют функции для тяжелых вычислений. или физика/графика в частности. Возможно, мы никогда не столкнемся с необходимостью реализовать такие библиотеки самостоятельно.

Является ли C единственным выбором?

Принято считать, что языки со сборкой мусора, такие как Java или C#, медленнее C и не отвечают требованиям для тяжелых вычислений. Это, конечно, неправда.
В некоторых особых случаях C может превосходить Java или C# по производительности на 20-30%, но когда дело доходит до абстракций времени выполнения, таких как динамическая диспетчеризация функций, взаимодействие языков, асинхронные задачи, управление текстом или абстрактными коллекциями, Java и C# показывают гораздо более высокую эффективность, чем C.
Кроме того, мы можем запускать наши программы на Python в одной среде выполнения с Java или C#, используя Jython или IronPython. Он дает множество преимуществ, таких как общая память со сборкой мусора, система типов и простой доступ к библиотекам C# или Java прямо из коробки. На Java реализованы такие хорошие динамические языки, как Clojure и Groovy, которые имеют полный доступ к библиотеке классов Java и обладают ранее упомянутыми преимуществами.

Что действительно влияет на производительность?

Сегодня персональные компьютеры намного быстрее, чем 15-20 лет назад. Но большинство настольных программ или игр работают не так быстро, как ожидалось (несмотря на то, что они по-прежнему в основном реализованы на C/C). Сегодня нам нужны хорошие алгоритмы и эффективные подходы гораздо больше, чем просто скорость языка. Функция с постоянной сложностью на Python более предпочтительна, чем функция с линейной сложностью на C. Рисовать 100 деревьев по 15 строк кода Python предпочтительнее, чем рисовать 500 деревьев по 300 строк кода C.

Заботьтесь об игре, а не о языке

Не так уж важно, какой язык вы используете, когда у вас еще нет игры, верно?
Создание игры на C гораздо более требовательно и утомительно, чем то же самое на Python или Ruby. Когда вы создадите 1 игру на C , вы создадите 10 игр на Python. Когда вы создадите 5 игр на Python, это будет 0 игр на C .
Давайте позаботимся об играх и веселье, иначе какой в ​​этом смысл?

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/taqmuraz/speed-obsession-in-the-game-industry-1p4i?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3