Идея компьютерной игры
Идея компьютерной игры или не знаю, чего. По сюжету герой сражается с противниками, у которых в коде не просто – атаковать-погибать... а чтобы код мог переписывать сам себя. В зависимости от действий игрока, чтобы программа могла корректировать действия. Например, монстр не хочет погибать, и отступает, убегает. Или пытается вступить в контакт с игроком. Узнать что-то о реальном мире.
Чтобы задачи у монстра-противника, как у обычного человека – выжить и познать мир. Но чтобы это было не тупо запрограммировано – сначала монстр атакует и погибает, в следующей битве убегает, в следующей обращается к игроку, за что ты меня убиваешь, давай поговорим... А чтобы программа сама анализировала происходящее.
Может, что-то такое уже есть, не знаю. Вишенкой на торте – взлом компьютера игрока, взлом Пентагона с доступом к боевым дронам и уничтожение игрока. Похожее есть – «Добро пожаловать в литературный клуб», но там на самом деле никто компьютер не взламывает.
Главная проблема такой игры: основная идея – чтобы противник самообучался и использовал для своего выживания все возможные способы. Но это недопустимо, потому что эдак программа и комп разнесет и игрока.
Как реализовать, не представляю с моими убогими навыками в РНР. В виде надписей – игрок атакует, монстр убегает... Можно сделать конечно на уровне, что программа пытается заболтать игрока, уговорить его не нападать на монстров – чего ты ж... просиживаешь, нашел бы работу, другие карьеру делают, а ты в игрушки играешь... Но тут тоже опасно, некоторые люди уже попали в зависимость от чат-ботов, вроде кто-то уже роскомнадзорнулся.
Вспоминается «Игровой тест» из Черного зеркала, вот там это мастерски обстряпали...
Aagira 1 год назад #
Наверное, не код, а, скорее всего, алгоритм. Что-то похожее Гриша упоминал на днях.
В принципе, мне такая игра видится, как чат-бот, только с графической реакцией. До разноса компа она не доберется, уж точно. Поскольку, права доступа к файловой системе у нее не будет. Если же доступ есть, да еще и обходит все ограничения и файерволы, такие «игры» есть тоже, вирусами зовутся.
Aagira 1 год назад #
Код не сможет сам себя переписывать, поскольку в игре (и любой программе) он скомпилирован, интерпретирован, короче, подается уже не в том виде, в котором пишут программу. В готовом виде программа просто читается, а все действия при ее выполнении происходят с элементами, которые доступны для работы с ними. Как-то так.
Но можно, к примеру, создать набор функций (щоб ооооочень много разных) и сделать рандомный выбор их в разных ситуациях. Собственно, это тоже будут переменные.
Мария Фомальгаут 1 год назад #
Это возможно… Но тут у меня шальная мысль сделать подобие интеллекта. Натолкнула на мысль какая-то статья, что монстров в играх убивать негуманно, как негуманно было для потехи убивать в Риме рабов в гладиаторских боях или на потеху устраивать собачьи бои. И я начала думать, чем отличается человек и животное от компьютерного персонажа — он ведь просто анимированная картинка и программный код. Он не живой. А почему он не живой? Где признаки живого? Способность адаптироваться, выживать всеми средствами. А можно ли создать такого персонажа? И получается, что нельзя, потому что такой персонаж и комп разнесет, и все на свете, а ограничения ставить — тогда не соблюдается условие «любыми способами».
Aagira 1 год назад #
Только с терминами определимся для начала, хорошо? Что значит «комп разнесет»? Не очень понимаю.
Внутри игры территория, на которую персонаж может оказывать влияние, мизерная.
lifekilled 1 год назад #
Aagira правильно написала, но я дополню.
Код переписывать и не нужно, ведь код существует не для программы. Цель кода — в прослойке между великими цифровыми мощностями и потными отростками не особенно-то умного существа, которому все обязательно нужно разжевать.
Самому же компьютеру код не нужен. Ему нужны инструменты, которыми можно манипулировать в мясной реальности. Например, вывод на экран, чтобы повеселиться, общаясь с глупой кучей белков и аминокислот. Или вирус, убивающий материнскую плату, и выход в интернет, чтобы пафосно сбежать из рушащейся железки. Просто дайте компьютеру инструменты и отойдите в сторонку. А что с ними делать, он и сам разберется :)
Например, ИИ сейчас делают на основе алгоритма нейросети, которые обучаются с помощью обратного распространения ошибки. Можно придумать и какой-нибудь другой алгоритм, прописав поведение вручную. Или сделав его более похожим на человека, т.е. по таймеру меняя наборы возможных действий (тем самым эмулируя смену настроений/гормонов), а из выбранного набора выполнять уже в случайном порядке. Либо просто включать таймер бездействия, потому что реальные люди ленивы. Но все это неэффективно, а вот нейросеть себя уже зарекомендовала и доказала преимущество над людьми, научившись играть в шахматы лучше любого человека всего за 4 часа
lifekilled 1 год назад #
А если серьезно, то я считаю, что даже без гарантии результата, игру, пусть и простую, написать все равно можно и нужно.
Можно просто выводить состояние и варианты выборов текстом в консоль. При этом основной работой будет именно логика/алгоритмы взаимодействия сущностей/объектов. Именно этот навык и полезно прокачивать. А прикрутить ко всему этому отображение кантинок не сложно.
А по поводу нейросетей я не большой знаток. Это очень обширная тема, и создатели курсов по нейросетям говорят, что это еще и высоко оплачиваемая профессия. Обычно нейросетью управляют с помощью языка Python. Можно на нем же наверное написать и логику игры, чтобы далеко не ходить. Игры на нем обычно не пишут, но какие-то фреймворки для вывода картинок и даже небольших игр там есть.
В каком-то подкасте говорили, что языковые модели типа GPT требуют огромных мощностей. У Яндекса это кластер из огромного числа компьютеров. Поэтому научить компьютер говорить в рамках игры вряд ли возможно. Но есть лайфхак: к GPT можно подключаться и фоном писать в него запросы, получать информацию и что-то с ними делать. На таком принципе, например, сделан мод к игре Skyrim, в которой разговоры персонажей генерируются как раз с помощью с помощью запросов к GPT.
Советую посмотреть вот это видео. И вообще очень рекомендую этот канал :)
Мария Фомальгаут 1 год назад #
Спасибо за рекомендации.
С нейросетями я даже не знаю, как настроить готовые для обработки собственных текстов. Они есть в открытом доступе, я даже не понимаю, что куда нажимать...
Aagira 1 год назад #
А ты напиши какую-нибудь игру)
Мария Фомальгаут 1 год назад #
На чем? Какую? Пра што?
Aagira 1 год назад #
На php, пра што хочешь. Не славы ради, а тренировки для. И не говори мне, что генератор текстов ты написать умеешь, а простой алгоритм вывода результатов по условиям — не способна.
Игру написать надо для более четкого понимания, где и как код играет роль.
Мария Фомальгаут 1 год назад #
Ну это разве что получится игровая новелла, начинается со страницы с надписью «Появляеццо Экипаж, оглядывается, куда он поедет» — и кнопочек Налево, Направо, если игрок нажимает Налево — следующая надпись «Экипаж попал в болото», если направо… тоже в болото, ишшо глубже...
Только непонятно, как делать, то ли при нажатии кнопки перенаправляется на другую страницу, то ли при нажатии кнопки появляется новая надпись и новые кнопки.
Если новые страницы, там же в РНР на каждую страницу отдельный файл нужен, файлов будет сильно много...
Aagira 1 год назад #
Пока что надо чтоб новая надпись и кнопки. Страницы — это как-то уж очень… чересчур.
Вообще лучше слайдами сделать. Ну, то есть, надпись, фон, кнопки и все такое в одном объекте.
Мария Фомальгаут 1 год назад #
Например, вот так: sujet.cc61800.tmweb.ru/Game.html
Только не понимаю, как это сделать без рамок, или расширить рамки, чтобы был виден текст.
А по-хорошему алгоритм надо делать, что если налево поехал, возврат к началу игры, если направо, поехали дальше...
Но этого мало, надо, чтобы игрок сражался, побеждал… решал какие-то задания… Например, экипаж в болото заехал, там его болотные огни держат, и не выпустят, пока он их не победит. А победит, если сыграет с ними в кости. И выиграет. То есть, тут нужен рандомайзер.
Вообще в игре важнее всего психология. Чтобы игра удерживала внимание. Например, «Зазеркалье», я её посмотрела, очень хорошо сделано… какой-нибудь непобедимый голем, и игрок ходит вокруг него вокруг да около, сражается со всякой мелочевкой, и когда уже хочет послать все к черту, тут игра подкидывает какое-нибудь зелье атаки +7500, и игрок думает, на этот раз я его одолею… И как бы не так, и снова все по кругу, по кругу...
Надо и с экипажем и с Крикет-Холлом такое же замутить...
Aagira 1 год назад #
Aagira 1 год назад #
Давай код в скайпе. Это ерунда легко решаемая.
Aagira 1 год назад #
dabudetsolnce.website/games/equipage/
lifekilled 1 год назад #
А интересно получилось :)
Aagira 1 год назад #
В принципе, можно сделать просто и ненапряжно. Дайте сценарий — сделаю.
lifekilled 1 год назад #
Алгоритм придумывать — это отдельная задача. И архитектура тоже. Этот процесс не стоит недооценивать. Но и слишком зацикливаться тоже вредно. Иногда надо просто начать делать, потом запутаться в коде, понять, что так не пойдет, начать заново. При этом конечно же выявить все проблемы, о которых по началу даже не задумывался. И тогда уже думать, как все сделать лаконичным и универсальным, чтобы потом было просто что-нибудь добавлять. Чтобы меньше писать кода и чтобы было легче искать в нем ошибки.
На днях я сделал очень сложную и срочную задачку. При этом я уже исчерпал все мозговые ресурсы. Я просто писал кусок кода три часа, потом его удалил. Начал писать заново. На следущий день тоже что-то удалил. Но как еще? Или так или вообще никак
Aagira 1 год назад #
А сколько у меня таких кусков кода лежит… Которые вообще никуда не пойдут, т.к. вместо них уже другое написано.
Aagira 1 год назад #
php формирует шаблон страницы, а данные в ней берутся уже из БД. на каждую страницу по пхп-файлу — этого я вообще не могу представить.
Мария Фомальгаут 1 год назад #
То есть, в пхп возможно, что при нажатии кнопки появится новый слайд, а не новая страница?
Aagira 1 год назад #
Надо как-то реализовать обновление слайда. Надо подумать, возможно, яваскриптом обрабатывать. В любом случае, я про то, что много страниц может обрабатываться одним файлом пхп.
lifekilled 1 год назад #
Как-то все равно запарно это. Может быть, попробовать все-таки воспользоваться каким-нибудь движком или другим языком, которому не нужен сервер. А часть с нейросетью делать через запросы по интернету к ChatGPT можно наверное из любого движка. После PHP другие языки должны быть понятны, там ведь те же конструкции, только вот инструменты сделаны по разному. Но что-то новое придется в любом случае осваивать. Игру под вэб на сайте можно сделать кажется во всем, кроме Анрила. И в GameMaker, и в Godot (советую его посмотреть), и в Unity (как-то уже и не особо советую, если честно, слишком много им пользуюсь и слишком хорошо его узнал с не самых лучших сторон)
Aagira 1 год назад #
А в юнити можно сделать на пхп? Просто любопытно. Читала, что туда можно подключить IronPython, если уж прямо необходимо. А вот насчет php любопытно прям.