METAPROGRAMMING Telegram 129
Языки программирования для разработки игр (1/3)

Что ж, недавно писал, что обучаться линейной алгебре надо на примере работы с компьютерной графикой.

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

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

На фоне этих трёх мейнстримных вариантов есть плеяда ушедших на второй план и почти забытых AAA-движков (Source, Cryengine, Serious Engine, etc.), которыми пользуются те кто давно в них вложился, и россыпь indie-вариантов. Из последних произвольно выделю Game Maker, использовал его ещё в школьные годы: одна из моих поделок даже случайно попала в какой-то болгарский компьютерный журнал. Примерно ту же нишу, насколько можно понять со стороны, занимают Construct, Cocos Creator и мн. др.

Для тех, кто хочет написать что-то более-менее с нуля или не хочет бороться с типовыми конвенциями движков, остаётся использование "графических библиотек" (ну или "игровых библиотек", т.е. графика + ввод-вывод + звуки) – кода, который поверх вызовов API операционной системы и низкоуровневых библиотек создаёт весьма тонкую абстракцию, чтобы вещи типа инициализации окна или создания камеры делались в одну строку (вместо череды API-вызовов операционной системы и перемножения трёх матриц соответственно).

Библиотек этих десятки на любой вкус и цвет, среди энтузиастов последнее время популярна Raylib. Так и пишут: создана для любителей программировать и желающих на практике разобраться, как работают видеоигры. Чуть более тонкие абстракции дают библиотеки SDL, GLFW и др.

На самом низком уровне находятся графические API. Долгое время их по сути было два: OpenGL (всеплатформенный) и DirectX (Windows + XBox). Консорциум, отвечающий за разработку OpenGL, объявил, что дальше его развивать не будет и все усилия направит на развитие Vulcan. На устройствах Apple свой Metal. В целом на будущее стоит осваивать Vulcan (а на настоящее и в качестве ностальгии – OpenGL).

Все основные вспомогательные библиотеки и сами графические API имеют C-интерфейсы. Все распространённые языки программирования так или иначе могут его использовать (называется FFI, foreign function invocation). Если использовать полновесный движок, то к нему уже прилагается и свой язык (C++ для Unreal, C# для Unity, собственный GDScript для Godot). Если спускаться на уровень ниже, то выбор пошире.

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

Заранее всё же отвечу на один из типовых контр-аргументов к подобным оценкам: говорят, мол, "настоящий программист" (что-то из серии "настоящий мужик", т.е. виртуальная концепция для манипуляций наивными людьми) должен уметь пользоваться любым инструментом, и относиться к нему стоически. Кто подобное утверждает попросту лишён чувства вкуса (в данной предметной области), поэтому слушать их и вовсе не надо. В использовании хорошего языка есть и очевидные прагматические выгоды, на перечислении которых останавливаться не будем.

#programming



tgoop.com/metaprogramming/129
Create:
Last Update:

Языки программирования для разработки игр (1/3)

Что ж, недавно писал, что обучаться линейной алгебре надо на примере работы с компьютерной графикой.

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

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

На фоне этих трёх мейнстримных вариантов есть плеяда ушедших на второй план и почти забытых AAA-движков (Source, Cryengine, Serious Engine, etc.), которыми пользуются те кто давно в них вложился, и россыпь indie-вариантов. Из последних произвольно выделю Game Maker, использовал его ещё в школьные годы: одна из моих поделок даже случайно попала в какой-то болгарский компьютерный журнал. Примерно ту же нишу, насколько можно понять со стороны, занимают Construct, Cocos Creator и мн. др.

Для тех, кто хочет написать что-то более-менее с нуля или не хочет бороться с типовыми конвенциями движков, остаётся использование "графических библиотек" (ну или "игровых библиотек", т.е. графика + ввод-вывод + звуки) – кода, который поверх вызовов API операционной системы и низкоуровневых библиотек создаёт весьма тонкую абстракцию, чтобы вещи типа инициализации окна или создания камеры делались в одну строку (вместо череды API-вызовов операционной системы и перемножения трёх матриц соответственно).

Библиотек этих десятки на любой вкус и цвет, среди энтузиастов последнее время популярна Raylib. Так и пишут: создана для любителей программировать и желающих на практике разобраться, как работают видеоигры. Чуть более тонкие абстракции дают библиотеки SDL, GLFW и др.

На самом низком уровне находятся графические API. Долгое время их по сути было два: OpenGL (всеплатформенный) и DirectX (Windows + XBox). Консорциум, отвечающий за разработку OpenGL, объявил, что дальше его развивать не будет и все усилия направит на развитие Vulcan. На устройствах Apple свой Metal. В целом на будущее стоит осваивать Vulcan (а на настоящее и в качестве ностальгии – OpenGL).

Все основные вспомогательные библиотеки и сами графические API имеют C-интерфейсы. Все распространённые языки программирования так или иначе могут его использовать (называется FFI, foreign function invocation). Если использовать полновесный движок, то к нему уже прилагается и свой язык (C++ для Unreal, C# для Unity, собственный GDScript для Godot). Если спускаться на уровень ниже, то выбор пошире.

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

Заранее всё же отвечу на один из типовых контр-аргументов к подобным оценкам: говорят, мол, "настоящий программист" (что-то из серии "настоящий мужик", т.е. виртуальная концепция для манипуляций наивными людьми) должен уметь пользоваться любым инструментом, и относиться к нему стоически. Кто подобное утверждает попросту лишён чувства вкуса (в данной предметной области), поэтому слушать их и вовсе не надо. В использовании хорошего языка есть и очевидные прагматические выгоды, на перечислении которых останавливаться не будем.

#programming

BY Metaprogramming


Share with your friend now:
tgoop.com/metaprogramming/129

View MORE
Open in Telegram


Telegram News

Date: |

Telegram channels fall into two types: Telegram offers a powerful toolset that allows businesses to create and manage channels, groups, and bots to broadcast messages, engage in conversations, and offer reliable customer support via bots. Some Telegram Channels content management tips Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place. How to create a business channel on Telegram? (Tutorial)
from us


Telegram Metaprogramming
FROM American