Стоит ли переносить небольшой «движок» C # на C ++ или аналогичный? - PullRequest
4 голосов
/ 14 ноября 2008

Итак, следуя учебнику, который я нашел в MSDN, я создал то, что вы могли бы назвать «движком» с использованием DirectX и C #. Я не видел много подобного (лично) такого, что делается в C #, и большинство, кажется, предпочитают C / C ++, поэтому мне интересно, вернется ли использование C #, чтобы укусить меня, или я должен просто идти вперед?

Причина, по которой я спрашиваю, состоит в том, что учебник остановился довольно внезапно, и поэтому есть основа чего-то, но она достаточно мала, чтобы переноситься без особых хлопот. Я сам люблю C #, но я не знаю, есть ли что-то, что все остальные знают, что я не знаю.

Ответы [ 5 ]

3 голосов
/ 14 ноября 2008

Ну, Питер, главная причина в том, что C ++ не зависит от платформы, в то время как C # не в истинном смысле, несмотря на Mono (я не думаю, что вы можете запускать Mono C # на большинстве мобильных телефонов, Nintendo DS или Playstation3, для пример).

В любом случае, большинство из этих движков поддерживают DirectX и OpenGL и / или программные средства визуализации, поэтому они спроектированы с нуля, чтобы быть независимыми. Но, как и для любой агностической системы, это требует больших усилий и ресурсов.

Теперь, исходя из того, что вы говорите, ваш движок - это C # + DirectX. Это значит, что ваш движок прямо сейчас может работать на ПК, Xbox, Zune и некоторых сотовых телефонах Windows с питанием. Это не плохой диапазон платформ, если честно. Так что, если вы довольны такой степенью свободы и предпочитаете C #, а не C ++, вам следует придерживаться того, что у вас есть, и тратить время на совершенствование своего движка. Однако, если вы хотите запустить свой движок на чем-то, кроме Microsoft, вам нужно будет как-нибудь перейти на C / C ++.

Чтобы понять, о чем я говорю, движок моей команды также поддерживает Xbox, PS3, Wii, PSP, PC и, возможно, другие платформы, если мы потратим усилия, однако у нас работают 15 инженеров, работающих полный рабочий день. это, так что ... вы видите, это дорого. Теперь, если вы хотите что-то подобное для бесплатного проекта и знаете C ++, вы можете попробовать любой из множества движков с открытым исходным кодом, например Ogre или Irrlicht.

1 голос
/ 07 декабря 2008

Как разработчик игр-любителей, я очень предпочитаю C # (со сторонней библиотекой SlimDX) вместо C ++. Да, игра, написанная на хорошо оптимизированном C ++, вероятно, будет работать лучше, чем та же игра, написанная на хорошо оптимизированном C #. Но время, которое я экономлю с помощью C # (я предполагаю, что примерно 30-40%), может быть использовано для оптимизации моих алгоритмов, так что игра на C # будет действительно работать быстрее, чем если бы я написал ее на C ++ за то же время.

Как указывалось выше, существуют также проблемы кросс-платформенной совместимости, поскольку для большинства практических целей игра C # будет работать только на платформах Microsoft.

Другая проблема, на которую следует обратить внимание, заключается в том, что если вы пишете свое приложение на C #, то на компьютерах, на которых оно работает, потребуется установить .Net Framework. Это может сделать распространение вашего приложения более сложным, хотя это ни в коем случае не является непреодолимым препятствием.

1 голос
/ 14 ноября 2008

Предлагаю остановиться на том, с чем вы знакомы. Использование C или C ++ следует рассматривать в вашей ситуации только в том случае, если вы намереваетесь выполнять некоторые функции более низкого уровня, такие как реализация собственной обработки изображений или создание пользовательских фильтров или преобразований (в зависимости от того, для чего вы используете DirectX).

Графические приложения могут иметь вычислительные аспекты. Большинство из них были рассмотрены в DirectX API, что так же быстро, если вы используете его из C ++ или из C #.

Где вы могли бы рассмотреть язык более низкого уровня: если вы создаете некоторую обработку изображений, которая может выполняться быстрее изначально - это применимо только в том случае, если она не предлагается API DirectX, например, при создании некоторых пользовательских кодеров / декодеров. В этом случае вы можете создать пользовательский компонент на другом языке, а затем загрузить его в свое приложение C # отдельно. Если вы изучаете использование C ++ Intrinsics, которое позволяет вам программировать для своего процессора, а также взгляните на API GPGPU, например, CUDA.

0 голосов
/ 14 ноября 2008

Если вы чувствуете себя более комфортно в C # и нет проблем с производительностью, заставляющих переключаться на язык ближе к ЦП, то я не вижу необходимости менять.

Однако, в зависимости от того, что вы планируете делать в будущем, и насколько далеко должен пройти этот движок, это может резко измениться, и C # может оказаться неправильным выбором. Но это только время может сказать, к сожалению. Правильное обоснованное предположение требует гораздо больше подробностей о текущей реализации и ваших планах на будущее.

0 голосов
/ 14 ноября 2008

Есть несколько студий, использующих c # для игр.

Вы также можете взглянуть на XNA, также есть порт движка quake3, летающий по интернету, портированный на c #.

Так что все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...