XNA 3.1 против SDL - PullRequest
       11

XNA 3.1 против SDL

2 голосов
/ 10 ноября 2010

Я опробовал и то, и другое, и хотя XNA 3.1 привлекает меня больше из-за того, что я могу просто выводить код, не нужно беспокоиться об очистке памяти и мусора, а также о всякой мелочности.Вы можете написать забавную часть кода (если таковая вообще существует: D).Однако XNA ограничивает меня, потому что я не могу портировать все, что я пишу с ним, на Linux или Mac OSX, и даже тогда это заставляет людей, которые хотят играть в мои игры, загружать .NET 3.5 Redistributable и XNA 3.1 Redistributable, чего не должно быть.Я должен иметь возможность просто иметь некоторые библиотеки DLL, в отличие от того, чтобы заставить моих игроков выходить в интернет и скачивать вещи.Даже в этом случае все еще существует тот факт, что код со временем превратится в беспорядок из-за всей политики «один файл для вашей игры» по умолчанию с XNA.

Как вы думаете, что лучше?

Ответы [ 4 ]

3 голосов
/ 10 ноября 2010

На самом деле это будет зависеть от вашего уровня опыта работы с C ++ и от того, действительно ли вы не сможете портировать свой код как большую проблему. Что касается вещей управления памятью ... SDL становится намного проще, когда вы используете некоторые новые функции в стандарте C ++ 0x, такие как shared_ptr и unique_ptr, lambdas и т. Д. Даже те вещи в SDL, которые требуют необработанных указателей, выполнимы, поскольку вы просто используете .get () работайте над своим умным указателем, и ваша жизнь станет намного проще.

Вкратце: хорошо разбираюсь в C ++, и если вы действительно заинтересованы в том, чтобы легко перенести свою игру на другие системы, я бы выбрал SDL. Если вы действительно хорошо знаете C # и играете на C ++, и не так уж и сложно иметь свою игру только на Windows и Xbox, тогда определенно стоит выбрать XNA.

1 голос
/ 10 ноября 2010

Из личного опыта, далекий и дальний XNA.Возможность - просто использовать вашу фразу - "просто выкинуть код" и быстро собрать все вместе - это огромное преимущество в разработке игр.

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

С C ++и SDL вы вынуждены писать подавляющее большинство вашего кода "тщательно".(Не говоря уже о том, что в какой-то момент вы поймете неправильно, и в C ++ это гораздо более неумолимо.)

Некоторые из упомянутых вами проблем («один файл дляВаша игра ", требующая распространения .NET 3.5) на самом деле не являются проблемами с XNA, как обсуждали Veered и я в комментариях.Кроме того, если вы используете ClickOnce для распространения своих игр, он будет выполнять необходимую загрузку и установку XNA и .NET Framework для вас.

Если вы обнаружили необходимость портировать на Linux и Mac, тоЯ бы по-прежнему выступал за использование C # (через Mono) в качестве языка разработки - даже если вам нужно использовать что-то другое, чем XNA на этих платформах.

И есть еще много хороших вещей о XNA и C # -значительно более быстрое время компиляции, конвейер контента, поддержка / обновления от Microsoft, простота портирования на Xbox 360 и Windows Phone, библиотека хорошо написанных примеров и т. д.

0 голосов
/ 21 ноября 2010

Мой голос за XNA.

Я фактически начал свою игру, используя SDL.NET + C # (которая охватывает управление памятью, которое вы описали, оставаясь верным SDL) некоторое время назад, чтобы изучить C #. Так что если вам действительно нравятся привилегии .Net, вы можете проверить это. Однако, как только я обнаружил XNA и возился с несколькими небольшими тестовыми играми, я решил, что перенос моей работы на XNA будет стоить этого (так как я все равно не заботился о кроссплатформенности).

Я понимаю, что вы имеете в виду, когда говорите «подход одним файлом». Хотя, как уже упоминали другие, это не фактический конечный результат, просто то, как он представлен, как «Эй, смотри, как все просто, обнови и нарисуй, теперь у тебя есть маленький парень, выгуливающий огненные шары из его глаз!» Вещи в XNA чувствуют себя намного более структурированными, чем SDL, и больше держатся за руки, если хотите. XNA легко подобрать и выполнить то, что нужно сделать, позволяя вашей хорошей практике кодирования войти в ход.

0 голосов
/ 10 ноября 2010

Я лично предпочитаю XNA. Независимо от личной предвзятости, Microsoft знает, как сделать несколько довольно подлых программных средств разработки. XNA очень цельная, и, несмотря на ограничения, это замечательный опыт. Хотя отсутствие переносимости разочаровывает, по крайней мере, вы можете поставить его на xbox:)

Что вы подразумеваете под политикой «один файл для вашей игры»? Вы можете создать так же, как любой другой проект VS.

...