Прийшов час осідлати справжнього Буцефала🏇🏻Приборкай норовливого коня разом з Newxel🏇🏻Умови на сайті
×Закрыть

Аудио игры и игровой движок

Здравствуйте.
Я слепой. Буквально. Ничего не вижу.
Если не знаете, как слепые используют устройства и программируют, можете почитать здесь:
habr.com/ru/post/260463
habr.com/ru/post/336600
Зрение я потерял в 5 лет. Что может делать пятилетний ребенок за компьютером? Правильно, играть. К тому времени, из игр я видел только детские игрушки. Шутеров в глаза не видел.
Далее, я познакомился с моим первым шутером. Call Of Duty.
Слепые и видео игры, может, звучит невероятно, но с помощью 3D звука я вполне мог найти противника и убить его. Понятно, что не все миссии я мог пройти. Но были те, которые проходил.
Далее я познакомился с такими играми, как Grand Theft Auto, Postal 2, Mafia 2 и другими.
Меня всегда привлекали игры в плане их создания. Я делал скрипты для существующих игр, хотел начать создавать свои.
У слепых есть свои игры. Аудио игры. И шутеры среди них тоже есть, как CS, но без графики.
Со временем, я загорелся желанием не писать скрипты для существующих игр (в 10 летнем возрасте я во всю строчил скрипты под GTA San Andreas), а создавать собственные аудио игры.
Тогда Шведский разработчик создал свой движок аудио игр. Как он говорил в его интервью, он слишком много тратил времени при разработке игр на техническую часть, а хотел больше сосредоточиться на логике игры. Потому, используя C++, он создал движок таких игр, который использовал язык Angel Script.
К сожалению, этот движок прекратил поддерживаться. Потому те, кто программировал на нем, рано или поздно начали переходить на языки программирования.
Тогда я начал выбирать языки программирования.
Мне хотелось изучать тот язык, который и с аудио играми поможет, и другие задачи сможет помочь решать. А надо сказать, что я человек амбициозный, и одно время очень горел встраиваемыми системами. Но меня всегда мутило от низкого уровня, потому я смотрел в сторону Arduino, Raspberry Pi.
Соответственно, я пытался найти эдакое уникальное решение. При этом я четко понимаю, чем точно не хотел бы заниматься.
Среди blind сообщества за рубежом, стал достаточно популярным для разработки игр Python. Я никогда этого не понимал. Как скриптовый язык? Очень даже. Для игры использовать? Интерпритируемость, динамическая типизация — рождают проблемы. А про кросс-платформенность я вообще молчу.
Python крут. Это правда. Но не знаю. Мне всегда нравился более четкий, определенный синтаксис, модификаторы доступа, типы переменных. Кроме того, Python медленный. И я не знаю, будет ли этого достаточно для реально хороших аудио игр.
В видео играх, много идет на графику. Здесь графики нет вовсе. Да и физики, кроме летящих пуль. Но всегда преследует мысль, что вот придет время, когда этой производительности Python будет недостаточно.
Unity нам не доступен. Главным образом потому, что там нельзя обойтись без Unity Editor. Это не библиотека, не API.
Проблема еще в том, что мне не нравится низкий уровень. Больше фана, когда я пишу логику. Передвижение игрока по координатам и т.д, а не как он ходит, и прочую техническую часть.
Когда я писал скрипты под GTA 5 на C#, это был реальный фан. Простые условия, методы, и все это работает! Когда я посмотрел на C++ код для таких же операций, просто взрыв мозга. Проверить, что клавиша нажата. Более того, нужно проверять, когда она нажата, когда отпущена. Бррр, меня мутит от этого.
C# кажется привлекательным вариантом, но я никогда не слышал об Android приложениях, созданных с Xamarin или Mono.
Java не позволяет писать под IOS, когда C# позволяет. А еще бесит пунктик в правилах кодописи в Java, когда левая фигурная скобка не на отдельной строке, а в конце строки с объявлением функции, условием и т.д.
Хотя сейчас я понимаю, что от C++ мне не убежать. Никак.
Возникла идея разработки игрового движка. Не аудио игр, а вообще, любых игр.
Таких движков полно, да. Но, покажите мне игровой движок, который был бы API, и который был бы кросс-платформенным.
Идея в чем. Создать движок в виде API, динамической библиотеки. И чтобы этот движок можно было использовать на любых языках программирования, и под любые платформы.
Представьте, команда разработчиков. Работает над одним игровым проектом. Но на разных яп, с одним движком.
Но думаю, это дело нескольких лет. Потому что на C++ простую игру написать непросто, про движок так я вообще молчу...
И вот хотел бы обратиться к вам с двумя такими вопросами:
1) Насколько сложным может быть решение задачи разработки такого игрового движка;
2) Какой язык программирования вы могли бы посоветовать для аудио игр?
Учитывая, что видео игры требовательны из-за графики, а в нашем случае ее нет, можно было бы взять и Python. Но я бы не очень доверял такие проекты интерпритируемому языку с динамической типизацией. Сейчас я выбираю между C# и Java. C# выигрывает за счет Monogame...
Или может, бросить все и лучше сесть на C++?
Посоветуйте, пожалуйста. Буду очень благодарен за ответ.
Заранее благодарен!

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

