Блог им. TiberiumСоздание игры

Всем привет! Недавно решил попробовать сделать игру, и появились несколько вопросов:
1.На каком языке писать движок и игру?
2.Какую среду программирования выбрать?
Всем заранее спасибо
  • -1
  • Tiberium
  • 06 января 2011, 14:25

Комментарии (15)

  • avatar
  • eReS
  • 06 января 2011, 14:43
  • #
  • 2
В зависимости от того, на какие платформы рассчитываете :)
1. Я пишу на с++ и использую графическую библиотеку SDL/OpenGL, так как моя цель — кроссплатформенность.
2. в зависимости от ОС и выбранного языка :) Я пишу в Geany (в нем есть подсветка для большинства языков и компилирует при помощи gcc).
Вот можешь посмотреть, что у меня пока есть: клацать тут.
И не менее важно — какая цель игры. Как хобби с открытыми исходниками? Или как коммерческий проект?
Для начала хочу попробовать свои силы. Так же хочу реализовать свои идеи. А их много. Если все получиться хорошо буде продавать вместе с исходниками)))
Я тоже сначала так думал :)
! Но! для улучшения чего-то всегда идей очень много, а вот для того чтоб придумать что-то свое — тут уже 99% идей не годиться.
Удачи :) Я чем смогу — помогу, сам такой
  • avatar
  • LRN
  • 06 января 2011, 15:15
  • #
  • 4
Для начала определись с игровым движком. Наилучший вариант — использовать готовый движок. Я в них особо не разбираюсь, но Crystalspace вроде ничего. Ещё есть Ogre.
Если игра не 3D, а 2D, и найти 2D-движок не удаётся (и не удаётся использовать 3D-движок для тех же целей) — что ж, пиши свой. SDL тебе в помощь.

Движок и другие критические части пишутся на C. В зависимости от особенностей движка и AI можно заменять или дополнять C другими языками:
1) ObjC — если нужна симуляция (т.е. наилучшим образом подходит объектный метод)
2) Go — если нужен широкий параллелизм
3) D — если сильно не хватает функциональности стандартной библиотеки C
4) Haskell — если есть обширные математические вычисления
К движку прикручивается скриптование, делаются биндинги — и дальше игра пишется на скриптовом языке (на самом деле доработка движка и скриптование игры идут параллельно).
Скриптовый язык могу посоветовать только один — Python, для простоты, ясности и удобной манипуляции данными и объектами. В принципе, других языков и не понадобится (разве что будут какие-то совсем специфические задачи, для которых может понадобиться, к примеру, логическое программирование).

Никакой среды не выбирай.
Используй текстовый редактор, хорошо интегрированный с файловым менеджером. Я использую Far Manager с плагином colorer, но это скорее дело привычки.
Используй вменяемую систему сборки. В зависимости от твоих предпочтений — autotools, scons, cmake.
Используй систему контроля версий — git или mercurial. В крайнем случае — svn. Коммить часто.
Используй систему для генерации документации. Для движка — одна, для скриптов — другая (с Питоном обычно используют Sphinx; с C и иже с ним — Doxygen или gtk-doc)
Кстати о тулкитах — подумай, на чём будешь делать GUI. SDL вроде поддерживает какое-то GUI, насчёт готовых движков — не знаю. Возможно придётся прибегнуть к GTK/Qt (смотри по обстоятельствам — насколько богатый UI тебе нужен для игры и её окружения).
Я пожалуй добавлю отдельно про D. Нужно хорошо все взвесить при выборе этого языка, если конечно интересно долгое развитие проекта. Был тут один проект на D, что-то про Morrowind, но они все-таки решили перейти на С++. Вот основные заявленные причины:
1.Very few people know D, lots of people know C++
2.Nobody has a D compiler, and setting one up is difficult on most platforms except for 32 bit Linux
3.Maintaining a mixed D/C++ code base is too much work, mostly because the compiler and tools don't work well together in this scenario (especially on Windows.)
С первыми двумя пунктами абсолютно согласен (мешать код D/C++ не приходилось).
Однако я вовсе не против D, совсем наоборот — сам надеюсь через полгодика выкроить время для своей игры на D. Но если что пойдет не так, я предупреждал;)
Не хочу превращать это в холивар, но:
1) На самом деле очень немногие ДЕЙСТВИТЕЛЬНО знают C++ и умеют программировать на нём и при этом не наступать на грабли. Что касается изучения D, то либо ты программист, и в принципе можешь начинать писать на любом языке после прочтения туториала, либо ты не программист, и тогда тебе как-то пофиг, что изучать — C++ или D.
2) Решаемая проблема. Ещё год назад то же говорили про gcc под винду — а сейчас есть mingw-get, который всё устанавливает сам, и всё просто работает.
3) Нафига мешать C++ с D — неясно. Мешать D с C — это как раз понятно, но проблем тут быть не должно (C мешается вообще с чем угодно).

