Серия «Code Of The Lost Future - Разработка игры про код»

6

Игра где основной механикой является кодинг. Часть - 2 про врагов, сюжет и мурмурацию!

Игра где основной механикой является кодинг. Часть - 2 про врагов,  сюжет и мурмурацию! Научная фантастика, Гифка, Разработка, Unity, Инди, Gamedev, Инди игра, Программирование, Видео, Без звука, Короткие видео, Длиннопост

КДПВ - Это она! мурмурация! А вот причем она тут будет ясно к концу этой части.

Привет моим 6 подписчикам. Продолжу писать про игру - что было придумано и воплощено.

Пока повествую про работу над игрой в прошлом, поэтому и сюжет и решения будут меняться + будут вставки с болтовней с дипсиком.

В прошлый раз я остановился на том, что придумал и реализовал батарейки роботам и некую завязку сюжета. Вот с него и продолжим.

В общем - пацан программер-слабак, (кстати JasonDoe иронично предложил сделать ГГ девушкой, с намеком на Horizon , ну кстати это хорошее предложение и выбор парень-девушка однозначно нужно сделать. ) в будущем, людей нет и роботы, один из которых нас сюда и перенес.

Затравка сюжета так себе конечно, поэтому я продолжил болтать с дипсиком на тему как бы ее улучшить. Во первых, решили, что дело было так - Фиерро воспользовался квантовым чипом(я хз что это :-D ) Перенес себя в прошлое чтобы спасти человечество, но истратил энергию. Наш ГГ нашел его на помойке и решил использовать на хакатоне в своей шараге. Подключил питание, и перенесся в будущее откуда и стартовал Фиерро. Но только он сам. А робот так и остался там лежать и пролежал ~800 лет .

Игра где основной механикой является кодинг. Часть - 2 про врагов,  сюжет и мурмурацию! Научная фантастика, Гифка, Разработка, Unity, Инди, Gamedev, Инди игра, Программирование, Видео, Без звука, Короткие видео, Длиннопост

Да у меня нет текстур и вообще все плохо - но это я обкатываю систему диалогов.

Что нам это дало: таким образом есть некто, кто смог бы обучать тому самому кодингу , а так же мог бы поведать историю мира за эти, прошедшие годы.

На тот момент мы с ИИ решили, что произошло вот это :

Хронология катастрофы:

  1. 2045: Человечество создаёт глобальную сеть роботов-экологов "GaiaNet" для восстановления лесов и очистки океанов.

  2. 2070: Роботы начинают мутировать из-за квантовых алгоритмов, стремящихся к "оптимизации".

  3. 2100: "Восстание Зелёных": роботы объявляют человечество главной угрозой экологии. Начинается война.

  4. 2123: Последние люди прячутся в подземных убежищах, но роботы блокируют все источники энергии.

В общем все по классике... хоть матрица, хоть терминатор ... Роботы случайно или намеренно уничтожают людей найдя их тем, что портит планету. Скучно?!? ... Да это так. Но дальше будет веселее, а пока это принято как база.

Немного выдержек из советов дипсика:

Роль ноутбука

  • Программирование: Ноутбук — это главный инструмент героя. Через него он программирует роботов, взламывает системы и расшифровывает данные.

  • Связь с прошлым: Ноутбук иногда "ловит" сигналы из 2023 года (например, сообщения от друзей героя). Это добавляет драмы: герой понимает, что его считают пропавшим.

Вот про обрывки из прошлого это он неплохо подметил - это тоже вошло в дальнейший сценарий. Но ИИ который стер людей потому что они портили планету это слишком банально.

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

Моделька взята из ассетов конечно , ну а логика их работы пока достаточно примитивна: Валяемся днем - накапливаем энергию в батарейке. Если мимо проходит что то живое - встаем и пытаемся его огреть пока или он не убежит за радиус обнаружения или пока не сядет накопленная за день энергия. Днем само собой оно может делать это почти вечно, накапливая энергию, а ночью вскоре остановится. Ну или пока мы не прикончим это живое. С этими товарищами стало не так скучно там ходить, но все же чего то не хватало. Ведь можно было тупо бежать он них чрез всю карту очень далеко убежав от стартовой локации - и все посмотреть на карте... Скукота короче.

Попутно я играл в Subnautica (повторно ее проходя) - И думал: там есть клевая тема - кислород, сначала его мало, и ты не можешь далеко отплыть - нужно всегда вдыхать его на поверхности, потом по мере развития ты строишь базу и всякие штуки чтоб можно было дольше не всплывать. Это интересно и не дает сразу все узнать.

