Membrane game — шикарная игра для аутистов в 20 строк кода

Код игры написан целиком на языке математики. Давайте его разберем.

  1. N отвечает за размер клеток.

  2. pow(1.02, iTime) создает равномерную анимацию клеток, 1.02 - скорость анимации; рано или поздно это вызывает переполнение буфера, но анимацию можно отключить сделав t=1 или сделать так чтобы она замедлялась со временем t=iTime.

  3. dx и dy - смещение позиции курсора по x и по y.

  4. float f = float((x-dx)*(x-dx)*t+(y-dy)*(y-dy)*t); // Это правила игры - в эту функцию (на самом деле не функцию) вы можете внести изменения и получить новую логику игры.

  5. float F = abs(f*sin((x)/N)*sin((y)/N)); // Создает клеточную мембрану для функции (не функции) f.

  6. int R = int(floor(F*pow(16.0, 6.0-ceil(log2(F)/4.0)))); // Адаптирует цвета мембраны добавив нули в конце шестнадцатеричной записи числа или обрезает его по правому краю. По сути это готовый индекс цвета X11, который используется в HTML или Photoshop.

Короче всё просто. Я на самом деле новичок и в математике и в GLSL, но моим друзьям понравилась эта игра, и мне интересно, как её оценит Хабр. Если у вас есть идеи, вы можете ее форкнуть. Тех, кто захочет попробовать перенести на другие языки программирования, предупрежу, что такие вычисления для каждого пикселя весьма затруднительны для процессора - надо программировать шейдеры (ну лично мой опыт, но вообще я не против)

@4eckme
11.04.2021 15:19 UTC
Первоисточник

Комментарии

@sav6622
11.04.2021 10:30 UTC
+13

При чем тут аутисты?!?

@4eckme
11.04.2021 10:32 UTC
-31
Обижаешься?
11.04.2021 10:52 UTC
+8
Так то я довольно прохладно отношусь к идеям которые продвигает sjw сообщество, но когда вижу подобные посты и комментарии, задумываюсь, а может это действительно необходимо?
11.04.2021 10:58 UTC
-7
Вы же не думаете, что я создавал эту игру чтобы кого-то оскорбить?
11.04.2021 11:09 UTC
+4

Судя по всему, вы создавали эту "игру" и писали такой заголовок для того, чтоб причинить людям боль.

11.04.2021 12:00 UTC
+6

А какой смысл вы вкладывали в заголовок?

11.04.2021 12:33 UTC
-2
Эту игру очень сложно понять логически. Например, непонятно почему у функции появляется мембрана. Нужно просто принять, что она появляется после этих математических преобразований. Я думаю, логика должна понравится неординарным людям. Большинство находит фракталы скучными, а математику непонятной. Да, это, конечно, не фрактал, но мембрана сделана на основе фрактала. Для меня собственно математика тоже не понятна, я не могу до конца объяснить почему визуализация игры получается именно такой, но наверное надо просто принять, что эти вещи просто такие, какие они есть, потому что они только такими могут быть. Но обычным людям это не интересно — они минусуют статью на хабре.
11.04.2021 12:43 UTC
+12

Всё этого стоило написать в статье, тогда бы не минусовали. Совет: скройте в черновики, расскажите подробнее и про математику, и про смысл этого всего, и заголовок поменяйте, опубликуйте заново.


Сейчас просто выглядит как какая-то непонятная хрень с провокационными заголовком, отсюда и минусы.

11.04.2021 12:55 UTC
-4
Я буквально по пунктам разложил логику. Если остались вопросы — я постараюсь ответить на них в комментариях, если смогу.
PS: Если что, я говорил об этом фрактале www.shadertoy.com/view/wscBD2 — его функция, немного измененная, отвечает за структуру клеточной мембраны.
11.04.2021 13:12 UTC
+3

Вот, кстати, поддержу. То, что смысл статьи очевиден автору, не означает что статья будет легко восприниматься читателями. Похоже на творение юного сумрочного гения, решившего вбросить сорцы и быть отвергнутым безликими посредственностями:)
Ну на шутки про аутистов тут смотрят не очень позитивно.

11.04.2021 13:17 UTC
0
Мне почти 30, не назвал бы себя юным.
11.04.2021 16:48 UTC
+5

Иронично, но именно люди с аутическими чертами, чаще всего, имеют проблемы с интерпретацией переносного смысла выражений. Повышенная склонность к структуризации восприятия вступает в конфликт с нечёткими значениями, переносным смыслом, метафорами, сравнениями.
Во и тут: вам говорят, что ваши действия напоминают то, что делают некоторые молодые программисты, а вы возражаете, что вам почти 30 (что, впрочем, никогда не гарантирует наличия даже базовых социальных навыков).
Ничего личного, просто несколько быстрых наблюдений из комментариев.