P.S. Вообще я не знаю D, только глянул описание языка :) Но когда встаёт вопрос о выборе языка, я КАТЕГОРИЧЕСКИ не могу рекоммендовать C++. C рекоммендовать я тоже не могу, хотя язык хороший — просто всё делается либо руками, либо через библиотеки, что для неподготовленного ума заканчивается летальным исходом. ObjC — это опять же C с объектной моделью (как C++, но другой), то есть проблемы те же самые — слишком много придётся делать руками (просто руки чуть более гибкие). Ну и, в общем-то, всё, по мэйнстримовым языкам.
Что же вы тогда можете рекомендовать?
C# — неясность с патентами и тормознутость + целый фреймворк библиотек
Java — нужна виртуальная java-машина, туманное будущее языка, и сам по себе от требовательный
Python — медленный по сравнению с С/С++, но легкий в освоении. Хотя синтаксис этого языка мне не нраситься
Delphi — тут я вообще молчу :)
FreePascal+Qt+SDL+OpenGL — на любителя, хотя хороший пример — ёжики
D — мало библиотек под него есть, SDL и прочие, и в GCC нет, так как разрабы права на код FSF не передают (хотя тут я их могу понять, но на популярность и развитие языка это влияет)
Скриптовые языки тоже отпадают, Flash (только для маленьких игр, ибо будет такой монстр) технологии только если писать онлайн игры, так же и html5.

Что посоветуете то? На чем писать?
Речь идёт о создании движка для игрушки -> нужен высокопроизводительный язык. Python и Java отпадают сразу. C# — хз насчёт производительности.

Так что остаются исключительно компилируемые в нативный код языки, а это — C/C++/ObjC/D (ну, про Delphi мы вообще молчим).
Есть ещё Fortran (???), Go (уже упоминался)...Haskell… это всё довольно-таки специфичные языки (ну, Фортран я тупо не знаю, так что не бейте ногами).
Ну я за Си/С++/ObjC, они можно сказать созданы для написания движков/ядер. Fortran свое отжил. Еще Prolog не рассматривали :-D
Fortran свое отжил.
Фортран нас всех переживет еще. =)
На нем столько математических библиотек написано, что хватит поколения на 3-4. ;-)
Много библиотек математических на питоне переписывают. Там и диапазон целых и с плавающей точкой бесконечный — рай для математиков :)
//немного оффтопом
>ObjC
для него есть фреимворки вне MacOS X?
или, хотя бы, обертки над Gtk?
1. Согласен, программист должен уметь думать на разных языках. Только основную проблему я здесь вижу в том, что открытому проекту просто сложнее найти программиста, готового подключиться к разработке. Не все программисты любят изучать новые языки. Если в компаниях это стимулируют зарплатой, то здесь такому разработчику проще найти другой проект, где можно покопаться.
2. Здесь вы сравнили вещи из разных весовых категорий. Скольким людям нужен gcc под windows? Я думаю, количество людей, хоть раз писавших что-то на D будет значительно меньше этого числа людей. Проблема с софтом для разработки на D стоит с самого начала (digitalmars сразу открестились от ПО для разработчиков). Уже были попытки создания и коммерческих IDE, но и они не пошли (требовали большие деньги за не шибко большой функционал. в результате проект закрылся, т.к. не было покупателей). Самое адекватное, что я видел — плагин для Eclipse, но это на любителей. Даже с отладчиком не все хорошо. Если под винду есть рабочие варианты, то под линуксом gdb у меня не завелся. Это вроде было уже после объявления о поддержки D в gdb.
3. Зачем им это понадобилось не могу знать, может какие-то библиотеки имели биндинг только для С++. В общем хз что они там этим добивались.

Я тоже сейчас пытаюсь найти для себя аналог С++ без курков на ручке. Пока остановился на D, но я не считаю, что сейчас это хороший вариант для больших проектов или для начинающих разработчиков…
  • avatar
  • fog
  • 06 января 2011, 16:56
  • #
  • 3
1.На каком языке писать движок и игру?
Советую использовать C/C++ и Qt/OpenGL для кроссплатформенности. Плюс Qt еще и в том, что без проблем можно будет перенести ее на мобильные девайсы — Symbian и MeeGo. Движок лучше взять готовый (open source) для начала, а уж если его возможностей не будет хватать…
2.Какую среду программирования выбрать?
Соответственно, Qt Creator. Можно просто скачать Qt SDK, он бесплатный и содержит все что нужно, чтобы сразу начать программировать. Работает и в linux и в windows.
1. Пиши на том языке, который знаешь.
2. Используй ту среду, которую знаешь.
Ну или хотя бы используй то, чем пользуется твой друг, у которого можно быстро спросить совета.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.