Давным-давно, когда мне только пришла идея писать Dream (тогда он назывался 2D Universe), очень остро встал вопрос о выборе платформы. Писать на C++ мне не хотелось, потому что это был тихий ужас для сложного проекта одного разработчика, который к тому же имеет лишь небольшой опыт создания игр и слабо представляет окончательный результат. Мне была необходима возможность творить и пробовать. И я пытался писать Dream в Game Maker и… Matlab, хе хе. О чём я только думал тогда? :)
Наконец, в марте 2007 года я каким-то образом наткнулся на Python. Он мне так понравился, что я изучил его «залпом» и тут же портировал туда свои наработки. Python одновременно предоставил и полную свободу действий, и удивительную простоту и лёгкость разработки. Конечно, это интерпретатор, объектно ориентированный «от корней», и у него слишком низкая производительность для real-time игр, но наиболее узкие места в плане производительности можно переписать на C и подключить в виде скомпилированных библиотек. Есть даже средство, которое призвано максимально упростить эту задачу — Pyrex. В самом крайнем случае Python можно использовать для «quick prototyping», а в дальнейшем переписать весь код на C++: это тоже вариант, но он вряд ли необходим. Надо ли говорить, что любые оптимизации, будь то оптимизации в Python или портирование в C, следует выполнять только для полностью закрепившихся участков кода, которые уже не подлежат изменениям.
Мне также нужно было остановиться на какой-то платформе для ввода/вывода. Для игр на Python стандартом является использование библиотеки PyGame, которая является биндингом С-шной SDL. Но её графические возможности (и производительность) весьма ограничены. К счастью, существует рабочий биндинг OpenGL для Питона, который называется, как нетрудно догадаться, PyOpenGL, и который может работать вместе с PyGame. Всё перечисленное, к тому же, является мультиплатформенным и бесплатным.
