Блог им. Tiberium → Создание игры
Всем привет! Недавно решил попробовать сделать игру, и появились несколько вопросов:
1.На каком языке писать движок и игру?
2.Какую среду программирования выбрать?
Всем заранее спасибо
1.На каком языке писать движок и игру?
2.Какую среду программирования выбрать?
Всем заранее спасибо
- -1
- Tiberium
- 06 января 2011, 14:25
1. Я пишу на с++ и использую графическую библиотеку SDL/OpenGL, так как моя цель — кроссплатформенность.
2. в зависимости от ОС и выбранного языка :) Я пишу в
Вот можешь посмотреть, что у меня пока есть:
И не менее важно — какая цель игры. Как хобби с открытыми исходниками? Или как коммерческий проект?
! Но! для улучшения чего-то всегда идей очень много, а вот для того чтоб придумать что-то свое — тут уже 99% идей не годиться.
Удачи :) Я чем смогу — помогу, сам такой
Если игра не 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 тебе нужен для игры и её окружения).
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.
Что посоветуете то? На чем писать?
Так что остаются исключительно компилируемые в нативный код языки, а это — C/C++/ObjC/D (ну, про Delphi мы вообще молчим).
Есть ещё Fortran (???), Go (уже упоминался)...Haskell… это всё довольно-таки специфичные языки (ну, Фортран я тупо не знаю, так что не бейте ногами).
На нем столько математических библиотек написано, что хватит поколения на 3-4. ;-)
>ObjC
для него есть фреимворки вне MacOS X?
или, хотя бы, обертки над Gtk?
2. Здесь вы сравнили вещи из разных весовых категорий. Скольким людям нужен gcc под windows? Я думаю, количество людей, хоть раз писавших что-то на D будет значительно меньше этого числа людей. Проблема с софтом для разработки на D стоит с самого начала (digitalmars сразу открестились от ПО для разработчиков). Уже были попытки создания и коммерческих IDE, но и они не пошли (требовали большие деньги за не шибко большой функционал. в результате проект закрылся, т.к. не было покупателей). Самое адекватное, что я видел — плагин для Eclipse, но это на любителей. Даже с отладчиком не все хорошо. Если под винду есть рабочие варианты, то под линуксом gdb у меня не завелся. Это вроде было уже после объявления о поддержки D в gdb.
3. Зачем им это понадобилось не могу знать, может какие-то библиотеки имели биндинг только для С++. В общем хз что они там этим добивались.
Я тоже сейчас пытаюсь найти для себя аналог С++ без курков на ручке. Пока остановился на D, но я не считаю, что сейчас это хороший вариант для больших проектов или для начинающих разработчиков…
2. Используй ту среду, которую знаешь.
Ну или хотя бы используй то, чем пользуется твой друг, у которого можно быстро спросить совета.