2010-08-10 3 views
7

Я делаю немного исследований, прежде чем я собираюсь написать свой собственный 2D (и, возможно, какой-то 3D) игровой движок. Я сделал двигатель перед тем, как использовать C# и XNA, но на этот раз хочу перейти на кросс-платформу, создав свой новый движок на C++, используя opengl и т. Д.Записывать на C++ и выставлять на C# или писать прямо в C#?

Но ... Я все еще хочу быстрое время итерации с C# и имею доступ к движку игры там.

Итак, у меня есть несколько вариантов.

  1. Написать двигатель и CLI обертку в C++
  2. Записывать все это прямо в C#, не C++
  3. Запись в C++ и использовать Mono для загрузки C# код/​​сборки в двигатель.
  4. Нет C#
  5. ... Возможно, что-то я не думаю о еще

Я думаю, что мне нужна скорость для отбраковки, дерево сцены материала, матричных вычислений, систем частиц и т.д.

Wat является плюсы и минусы? Что вы предлагаете?

+0

Возможно, глупый вопрос, так как я мало знаю о C#: Возможно ли написать что-то подобное на языке GC'd, таком как C#, или GC-паузы будут есть вас живыми? – dsimcha

+0

Это возможно, и производительность приемлема. C++ - это и всегда будет (я этого не говорил!) Быстрее. Уже есть несколько игровых движков C#. Например, плоский красный шар. – WoutervD

ответ

2

Если вы хотите использовать кросс-платформу, вы не можете использовать C++/CLI. Это не поддерживается ни на каких платформах, кроме Windows.

Это означает, что для кросс-платформы я либо использовал C# with Tao, либо использовал C++, чтобы сделать движок библиотекой, а использование платформы Invoke «использовать» библиотеку из вашего кода C#. Это обеспечит вам скорость и контроль, необходимые для основного ядра (C++), с гибкостью игрового дизайна на C#.

Это обеспечивает чистое кроссплатформенное средство разработки игрового движка, который может быть подвергнут воздействию C#.

+1

Хм Дао немного устаревший (без обновлений через 5 лет!), А их домен (http://taoframework.com) был захвачен скваттером ... Это все еще актуально или оно устарело? – FrustratedWithFormsDesigner

+0

Если вы разделили код двигателя на C++, убедитесь, что вы не делаете ненужных «частых» вызовов через собственную/управляемую границу. –

+0

@FrustratedWithFormsDesigner: теперь он находится в моно-ядре. Поскольку это прямая оболочка OpenGL и очень стабильная, она по-прежнему является хорошим вариантом. В противном случае вы можете использовать OpenTK, но в том числе и другие вещи (что может быть полезно для игрового движка). –

1

Тао рамки мертв, попробуйте OpenTK вместо

код
1

Оптимизированный C++ будет значительно быстрее (20% в моем случае для ОДУ в 32-битном, и почти 40% в 64-битном, C# медленнее в 64 -бит, чем C# в 32-битном, но это еще одно сообщение). Я бы использовал тяжелую математику в библиотеке C++ (интеграция, дифференциальные уравнения и т. Д.).

 Смежные вопросы

  • Нет связанных вопросов^_^