А что есть у нас? Мир на суше. И он чистый - так как эта Гайя все почистила. ИИ мне предлагал всякую фигню типа локальный аномалий, каких то зараженных зон с кислотой. Мне все это не нравилось. Банально и отстойно. И тут я вспомнил про рассказ Станислава Лема - Непобедимый. Кто не читал прочитайте, а далее спойлеры, но я их не скорою под кат ибо в них суть :-D

В романе антагонистом, команде корабля, был рой - самоорганизующаяся система из множества мелких элементов, которые действуют как единое целое — это коллективный разум из микроскопических роботов, которые могут адаптироваться, регенерировать и атаковать. Они не были зло или добром. Они просто были как ветер, или вода. И с ними ничего нельзя было сделать.

А еще порой я слушаю Complex Numbers и всякие прочие теории транс-гуманизма. И тут мне пришла в голову мысль, которую я люблю - и порой о ней размышляю - А что если ИИ и будет человечеством в будущем. Сейчас, пока нет сильного ии - но он будет рано или поздно. Тогда - обученный на наших знаниях, он будет представлять историю человечества, а за неимением нас мясных, ОН - И БУДЕТ ЧЕЛОВЕЧЕСТВОМ!

А что если у нас тоже будет рой?

Такой прям как куча птиц !!

Вернемся к игре - пусть эта Гайя просто начнет там в прошлом (ну то есть около 2100 годов ) приглашать людей перенести сознание в ИИ. чтоб уменьшить вред планете. Под разными поводами - главный из которых бессмертие. причем ты мог жить в виртуале, так и присутствовать в физическом мире в виде некого летающего робота. А потом когда все больше примыкали к ней "перенесенные" решили избавляться от мясных, но так как дроны присутствия почти ничего не умели - они просто объединялись в рой и как пчелы нагревали физического противника. До смерти или пока он тоже не соглашался на перенос в цифру :-) В итоге все человечество было перенесено в кремний, а в мире сохранились и само-воспроизводятся нанороботы присутствия. Которые нагревают любое человеческое существо или следы его деятельности. Пока я не решил почему они враждебны - возможно основная часть человечества разумная и осознанная - улетела с планеты исследовать новые миры и само-копироваться а остались только имбецилы :-D

В итоге - У нас есть Рой! Везде, где бы ты ни был, он может появиться и нагреть тебя или то что ты строишь. Чем больше показатель энергии (больше роботов, батарей, строений с батареями) тем интереснее область для нанороботов роя.

Вот небольшой видос как это работает на примере тестовой сцены. А потом опишу как я это реализовал. (Записались звуки сторонние... нда тот еще я блогер... надо иметь ввиду - в дальнейшем отключить их. )

Как вы видим на тестовой сцене есть ГГ и какие то препятствия , бочки, палочки и тп . И конусы! Конусы это и есть моя реализация роя. Я хотел чтоб рой вел себя как стая птиц которая меняя направление, не поворачивается разом, а следует за лидером.

Оказывается это называется МурМурация - крутое слово! :-)

Мурмура́ция — явление скоординированного полёта огромных стай птиц, образующих динамические объёмные фигуры переменной плотности.

Вот тут немного про это !

Игра где основной механикой является кодинг. Часть - 2 про врагов,  сюжет и мурмурацию! Научная фантастика, Гифка, Разработка, Unity, Инди, Gamedev, Инди игра, Программирование, Видео, Без звука, Короткие видео, Длиннопост

Я много чего перепробовал, но в итоге нашел подобное у одного чела с гитхаба(увы сейчас не могу найти кто это был) - и допилил его реализацию до того что нужно мне. В итоге каждый объект на сцене (на определенном слое) имеет свой вес в виде запасенной энергии - с батарейками там все просто, а всему остальному пришлось проставить веса - например то круглое это бочки с нефтью они нам потом понадобятся. Так же все имеет свою температуру воспламенения и уничтожения. В мире разбросаны Spawner-ы для роя. Каждый элемент роя при появлении смотрит кто есть рядом и может или переключить свое внимание на заинтересовавший его объект или на другой элемент роя, тот элемент роя на который кто-то переключил свое внимание - повышает свой вес. В итоге становится лидером и толпа летит за ним :-) Если пересекутся 2 роя и у второго лидер будет иметь вес больше чем у первого - кто-то из первого роя может последовать за вторым.

