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

Рейтинг
+0.60
4 читателя , 8 статей
О блоге RSS

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.
 
В этом цикле статей я расскажу про генерацию карты мира, ландшафта, природных зон.
 
Интересно? Прошу под кат!

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

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

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

Где-то в начале 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)

Аудио-спектральный принтер

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

Вы когда-нибудь слышали о скрытых посланиях в музыке? Я слышал. Больше всего меня заинтересовало, каким образом можно вставить изображение в трек, как в этих случаях. Я узнал, что для этого нужно заставить спектрограмму звука выглядеть так, чтобы это соответствовало исходному изображению. И подумал — чем я хуже? Ничем не хуже.

Xitilon Cube Colored.PNG.wav

Другие примеры, и сама программа — под катом.


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

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

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

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

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

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


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

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

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

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

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

И заверте...


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