Гигантомания и тяга к непреодолимому это либо какая-то психологическая защита от реальной работы, либо следствие заражения восприятия мегапроектами крупнейших студий, заполнивших медиапространство до горизонта своей продукцией. Не тянет делать что-то малое. Невозможно на это найти вдохновение. Испытываю прямо тошноту и головную боль когда заставляю себя делать что-то одноразовое и ограниченное. Тянет на подвиги. Если уж делать что-то, то обязательно универсальное, масштабное, новаторское. Если делать игру, то уж если не ммо, то как минимум онлайновый мир. Мультиплатформенный. С изменяемым процедурным ландшафтом планетарных масштабов. И графикой ААА-класса. Самому смешно, а все же "маловато будет! Маловато!". Такие мечты конечно заставляют учиться, копаться в самых мудреных технических трюках, разбираться в том, как устроены флагманские проекты компаний с мировыми именами; не сидеть годами за рутинными делами; расти.
Но стоит разобраться как же устроены brdf функции в physically based шейдинге и как нужно правильно делать для него материалы, тут же становится скучно. Ведь дальше начинается рутина. Принцип ясен - шаблон в руки и копай от забора и до обеда... Лень и неусидчивость тут же толкают на преследование какой-нибудь новой цели: непонятной, загадочной, манящей сказочными перспективами. Все мысли в конечном итоге устремляются туда, и погоня за несбыточным начинается снова. Процедурная геометрия, физическая анимация, сетевые трюкачества, реймаршинг и волюметрик эффекты, адаптивный искусственный интеллект, кроссплатформенные технологии! Вокруг целая вселенная для изучения. И пока копаешься в чем-то, приходит конференция siggraph и обрушивает на голову тонны новых невероятно заманчивых технологий при постижения которых можно ненароком получить пару phd по математике и computer science. И что же делать? Все еще храню надежду, что увлекусь какой-то ограниченной задачей и кропотливо и с любовью доведу ее до конца. Но нужен прочный задор, подкрепляемый чьим-то еще интересом или собственной верой в правильность выбора задачи. Или просто драйв. А его все нет и нет.
Существует прибыльный туристический бизнес путешествий во времени, но проблема в том, что существует множество параллельных исторических линий, и в нашу собственную вмешиваться нельзя по понятным причинам, так как можно вызвать парадоксы, негативные изменения и из-за этого никогда не вернуться в привычную реальность. Однако именно эта линия наиболее привлекательна для путешественников, желающих собственными глазами увидеть, исследовать или поучаствовать в произошедшем. Чтобы заработать на этом, организуются фирмы, создающие фальшивые времена путем реконструкции нашей истории в альтернативных ветвях времени, пошедших не в то русло или испорченных вмешательством путешественников. Реконструкторы пользуются разными средствами для форсирования истории: применяют высокие технологии и просто разыгрывают сцены из истории при помощи статистов. Принимают роли исторических персонажей, подстегивают или замедляют развитие местной цивилизации и т.п.
Интрига может заключаться в том, что и наше настоящее время оказывается поддельным, а вся человеческая история, известная нам, лишь эксперимент, имеющий мало общего с истинной историей первых изобретателей машины времени, разветвивших исторические линии (например, падения Римской Империи не происходило и прогресс цивилизации привел к появлению машины времени еще в периоде нашего "средневековья", а наша история это следствие неосторожного вмешательства путешественников из этой реальности).
Все начинается со смерти героя. Он прожил долгую, но тяжелую жизнь. Вокруг него творились беды, да и он сам делал ошибки о которых горячо сожалеет. Вот уже он закрывает глаза и морально готовится умереть, как вдруг просыпается в юности...
Возможно, в момент какого-то катарсиса или экзистенциального, особого события. И осознает, что вернулся в свою молодость, сохранив память, а жизнь продолжается вновь, как с момента сохранения игры. Так герой превращается в пророка. Ему известно будущее. Но стоит ему что-то значительное изменить, как он теряет свой дар, так как события начинают развиваться по новому, уже не известному ему сценарию.
Чем влиятельнее он становится, тем сложнее предсказывать. И так он совершает ошибку за ошибкой в попытке изменить мир и судьбу, делает все только хуже и гибнет раньше чем в первый раз. Но вновь возвращается. И так многократно, пока не научается жить, не вмешиваясь в происходящее без точного понимания того, что нужно сделать. Пытается сделать мир идеальным. Становится "колдуном" который знает как можно изменить ход истории совершенно казалось бы незначительным вмешательством в происходящее. Путешествует по миру, постоянно спеша, как Гендальф, и стараясь все предусмотреть и совершить все необходимые вмешательства: вдохновить будущих героев на подвиги, уберечь людей от роковых ошибок и злых поступков и пр... Но главное - ищет смысл того, зачем и почему ему открыт этот дар.
Спасибо NVIDIA за бесценные уроки и примеры реализации этого алгоритма на GPU. Оставалось его реализовать в Unity, используя Compute Shader'ы. Это потребовалось мне для того, чтобы вывести информацию о вершинах в область памяти, доступную центральному процессору, рассчитывающему коллизии и физику тел. Обычный геометрический шейдер, реализацию которого я встретил в сети, для такого трюка годился плохо. Затем я добавил разбиение пространства на мега воксели, «чанки», чтобы создавать поле в любом объеме, и написал модификаторы поля для воздействия на него. Получилось вот так: