Согласно этому списку ---> http://en.wikipedia.org/wiki/List_of_Python_software#Video_games есть несколько игр, написанных на питоне, но похоже, что некоторые из них являются коммерческими, поэтому исходный код не может быть показан пользователи и игра должны работать даже на компьютере, где нет установки python. Поэтому мой вопрос: как они сделаны? Связаны ли они с кодом C++ или встроены в программу C++?
Многие люди используют PyGame или создают собственные библиотеки поверх PyGame. Теоретически, некоторые из них взаимодействуют с C++. Например, модемная система Mount and Blade (нежно известная как модули) полностью программируется на Python, используя крючки для основного движка.
Однако я не видел огромное количество игр, разработанных на Python, и это, вероятно, связано с отсутствием потрясающих пакетов GUI. Есть несколько достойных 2 и 3D графических пакетов, но по сравнению с такими языками, как Java, С#, C++ и т.д., Они все еще очень ограничены.
Самое главное отметить, что Python является дополнением ко многим из игр, перечисленных на странице, с которой вы связаны, это не основной движок.
Позвольте сначала сделать это:
игра должна работать даже на компьютере, где нет установки python. Поэтому мой вопрос: как они сделаны?
Как правило, игры, созданные (полностью или частично) в Python, не зависят от установки Python пользователя, а вместо этого объединяют свои собственные. Даже для игр с чистым Python это довольно легко сделать с такими инструментами, как pyInstaller
, py2app
, py2exe
, cx_Freeze
и т.д.
А также:
исходный код не может быть показан пользователям
Отгрузка скомпилированного кода вместо исходного кода практически не защищает от пиратства, читеров, конкурентов, крадущих ваши идеи и т.д. Это просто не проблема для любой коммерческой игры.
И некоторые из этих, подобных Civilization IV, явно хотели, чтобы пользователи видели (некоторые из) исходный код, чтобы служить примером кода и/или документации API для моддеров.
В заключение:
Связаны ли они с кодом C++ или встроены в программу C++?
Ну, во-первых, не каждая собственная программа построена в C++. OS X и iOS ожидают, что в Objective C. будет реализован сложный GUI-материал. Gtk+ ожидает, что это будет сделано в C (или Vala или...). Android требует Java. Только Windows действительно требует C++.
Но кроме того, нет ни одного ответа на ваш вопрос. Существует несколько способов использования Python в играх, и почти все эти способы используются различными играми в списке. Например:
В онлайн-игре, такой как Eve Online, сервер может быть написан на чистом Python (или приложениях Python за веб-сервером, написанном на каком-то другом языке), даже если клиенты написаны на совершенно другом языке. (В случае веб-игры клиенты, очевидно, написаны на JavaScript + HTML + CSS или ActionScript/Flash.) Трудная часть логики игры в основном находится на сервере, и эта часть, которую вы хотите упростить написать.
Даже в локальной игре вы можете разделить игру на интерфейс и движок. Опять же, это означает, что жесткая часть игровой логики находится в движке, которую вы можете написать на Python, чтобы упростить ее запись, а часть, которая должна быть чувствительной к молниеносной работе и использовать функциональные возможности платформы, может быть в [CN10 ] или ObjC или что-то подходящее для платформы.
Даже внутри движка вы можете комбинировать C (или C++ или даже Java или.NET) и код Python, создавая пользовательские расширения C для используемого кода Python или встраивая интерпретатор Python в приложение C или оба,
Конечно, вы можете написать сам интерфейс и в Python, чаще всего с помощью PyGame.
Вы могли бы даже обойти все вокруг назад, если бы вы действительно хотели написать PyGame-интерфейс с движком, реализованным на C, который разговаривал с сервером, написанным на JavaScript. Это не так часто, как наоборот, но вам ничего не мешает.
Итак, Eve Online имеет чистый сервер Python. Civilization IV имеет встроенный в свой движок интерпретатор Python. Frets on Fire - это все Python, с PyGame. И так далее.
Большинство этих программ в основном написаны на C или C++, а затем в них встроен интерпретатор Python. Нативный код предоставляет модули и объекты, которые код Python может анализировать и манипулировать, чтобы влиять на собственные структуры.