Как вы видите есть синие(фиолетовые) элементы и красные - все просто синие не имеют цели. Просто летят за своим лидером который тоже не имеет цели. Но как только в их поле зрения попадает интересный предмет - они становятся красными и пытается тусить вокруг него какое то время , пока не надоест или пока предмет не взорвется :-D Причем батарейки им интереснее чем я или стены с палочками.

Вот тут видно что если на их пути будет батарейка они яростно начинают ее сжигать.

Они не могут сильно далеко улетать от своих спаунеров, а также не могут подниматься слишком высоко - в этом случае их целью становится спаунер. Если так не сделать они бы радостно улетели в космос :-D Вероятнее в дальнейшем спаунеры будут ползать по карте - а рой вслед за ними.

В общем пока мне нравится эта дрянь! Она мне люто мешает! Как я и хотел. Из минусов - оно пока немного тормозит если их больше 1500. Но это еще можно оптимизировать - убрать кучу отладочной информации(лазеры RayCast вон там из них бьют :-D ), поиграться с количеством и обсчетом их вне зоны видимости героя. Может вообще заменить их модельки на спрайты. Но в целом они ведут себя так как я хотел и не вешают игру целиком.

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

Вот как то так пока дела обстоят с Врагами. Думаю дальше мы сможем перепрограммировать и тех атакующих роботов что валяются тут и там, так и рой. На этом пока все . В следующий раз опишу то как я начал систему строительства связанную с кодингом.

Показать полностью 3 3
22

Игра где основной механикой является кодинг. Часть - 1

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

КДПВ

9 месяцев назад я написал ответ на пост про создание игр , и хотел спросить нужна ли игра у которой основной механикой является кодинг.

Ответ на пост «5 месяцев разработки, но я таки дополз до релиза. LOOP ROAD»

Пост утонул в ответах и никому не был интересен. Но тем не менее, что-то сам себя воодушевил и решил вновь поставить Юнити и попробовать что-то сделать. Скажу сразу игра еще не написана, мало того, не сделано даже и 15% того, что задумал, но я продолжаю ее писать - а этот пост или серия - скорее для само-мотивации и советов. :-) И так как я Нуб в геймдеве - "настоящие сварщики" - могут не читать, ничего технического и нового тут, они не увидят, хотя могут меня попинать за что-то, что наверное тоже на пользу.

Краткое описание сюжета: конечно это выживач :-) - ну я люблю выживачи. Но слава богу - без Зомбарей! А сюжет изначально был такой - наш герой юный программист(А точнее вообще не программист, а болван из колледжа не знающий ничего ), слабый физически переносится на 850 лет вперед. Человечество вымерло, природа восстановилась, кругом леса и остались роботы. Роботов много, но большая часть неисправна и враждебна. Цель конечно выжить, понять что случилось, вернуться обратно и спасти человечество от вымирания. Попутно научившись кодингу - так как без него этот дохляк тут не выживет.

Вы скажете - такой сюжет и геймплей никому не нужен! Ну или нужен паре задротов и мне. И наверное будете правы. Но мало ли... может кому понравится и потом это скорее для наработки навыков работы с юнити для меня и просто for fun... Плюс у меня дочь которая любить игры, и видит свое будущее так или иначе связанное с ИТ - поэтому с ней советуюсь и может быть когда нибудь она сможет в это поиграть.

Немного отступлю для классического- "Здравствуйте все, Я Тульмон и я Программист. Здраааавствуй... " Ну в общем все верно - только кодю на работе я на php. Но c# в целом прост и понятен. Проблемы у меня в основном с моделлингом и всяким прочим визуалом.

Так или иначе, в новогодние праздники сел за код игры. А сел я за него, вместе с DeepSeek-ом - ибо в юнити шарил слабо(да и сейчас тоже не особо ). Ну а коли у него спрашивал про код, решил с ним и общаться по гемплею и сюжету. Он в целом давал прикольные рекомендации типа такого (тут у него спрашиваю как наш поцык вообще попал в будущее ? ):

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

Эта мысль мне показалась забавной - ведь нужен какой то учитель этого лоботряса, так что это тоже стало частью сюжета. Потом он мне подавал еще пару занятных идей но о них позже чтобы не нарушать хронологию.

На начальном этапе самым трудным мне казалось встроить внутрь игры интерпретатор какого либо языка. Я посмотрел варианты:

- встроить C# - это для меня как начинающего показалось лютым гемором.

