Речь идёт о создании движка для игрушки -> нужен высокопроизводительный язык. Python и Java отпадают сразу. C# — хз насчёт производительности.
Так что остаются исключительно компилируемые в нативный код языки, а это — C/C++/ObjC/D (ну, про Delphi мы вообще молчим).
Есть ещё Fortran (???), Go (уже упоминался)...Haskell… это всё довольно-таки специфичные языки (ну, Фортран я тупо не знаю, так что не бейте ногами).
Что же вы тогда можете рекомендовать?
C# — неясность с патентами и тормознутость + целый фреймворк библиотек
Java — нужна виртуальная java-машина, туманное будущее языка, и сам по себе от требовательный
Python — медленный по сравнению с С/С++, но легкий в освоении. Хотя синтаксис этого языка мне не нраситься
Delphi — тут я вообще молчу :)
FreePascal+Qt+SDL+OpenGL — на любителя, хотя хороший пример — ёжики
D — мало библиотек под него есть, SDL и прочие, и в GCC нет, так как разрабы права на код FSF не передают (хотя тут я их могу понять, но на популярность и развитие языка это влияет)
Скриптовые языки тоже отпадают, Flash (только для маленьких игр, ибо будет такой монстр) технологии только если писать онлайн игры, так же и html5.
Не хочу превращать это в холивар, но:
1) На самом деле очень немногие ДЕЙСТВИТЕЛЬНО знают C++ и умеют программировать на нём и при этом не наступать на грабли. Что касается изучения D, то либо ты программист, и в принципе можешь начинать писать на любом языке после прочтения туториала, либо ты не программист, и тогда тебе как-то пофиг, что изучать — C++ или D.
2) Решаемая проблема. Ещё год назад то же говорили про gcc под винду — а сейчас есть mingw-get, который всё устанавливает сам, и всё просто работает.
3) Нафига мешать C++ с D — неясно. Мешать D с C — это как раз понятно, но проблем тут быть не должно (C мешается вообще с чем угодно).
P.S. Вообще я не знаю D, только глянул описание языка :) Но когда встаёт вопрос о выборе языка, я КАТЕГОРИЧЕСКИ не могу рекоммендовать C++. C рекоммендовать я тоже не могу, хотя язык хороший — просто всё делается либо руками, либо через библиотеки, что для неподготовленного ума заканчивается летальным исходом. ObjC — это опять же C с объектной моделью (как C++, но другой), то есть проблемы те же самые — слишком много придётся делать руками (просто руки чуть более гибкие). Ну и, в общем-то, всё, по мэйнстримовым языкам.
Я пожалуй добавлю отдельно про 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. Но если что пойдет не так, я предупреждал;)
Я тоже сначала так думал :)
! Но! для улучшения чего-то всегда идей очень много, а вот для того чтоб придумать что-то свое — тут уже 99% идей не годиться.
Удачи :) Я чем смогу — помогу, сам такой
Советую использовать C/C++ и Qt/OpenGL для кроссплатформенности. Плюс Qt еще и в том, что без проблем можно будет перенести ее на мобильные девайсы — Symbian и MeeGo. Движок лучше взять готовый (open source) для начала, а уж если его возможностей не будет хватать…
2.Какую среду программирования выбрать?
Соответственно, Qt Creator. Можно просто скачать Qt SDK, он бесплатный и содержит все что нужно, чтобы сразу начать программировать. Работает и в linux и в windows.
Для начала определись с игровым движком. Наилучший вариант — использовать готовый движок. Я в них особо не разбираюсь, но 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 тебе нужен для игры и её окружения).
Для начала хочу попробовать свои силы. Так же хочу реализовать свои идеи. А их много. Если все получиться хорошо буде продавать вместе с исходниками)))
В зависимости от того, на какие платформы рассчитываете :)
1. Я пишу на с++ и использую графическую библиотеку SDL/OpenGL, так как моя цель — кроссплатформенность.
2. в зависимости от ОС и выбранного языка :) Я пишу в Geany (в нем есть подсветка для большинства языков и компилирует при помощи gcc).
Вот можешь посмотреть, что у меня пока есть: клацать тут.
И не менее важно — какая цель игры. Как хобби с открытыми исходниками? Или как коммерческий проект?
Так что остаются исключительно компилируемые в нативный код языки, а это — C/C++/ObjC/D (ну, про Delphi мы вообще молчим).
Есть ещё Fortran (???), Go (уже упоминался)...Haskell… это всё довольно-таки специфичные языки (ну, Фортран я тупо не знаю, так что не бейте ногами).
C# — неясность с патентами и тормознутость + целый фреймворк библиотек
Java — нужна виртуальная java-машина, туманное будущее языка, и сам по себе от требовательный
Python — медленный по сравнению с С/С++, но легкий в освоении. Хотя синтаксис этого языка мне не нраситься
Delphi — тут я вообще молчу :)
FreePascal+Qt+SDL+OpenGL — на любителя, хотя хороший пример —
D — мало библиотек под него есть, SDL и прочие, и в GCC нет, так как разрабы права на код FSF не передают (хотя тут я их могу понять, но на популярность и развитие языка это влияет)
Скриптовые языки тоже отпадают, Flash (только для маленьких игр, ибо будет такой монстр) технологии только если писать онлайн игры, так же и html5.
Что посоветуете то? На чем писать?
1) На самом деле очень немногие ДЕЙСТВИТЕЛЬНО знают C++ и умеют программировать на нём и при этом не наступать на грабли. Что касается изучения D, то либо ты программист, и в принципе можешь начинать писать на любом языке после прочтения туториала, либо ты не программист, и тогда тебе как-то пофиг, что изучать — C++ или D.
2) Решаемая проблема. Ещё год назад то же говорили про gcc под винду — а сейчас есть mingw-get, который всё устанавливает сам, и всё просто работает.
3) Нафига мешать C++ с D — неясно. Мешать D с C — это как раз понятно, но проблем тут быть не должно (C мешается вообще с чем угодно).
P.S. Вообще я не знаю D, только глянул описание языка :) Но когда встаёт вопрос о выборе языка, я КАТЕГОРИЧЕСКИ не могу рекоммендовать C++. C рекоммендовать я тоже не могу, хотя язык хороший — просто всё делается либо руками, либо через библиотеки, что для неподготовленного ума заканчивается летальным исходом. ObjC — это опять же C с объектной моделью (как C++, но другой), то есть проблемы те же самые — слишком много придётся делать руками (просто руки чуть более гибкие). Ну и, в общем-то, всё, по мэйнстримовым языкам.
Похоже будет много подобных решений или док. станций для установки…
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. Но если что пойдет не так, я предупреждал;)
! Но! для улучшения чего-то всегда идей очень много, а вот для того чтоб придумать что-то свое — тут уже 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. Я пишу на с++ и использую графическую библиотеку SDL/OpenGL, так как моя цель — кроссплатформенность.
2. в зависимости от ОС и выбранного языка :) Я пишу в
Вот можешь посмотреть, что у меня пока есть:
И не менее важно — какая цель игры. Как хобби с открытыми исходниками? Или как коммерческий проект?