Вот я например, если б делал РТС то хотел бы чтобы в ней были какие-то новые механики которых не хватало в других РТС, а в вашем проекте есть какие-нибудь новые механики, фичи по сравнению с классикой wc3, sc2, C&C?
Привет, Хабр! Меня зовут Игорь, и я Unity Developer. В этой статье хотел бы поделиться кейсом, как Test Driven Development помогает мне разрабатывать RTS игру.
Что за РТС игра? Реально хотите сделать РТС потому что зов души?) Или так просто, делаете учебный проект чтобы опыта поднабрать?
Чем мне не очень нравится ФФТ , так это тем что по его результатам нельзя определить периодический сигнал или нет, оно по сути просто говорит что в таком то окне есть такие то гармоники такой то амплитуды. А вот если посмотреть wave файл то там часто виден паттерн.
Вообще сравнивая восприятие звука и результат работы фильтров все больше думаю что восприятие человека не делит исходный сигнал строго по частотам, оно воспринимает звук как бы целиком. Т.е если взять например условный стук, там предположим 6-7 волн значимой амплитуды причем эти волны сильно разной длинны, человеческое восприятие как то лепит из них цельное единственное событие. Преобразует колебания в динамику.
Чтобы сравнить сигналы. Пускай они и доходят до мозга с задержкой, и обрабатываются не быстро, но нужно точно знать, в какое время они были получены. И вот как-то из физиологии не понятно, как достигается настолько точная калибровка.
Человеческий организм симметричный, хотя между правой половиной и левой есть небольшие отличия, но суть в том что обе половины растут одновременно по одинаковому алгоритму. Похожая ситуация со зрением - очевидно что картинки которые дают левый и правый глаза немножко отличаются - по другому не бывает в реальном мире, однако это не мешает получать глубину сравнивая картинки. Я предполагаю что в детском возрасте - еще не сознательном, подсознание настраивает мозг на восприятие мира. Задача выглядит примерно так: есть 2 сигнала очень похожих но не одинаковых, между ними может быть задержка по умолчанию а может не быть, как откалибровать их так чтобы когда источник звука был прямо перед глазами временная разница между ними была бы 0. И тут нужен какой-то опорный звук про который точно известно что для него разница между правым и левым каналом = 0. Что это может быть? На ум приходит собственный голос например. Или звук, источник которого рядом. С другой стороны может быть и другой вариант, подсознание научается ориентироваться в пространстве и сопоставляет звуковые сигналы и задержки между ними с координатами источника звука.
Предполагаю, что сама стенка полости (трубка) и жидкость в ней могут формировать преломляющий акустический переход подобно тому, как световые лучи многократно преломляются в оптическом волокне.
Вы наверное имеете в виду отражения от стенок улитки, такое конечно может быть. Но чисто интуитивно сомневаюсь что это явление там срабатывает достаточно значительно. Иначе получится что текущий звук все время будет зашумлен предыдущим.
Про 10 мкс я честно списал из Википедии) При скорости звука 340 м/с и расстоянии между ушами 20 см это даст разрешение по азимуту 1°. Наверное, 1° - это действительно перебор, проверю как-нибудь в аудио-редакторе. Но перемещение источника звука на 5° уже вполне заметно. И даже 50 мкс - это тоже какая-то невероятная для физиологии цифра.
Ну тут надо иметь в виду что сдвиг между каналами никуда не пропадает, т.е например щелчок длительностью 1/4 секунды, пусть приходит с задержкой 50 мкс, но эта задержка справедлива для всего интервала в 1/4 сек. Если частота 20 кгц (в принципе некоторые слышат), соответствует периоду 1/20000 = 50мкс, то разрешающая способность нервных клеток вполне себе близка к 50мкс , а далее просто вычитать правый сигнал из левого пока 0 не получим чтобы понять какой временной сдвиг между ними.
Передать такой "пакет"-то можно. Но это не снимает проблемы точности захвата сигнала и точности синхронизации между левым и правым "пакетами".
На счет синхронизации, в мозге есть альфа/бета/тета ритмы, возможно это и есть "синхроимпульсы" для звуковой/видео систем. А точность захвата - в каком смысле? Чтобы в правом и левом канале было одно и тоже? Вероятно в детском возрасте срабатывает какая - нибудь автоматическая калибровка.
Что касается улитки, можно выделить три основные среды передачи сигнала: стенка, жидкость в полости, костная основа. Учитывая небольшой размер органа, возможно, скорость передачи в этих разных средах не вносит существенного вклада в процесс восприятия, но многократное преломление волны в полости с дальнейшей интерференцией вполне может происходить подобно световым лучам в вогнутом зеркале.
Для световой волны преломление - изменение направления распространения, что вы понимаете под преломлением для продольной волны?
И опять же не понимаю откуда в жидкости возьмется преломление, там нет ситуации когда волна переходит из одной среды в другую (путь от барабанной перепонки до стенки улитки я бы не считал таким переходом). Это как взять трубку, залить водой, с одной стороны запечатать, с другой вставить динамик, где там переход из одной среды в другую?
Всё же природа, наверно, не случайно придала этому слуховому органу такую замысловатую форму, должен быть практический физический смысл в подобной геометрии.
Насколько я читал, просто для того чтобы трубка занимала меньше места в голове. У рыб например орган слуха - полоска вдоль тела.
На стыке двух сред волна преломляется, разделяется и продвигается уже с разной скоростью дальше, но при этом её частота остаётся прежней.
1) Речь же про улитку в ухе человека, не уверен что там имеется стык двух сред, там скорее ситуация, когда стенка улитки колеблется как мембрана динамика и таким образом передает волны в жидкость в улитке, это как если взять обычный динамик и опустить его в воду, я бы не назвал это переходом волны из одной среды в другую. А следовательно не могу понять о каком преломлении речь. 2) Не совсем понял, в каком смысле волна разделяется ? 3) Движется с разной скоростью? Это как ? Первый раз слышу чтобы волны в среде двигались с разной скоростью. Насколько знаю упругие волны в среде всегда распространяются с одной и той же скоростью не зависимо от длины волны. 4) Частота то может и остается а вот длина волны изменится потому что скорость в жидкости больше чем в воздухе, а значит У = с*Т, Т осталось тоже самое а вот с стало больше.
Самая засада, что не получается объяснить, как стерео-слух определяет разность фаз (и направление на источник звука). Для этого нужно сравнивать сигналы с левого и правого уха с разрешением около 10 мкс. А нейроны работают на 4 порядка медленней!
10 мкс это 1/100000 секунды, если еще вспомнить что стандартная частота дискретизации звука 44100 отсчетов в секунду, то разрешение 10мкс ЯВНО избыточно, более того за пространственные эффекты отвечают волны соответствующие частоте 500гц и ниже на сколько помню, т.е не нужны никакие 10мкс.
Мозг - нет. Считается, что в самом ухе предобработка похожа на какое-то интегральное преобразование, т.к. нейроны не работают со звуковыми частотами.
Тут вообще никакой проблемы, не нужно нейрону испускать спайки с частотой 20кгц чтобы работать с этой частотой, достаточно иметь много нейронов которые будут скажем 60 раз в секунду копировать в буфер мозга кусок сигнала длинной 1/60 сек.
звуки от нескольких источников доходят до уха и при схожей интенсивности легко воспринимаются на слух, после чего классифицируются и обратно соотносятся с их источником.
Это если у них довольно разная длина волны (хотя бы раза в 2), а вот если похожая то будет каша.
круги на воде относительно беспрепятственно проходят друг сквозь друга
Если их фронты движутся в разные стороны то да, а вот если такой фронт есть сумма 2-3 фронтов разных волн и все движутся в одну сторону то точно разделить их на отдельные волны до того как они слились скорее всего невозможно.
Да, читал эту статью, но насколько понял это не совсем призма. "Each unit-cell can be modelled as series mass and parallel compliance (supporting the right-hand or positive index propagation), combined with series compliance and parallel mass (supporting left-hand or negative index propagation), as explained in Refs. 14 and 17. Thus, it behaves as an acoustic bandpass filter. " Это скорее последовательность фильтров, причем как я понимаю суть не столько в фильтрах сколько в размерах "призмы", которая как раз соответствует длинам волн в воздухе , для света эта "призма" была бы чем то вроде трубки со светофильтрами, световая же призма уникальна тем что она есть некое тело проходя через которое свет в зависимости от цвета по разному ведет себя. Однако ответ на вопрос как же устроено восприятие разных длин волн у человека скорее всего действительно находится где то в области поведения звуковых волн в улитке.
Вот например, типичная схема на которой расписана зависимость восприятия частоты от места на улитке, однако сразу возникает вопрос а что, все что ниже 20 кгц не воспринимается клетками в начале улитки? Это выглядит очень контринтуитивно.
Этот механизм напоминает разложение светового луча призмой, как при спектроскопии, только в роли призмы выступает особым образом сформированная спиралевидная полость слуховой улитки, которая в разной степени преломляет акустические волны разных частот (цветов).
Это интересная мысль, однако у меня не получилось найти "призму" для звука, не совсем понятно как такой девайс должен выглядеть , звуковые волны то продольные. Вообще, то что призма для света существует говорит о том что разные гармоники света не сливаются(суммируются) друг с другом в свободном состоянии (до того как попадут на приемник), не уверен что это справедливо для звуковых волн.
В улитке, предположительно, используется эффект стоячей волны, когда каждой частоте соответствует свой участок максимального колебания жидкости и возбуждения Кортиева органа.
Только вот реальный звук зачастую не периодический, т.е просуммировать его с собой не выйдет , однако даже если он периодический то громкость может быть разная и стандартных узлов и пучностей не будет, точнее будут но разной амплитуды, однако есть еще момент в том что если до суммирования волны с самой собой сигнал фильтруется каким то образом, то тогда стоячая волна и не нужна. А если не фильтруется то стоячая волна особо ничего не даст так там будет сумма всех гармоник. А если сигнал - просто всплеск, например любой щелчок, удар, то там вообще непонятно что с чем суммировать.
А в целом по теме, вряд ли мозг использует преобразование Фурье, уж слишком оно "неестественное", а главная проблема с визуализациями звуковых сигналов имхо в том что период сигнала (если он периодический) заранее неизвестен.
Все еще проще: Ваше образование уже оплачено из налогов которые платили Ваши родители. Налоги идут на обучение уже следующего поколения.
Вот, раз так, то и Вы должны платить налоги чтобы оплатить обучение в том числе своих детей, правильно понимаю?
Да. Жизнь лучше чем небытие.
Это я так понимаю основная аксиома в вашей этике, а вот если предположить например что в каком ни-будь обществе было бы принудительное оплодотворение женщин после достижения некоторого возраста, это было бы этично в вашей этике? А если да, то сами бы поучаствовали?
Вы никогда не сможете деньгами окупить тот вклад который внесли в Вас родители.
Так речь о том чтобы вернуть им долг, как я понял помогая родителям долг им вернуть нельзя. Значит если я правильно понял то человек который ушел от родителей в 18 лет и ни чем не помогал им но зато родил своего ребенка этичен и к нему нет претензий в вашей системе.
Ну Вы сами подумайте - есть в Вашей жизни люди которые годами вкладывали в Вас кучу сил не получая ничего взамен? Если есть - то да, конечно могут быть подобные долги и перед другими людьми которые в Вас столь же сильно вкладывались.
Ну вот например человек 10 лет учится в школе, можно ли сказать что у него есть долг государству за это? Или тут позиция - в том что тоже плати налог как платили за тебя (только 10 лет или дольше)?
Выращивать на забой - этично, но этот подход очевидно включает в себя пункты о помощи в выращивании потомства.
А если бы вы узнали что вас вырастили инопланетяне для каких то своих целей, но они помогут вам вырастить ваше потомство, эта ситуация была бы этичной для вас?
Кстати еще вопрос возник: долг родителям отдавать можно только воспитанием своих детей или помощь родителям деньгами тоже вариант? Т.е например ситуация: есть некий человек, после того как пошел сам работать в 18 лет, родителям не помогал вообще никак но зато вырастил тоже другого человека который тоже ушел работать в 18 лет - это этичная ситуация? А если наоборот детей своих нет но зато родителям платил 18 лет компенсацию за их усилия?
Мне интересна ваша этическая система, в частности ответы в рамках нее на вот такие вопросы: Если человек питается фруктами - то он должен (в вашей этике) посадить дерево? А если убил животное для пропитания то должен помочь самке вырастить другого детеныша, подкармливая ее например или охраняя ее логово от опасности? Или например: у человека А застряла машина в снегу - тут подошел человек Б и толкнул его машину, а вот когда у Б застряла машина - А не подошел и не помог, А - мудак в вашей системе? Есть ли у каждого человека еще какие-нибудь долги подобные долгу перед родителями?
А где в реальном мире дальнодействие? Если речь про квантовую запутанность, то насколько я понял эксперимент, там нельзя менять по желанию состояние частицы в одной из установок так чтобы в другой менялось состояние соответствующей частицы. Пока что речь идет о том что берут 2 частицы, запутывают их, далее частицы взаимодействуют с детекторами в разнесенных на километры установках и там вроде как состояния частиц всегда соответствуют друг другу как будто между ними связь.
Я видела, как разработчики использовали решения других людей, как само собой разумеющиеся. Не подумав несколько раз об используемом подходе, не утруждая себя каким‑либо анализом.
Хмм а с чего взято что разработчики не думали над подходом и не анализировали? Другое дело что они вероятно не хотели обсуждать свой выбор с коллегами
Одно дело, когда Ден Абрамов (Dan Abramov) говорит тебе, как лучше использовать React или какая‑либо документация по API говорит тебе, что есть только один вариант использования данного API, тогда — да, скорее всего надо будет прислушаться к этому.
А потом кто‑то приходит и говорит, что использовал решение данного человека, потому что у него должность сеньора в компании X. В какой то мере в этом есть смысл. Но по своей сути, апелляция к авторитету глубоко ошибочна.
Вот я например, если б делал РТС то хотел бы чтобы в ней были какие-то новые механики которых не хватало в других РТС, а в вашем проекте есть какие-нибудь новые механики, фичи по сравнению с классикой wc3, sc2, C&C?
Что за РТС игра? Реально хотите сделать РТС потому что зов души?) Или так просто, делаете учебный проект чтобы опыта поднабрать?
Чем мне не очень нравится ФФТ , так это тем что по его результатам нельзя определить периодический сигнал или нет, оно по сути просто говорит что в таком то окне есть такие то гармоники такой то амплитуды. А вот если посмотреть wave файл то там часто виден паттерн.
Вообще сравнивая восприятие звука и результат работы фильтров все больше думаю что восприятие человека не делит исходный сигнал строго по частотам, оно воспринимает звук как бы целиком. Т.е если взять например условный стук, там предположим 6-7 волн значимой амплитуды причем эти волны сильно разной длинны, человеческое восприятие как то лепит из них цельное единственное событие. Преобразует колебания в динамику.
Человеческий организм симметричный, хотя между правой половиной и левой есть небольшие отличия, но суть в том что обе половины растут одновременно по одинаковому алгоритму. Похожая ситуация со зрением - очевидно что картинки которые дают левый и правый глаза немножко отличаются - по другому не бывает в реальном мире, однако это не мешает получать глубину сравнивая картинки. Я предполагаю что в детском возрасте - еще не сознательном, подсознание настраивает мозг на восприятие мира. Задача выглядит примерно так: есть 2 сигнала очень похожих но не одинаковых, между ними может быть задержка по умолчанию а может не быть, как откалибровать их так чтобы когда источник звука был прямо перед глазами временная разница между ними была бы 0.
И тут нужен какой-то опорный звук про который точно известно что для него разница между правым и левым каналом = 0. Что это может быть? На ум приходит собственный голос например. Или звук, источник которого рядом. С другой стороны может быть и другой вариант, подсознание научается ориентироваться в пространстве и сопоставляет звуковые сигналы и задержки между ними с координатами источника звука.
Вы наверное имеете в виду отражения от стенок улитки, такое конечно может быть. Но чисто интуитивно сомневаюсь что это явление там срабатывает достаточно значительно. Иначе получится что текущий звук все время будет зашумлен предыдущим.
Ну тут надо иметь в виду что сдвиг между каналами никуда не пропадает, т.е например щелчок длительностью 1/4 секунды, пусть приходит с задержкой 50 мкс, но эта задержка справедлива для всего интервала в 1/4 сек.
Если частота 20 кгц (в принципе некоторые слышат), соответствует периоду 1/20000 = 50мкс, то разрешающая способность нервных клеток вполне себе близка к 50мкс , а далее просто вычитать правый сигнал из левого пока 0 не получим чтобы понять какой временной сдвиг между ними.
На счет синхронизации, в мозге есть альфа/бета/тета ритмы, возможно это и есть "синхроимпульсы" для звуковой/видео систем.
А точность захвата - в каком смысле? Чтобы в правом и левом канале было одно и тоже? Вероятно в детском возрасте срабатывает какая - нибудь автоматическая калибровка.
Для световой волны преломление - изменение направления распространения, что вы понимаете под преломлением для продольной волны?
И опять же не понимаю откуда в жидкости возьмется преломление, там нет ситуации когда волна переходит из одной среды в другую (путь от барабанной перепонки до стенки улитки я бы не считал таким переходом). Это как взять трубку, залить водой, с одной стороны запечатать, с другой вставить динамик, где там переход из одной среды в другую?
Насколько я читал, просто для того чтобы трубка занимала меньше места в голове. У рыб например орган слуха - полоска вдоль тела.
1) Речь же про улитку в ухе человека, не уверен что там имеется стык двух сред, там скорее ситуация, когда стенка улитки колеблется как мембрана динамика и таким образом передает волны в жидкость в улитке, это как если взять обычный динамик и опустить его в воду, я бы не назвал это переходом волны из одной среды в другую. А следовательно не могу понять о каком преломлении речь.
2) Не совсем понял, в каком смысле волна разделяется ?
3) Движется с разной скоростью? Это как ? Первый раз слышу чтобы волны в среде двигались с разной скоростью. Насколько знаю упругие волны в среде всегда распространяются с одной и той же скоростью не зависимо от длины волны.
4) Частота то может и остается а вот длина волны изменится потому что скорость в жидкости больше чем в воздухе, а значит У = с*Т, Т осталось тоже самое а вот с стало больше.
10 мкс это 1/100000 секунды, если еще вспомнить что стандартная частота дискретизации звука 44100 отсчетов в секунду, то разрешение 10мкс ЯВНО избыточно, более того за пространственные эффекты отвечают волны соответствующие частоте 500гц и ниже на сколько помню, т.е не нужны никакие 10мкс.
Тут вообще никакой проблемы, не нужно нейрону испускать спайки с частотой 20кгц чтобы работать с этой частотой, достаточно иметь много нейронов которые будут скажем 60 раз в секунду копировать в буфер мозга кусок сигнала длинной 1/60 сек.
Это если у них довольно разная длина волны (хотя бы раза в 2), а вот если похожая то будет каша.
Если их фронты движутся в разные стороны то да, а вот если такой фронт есть сумма 2-3 фронтов разных волн и все движутся в одну сторону то точно разделить их на отдельные волны до того как они слились скорее всего невозможно.
Да, читал эту статью, но насколько понял это не совсем призма.
"Each unit-cell can be modelled as series mass and parallel compliance (supporting the right-hand or positive index propagation), combined with series compliance and parallel mass (supporting left-hand or negative index propagation), as explained in Refs. 14 and 17. Thus, it behaves as an acoustic bandpass filter. "
Это скорее последовательность фильтров, причем как я понимаю суть не столько в фильтрах сколько в размерах "призмы", которая как раз соответствует длинам волн в воздухе , для света эта "призма" была бы чем то вроде трубки со светофильтрами, световая же призма уникальна тем что она есть некое тело проходя через которое свет в зависимости от цвета по разному ведет себя.
Однако ответ на вопрос как же устроено восприятие разных длин волн у человека скорее всего действительно находится где то в области поведения звуковых волн в улитке.
Вот например, типичная схема на которой расписана зависимость восприятия частоты от места на улитке, однако сразу возникает вопрос а что, все что ниже 20 кгц не воспринимается клетками в начале улитки? Это выглядит очень контринтуитивно.
Это интересная мысль, однако у меня не получилось найти "призму" для звука, не совсем понятно как такой девайс должен выглядеть , звуковые волны то продольные.
Вообще, то что призма для света существует говорит о том что разные гармоники света не сливаются(суммируются) друг с другом в свободном состоянии (до того как попадут на приемник), не уверен что это справедливо для звуковых волн.
Только вот реальный звук зачастую не периодический, т.е просуммировать его с собой не выйдет , однако даже если он периодический то громкость может быть разная и стандартных узлов и пучностей не будет, точнее будут но разной амплитуды, однако есть еще момент в том что если до суммирования волны с самой собой сигнал фильтруется каким то образом, то тогда стоячая волна и не нужна. А если не фильтруется то стоячая волна особо ничего не даст так там будет сумма всех гармоник.
А если сигнал - просто всплеск, например любой щелчок, удар, то там вообще непонятно что с чем суммировать.
А в целом по теме, вряд ли мозг использует преобразование Фурье, уж слишком оно "неестественное", а главная проблема с визуализациями звуковых сигналов имхо в том что период сигнала (если он периодический) заранее неизвестен.
Не нашел в программе способа открыть звуковой файл, неужели нет такого?
Вот, раз так, то и Вы должны платить налоги чтобы оплатить обучение в том числе своих детей, правильно понимаю?
Это я так понимаю основная аксиома в вашей этике,
а вот если предположить например что в каком ни-будь обществе было бы принудительное оплодотворение женщин после достижения некоторого возраста, это было бы этично в вашей этике? А если да, то сами бы поучаствовали?
Так речь о том чтобы вернуть им долг, как я понял помогая родителям долг им вернуть нельзя. Значит если я правильно понял то человек который ушел от родителей в 18 лет и ни чем не помогал им но зато родил своего ребенка этичен и к нему нет претензий в вашей системе.
Ну вот например человек 10 лет учится в школе, можно ли сказать что у него есть долг государству за это? Или тут позиция - в том что тоже плати налог как платили за тебя (только 10 лет или дольше)?
А если бы вы узнали что вас вырастили инопланетяне для каких то своих целей, но они помогут вам вырастить ваше потомство, эта ситуация была бы этичной для вас?
Кстати еще вопрос возник: долг родителям отдавать можно только воспитанием своих детей или помощь родителям деньгами тоже вариант?
Т.е например ситуация: есть некий человек, после того как пошел сам работать в 18 лет, родителям не помогал вообще никак но зато вырастил тоже другого человека который тоже ушел работать в 18 лет - это этичная ситуация? А если наоборот детей своих нет но зато родителям платил 18 лет компенсацию за их усилия?
Мне интересна ваша этическая система, в частности ответы в рамках нее на вот такие вопросы:
Если человек питается фруктами - то он должен (в вашей этике) посадить дерево?
А если убил животное для пропитания то должен помочь самке вырастить другого детеныша, подкармливая ее например или охраняя ее логово от опасности?
Или например: у человека А застряла машина в снегу - тут подошел человек Б и толкнул его машину, а вот когда у Б застряла машина - А не подошел и не помог, А - мудак в вашей системе?
Есть ли у каждого человека еще какие-нибудь долги подобные долгу перед родителями?
А где в реальном мире дальнодействие?
Если речь про квантовую запутанность, то насколько я понял эксперимент, там нельзя менять по желанию состояние частицы в одной из установок так чтобы в другой менялось состояние соответствующей частицы.
Пока что речь идет о том что берут 2 частицы, запутывают их, далее частицы взаимодействуют с детекторами в разнесенных на километры установках и там вроде как состояния частиц всегда соответствуют друг другу как будто между ними связь.
Хмм а с чего взято что разработчики не думали над подходом и не анализировали?
Другое дело что они вероятно не хотели обсуждать свой выбор с коллегами
xD