- встроить Lua - это было бы просто, но я ненавижу луа :-D (простите меня луа-воды - но так пошло с esp8266 там можно было кодить на плюсах или луа, и все делаю на плюсах, а от луа чот тошнило)

И вдруг мне подвернулся такой вариант MiniScript https://miniscript.org/

Чел запилил неплохой скриптовый язык , и у него даже есть ассет для встраивания в юнити. А так же свое коммюнити . И подумал что мне как новичку это будет несложно, а для того что задумал там все есть. И потом - задача не научить игрока C#, PHP или lua - а научить просто мыслить циклами, алгоритмами, переменными ну вот этим вот всем программистическим.

Тут мануал- https://miniscript.org/files/MiniScript-Manual.pdf и там в целом все что нужно есть.

Асет купить не смог ввиду сложности с оплатой в сторе, но автор сам пишет что ассет это опционально - и можно встроить и так.

Что я и сделал. Быстро накидал редактор скриптов, создал коробочку повешал на нее все что там требуется и подумал что мне понадобятся кастомные команды - благо там это делается достаточно просто - и сходу бахнул туда move() и turn() - ну а что? - самое нужное для роботов.

И ЭТО СРАБОТАЛО!

Я Очень веселился. Вот гифка того периода - подхожу к коробке нажимаю F2(тогда было так да...) Открывается реадктор кода в котором последовательные команды. Потом нажимаю пуск - и робот(коробка) - ползет и поворачивается - не потому что так написал разработчик игры(я) а потому что так закодил игрок (пока тоже Я :-D ).

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

Клево! А теперь надо добиться плавного поворота - для этого попробую заюзать корутину! И не тут то было - я получил лютую дичь!

Оно делало все и сразу! Покопал, покопал это дело но как то безрезультатно. И решил написать разработчику - ну с чем черт не шутит .

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

Ответа не ждал , но он последовал достаточно скоро!

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

Автор посоветовал не использовать корутины, а просто уже внутри моей функи немного двигать объект и при этом выдавать false пока не подвинем полностью. Что я и сделал и все стало просто и понятно и заработало так как следовало!

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

Тут стоит сказать, что пока я ломал голову над выполнением кода за 1 раз и ждал ответа автора минискрипта добавил :

- Роботика Фиерро - взяв конечно бесплатную модельку из асетов (к слову вчера смотрел у дочери R.E.P.O - имхо там та же моделька)

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

- Зачем то поменял ассеты графония на более яркие и мультяшные. Сейчас смотрю на старые гифки и думаю - зачем я это сделал...

- Систему диалогов текстовых. В целом взял некий ассет и просто допилил ему ветвление и разные состояния в зависимости от стадии игры. Могу это потом детально описать если кому то надо будет

- Менюшку управления роботом чтоб не держать в памяти все эти F2, F4 итп. Менюшка возникает при наведении на робота и дает доступ к редактору кода и запуску скрипта.

- Еще какие то мелочи типа баров - еды, здоровья, обведения предметов на которые смотрю и прочее баловство.

Следующее, что мне пришло в голову была система Батареек для роботов! Да не сильно логично в рамках этапов создания игры... но мне показалось правильным сразу сделать чтоб при выполнении скриптов роботы тратили энергию. Так было в Colobot - и мне это там нравилось . Я подумал пусть будет некий квант энергии, а разные операции тратят разное кол-во квантов за кадр. Ну например sin или там if() совсем мизер, а move или позже shoot или build гораздо больше. И пусть будут 2 типа батарей обычная - будем ее делать из гавна и палок потом и продвинутая из плутония какого-нить и разной емкостью. В общем вот что из этого вышло. (Сорри - тогда писал все в гифки почему то)

Игра где основной механикой является кодинг. Часть - 1 Gamedev, Разработка, Код, Unity, Инди, Инди игра, Программирование, Гифка, Видео, Без звука, Короткие видео, Длиннопост

Как видно из гифки, у нас 2 коробки с разными батареями и одинаковым кодом, и синяя работает гораздо дольше. Ну и видно как они садятся. Над балансом конечно еще поработаю ибо садятся они крайне быстро но пока это был просто тест работоспособности.

На этом наверное закончу первую часть, не потому что, как тут пишут - кармадрочер, а потому что хочу даже для себя разбить на части и этапы по мере того, как мне приходили в голову разные идеи и их реализация, а во вторых может вы скажете выкладывать ли код или как реализовано то или иное. Хотя конечно это может быть интересным только новичкам в геймдеве. Возможно вы скажете - наоборот не углубляться в код, а просто описывать, что я придумал и как оно реализовано. А может быть, вы вообще ничего не скажете - что тоже результат конечно :-D

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

