synthWave — основной компонент звукогенератора bfxr версии 1.4.1

Компьютерная генерация

Это пост о том, по каким принципам и в каком порядке генерируется звук в bfxr — популярном в среде инди-геймдевелоперов генераторе аудио, доступного на момент написания поста по адресу www.bfxr.net.

Я долго думал, как назвать этот пост (на самом деле вру — не долго, а просто сильно), и решил назвать его так, как называется функция генерации звука в файле /synthesis/Synthesizer/SfxrSynth.as, доступная на всё тот же момент написания поста, здесь - https://github.com/increpare/bfxr/blob/master/src/com/increpare/bfxr/synthesis/Synthesizer/SfxrSynth.as. А потом передумал, и назвал более понятно.

На этом месте я хотел присоединить копию кода этой функции в спойлере, но так как вместо спойлера на Коленке сейчас подрабатывает спойлер, идентичный натуральному (в котором не работает ни перевод строки, ни HTML-разметка с <p></p>), то я вписал этот код в конец поста, без спойлера. Это может кому-нибудь пригодиться лет через 10-20, если репозитарий increpare на github'е, откуда я это изначально взял (см. ссылку с .as-файлом), отвалится. Правда, там он идёт с большим межстрочным интервалом, и без отступов, но уж как есть. На чёрный день сойдёт. (ведь когда наступит апокалипсис, все ведь резко бросятся генерировать звуки, не так ли?!)

Краткая историческая справка: bfxr это доступная в онлайне расширенная версия as3sfxr, которая является портом на ActionScript исходного генератора sfxr, написанного неким Dr. Pepper для использования на Ludum Dare. bxfr — авторства increpare, довольно известного самого по себе инди-девелопера. А вот чей as3sfxr, я не помню, и это тут не релевантно.

Общая схема блоков генерации

  1. Repeat
  2. Change pitch
  3. Delta Slide
  4. Slide
  5. Frequency Cutoff
  6. Vibrato
  7. Sweep square duty
  8. Attack-Sustain-Decay envelope
  9. Flanger offset
  10. HP Filter Delta Cutoff
  11. Random noise generation
  12. Tone generation
  13. LP Filter
  14. HP Filter
  15. Flanger effect
  16. Apply Master volume * Envelope volume.
  17. Bit Crush effect
  18. Compressor

Подробнее о блоках


Читать дальше...

Генерация мира: Ландшафт и характеристики местности

Что нам стоит мир построить?

Задачи генерации целого мира в игре никогда не давала мне покоя. Полностью созданный мир на основе псевдо-случайных чисел делает опыт каждого игрока уникальным. Вообразите себе не только случайную карту мира, но и случайные квесты, случайные подземелья, случайных NPC. Абсолютно недетерминированный игровой процесс создает ощущение… магии.
 
Когда игра сама создает себя — это искусство, это волшебство. Никогда нельзя быть уверенным в том, что тебя будет поджидать в подземелье, какое задание ты получишь, что произойдет, если ты откажешься делать что-либо при разговоре с NPC.
 
В этом цикле статей я расскажу про генерацию карты мира, ландшафта, природных зон.
 
Интересно? Прошу под кат!

Читать дальше...

jSFXR

Блоговство
-Всем привет! я jSFXR!
-Что ты такое?
-Я как SFXR, только яваскрипт
-нононо! Ведь тебя можноисполЬЗОВАТЬ ПРЯМ В БРАУЗЕРЕ!
-Конечно
-А ну-ка иди сюда!
 
Так я и сделал. И вот он, выпущенный уже год назад плагин для Construct 2:


 
Пост написан для юзеров констракта (здесь обитающих или просто мимо проходящих), и для всех кому просто интересно.

IF understand_and_interested = true THEN GOTO under_cut ↓

Читать дальше...

Ищу игру: «бродилка по файловой системе»

Компьютерная генерация

Где-то в начале 2000-х я читал электронную версию «Энциклопедии компьютерных игр — 3000». Прям с вот такого диска:

Спойлер
показать

Как я ни старался, какие хитрые запросы не писал в Гугл, я нужное мне тут название игры не нашёл. Возможно, я уже что-то помню не так, но это не имеет никакого значения, так как идея существует здесь и сейчас, я её отчетливо вижу и прямо тут сформулирую. Так вот — где-то там я впервые встретил, на первый взгляд, странную концепцию — игра использовала файловую систему в качестве уровней. То есть, она генерировала карту исходя из дерева директорий/файлов и позволяла по ним путешествовать.


Читать дальше...

Генерация и население уровней для жанра dungeon crawler

Компьютерная генерация

Eye Of the Beholder (DOS, 1993)

Думаю, тут почти все знают, что такое данжн кроулер, а кто не знает, тому подскажет Гугл.

Я ставлю и рассматриваю две цели в данной статье.

  1. Генерировать подземелье с отдельными областями, обладающими своими архитектурными особенностями.
  2. Указывать шансы спауна тех или иных видов объектов (враги, сундуки, двери) в зависимости от областей на карте.

