Способы разработки звуковых игр

Здравствуйте, уважаемые пользователи «Blind-games».
Сегодня мы с вами разберем все способы создания аудио игр.
Рассматривать мы будем не конструкторы, не известный всем BGT, а способы программирования.
1. Использование языков программирования вместе с API и звуковыми движками:
Если вы работаете с одним из существующих языков программирования для прикладного программирования, не важно это Pascal, C++, C#, VB или PB, на них легко можно написать воспроизведение звука, и воспроизведение 3d звука.
Для этого можно использовать либо API, либо звуковые движки. Рассмотрим сначала, что такое API, так как многие могут не знать.
API или библиотека — это файл, который содержит в себе классы и функции, помогающие с чем-либо.
Например у меня есть написанная мной ради эксперимента динамическая библиотека print.dll, в которой есть класс консоль, и функция для открытия консоли, вывода информации, и закрытия.
Например мы в программе подключили нашу библиотеку. И пишем:
cons = print.console() # Создание объекта класса console
cons.open() # Функция открытия консоли
cons.print(«Hello, world») # Выводим в консоль Hello, world
cons.close() # Закрываем консоль
Наверняка вы сейчас думаете о том, что API очень хорошая вещь, и нужны эти библиотеки всем. Здесь могу огорчить не знающих математику.
Если в библиотеке происходят какие-то вычисления, программист, который пишет программу, должен делать их сам.
На примере звука, подходящей библиотекой является DirectSound, что входит в DirectX.
Но для воспроизведения 3d звука, там нужно знать линейную алгебру, векторную математику и тригонометрию.
Теперь поговорим о звуковых движках.
Звуковой движок — это библиотека, в которой все вычисления уже произведены. Осталось лишь определить устройства воспроизведения, и если 3d звук, определить координаты в пространстве по осям x y z.
Такими библиотеками являются популярные bass, fmod, OpenAl.
Для некоторых языков есть свои библиотеки, например, для C#, есть библиотека OpenTk.
2. Использование специальных языков программирования:
Для игр есть и свои языки программирования. И все разработаны для графических игр, но доступны и для звуковых, так как имеют отличную работу с 3д звуком.
Я сейчас не говорю про Unity, что не доступен незрячим. Но у меня есть информация, что можно использовать API Unity в обычных языках программирования.
Есть 2 популярных языка. Это BlitzBasic и DarkBasic.
Профессиональные программисты просто таки ненавидят языки, у которых в названии есть basic, но ведь на блитце или дарке, можно легко сделать игры, что будут похожи на легендарные Call Of Duty, или даже GTA.
DarkBasic — для любящих сложности. Без вычислений там не обойтись. И постоянно для 3d звука нужно следить за координатами объектов — источников и слушателя.
В блитце проще, там при создании слушателя указывается объект, а при воспроизведении источник. И про координаты там нет ни слова.
Пример на BlitzBasic:
Graphics3D 800,600,16,2 ; Указываем 3д режим, разрешение экрана, качество изображения и тип окна (подробней в учебниках)
SetBuffer BackBuffer() ; Устанавливаем буффер
player=CreateSphere() ; Создаем объект игрока, и указываем ссылочную переменную player
cam=CreateCamera(player) ; Создаем камеру (в звуковых играх без нее никак), и указываем цель слежения player
cube=CreateCube() ; Создаем куб для источника звука
PositionEntity cube,0,0,10 ; Перемещаем куб в координаты 0,0,10
list=CreateListener(cam) ; Создаем слушателя, и привязываем его к камере
sound=Load3DSound(«Sounds\\voy.mp3») ; Загружаем 3d звук
repeat ; Начало цикла
if KeyDown(201) MoveEntity player,0,0,1 ; Если удерживается стрелка вверх, то двигаем игрока вверх по оси z
if KeyDown(208) MoveEntity player,0,0,-1 ; Если удерживается стрелка вниз, то двигаем игрока вниз по оси z
if KeyDown(203) TurnEntity player,0,1,0 ; Если удерживается стрелка влево, то поворачиваем игрока влево по оси y
if KeyDown(205) TurnEntity player,0,-1,0 ; Если удерживается стрелка вправо, то поворачиваем игрока вправо по оси y
if MouseHit(1) EmitSound(sound,cube) ; Если нажата левая кнопка мыши, то воспроизводим звук из куба
UpdateWorld()
RenderWorld()
Flip
until KeyHit(1) ; Если условие, что мы нажали эскейп ложно, то продолжаем цикл. А если верно, завершаем
end ; завершаем работу программы
И таким образом, 19 строчек кода делают то, что на C++ заняло бы строчек 200.
Здесь мы пишем просто логику и алгоритм игры, а все расчеты и т.д язык берет на себя.
Недавно движок Blitz3D стал OpenSource проектом, то есть код открыт для всех. И потому он стал бесплатным, то есть доступна функция компиляции. И после нее, все будут думать, что вы писали мучительно игру на C++. А там даже OpenGl не исправит огромного кода.
Если бы сейчас не было Unity, я думаю даже вы, могли очень много заработать на создании игр в Blitz3D используя простейший язык BlitzBasic.
Правда если вы захотите сделать шутер, вы поймете, что такое настоящая логика. Например я месяц думал как сделать стрельбу и что бы курсор смотрел на объекты. Не забывайте, что язык для графических игр, и думать придется много о чем. Не только о курсоре, который должен смотреть на объекты нормально по оси y.
Мои советы:
Если вы хотите создавать игры проходя через большие трудности, учите любой язык программирования, и пишите игры. Скажу, не спишите сразу создавать игры. Поднимайтесь по одной ступеньке. От консолей к GUI приложениям, от GUI например к серверам, потом поделайте полезные приложения, развивайте алгоритмическое мышление, и только потом, смотрите в сторону игр. Опять же не спишите к шутерам. Начать можно с текстовых игр, потом научитесь воспроизводить простой звук, потом делайте что-то сложнее, сложнее.
Игры делать не такая и простая штука. Это целая профессия, которой нужно учиться. И если игры звуковые, это еще не значит, что будет все просто.
Если вы хотите быстро начать делать игры, изучайте BlitzBasic, потратьте еще недельку на практику и чтению встроенной справки по командам, изучайте все команды. Добавлю, перевод справки по командам в интернете найти достаточно просто.
Когда создадите подобие COD, GTA или Mafia, можете считать, что вы уже освоили все, что нужно.
Если возникнут любые вопросы, задавайте в комментариях. Я с удовольствием помогу.
И если вы прочитали эти 6368 символов, то у вас все обязательно получится. Главное стремиться к цели, а не бояться ошибок.