Разница между языками программирования с точки зрения создания игр
Q>В чём принципиальное различие между языками программирования, и какой язык лучше использовать для создания современных игр?
A>Существует очень много языков программирования. Часть из них применима для написания движка, часть — для написания игры, часть — для скриптинга, часть — для каких-то специальных целей (например, кое-кому удобно хранить настройки в файлах на Lisp). Выбор языка зависит также и от платформы — для мобильных платформ придётся писать на Java, для XBOX360/PS3 существуют только компиляторы Си/C++, и т. д.
Если говорить про написание движка и игрового кода, то тут исторически наиболее распространён C++ (а раньше был Си). Никаких принципиальных преимуществ по сравнению с Паскалем в Си нет, но есть Стандарты языка и есть довольно много хороших компиляторов.
Для современных игр очень соблазнительно, хотя бы частично, использовать более простые и высокоуровневые языки, чем С++, например C# и Java. На них написаны некоторые серверы ММО и игровая логика некоторых игр.
>Никаких принципиальных преимуществ по сравнению с Паскалем в Си нет
все тесты скорости говорят что с++ быстрее всех, еще к нему иногда приближается Java, но она пожирает память.
> Разница между языками программирования с точки зрения создания игр
a) разницы нет никакой, главное уметь пользоваться доступными средствами
b) А вообще, crol прав: C++ рулит.
В основе любой более-менее нормальной игры лежит движок. Графический, физический, логический, игровой, и т.д. Работа самой игры при этом заключается лишь в управлении этим движком. Поэтому быстродействие движка крайне важно => движок пишется на C++ и возможно даже со вставками ассемблерного кода и использованием расширений процессора. А уж на чем писать потом игру - не столь важно. Хотя опять см. пункты a, b.
crol > все тесты скорости говорят что с++ быстрее всех, еще к нему иногда приближается > Java, но она пожирает память.
Кроме скорости кода бывают и разные другие фиговины:
- безопасность (отсутствие segfault и других "приятностей")
- скорость разработки
- etc.
Этого нет у Си/Си++, к сожалению, и поэтому придумали скрипты.
> раз - http://www.osp.ru/os/2000/12/178361/_p2.html > и особенно два - http://shootout.alioth.debian.org/u32q/ (тут можно сравнить > между собой очень много языков и на различных задачах)
Судя по Shootout, у C++ есть преимущество, но не подавляющее,
например, GHC, OCaml, SBCL работают в пределах 2-5 раз медленнее.
А вообще, к синтетическим бенчмаркам надо относиться осторожно.
> сколько можно спорить о том, что уже доказанно.
Вот именно. Сколько можно спорить о том, что у Си есть принципиальные преимущества над Паскалем?
(Пора бы уже перестать путать Си с Си++.)
chiaroscuro > - безопасность (отсутствие segfault и других "приятностей") > - скорость разработки
Имхо скорость разработки - не самое важное. В смысле разница несущественная.
Опытный программист может писать безопасный код и в С++.(Если я правильно понял написанное)
Гораздо важнее скорость работы и ресурсоемкость, т.к игры очень сильно жрут процессор и память.
Прибой94 > Имхо скорость разработки - не самое важное. В смысле разница несущественная.
По всей видимости, ты не использовал ничего, кроме Си++. Иначе бы ты знал, что разница весьма существенная.
> Опытный программист может писать безопасный код и в С++.(Если я правильно понял > написанное)
Вряд ли. Но впрочем, важно не это.
В Си/Си++, если программа скомпилировалась, то это не значит, что она будет работать. А если она будет работать, то остаются возможные core dump, которые можно устранить только посредством тестирования. Тестирование не может найти все ошибки.
В современных ЯП, зачастую, если программа прошла проверку типов, то она работает. YMMV.
> Гораздо важнее скорость работы и ресурсоемкость, т.к игры очень сильно жрут > процессор и память.
Если мы все тут разрабатываем убийц Crysis, то твое утверждение верно. :)
Если казуалка будет требовать ресурсов не как казуалка это не нормально.
chiaroscuro > А вообще, к синтетическим бенчмаркам надо относиться осторожно.
я хотя бы их привел, а вы мне : мифическую скорость разработки, ошибки о которых программисту видетили не скажет компилятор...
crol > Если казуалка будет требовать ресурсов не как казуалка это не нормально.
Ты делаешь необоснованное предположение, что если игра не пишется на Си++, то она обязательно будет тормозить. Это не так.
Существует целая куча игр, написанных на Flash, Java. И ничего, работают же как-то.
> > А вообще, к синтетическим бенчмаркам надо относиться осторожно. > я хотя бы их привел, а вы мне : мифическую скорость разработки, ошибки о > которых программисту видетили не скажет компилятор...
Посмотри же другие языки. Сразу станет ясно, что не Си++ единым.
Если честно вообще не представляю как можно игру написать полностью на С++ :) , допустим даже не сложный шутер.
Это нереально, если это хобби, а не основная работа...
>А в чём у тебя сложности ?
Вся сложность описана в посте номер 8.
Хотя подавляющее большинство игр написаны все-таки на плюсах...
Вообще действительно не принципиально что использовать. Можно хоть на C# писать под .NET - что я и делаю собственно, конечно не им одним живу, возможностей пока маловато, но тем не менее...
По большей части поддерживаю Necrys - тема только похоливарить...
Сложность в том, что низкоуровневый. Нужно писать очень очень много кода. Это конечно окупается бОльшими возможностями, но релиз как правило отодвигает на неопределенный срок (участвовал в нескольких мегапроэктах).
Как хобби, даже делфи слишком сложен для игростроения, имхо. Для написания самой игры предпочел бы блиц, пурик или какой-то скрипт, понимая что убийцу крайсиса так и так не написать, тише едешь дальше будешь )) , ну это все личное мнение.
Damp > релиз как правило отодвигает на неопределенный срок (участвовал в нескольких мегапроэктах)
Это последствия неправильного планирования и рукожопых программистов.
Но при чём тут выбор языка ?