Подтвердить что ты не робот

Язык программирования D для разработки игр

Недавно я был обеспокоен, потому что достиг точки, в которой С++ (даже 0x) чувствовал себя очень ограниченным, поэтому я начал искать альтернативы.

Забудьте Java, С#, Python или Ruby. Мне все еще нравится низкоуровневый характер С++, и я не люблю виртуальные машины. Кроме того, я разработчик игрового движка, поэтому мне приходится разрабатывать основные подпрограммы, которые должны быть очень быстрыми, и в последнее время я проголодался по поводу выразительности кода. С++ - это почти язык для меня, но есть много исключений из того, как использовать шаблоны, и GCC не оптимизирует материал, как я и надеялся, что это будет.

Итак, я подумываю начать изучать D.

Как вы думаете, это будет достаточным для моих потребностей в качестве разработчика игр? Я опасаюсь, потому что я никогда не слышал, чтобы D использовался для этого.

Спасибо!

4b9b3361

Ответ 1

В последнее время я узнал совсем немного D, хотя еще многое предстоит сделать. Из того, что я узнал до сих пор, я бы сказал, что, хотя язык отлично подходит практически для всех, компиляторы и библиотеки, которые сейчас находятся, не самые лучшие, и поэтому вы никогда не можете быть уверены, что компилятор без ошибок (это не так). Для игрового программирования вам нужно быть уверенным в том, что сбор мусора происходит, например, и что компилятор неправильно оптимизирует важный код... такие вещи, как это, возможно, заставят вас заново подумать, используя язык. Однако сам я считаю, что сам язык лучше всего (это полностью субъективно), и я думаю, что единственным препятствием для его использования является отсутствие идеальной реализации, а не самого языка.

Ответ 2

Я использовал D 1.x для игр и демонстраций, некоторые из них являются открытым исходным кодом открытого доступа (A, B, C, D, E).

D может дать вам производительность, неслыханную на С++ - землю, если вы готовы заплатить высокую цену за споры со всеми о том, почему вы используете D.

Если вы идете по этому маршруту, я советую вам выбрать D 2.x, Derelict и Visual D (подсказка для будущих читателей: это 2011 год).

Что касается развития игры:

  • D GC не является реальной проблемой. Это если вы выделяете слишком много в фрейме, но об этом. Классические методы объединения, повторного использования и т.д. Работают.

  • вы можете написать сборку x86 через Linux, Mac и Windows. Также статичный, если позволяет довольно забавные шаблонные голой функции сборки.

  • встраивание границ модулей работает без переключателя оптимизации времени соединения

  • Мне легче поддерживать версию отладки и выпуска (по сравнению с С++)

  • избегать новых функций и выбирать компиляторы консервативно... как и в С++

Ответ 4

Ну, это не нравится, если вы используете D, вам нужно все строить с нуля. Например, вы можете использовать:

  • GLFW для ввода/вывода
  • Horde3D как механизм рендеринга
  • OpenAL для звука
  • Пуля для физики
  • Lua для создания сценариев
  • lzo для быстрой декомпрессии
  • возможно оранжевый для сериализации

Я не уверен в оверлеях. Это довольно прочная база, которая, надеюсь, будет работать для меня:)

Удачи!

Ответ 5

D - отличный язык для видеоигр, он имеет все возможности для быстрой разработки исполняемого файла:

  • Он быстро компилируется в собственный код и работает быстро.
  • Имеет модульное тестирование, профилирование и покрытие кода из коробки.
  • Сбор мусора по умолчанию, но вы можете использовать свои собственные распределители памяти.
  • ABI-совместимая с C, нет никакой платы за оплату вызова для родных библиотек.
  • Безопасность потоков в системе типов: общие, чистые и неизменные отборочные.
  • Безопасность памяти в системе типов: @safe, @trusted, @system.
  • Оценка функции времени компиляции, генерация кода и т.д.

Вам не нужен отдельный язык сценариев, никаких дополнительных шагов компиляции для генерации кода, вы не ограничены моделью памяти виртуальной машины, когда производительность важна для систем низкого уровня, но вы получаете всю производительность и безопасность сценариев и управляемых языков для вашей логики игры. Вы даже можете выбирать между процедурными, объектно-ориентированными, функциональными, универсальными или мета-парадигмами программирования для данной проблемы.

Ответ 6

В D proramming они:

  • derelict, которые поддерживают opengl 3 и opengl 4

чаще всего в языковом программировании opengl 3 и 4 не поддерживается

  • yage бесплатный движок 3D-игр, вы можете помочь

Маленькое практическое руководство: http://blog.fedora-fr.org/bioinfornatics/post/D-programming-OpenGL-and-MVC-Pattern

Для использования RAII в D они являются областью ключевого слова, она очень мощная

Ответ 7

Добро пожаловать в 2014!

Последняя версия D составляет 2.067 с момента написания. D немного неустойчив относительно auto, но кроме этого, я не понимаю, почему бы не использовать D. Компиляторы значительно улучшились.

D, на мой взгляд, легче читать, чем С++, и легче учиться. Он содержит интерфейс для C и частичный интерфейс к С++. Он даже позволяет встроенную сборку, которая может взаимодействовать с вашими переменными. Стандартная библиотека D называется Phobos.

Я очень рекомендую D. D сделать для эффективности. По словам Адама Д. Руппе, "[С] одинаково быстро". И C - один из самых быстрых языков. Поэтому, если вы хотите построить игру со скоростью C и высокоуровневыми возможностями С++, D находится там между ними. Если у вас есть вопросы, не стесняйтесь присоединяться к irc.freenode.net #d.

Подводя итог, D - это в основном безопасная версия С++. Хотя язык является многопарадигмой, включая ООП, большое внимание было уделено парадигме FP, используя функции pure и неизменность. Все объекты имеют свойство init, поэтому, если вы объявляете 'int foo;', оно инициализируется int.init. Да, есть еще указатели. Указатели в D называются lvalue, а значения называются rvalue. Lvalue всегда указывает на r-значение.

Для получения дополнительной информации посетите официальный сайт D, http://www.dlang.org/.

Ответ 8

Люди, называющие себя "team0xf", это полностью в D1.

Ответ 10

Я с нетерпением жду возможности изучения языка D:)

Но есть одна вещь, которую нужно помнить: хороший язык хорош, но вам, как разработчику игры, также нужны инструменты (например, библиотеки) для выполнения ваших ставок. И у немногих хороших библиотек в настоящее время есть привязки к D. Однако я знаю один, который, скорее всего, (но не обязательно) имеет:

Ogre - одна из ведущих, если не ведущих, свободная-как-в-свободе библиотека для всех ваших портативных 3D-графических потребностей.

Конечно, вам нужно больше, но это в значительной степени зависит от вашей игры.

Я не знаю, насколько легко или сложно сделать привязки к D для библиотеки С++. Это может быть сложно, может быть легко и несколько автоматизировано. Последнее было бы очень возможно, потому что, как я понимаю, языки очень близки друг к другу, а разработчики D, вероятно, имели С++ в виду много времени.

Надеюсь, что это поможет.

Ответ 11

С другой стороны, D компилируется в одни и те же объектные файлы (хотя формат OMF) как C/С++. Можно предположить, что D-оптимизация сборки сопоставима с C/С++, независимо от того, что сборка всегда должна оптимизировать, если хотите.