11.04.2021 17:00 UTC
-2
Вы бы лучше форкнули, или хотя бы логику и визуализацию игры обсудили, а вы обсуждаете мои социальные навыки и слово «аутист»…
IT-сообщество, блин
11.04.2021 13:52 UTC
0

Судя по предыдущим постам и комментам к ним, автор в 27 лет сам немножечко… эээ… альтернативно одарённый (так же политкорректно говорить?).

11.04.2021 14:28 UTC
0
Официально я шизофренник (для вас это имеет значение?)
11.04.2021 14:33 UTC
+10

Само по себе — нет, не имеет. Но это многое объясняет.

11.04.2021 10:57 UTC
0
жостко ты, парниша )
11.04.2021 10:58 UTC
0

Только если вы друзья, я думаю

@4eckme
11.04.2021 10:58 UTC
-8
Случайно отклонил один комментарий. Да, действительно это скорее демонстрация возможностей WebGL/GLSL, чем игра, но весьма интересная. По сути эту же логику можно написать на любом другом языке программирования, и будет не на много больше строк, но нужна высокая производительность.
@floppox
11.04.2021 11:06 UTC
+3

Полная хрень. Людям с сенсорной чувствительностью не ходить ни в коем случае. Там все мигает. Полная психоделия.

@4eckme
11.04.2021 11:11 UTC
-4
У меня анимация не вызывает неприятных чувств, мне наоборот нравится в нее позалипать. Вообще, как я уже писал, анимацию можно отключить поставив t=1.0
11.04.2021 12:26 UTC
0

А вы — аутист?

11.04.2021 12:36 UTC
-1
Если это значит, что я восхищен игрой — то да.
11.04.2021 13:48 UTC
+4

Слушайте, ну вы вызываете примерно столько же позитива, как папа из анекдота про "нет ножек — нет мультиков", существуй такой персонаж в реальной жизни. Если вы на самом деле не знаете, что такое аутизм — то ведь можно и загуглить, не? Тогда и в неловкие ситуации перестанете попадать.

11.04.2021 14:17 UTC
-11
Персонаж, не существуй.
@ZimM
11.04.2021 12:20 UTC
+7
А в чем «игра»-то? Что делать нужно?
@Jogger
11.04.2021 13:44 UTC
+3

Не игра, не шикарная, не для аутистов. Нас обманули, расходимся.

@unibasil
11.04.2021 14:03 UTC
0

Видимо, автор перепутал аутистов с эпилептиками. Последним игра зайдёт со свистом (жаль, здесь нет тега <irony>, как на d3).

@Nehc
11.04.2021 15:50 UTC
0
Что-то мне говорит, что… Автор плохо выразился, но похоже ничего плохого не имел ввиду… Типа «игра для тех, кто знатно и с удовольствием в такое залипает». Вполне вероятно, что для этого нужно иметь некоторое слегка иное устройство мозгов. Типа как «Человек дождя»… Сча правда модно стало говорить что он «савант», а не просто аутист, но принципиально это сути не меняет.
@
11.04.2021 17:08 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@evr1ka
11.04.2021 17:49 UTC
0
Как родитель особого ребенка почти уверен, что она в такое может залипнуть. Она вообще может залипнуть во все странное, переливающееся непонятными цветами, и звуками.
Но она будет от этого тупеть, это не развивающее.
Как использование фракталов в качестве законченных структур, аля клетка-мембрана выглядит занятно.
Автору спасибо за мысль, но она требует анализа и проработки (с моей стороны).
Могу рекомендовать быть чуть позитивнее.
@4eckme
11.04.2021 19:18 UTC
0
Если вам интересно, мембраны обычно рвутся при использовании побитовых операций в функции f между переменными — я бы сказал, это происходит почти всегда. Но рвутся не значит перестают существовать, просто в таком случае мембрана выглядит разорванной, а клеточная структура — нарушенной, но очертания контуров обычно остаются.
@Tujh
12.04.2021 10:43 UTC
0
Аутизм — это нарушения ЦНС результатом которых является нарушение социальных функций.
Более того, нарушения аутичного спектра включают в себя пару сотен разных заболеваний, самые тяжёлые из которых вызывают полное расстройство личности (сидят, слюни пускают и смотрят в одну точку).
Так при чём тут математическая игра в цветные пятна?
@4eckme
25.04.2021 18:07 UTC
0
сегодня на shadertoy предложили версию этой игры в 6 строк:

void mainImage (out vec4 O, in vec2 U) {
vec2 q = iResolution.xy / 2., c = Uq, s = sin (c / 40.), m = iMouse.xy-U;
float F = abs (pow (1.02, iTime) * dot (m, m) * sx * sy);
int v = 255, R = int (F * exp2 (24.-4. * ceil (log2 (F) / 4.)));
O = vec4 ((R >> 16) & v, (R >> 8) & v, R & v, 0.) / 255 .;
}