В плане механики я ориентируюсь на эпохальную игру своего времени - Eye Of Beholder. Только там не было генерации.

Ранее я уже пробовал создать примерно такую механику, но прототип, получившийся в результате той попытки, осел мёртвым грузом в UNFINISHED BUNDLE Ксенедера, которая публиковалась здесь. Причём, что характерно, там была генерация. Но — никаких врагов, никакого инвентаря, никакой графики, никакого геймплея. На этот раз должно получиться качественно иначе.

Этот пост — не «Игра изнутри», скорее «Движок изнутри». Но так как движок — Game Maker, то это скорее суб-движок. Короче, все всё поняли, кому надо.


Читать дальше...

MiniTekx

Компьютерная генерация

Зашёл я значит сегодня в АндерГамин, а там мне и говорят:

[26 сен 15 21:32] * Каждый день праздник * Xitilon: спорим твой tekx не может генерировать шум наподобие http://imgs.steps.dragoart.com/how-to-draw-venus-step-2_1_000000014358_5.jpg
[26 сен 15 21:34] * Каждый день праздник * Xitilon: ИЛИ МОЖЕТ?

Может.

Дальше речь зашла о том, чтобы генерировать такие текстуры в ГМ, но производительность такого рода вычислений в нём аховая, что я уже давно проверял. Поэтому сошлись на том, что я сделаю консольный вариант с ограниченным функционалом, для того чтобы его вызывать из игры на фоне, а игра на ГМ подхватывала результат из выделенной для этого (или текущей) папки. Писал с нуля, интерфейса никакого нет, функции примерно как у старых версий Tekx, хотя так-то никто кроме меня не заметит разницы — никто толком и не знал его всего функционала, ха-ха. В любом случае, для заданной цели этого достаточно.

MiniTekx 0.6 здесь.

Параметры: ширина, высота, цвет1, цвет2, количество точек, итерации генератора, bitcrush, замыканине текстуры на себя, фасет (вещественное число, не использовать фасет = 1)

Tekx — что под капотом?

Компьютерная генерация

Некоторых людей заинтересовал принцип работы моего процедурного генератора графики, результаты которого были показаны мной в начале этого года, вместе со ссылкой на сам Tekx 0.8.

Что ж, пришлось мне вооружиться ILSpy'ем, декомпилировать (нет, это всего лишь C#, поэтому всё делается автоматически) исполняемый файл, и написать пост о том, как же оно всё работает, и каким это таким образом безликие цифры обретают всякоразные необычные формы.

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


Читать дальше...

Пособие по генерации звуков с помощью sfxr

Гайды

Авторское предисловие

Этот небольшой документ создан в помощь разработчикам видеоигр и прочих мультимедиа-продуктов с использованием аудио. Сам по себе sfxr располагает не очень большим набором приёмов и эффектов для генерации, однако, его функций хватает для создания разнообразных наборов звуковых эффектов примитивного звучания. Под последним я имею в виду звуковой синтез времён начала 90-х годов XX века — звуковые чипы на уровне тех, что были задействованы в популярных игровых консолях NES/FamiCom (преимущественно известной в пост-советском пространстве как «Денди») и GameBoy. На самом деле sfxr «умеет» больше, но использует только один канал звука, и не работает с внешними аудиоданными, ограничиваясь простыми осцилляторами и шумом.

Кстати, про осцилляторы и прочую терминологию. Предсказывая реакцию читателя без опыта работы с аудио, спешу уверить, что в этом документе можно встретить множество технических слов, значение которых вовсе не обязательно знать для того чтобы уметь пользоваться sfxr. Поэтому хотелось бы подбодрить тех, кто врезается в конструкции типа «скважность волны» или «резонанс фильтра частот», и теряет желание иметь с этим дело. На самом деле, слова и не нужны, если понимаешь в звуковом смысле, что и как изменяется от того, что был подвинут тот или иной параметр. Теория, конечно, поможет понять других людей, которые работают с аудио, но главное — это чувствовать природу звука, а не оперировать терминами. Поэтому, даже если 90% описанного здесь будет незнакомо читателю — это не повод увильнуть от практики, если читателю в самом деле интересна генерация аудио. Все эти буквы и цифры, герцы и децибелы — это лишь обозначения того, что каждый человек ощущает ежедневно.

В отличие от проблем с терминологией, слабое владение компьютером может стать серьёзной проблемой на пути овладения sfxr. Если пользователь не в курсе, куда и как сохранять файлы, пользователь может их потом не найти. Однако, эта проблема уже не касается sfxr как такового (пропуская мимо внимания тот факт, что не владеющий компьютером разработчик видеоигр это редкость), и поэтому освещена в пособии не будет.

4 мая 2013, Xitilon.HD408


Читать дальше...

Tekx — процедурный графический генератор

Компьютерная генерация

Попал однажды в мои руки алгоритм процедурной генерации шума Ворли.

А потом я подумал, что можно его расширить и разнообразить.

И заверте...


Читать дальше...