Самый простой и интересный способ программирования 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 будет забавным ...


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

9

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


Какова производительность? какую 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


Хотя 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 всего несколько дней, и у меня недостаточно опыта, чтобы быть уверенным, что это то, что вам нужно, но это стоит посмотреть.


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 ++ и ваш собственный код.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.