В качестве дополнительного медиа можно использовать вибрацию (геймпад, телефон), например, для ориентации в пространстве.

К слову, в противовес C# + MonoGame у Java есть LibGDX. Они чем-то схожи, но у LibGDX больше всего доступно из коробки, больше материалов в сети и больше коммьюнити. Хотя, лично мне MonoGame больше нравится, как и тебе :)

Вопрос тут в другом, ведь графическая подсистема, насколько я понимаю, тебе не нужна и, скорее всего, тебе больше нужны аудио возможности фреймворков.
Потому, я бы посоветовал изучить FMOD (www.fmod.com/core). Это продвинутая и, на мой взгляд, одна из лучших звуковых библиотек доступных на сегодняшний день, у которой есть беспланая лицензия.
FMOD дает простой API для позиционирования звука в пространстве, для наложения фильтров и эффектов, так что не придется копаться в низкоуровневых реализациях 3D звука.
Плюс, я точно видел у FMOD официальные биндинги для C#, так что если они еще где-то есть и поддерживаются, то не придется копаться в С++.

Как альтернативу FMOD, можно еще глянуть фреймворк Wwise (www.audiokinetic.com/products/wwise). Он тоже предназначен для работы со звуком и решает те же задачи, что и FMOD, но я лично с Wwise не работал, так что что-либо конкретное про него сказать не могу.

Еще, кстати, есть BASS (ru.wikipedia.org/wiki/BASS). Библиотека старая, но судя по всему, еще живая. И тоже умеет позиционировать звук в 3D пространстве. Бесплатная для некомерческого использования.

OpenAL лучшее решение. Суть не в этом. Суть в том, что движки позволяют иметь кросс-платформенность. Вот захочу я версию своей игры под Android, и чего делать...
LibGDX нам тоже недоступна. Monogame вполне. На Monogame даже создавались некоторые игрушки.
Ну или есть еще вариант — учить C++, игры писать на Python, и делать вставки на C++ там, где нужна производительность. Но про кросс-платформенность тут тоже придется забыть.

А что с кросс-платформенностью? Браузеры вот на С++ написаны, и ничего.

Действительно, OpenAL — тоже варинат. Просто ты писал о том, что не хочешь писать низкоуровневый код. А OpenAL как раз куда более низкоуровневая (и старая, последний официальный релиз — 10 лет назад) чем то, о чем я писал выше. В любом случае неясно, зачем тут вообще нужен Monogame, если графика не нужна, а библиотеки для работы со звуком и так самостоятельные и могут быть собраны отдельно под разные платформы. Ну, хозяин — барин.
К слову, вспомнился еще SoLoud (sol.gfxile.net/soloud)

Я бы обратил внимание на игры с упором в текст sunlessskies.gamepedia.com/...​ficial_Sunless_Skies_Wiki

Как играть в камень-ножницы-бумага, чтобы соперник не подслушивал?

Вот так — попробуй samsara.storynexus.com
Это как раз движок для текстовых игрух. И в результате народ как достижение в резюме приводит «писал тексты для Fallen London».

Есть MUD игры. Но мне интересна сфера именно аудио игр. Повторюсь, такие игры уже существуют.

Игры играм рознь. Это глупо — путаться переносить визуальные игры на аудио. Всё равно что книги танцевать.
Какие игры на самом деле могут работать на аудио, какой жанр без лишнего обучения может взлететь? В идеале если это казуалка.

Могу перефразировать: в видео-играх компьютер выполняет роль визуальной памяти прежде всего. То что видишь на экране, помнить не надо. А если видео нет, если ничего другого столь же быстрого нет и не предвидится, получается 2 жёстких ограничения: приходится надеяться на собственную память, и приходится крайне сильно ограничивать творческие способности по аудио.

Причина проста: креативность и память — заклятые враги. Там где есть свобода творчества, там память работать не может, поскольку вариации всегда допустимы. Если зрения нет, аудио отдать под память, то это выбор в пользу тупых людей на уровне охранника казино? И чтобы в это сыграть надо быть тупым?

Я разрешения парадокса не вижу. От компьютера нужна обратная связь, и не только аудио. Либо же не столько аудио, сколько положенные на аудио эффекты. Но в общем случае сильно не помешали бы другие устройства и прямой, и обратной связи. Не наушниками едиными.