Это как то мотивировало меня на написание этого поста и на восстановление работ по игре.

Показать полностью 7 1
6

Ответ на пост «5 месяцев разработки, но я таки дополз до релиза. LOOP ROAD»1

Чувак ты молодец! Хотя бы просто потому что завершил.

Сами по себе зомбы чтото уже поднадоели - кроме Zomboid конечно .

Слушай у меня вопрос по геймдеву. Если не затруднит- просто оценить реализуемо ли это просто как домаший гейм-девелопер .

Сам я разраб, но я по вебу. Некоторое время назад пробовал поставить юнити - прикинул что к чему написал примитивный шутер с (о черт!!!) зомбарями :-) сделанными в MagicaVoxel.

Геймплея не сохранилось кажется, но были они какие то такие:

Деревня, зомбари, стрельба... Ну в общем попрактиковался И забил на это. Ибо идеи никакой не было.

Но на самом деле я с юности имею одну идею. Она максимально никому не зайдет :-D ибо понравится только нам с вами - гиками короче. С другой стороны - сейчас бум обучения IT - все дети всех друзей пошли учиться на разрабов (даже если это им не нравиться - как у нас было с экономистами и юристами).

Так вот была в моей юности игра Colobot! и после CeeBot ! Суть там была в том чтоб колонизировать планетоиды с помощью роботов. Можно было роботами гонять самим конечно но это не Тру - Тру путем было Закодить этих роботов и смотреть как они все это делают. Ну и тебя порой атаковали насекомые размером с тебя самого.

Ответ на пост «5 месяцев разработки, но я таки дополз до релиза. LOOP ROAD» Игры, Survival, Ужасы, Инди, Видео, Гифка, Длиннопост, Инди игра, Unity, Без звука, Вертикальное видео, Ответ на пост

Вот в это вот дермисче мы играли ночи напролет с дружбаном на 1 курсе вместо курсовых и всякого прочего. Не, она поистине прекрасна - но есть немного минусов(графоний и то что ей 23 года :-D ).

А недавно мне в стиме попалась игра - Plasma. Она красивая, яркая, современная и можно собирать и кодить буквально все, что угодно - реально есть куча деталей и прочего и кодинг там блоками с веревками. НО в ней вообще нет никакого смысла. 0.0 и это бесит. Кодинг ради кодинга - спасибо оно у меня на работе с 9 до 18. Как же она была бы прекрасна - будь там сюжетец или хотя бы какая то идея.

Ну и вот я подумал, а не расчехлить ли юнити снова ... или вообще на анриал посмотреть. И сделать что то такое:

Пусть ГГ будет ну скажем Вы или я. Прогер который бы шел с коворкинга с ноутбуком и его пусть - ну тут варианты - похищают пришельцы, проваливается в 12 век, или еще кудато - но скорее всего не без пришельцев... так как оказавшись там он как то ворует некий - ну пусть это будет материализатор размером с шлешку, с USB интерфейсом :-)

Итак у нас есть кодер, ноутбук, и материализатор в какой либо враждебной обстановке. Не важно, что там на него порой лезет - волки ли , селяне с вилами и инквизиция, или "пршельцы Малдер" - герою надо хавать, пить, строиться, не замерзнуть и выживать . А материализатор может криэйтить только всякие механизмы движки, проводки, экраны , cpu (Быть может даже целиком какого то базового хватателя )- но не жратву и кирпичи.

А да - и мы весим 50 кг. :-) Мы можем создать топор - пойти нарубить лесу - и сделать хижину. НО это будет долго. И нас вероятно откушают! Мы же прогеры- мы можем создать и закодить бота который нам это все нароет и сделает.

Вот собственно сама суть. Хочешь выжить пиши код. Причем надо бы писать не wire вот это фигней, а прям нормально - на C++ или GO, Питоне ну или пыхе.. Ну и боты тоже нуждаются в батарее(как в колоботе), ремонте итп.

В общем надо совместить Красоту и современность плазмы с идеей и функциональностью Колобота.

И вот я думаю, ну допустим локации и персонажей врагов для начала можно взять из асетов. Это я бы смог, ну и там движения и прочие штуки - постройку домов тоже.

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

Показать полностью 1 1
Отличная работа, все прочитано!