Неожиданное использование Джулии могло бы быть невероятно жизнеспособным, если бы не это ...

Так что в последнее время я экспериментирую и привыкаю к ​​разработке игр в качестве хобби. Хотя в некотором смысле это определенно похоже на написание любого другого программного обеспечения, что-то во всех составляющих, вступающих в игру, чудесным образом очаровывает меня в программировании игры. Вот небольшая демонстрация, которую я записал, чтобы показать созданный мной алгоритм модульной загрузки данных векторных изображений, который я разместил на Youtube для тех, кто заинтересован:

Но все эти попытки разработки на различных языках, включая C #, GDscript (Godot) и C ++ (Steamworks API), заставили меня много думать о моем любимом языке программирования:

Красивый,

Великолепный

В конце концов, Джулия и игровое программирование кажутся союзом, заключенным на небесах. Для игр требуется быстрый язык, основанный на данных. Джулия сейчас значительно быстрее, чем король сценариев в программировании игр. Кроме того, код Julia можно писать быстро и эффективно, особенно по сравнению с таким языком, как C ++.

Текущие недостатки

Есть два основных языка, которые используются для разработки современных игр (по большей части) C # и C ++. C ++ уже несколько десятилетий является доминирующей силой в компьютерной индустрии и, безусловно, является отличным языком. У C ++ есть немалая доля преимуществ предметной области, заключающаяся в том, что он объектно-ориентирован и в некоторой степени типизирован. Это огромный шаг от другого языка, который, скорее всего, используется гораздо чаще, - C #. C # - это высокоуровневый язык сценариев со статической типизацией, который можно сравнить с таким языком, как Python,

хотя это могло быть немного сложнее.

Если вы настоящий Джулиан, вы, возможно, поняли, что мы можем сказать то же самое о Джулии.

«Julia - это высокоуровневый язык сценариев со статической типизацией, который можно сравнить с таким языком, как Python».

Самым большим недостатком использования C #, вероятно, является его проприетарное лицензирование. C # - странный случай, когда только некоторые компоненты являются открытыми, а другие скрыты от просмотра. Кроме того, само собой разумеется, что C # действительно медленнее, чем Julia.

С другой стороны, C ++, вероятно, недостаточен для разработки игр. Эта проблема? Переход с такого языка, как C # или Python, на C ++ может вызвать неприятные ощущения. На самом деле я выучил C ++ как свой первый язык программирования, когда был намного моложе по какой-то причине, и

это определенно сбивало с толку.

Использование C ++ сейчас расстраивает меня, потому что я не могу выполнять функции, как в языке более высокого уровня, а операция, на программирование которой у меня обычно уходит тридцать минут, быстро превращается в час или полтора. Конечно, это не вина C ++, но для меня не имело бы большого смысла использовать C ++ для всего, когда Джулия может делать то, что мне нужно.

Юлия

Я думаю, что одним из самых больших преимуществ Джулии в мире разработки игр будет ее огромная скорость. Синтаксис Джулии намного проще, чем синтаксис C #, при этом он работает примерно в 1,5 раза быстрее. Переход с C # на Julia тоже не был бы слишком большим скачком. И Julia, и C # являются языками программирования со статической типизацией, которые фокусируются на неизменности данных и диспетчеризации типов.

У Юлии есть как раз «правильная медлительность» и для игр. Самым большим препятствием для Джулии с точки зрения скорости, вероятно, является время предварительной компиляции и запуска. Хотя в некоторых случаях эти проблемы могут быть значительными, Julia по-прежнему работает быстрее, чем C #, и время запуска в играх преобразуется во время загрузки. И с учетом того простого наблюдения, что большая часть времени загрузки тратится на перемещение данных, а не на загрузку модулей, я думаю, можно с уверенностью сказать, что это беспокойство будет нулевым.

Разработчики Julia уже работают над некоторыми действительно крутыми проектами Julia Game, которые могут вас действительно удивить. Вот загрузчик карт для файлов карт .BSP:



А вот очень простой клон шарика, написанный на Julia:



Помимо этих демонстраций, у нас также есть соответствующие инструменты, необходимые для разработки игр внутри Julia. Например, SDL2 (низкоуровневый) и SFML (высокоуровневый) имеют порты Julia, которые определенно стоит проверить.

Стрела в колено

У Джулии есть один существенный недостаток в разработке игр на данный момент. Это проблема не только разработчиков игр, но и разработчиков программного обеспечения, разработчиков сценариев и даже специалистов по данным.

У Джулии есть набор инструментов для компиляции исполняемых файлов, но его просто пока нет. Похоже, что многие из них все еще находятся в разработке, и Julia computing не обязательно отдает им приоритет. Так что я думаю?

Я думаю, что у Джулии определенно есть потенциал обогнать такой язык, как C # mono или C ++, благодаря простому синтаксису и быстрой скорости, но я думаю, что Джулии еще предстоит пройти определенный путь, прежде чем это станет реальностью. Хотя я, конечно, всегда буду сосредоточен в первую очередь на статистической и аналитической стороне Джулии, я был бы абсолютно рад, если бы в версии 1.0 появились лучше скомпилированные исполняемые файлы. Из того, что я знаю о скомпилированных исполняемых файлах Джулии (я пробовал, но последние файлы .x64_x86 никогда не запускались), они делают какое-то странное сохранение состояния системы для сред зависимостей. И я думаю, что это то место, где я это оставлю, Джулия взяла все; менеджер пакетов, язык, статистическое программирование и просто улучшил его. Я понимаю, почему реализация чего-то вроде скомпилированных исполняемых файлов без изначально поддерживаемых заголовков может быть реальной проблемой. Имея это в виду, я буду терпеливо ждать,

но вы не можете ожидать, что я не буду в восторге!