Является ли хорошей идеей разработать нетривиальную 2d игру на python? [закрыто]


10

Я планирую разработать 2D космическую RPG, и передо мной стоит выбор: на каком языке лучше всего писать? Мои кандидаты - C ++, Java и Python. Очевидно, я хочу написать игру на Python из-за ее выразительности, скорости разработки и простоты добавления поддержки сценариев. Но я волнуюсь

  • Разве Python не будет слишком медленным? Игра не будет тривиальной (как, например, Tetris), возможно, потребуется вычислить задачи для тысяч кораблей во вселенной (хотя их ИИ может быть сильно упрощен, если эти корабли не видны игроку). Конечно, я могу написать некоторые важные части на C, но это сразу усложнит сборку и развертывание.
  • Давайте предположим, что игра стала популярной, и я стал суперзвездой. Пользователи Windows редко имеют Python вообще (к счастью, у нас есть py2exe). Python в Mac OS X может быть устаревшим, и игра может зависнуть с неясным исключением. Не трудно ли будет развернуть игру на Python?
  • Из-за нехватки библиотек для Python 3 мне придется писать игру на Python 2. Не будет ли переход на Python 3 через пару лет слишком болезненным и трудоемким?

Что касается вашего второго вопроса, я уверен, что есть также py2app, который вы можете использовать, чтобы сделать развертывание довольно простым.
Thedaian

1
Если вы решите сделать это в Python, вы можете посмотреть, можете ли вы выполнить любую из «медленных» частей, используя numpy (но это может быть не обязательно).
Брендан Лонг

Ответы:


8

Разве Python не будет слишком медленным? Игра не будет тривиальной (как, например, Tetris), возможно, потребуется вычислить задачи для тысяч кораблей во вселенной (хотя их ИИ может быть сильно упрощен, если эти корабли не видны игроку). Конечно, я могу написать некоторые важные части на C, но это сразу усложнит сборку и развертывание.

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

Пользователи Windows редко имеют Python вообще (к счастью, у нас есть py2exe). Python в Mac OS X может быть устаревшим, и игра может зависнуть с неясным исключением. Не трудно ли будет развернуть игру на Python?

Большинство пользователей редко имеют соответствующие бинарные зависимости для игр, независимо от того, на какой технологии были написаны эти игры (даже C требует, чтобы компонент времени выполнения был распространен). Развертывание через py2exe или эквивалентное, или просто развертывание соответствующей зависимости, является фактом жизни. Хотя это никогда не бывает самым легким делом (большинство технологий для инсталляторов болезненны), это выполнимо и не должно быть причиной для отказа от языка - как я уже сказал, вам, вероятно, придется работать с чем-то подобным независимо от этого.

Из-за нехватки библиотек для Python 3 мне придется писать игру на Python 2. Не будет ли переход на Python 3 через пару лет слишком болезненным и трудоемким?

Об этом я мало знаю, никогда не использовав Python 3. Я не ожидаю, что Python 2.X исчезнет в ближайшее время, поэтому я даже не подозреваю, что время жизни вашей игры будет таким, что вы Мне нужно перейти, если вы не хотите, что делает эту проблему не проблема.

Как уже говорили другие, вы слишком беспокоитесь о выборе языка в вашем проекте. Python - это мощный и полезный инструмент для разработки игр, и если вы его знаете и любите, вы должны разрабатывать его. Неважно, насколько быстро ваша игра запускается, если она никогда не закончится, потому что вы слишком беспокоитесь о языке.


Используя Python 2.7 довольно широко, с Python 3.2+ вы мало что можете сделать с 2.7. Это изменится со временем, но также будет поддерживать библиотеку. =)
Кен

14

К вашему первому пункту, вам просто нужно создать прототип и посмотреть. Даже если бы вы рассказали нам все детали, которые бы ничего не изменили.

Что касается двух других моментов, я чувствую, что вы ставите телегу перед лошадью. От вашего вопроса кажется, что вы новичок в разработке игр, и в этом случае вам просто нужно выбрать инструмент и пойти с ним. Выявление плюсов и минусов по большей части одинаково полезных инструментов отвлекает вас от вашей реальной задачи: обучения разработке игр.


0

В # 3, Python 2.x увидит поддержку дистрибьютора еще как минимум 5-10 лет. Если вы используете довольно свежую версию (2.7 или, возможно, 2.6), путь миграции будет довольно легким, если вы будете писать код, ориентированный на будущее (объект нового стиля, везде юникод и т. Д.) Боль в основном для вещей, которые полагались на старое, сломанное поведение.


Чтобы определить старое поведение, которое вас укусит, запустите вашу игру python -3 filename.py, в которой будут выводиться предупреждения о вещах, которые больше не поддерживаются в Python 3
spiffytech
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.