Можно текстовуху переложить на аудио и приделать распознавалку речи.
Когда-то были книжки-квесты, где выбираешь вариант решения, а там написано, какую страницу открыть для следующего шага. В принципе, большинство РПГ то же самое используют для диалогов.

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

Не то чтоб это невозможно было, просто следует предусмотреть в движке дополнительные особенности, возвращающие предсказуемость перехода.

Ну не знаю. Аудио игра, где тебе говорят «ты видишь много троллей греются у огня. что будешь делать» и перечисляют выбор: «можно уйти, пока они тебя не заметили, можно попытаться спереть кусок шашлыка, а можно подсыпать снотворного в пиво, а можно громко заорать и убежать в кусты, чтобы когда тролли погонятся, девушка наелась оставшихся шашлыков». Ты говоришь: «я заору и убегу в кусты», игруха парсит, что ты сказал, и переходит к следующей части истории.
Думаю, такое могло бы быть популярным для поездок в транспорте)

В одном...
а) большом городе;
б) маленьком селе;
в) старом доме с привидениями.

Жил один...
а) маленький мальчик;
б) хоббит;
в) среднестатистический-ничем-не-примечательный паренек.

Из родных и близких у него...
а) никого не было, все умерли;
б) были дядя с тетей, которые его терпеть не могли;
в) был воспитавший его друг умершего отца (никому не известный, даже отцу).

И вот однажды к нему подходит...
а) старый седой волшебник;
б) измученный и израненный путник;
в) странно выглядящий человек.

И говорит:
а) — Ты — избранный!
б) — Ты — избранный!!
в) — Ты — избранный!!!

Герой...
а) очень удивляется;
б) ничуть не удивляется;
в) ничему не верит.

Тогда пришелец говорит:
а) — Я здесь, чтобы научить тебя всему, что знаю сам.
б) — Беги, прячься скорее, ОHИ идут за тобой.
в) — УМРИ!!!

Герой со свистом покидает родные места. Он бежит...
а) к своим знакомым;
б) к знакомым странного визитера или самому визитеру;
в) куда глаза глядят.

Странный визитер тем временем...
а) бежит рядом;
б) бежит поодаль;
в) лежит мертвый.

В пути герой встречает...
а) старого друга;
б) нового друга;
в) свою первую (и последнюю) любовь.

Они вместе вскоре атакованы...
а) посланцами злых сил;
б) посланцами добрых сил;
в) друг другом.

Избавившись от неприятелей, герой с компанией добирается до места, где...
а) им помогают;
б) их посылают на;
в) им помогают, а потом посылают на.

В пути героя учат убивать...
а) какой-нибудь наставник;
б) мелкие злодеи (по 2 медные монеты за штуку);
в) все, кто встречается ему на пути;

Герой становится...
а) круче наставника;
б) круче автора;
в) круче не бывает.

Как оказывается, враг героя -
а) темный властелин;
б) светлая голова;
в) абстрактное зло в серую полосочку.

В процессе тяжелого, тупого и нудного разговора выясняется, что герой -
а) наследный принц;
б) будущий спаситель всего человечества;
в) хрен моржовый.

Вскоре наступает...
а) финальная битва между всеми возможными странами, народами и божествами;
б) финальная борьба за мир между героем и главным злодеем;
в) неожиданный конец света.

Hапарники героя...
а) умирают от рук злых сил;
б) обижаются и покидают героя;
в) погибают от собственной глупости, произнеся перед этим торжественную речь.

Сила злодеев такова, что их можно победить только...
а) сбросив все, что осталось, в жерло вулкана;
б) найдя древний артефакт (или потеряв, если уже нашли);
в) во сне.

В процессе финальной схватки герой получает...
а) 351 рану (из них 177 — в одно место);
б) 5000 золотых и по морде;
в) «Оскара» за лучшую мужскую роль.

Hо он встает и говорит:
а) — Со мной Сила!
б) — Умри, презренный!
в) — Уйди, противный!

Злодей от ужаса...
а) раскаивается и уступает место бабушке;
б) меняет фамилию;
в) притворяется мертвым.

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

Абстракты и абстракты абстрактов и есть метапрограммирование. Они же макросы и макросы из макросов. Черт сидит в деталях. Идеи ослепляют. Сделать первый шаг труднее.

Если не знаете, как слепые используют устройства и программируют, можете почитать здесь habr.com/ru/post/260463

Это не вызов дьявола, а всего лишь чтение текста экранным ридером. Теперь я понимаю, для кого быстроговорят на радио в конце рекламы :)

У меня, кстати, не такая скорость.

Подписаться на комментарии