Войти
ПрограммированиеФорумГрафика

Что лучше для 2D игр на .NET ?

Страницы: 1 2 3 Следующая »
#0
21:53, 18 авг. 2013

Что лучше, для написания хороших 2D игр и собственно, в чем разница (по мощности, сложности и т.д.) среди Tao Framework, OPenGL и OPenTK? Хочу прочесть мнение разработчиков, кто об том что-либо знает.


#1
21:58, 18 авг. 2013

Publisher, сложность одна, но производительность в любом случае будет уступать в 4-5 раз врапперам на с++

#2
9:06, 19 авг. 2013

DummyUA
она будет уступать в 4-5 раз, если рисовать через System.Drawing.Graphics. Чем таким может нагрузить процессор пустая форма, которая служит окном вывода графики средствами этого же OpenGL, и стоит ли отказ от неё ценой лишения всяческих вкусностей, типа таймера и обработчиков событий для контролов.

#3
10:50, 19 авг. 2013

DummyUA
> сложность одна, но производительность в любом случае будет уступать в 4-5 раз
> врапперам на с++
Обычно сами вызовы OpenGL сильно нагружают процессор, а всякие дополнительные издержки от .NET вряд ли внесут какой-то вклад. Да и вообще в вызовах OpenGL любому оптимизатору негде развернуться, поэтому производительность вообще не должна проседать. Только если сборка мусора, но это уже от OpenGL не зависит. Хотя ещё может быть P/Invoke, не знаю, насколько большие от него задержки.

#4
11:34, 19 авг. 2013

Publisher
> Что лучше, для написания хороших 2D игр и собственно, в чем разница (по мощности, сложности и т.д.) среди Tao Framework, OPenGL и OPenTK?
Разница в том, что:


Впрочем, это всё гуглится на раз.

Если тебе нужно писать что-то под OpenGL на .NET, у тебя несколько вариантов:

DummyUA, gammaker, очнитесь! Какие задержки? Парень собрался 2D игру писать. Нужно ну совсем убогое железо в распоряжении иметь, чтобы 2D игра под .NET тормозила. Я на C# писал трёхмерный софтверный рендерер (без использования гррафических ускорителей и всяких OpenGL), где вся математика и каждый пиксель на экране считается на C# и рисуется через упомянутый тут в теме System.Drawing.Graphics:

Изображение

качаем тут:  http://nightmarez.net/soft/Renderer3d4.zip  (для запуска требуется .NET Framework 4.0)

#5
12:03, 19 авг. 2013

NightmareZ
> написать свой враппер на C++/CLI
Лучше этот вариант даже не рассматривать.

NightmareZ
> Какие задержки? Парень собрался 2D игру писать. Нужно ну совсем убогое железо в
> распоряжении иметь, чтобы 2D игра под .NET тормозила.
Ну вот я и пишу ему, что замедлиться не должно.

#6
12:08, 19 авг. 2013

gammaker
>> написать свой враппер на C++/CLI
> Лучше этот вариант даже не рассматривать.
А что так? Я вот буквально на днях использовал как раз этот вариант для 2D игры:  http://www.gamedev.ru/flame/forum/?id=179589

Изображение
#7
13:00, 19 авг. 2013

Для игр типа сапер, шахматы, точки и т.д. подойдет, но если, скажем, высокодинамичный шутер (пусть и 2D) там сооружать, чисто на форме через Graphics, то будут проблемы со скоростью. Сам через это прошел. Хотя бы из-за дотнетовского сборщика мусора - автоматически он работает не так часто, как хотелось бы, а если вызывать принудительно, то скорость падает ещё ощутимее. Всё это может привести к скачкам памяти под 300-500 мб и завести в тупик. Совмещать WinForms лично не пробовал, но видел как пробовал коллега: у него на Panel выводилась вся отрисовка OpenGL, игра работала примерно с 50-100 спрайтами одновременно, лагов я не видел. Win 32 project C++ плюс DirectX 9 без значительного падения fps рисует примерно 2к спрайтов за кадр(всё проверялось опытным путем на ноуте за 25к). Правда порог вхождения в Win32 + dx выше чем для форм + огл. Вот исходя из этого предлагаю автору определиться с возможностями того или иного решения в зависимости от "веса" и динамичности его игры.

#8
13:17, 19 авг. 2013

Ну игру, к примеру Shank, Syper meat boy, или как сказал Atlant1Q - высокодинамичный шутер, с выводом, к примеру, 50 спрайтов. Кстати, мне говорили, что лучше не использовать голую библиотеку (OPengl типа) для .NET, только врапперы использовать. Почему?

И большие ли проблемы могут быть с врапперами на других компьтерах?

#9
14:25, 19 авг. 2013

Непереносимо. Требует динамический рантайм C++, и на Mono на других платформах не будет работать. Да и вообще OpenGL - это сишные функции, а не классы какие-нибудь, поэтому лучше просто P/Invoke использовать.

#10
14:41, 19 авг. 2013

Publisher
Ты бы объяснил, чем тебя не устраивает DirectX и его обёртки. ООП туго даётся? Но как ты собираешься использовать .NET без ООП?

#11
15:15, 19 авг. 2013

SharpDX.

#12
15:19, 19 авг. 2013

NightmareZ, быть может, проблема в Windows Host Container, без которого, насколько я знаю, невозможно обойтись врапперам на C# что под винформс, что под ВПФ, но тем не менее - попробуйте сами отрисовать 10000 примитивов на GLUT и такую же сцену - на OpenTK.

#13
15:34, 19 авг. 2013

Mikle, ну опенжл не ООП АПИ, с ними проще, ибо все свои игры я не использовал ООП, я не сильно понимаю его.

#14
15:36, 19 авг. 2013

Тогда ещё раз:
> как ты собираешься использовать .NET без ООП?
Сами .NET языки настолько ООП, что от этого никуда не деться. Это в VB6 ещё можно было программировать в чисто процедурном стиле.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.