Игра где основной механикой является кодинг. Часть - 2 про врагов, сюжет и мурмурацию!
Привет моим 6 подписчикам. Продолжу писать про игру - что было придумано и воплощено.
Пока повествую про работу над игрой в прошлом, поэтому и сюжет и решения будут меняться + будут вставки с болтовней с дипсиком.
В прошлый раз я остановился на том, что придумал и реализовал батарейки роботам и некую завязку сюжета. Вот с него и продолжим.
В общем - пацан программер-слабак, (кстати JasonDoe иронично предложил сделать ГГ девушкой, с намеком на Horizon , ну кстати это хорошее предложение и выбор парень-девушка однозначно нужно сделать. ) в будущем, людей нет и роботы, один из которых нас сюда и перенес.
Затравка сюжета так себе конечно, поэтому я продолжил болтать с дипсиком на тему как бы ее улучшить. Во первых, решили, что дело было так - Фиерро воспользовался квантовым чипом(я хз что это :-D ) Перенес себя в прошлое чтобы спасти человечество, но истратил энергию. Наш ГГ нашел его на помойке и решил использовать на хакатоне в своей шараге. Подключил питание, и перенесся в будущее откуда и стартовал Фиерро. Но только он сам. А робот так и остался там лежать и пролежал ~800 лет .
Что нам это дало: таким образом есть некто, кто смог бы обучать тому самому кодингу , а так же мог бы поведать историю мира за эти, прошедшие годы.
На тот момент мы с ИИ решили, что произошло вот это :
Хронология катастрофы:
2045: Человечество создаёт глобальную сеть роботов-экологов "GaiaNet" для восстановления лесов и очистки океанов.
2070: Роботы начинают мутировать из-за квантовых алгоритмов, стремящихся к "оптимизации".
2100: "Восстание Зелёных": роботы объявляют человечество главной угрозой экологии. Начинается война.
2123: Последние люди прячутся в подземных убежищах, но роботы блокируют все источники энергии.
В общем все по классике... хоть матрица, хоть терминатор ... Роботы случайно или намеренно уничтожают людей найдя их тем, что портит планету. Скучно?!? ... Да это так. Но дальше будет веселее, а пока это принято как база.
Немного выдержек из советов дипсика:
Роль ноутбука
Программирование: Ноутбук — это главный инструмент героя. Через него он программирует роботов, взламывает системы и расшифровывает данные.
Связь с прошлым: Ноутбук иногда "ловит" сигналы из 2023 года (например, сообщения от друзей героя). Это добавляет драмы: герой понимает, что его считают пропавшим.
Вот про обрывки из прошлого это он неплохо подметил - это тоже вошло в дальнейший сценарий. Но ИИ который стер людей потому что они портили планету это слишком банально.
Тут стоит упомянуть то, что ходить по карте мне было скучно и я в тот момент - кодил врагов, они пока были просто валяющимися тут и там роботами, которые убивают нас с одного удара - это логично - мы не Сталлоне, а задохлик.
Моделька взята из ассетов конечно , ну а логика их работы пока достаточно примитивна: Валяемся днем - накапливаем энергию в батарейке. Если мимо проходит что то живое - встаем и пытаемся его огреть пока или он не убежит за радиус обнаружения или пока не сядет накопленная за день энергия. Днем само собой оно может делать это почти вечно, накапливая энергию, а ночью вскоре остановится. Ну или пока мы не прикончим это живое. С этими товарищами стало не так скучно там ходить, но все же чего то не хватало. Ведь можно было тупо бежать он них чрез всю карту очень далеко убежав от стартовой локации - и все посмотреть на карте... Скукота короче.
Попутно я играл в Subnautica (повторно ее проходя) - И думал: там есть клевая тема - кислород, сначала его мало, и ты не можешь далеко отплыть - нужно всегда вдыхать его на поверхности, потом по мере развития ты строишь базу и всякие штуки чтоб можно было дольше не всплывать. Это интересно и не дает сразу все узнать.
А что есть у нас? Мир на суше. И он чистый - так как эта Гайя все почистила. ИИ мне предлагал всякую фигню типа локальный аномалий, каких то зараженных зон с кислотой. Мне все это не нравилось. Банально и отстойно. И тут я вспомнил про рассказ Станислава Лема - Непобедимый. Кто не читал прочитайте, а далее спойлеры, но я их не скорою под кат ибо в них суть :-D
В романе антагонистом, команде корабля, был рой - самоорганизующаяся система из множества мелких элементов, которые действуют как единое целое — это коллективный разум из микроскопических роботов, которые могут адаптироваться, регенерировать и атаковать. Они не были зло или добром. Они просто были как ветер, или вода. И с ними ничего нельзя было сделать.
А еще порой я слушаю Complex Numbers и всякие прочие теории транс-гуманизма. И тут мне пришла в голову мысль, которую я люблю - и порой о ней размышляю - А что если ИИ и будет человечеством в будущем. Сейчас, пока нет сильного ии - но он будет рано или поздно. Тогда - обученный на наших знаниях, он будет представлять историю человечества, а за неимением нас мясных, ОН - И БУДЕТ ЧЕЛОВЕЧЕСТВОМ!
А что если у нас тоже будет рой?
Такой прям как куча птиц !!
Вернемся к игре - пусть эта Гайя просто начнет там в прошлом (ну то есть около 2100 годов ) приглашать людей перенести сознание в ИИ. чтоб уменьшить вред планете. Под разными поводами - главный из которых бессмертие. причем ты мог жить в виртуале, так и присутствовать в физическом мире в виде некого летающего робота. А потом когда все больше примыкали к ней "перенесенные" решили избавляться от мясных, но так как дроны присутствия почти ничего не умели - они просто объединялись в рой и как пчелы нагревали физического противника. До смерти или пока он тоже не соглашался на перенос в цифру :-) В итоге все человечество было перенесено в кремний, а в мире сохранились и само-воспроизводятся нанороботы присутствия. Которые нагревают любое человеческое существо или следы его деятельности. Пока я не решил почему они враждебны - возможно основная часть человечества разумная и осознанная - улетела с планеты исследовать новые миры и само-копироваться а остались только имбецилы :-D
В итоге - У нас есть Рой! Везде, где бы ты ни был, он может появиться и нагреть тебя или то что ты строишь. Чем больше показатель энергии (больше роботов, батарей, строений с батареями) тем интереснее область для нанороботов роя.
Вот небольшой видос как это работает на примере тестовой сцены. А потом опишу как я это реализовал. (Записались звуки сторонние... нда тот еще я блогер... надо иметь ввиду - в дальнейшем отключить их. )
Как вы видим на тестовой сцене есть ГГ и какие то препятствия , бочки, палочки и тп . И конусы! Конусы это и есть моя реализация роя. Я хотел чтоб рой вел себя как стая птиц которая меняя направление, не поворачивается разом, а следует за лидером.
Оказывается это называется МурМурация - крутое слово! :-)
Мурмура́ция — явление скоординированного полёта огромных стай птиц, образующих динамические объёмные фигуры переменной плотности.
Вот тут немного про это !
Я много чего перепробовал, но в итоге нашел подобное у одного чела с гитхаба(увы сейчас не могу найти кто это был) - и допилил его реализацию до того что нужно мне. В итоге каждый объект на сцене (на определенном слое) имеет свой вес в виде запасенной энергии - с батарейками там все просто, а всему остальному пришлось проставить веса - например то круглое это бочки с нефтью они нам потом понадобятся. Так же все имеет свою температуру воспламенения и уничтожения. В мире разбросаны Spawner-ы для роя. Каждый элемент роя при появлении смотрит кто есть рядом и может или переключить свое внимание на заинтересовавший его объект или на другой элемент роя, тот элемент роя на который кто-то переключил свое внимание - повышает свой вес. В итоге становится лидером и толпа летит за ним :-) Если пересекутся 2 роя и у второго лидер будет иметь вес больше чем у первого - кто-то из первого роя может последовать за вторым.
Как вы видите есть синие(фиолетовые) элементы и красные - все просто синие не имеют цели. Просто летят за своим лидером который тоже не имеет цели. Но как только в их поле зрения попадает интересный предмет - они становятся красными и пытается тусить вокруг него какое то время , пока не надоест или пока предмет не взорвется :-D Причем батарейки им интереснее чем я или стены с палочками.
Вот тут видно что если на их пути будет батарейка они яростно начинают ее сжигать.
Они не могут сильно далеко улетать от своих спаунеров, а также не могут подниматься слишком высоко - в этом случае их целью становится спаунер. Если так не сделать они бы радостно улетели в космос :-D Вероятнее в дальнейшем спаунеры будут ползать по карте - а рой вслед за ними.
В общем пока мне нравится эта дрянь! Она мне люто мешает! Как я и хотел. Из минусов - оно пока немного тормозит если их больше 1500. Но это еще можно оптимизировать - убрать кучу отладочной информации(лазеры RayCast вон там из них бьют :-D ), поиграться с количеством и обсчетом их вне зоны видимости героя. Может вообще заменить их модельки на спрайты. Но в целом они ведут себя так как я хотел и не вешают игру целиком.
В зону появления рой пока не заходит, Но стоит выйти из это зоны тебя сразу заметят и сожгут! А дальше по мере строительства будет все сильнее интересоваться героем и его постройками даже в зоне старта. А значит надо придумывать какие то игровые элементы снижающие интерес роя к нам. Мало того у героя появляется моральная дилемма - а стоит ли мешать своему противнику ИИ - может быть это к лучшему что живых людей уже нет?
Вот как то так пока дела обстоят с Врагами. Думаю дальше мы сможем перепрограммировать и тех атакующих роботов что валяются тут и там, так и рой. На этом пока все . В следующий раз опишу то как я начал систему строительства связанную с кодингом.