Самый простой и интересный способ программирования 2D-игр? Вспышка? XNA? Какой-то другой двигатель? [закрыто]

20

это пост, в котором подробно описан мой поиск наиболее приятного способа, которым программист-любитель может посвятить свое свободное время созданию игры.

Мои требования: я сначала посмотрел на Flash, сделал несколько небольших игр, но я сомневаюсь в производительности. Я хотел бы сделать довольно большую стратегическую игру, в которой одновременно будут сражаться несколько сотен юнитов, включая взрывы и анимацию. Также масштабируемые карты. Я видел, что у Adobe есть новый 3D API для Flash, но я не знаю, улучшит ли это и производительность 2D, я не смог найти что-либо связанное с этим вопросом на их сеансах MAX10. Вы бы сказали, что Flash - это хорошая технология для создания больших 2D-игр? Мне очень нравится Actionscript, и мне нравится, как все просто во Flash. Есть несколько доступных двигателей, которые делают это еще проще.

Я просто делаю это для удовольствия, и было бы еще лучше, если бы были доступны надлежащие редакторы анимации / частиц, и если бы механизм, который я использовал, был бы доступен для нескольких платформ. (чтобы больше людей могли поиграть в мою игру после завершения). Я бы хотел, чтобы он был доступен на многих мобильных платформах. (потому что я люблю сенсорный ввод по некоторым причинам)

Я очень хорошо знаю фреймворк XNA, но для него нет хороших движков, и он будет работать только на Windows, что является огромным отключением. Еще более важно то, что вам нужно устанавливать распространяемый XNA каждый раз, когда вы хотите передать кому-то игру. Если бы я использовал XNA, мне бы пришлось самому создавать все инструменты, и, вероятно, мне пришлось бы делать их с помощью WPF. (Я бы хотел создавать инструменты с помощью Adobe AIR, но, к сожалению, API-интерфейсы для работы с изображениями и т. Д. Во Flash намного хуже, чем в XNA / WPF.) Теперь я знаю, что могу сделать свой собственный движок, который поддерживает каждую из этих платформ, но, откровенно говоря, это будет слишком много работы по API. В конце концов, я хочу сделать игру, а не движок.

Таким образом, возникает вопрос: есть ли кроссплатформенный (бесплатный или бесплатный для разработки) движок, который я мог бы использовать для 2D-разработки? Я предпочитаю: C #, Actionscript. Я не против использования c ++, если набор инструментов выше среднего, но я очень сомневаюсь, что есть что-то подобное. Пожалуйста, докажите, что я не прав :) Итак, резюме: я бы хотел использовать Flash, но я не знаю, достаточно ли хорошо он масштабируется. Я не сценарист, мне нужны реальные API, с которыми я мог бы работать в правильной IDE.

Просто для информации, я посмотрел несколько альтернатив, я на самом деле уже давно ищу. Вы бы очень помогли мне принять решение, наконец.

  • По характеристикам двигатель Flatredball был бы идеальным. Но я попробовал их инструменты, и, честно говоря, они ужасны. Абсолютно непригодный, я бы наверняка сделал свой. Я не смотрел на их API, но если их инструменты настолько плохи, я не склонен смотреть дальше.

  • Unity3D. Это довольно хорошо, но мне действительно не нужно 3D , и это довольно ... много работы, чтобы учиться. Мне также не нравится, что это так дорого использовать для разных платформ, и что я могу кодировать его только через скрипты. Вы должны купить каждую платформу отдельно. Удобство использования редактора среднее, продукт в целом достаточно хорош для большинства целей, но изучение его само по себе было бы излишним.

  • Шива 3D. Это выглядит достаточно хорошо, но опять же: мне не нужно 3D. На мой взгляд, удобство использования редактора немного хуже, чем у Unity3D, и мне не было ясно, как начать программировать. Я думаю, что для кодирования требуется C ++, так что это тоже минус. Я хочу повеселиться, а C # это весело;)

  • SDL. Честно говоря, мне все еще нужно портировать на все эти разные реализации SDL. И мне не нравится программирование в стиле OpenGL, оно просто безобразно. И это требует c ++, я знаю, что могут быть доступны некоторые обертки, но я не люблю использовать обертки, потому что ...

  • Irrlicht. Много функций, но поддержка кажется низкой, и она нацелена на энтузиастов. Привязки C # сбрасываются неоднократно. Я не энтузиаст движка, я просто хочу сделать игру. Я не вижу, чтобы это случилось с Ирлихтом.

  • Ogre3D. Слишком много работы, это просто графический движок. Также нет поддержки нескольких платформ и C ++.

  • Torque2D. Стоит что-то использовать, и я не слышал много хорошего о поддержке и документации. Также стоит дополнительно за каждую платформу.

Макси
источник
Инструменты FRB SDK плохие (в частности, клей, я им не пользуюсь), но экономят ваше время на их написание, а форматы файлов просты, если написание собственных инструментов является обязательным. API не так уж плох и кажется подходящим для этой области, самая большая проблема в настоящее время - это отсутствие порта XNA 4.0 для ПК и Xbox. Кроме того, XNA Redist и другие предварительные требования могут быть частью установки - и, используя clickonce, вы можете получить автоматическое обновление и развертывание, готовое к работе.
Оскар Дюверборн
Ну, я хочу сказать, что я бы не стал их использовать, и поэтому инструменты бесполезны. Они продолжают ругать меня в дополнение к их плохому интерфейсу / общему чувству. Что если окажется, что они упускают определенную функцию? Даже если бы они были с открытым исходным кодом, я бы не хотел приближаться к этим кодовым базам. Кажется грубым, но я действительно хочу немного расслабленного программирования, и FRB кажется фруктовым пирогом разочарования. Представьте себе: я попробовал редактор частиц и даже не смог найти кнопку для открытия файла изображения. Это, пожалуй, самая важная особенность, на которой строится все остальное.
Макси
Не полный ответ, но Flash масштабируется лучше, чем вы думаете. Если вы перейдете на холст растровых данных вместо использования стека отображения и выполните некоторые другие простые оптимизации, вы сможете выжать из него гораздо больше, чем кажется с более наивным решением.
Грегори Эйвери-Вейр
Элемент списка в редакторе частиц просто называется «текстура» на панели свойств эмиттера ^^ Существуют учебные пособия по всем инструментам, которые могут помочь создателям контента, не кодирующим контент. Но да, пользовательские интерфейсы действительно ужасны с точки зрения дизайна взаимодействия.
Оскар Дюверборн
1
Что касается XNA, являющегося только Windows, существует реализация с открытым исходным кодом API XNA под названием MonoGame, которая будет работать на всех видах платформ, отличных от Windows: cocoa-mono.org/archives/400/… Я не использовал его сам, но оно существует.
ChaosTechnician

Ответы:

10

Pygame, безусловно, мой любимый. Поскольку программирование на python означает, что вы будете программировать быстро, а поскольку 2D-вещи быстро выполняются, pygame будет забавным ...

jokoon
источник
В качестве бонуса, если вы решите, что хотите перейти в трехмерный мир, есть пиглет, который окутывает GL змеиной кожей;)
Уэйн Вернер
9

Я использую LÖVE уже некоторое время, и мне это очень нравится. Тебе придется выучить Lua, но в любом случае это забавный маленький язык. Люди на форуме чрезвычайно полезны.

egarcia
источник
Какова производительность? какую IDE я могу использовать?
Макси
1
Я второй это. Мы использовали Lua и LOVE для нашей игры Global Game Jam, и это сработало фантастически. Они собрали множество действительно хороших библиотек с открытым исходным кодом под одним общим API, и каждый выпуск становится все лучше. Производительность отличная (Lua работает быстро!), И многие расширенные функции OpenGL, такие как FBO, открыты, что редко встречается для многих 2D движков. Помимо всего этого, это кроссплатформенность (Win / Mac / Linux). Я определенно оценил бы это.
Боб Сомерс
1
@Maxi: С любовью вам просто нужен редактор и консоль, где вы можете писатьlove .
egarcia
2
Русские сделали игру с этим? Это было бы из России с любовью: P
Барт ван Хейкелом
5

Я решил пойти с Flash. Новый Molehill 3D API также можно использовать для рисования 2D-спрайтов в 3D-пространстве намного быстрее. Я не вижу причин, почему Flash не должен быть достаточно быстрым для игры, которую я описал ранее. Мне придется создавать инструменты самостоятельно, но мне, вероятно, нужно было бы это сделать в любом случае. Использование AIR для создания инструментов также, на мой взгляд, довольно аккуратно. Flash также имеет самый широкий охват платформ, что круто.

Макси
источник
Попробуйте Cocos2d-x . Это то, что я использую для разработки инди-игр.
Стивен Фурлани
1
Flash, вероятно, является хорошим выбором, так как есть очень хорошие (зрелые) инструменты и библиотеки для flash. Molehill API будет сильно загружать процессор (ранее все обрабатывалось процессором). Вы должны подумать о распространении вашей игры. Флэш обычно означает браузерную игру ...
bummzack
И позаботьтесь о мобильных играх, флэш и мобильные телефоны - такое плохое сочетание.
Густаво Масиэль
« И позаботьтесь о мобильных играх, флэш и мобильные телефоны - такое плохое сочетание ». @ Гтокну, есть причина почему?
NemoStein
@NemoStein Попробуйте поискать на YouTube некоторые вспышки, работающие на мобильных телефонах. Кроме того, Adobe прекратил разработку Flash для Android, и для iOS нет Flash.
Густаво Масиэль
4

Попробуйте SFML

svenstaro
источник
Хотя SFML и полезен, он является только графическим / сетевым / звуковым API, а не полнофункциональным игровым движком (хотя он довольно близок).
a_m0d
2

Попробуйте Cocos2d-x . Это то, что я использую для разработки инди-игр.

Это опробованная и настоящая платформа OpenGL (ES), которая имеет звук, физику и даже небольшое 3D-изображение, которое недавно появилось на iPhone и только сейчас выходит на другие платформы.

Стивен Фурлани
источник
2

Так как вы сказали, что вам нравится Actionscript, но вы ищете кроссплатформенность, взгляните на HaXe + NME . HaXe - это язык, похожий на Actionscript, но он может компилироваться во Flash, Javascript, PHP или C ++. NME - это библиотека, похожая на графическую библиотеку Flash, но она работает и на других платформах. Эта комбинация позволяет компилировать для множества разных платформ.

Я еще не использовал NME, но мой первый тест с HaXe + Molehill (всего несколько дней назад) показал скорость 60 кадров в секунду при рендеринге 10 000 вращающихся спрайтов 16x16 на моем ноутбуке. Я использую HaXe всего несколько дней, и у меня недостаточно опыта, чтобы быть уверенным, что это то, что вам нужно, но это стоит посмотреть.

amitp
источник
1

Я лично большой поклонник Allegro 5 , но это C API. Тем не менее, это простой API, который убирается с вашего пути и обеспечивает доступ к:

  • 2D графика (поддерживается OpenGL или D3D, в зависимости от платформы)
  • Звук
  • Шрифты (включая как растровые, так и TTF)
  • Ввод (мышь и клавиатура)
  • PhysicsFS (виртуализация файловой системы)
  • Загрузка изображения

5.1 также добавит поддержку шейдеров.

SDL 1.3 тоже неплохо складывается. Сэм, похоже, сделал основные изменения в API, и то, что уже есть, уже достаточно стабильно. Тем не менее ... это еще не бета-версия, и Allegro 5.0 выпущен.

Конечно, для более сложных и продвинутых игр вы, вероятно, захотите соединить Allegro 5 с какой-то библиотекой физики (например, Box2D ). Тем не менее, вы можете пройти очень долгий путь и получить массу удовольствия, не более чем то, что есть Allegro 5, стандартная библиотека C или C ++ и ваш собственный код.

Грег Джандл
источник