Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

start_rnd_refork #101

Closed
wants to merge 1 commit into from
Closed

start_rnd_refork #101

wants to merge 1 commit into from

Conversation

Avitzh
Copy link

@Avitzh Avitzh commented Jun 7, 2024

Заготовка для RnD refork

Создаю Пулл для работы над рефорком РнД, здесь пока опишу идеи, как будем менять РнД и подстраивать его под реалии фонда.

Для начала поясню задумку глобально: У нас есть бэй-РнД, который никак не подходит для SCP фонда в целом, следовательно, компоненты старого РнД мы переделываем и переосмысляем полностью. Как же мы это делаем? Разделяем Исследования и Разработки на четыре направления исследований:

  • Меметика: Изготовление, изучение мем-агентов и мем-компонентов (Возможно затронуть антимеметику и разработку контр-агентов, также переделать сами SCP объекты для изучения).
  • Естественно-научное направление: исследование материалов, физических свойств, химических свойств, структурных особенностей SCP (Например создание новой брони, оружия за счёт материалов полученных от SCP).
  • Ксенобиология/Биология: Переработка генетики, вирусологии, добавление связанного с этим механа (Можно добавить слаймов для любителей веселой фермы, переделать вирусные SCP объекты).
  • Техническое направление: Создание, разработка технических устройств, робототехника, кибернетика (Исследование разработок Андерсон Роботикс, работа с ИИ), создание брони и оружия из материалов полученных из других направлений, создание экзосьютов.

Рассмотрим каждое направление подробнее.

Меметика

Так как меметика предполагает манипуляции с памятью, действиями субъекта, то вот возможная реализация всей меметики в коде: Создаём прототип stack машины и базовый набор команд (мем-компонентов), мем-компоненты разделяем по природе: визуальные, слуховые, тактильные. В зависимости от природы меняются триггеры для срабатывания мем-агента, но пока это опустим. Сами мем агенты в билде реализуем через datum значение: делаем ему своё название по классификации, например: Мем-компонент Beta-251, бета класс компонента, 251 номер. Мем компоненты подвязываем под proc, который выполняет базовые операции, например: компонент для получения ссылки на объект, который взаимодействует с мем-компонентом, компонент для выполнения какого-то действия на объект (условно добавление в memory закона, как у импланта freedom тритора). Когда у нас есть переменные и операторы, мы можем сделать собственный обработчик для команд stack-машины, все команд stack-машины связываем с внутренними proc игрока, например прок на выполнение какого-то действия. Концепции может потребоваться доработка, но пока всё планируется реализовать примерно так.

Примеры для лучшего понимания того, что будет делаться.

  1. Есть некоторый алфавит содержащий все мем-компоненты билда:

var/list/comps = list(...) // Глобальный список для всех компонентов

/datum/memetic/component
var/class // Класс компонента: допустим Delta, Charlie, Beta, Alpha
Классы нужны для разграничения более продвинутых компонентов.
var/num // Численное обозначение. Генерируется случайно, необходимо для различения компонентов при
исследовании.

// Пример прока для компонента
/datum/memetic/component/proc/foo(var/mob/living/carbon/human/H) // В зависимости от компонента input будет меняться
return H.some_variable
// Прок возвращает некоторое значение игрока, значение автоматически добавляется в стек

  1. Несколько компонентов образуют программу, которая выполняется внутри проков игрока.
    Для описание ситуации хорошо подойдёт бугурт:
    "
    РЕШИЛ ВЗЛОМАТЬ ПРЕПОДА
    @
    ПРЕПОД КОМПИЛИРУЕТ КОД У СЕБЯ В ГОЛОВЕ И ДОХОДИТ ДО ЧАСТИ С ПЕРЕПОЛНЕНИЕМ БУФЕРА
    @
    ПОЛУЧАЕШЬ ДОСТУП К АДРЕСАМ ПАМЯТИ ЕГО СПИННОГО МОЗГА
    @
    ТЕПЕРЬ ПРЕПОД [ДАННЫЕ УДАЛЕНЫ] ПРЯМО НА ЭКЗАМЕНЕ
    "

Добавляем для всех human переменную хранящую меме-код, меме-код выполняем каждый тик.
Допустим хотим сделать мем-агент с такими свойствами: Если объект слышит [триггер-слово] выполнить действие cough

  • Для выполнения кода пишем анализатор входящего текста отдельным проком и по нему проверяем слышал ли игрок такое слово, если слышал возвращаем true.
    /mob/living/carbon/human/proc/get_heard(var/string)
  • Для вызова такого метода получаем ссылку на субъекта и помещаем её наверх стека, затем пишем вызываем сам метод, который проверяет объект сверху стека и возвращает значение
  • Добавляем аналог скобок, чтобы сделать условие if, если условие выполняется вызываем метод игрока для действия cough.

Таким образом мы получаем код мем-агента, сам мем-агент будет хранить свой код и передавать его своим жертвам.

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

Естественно-научное направление

Естественно-научное направление предполагает добавление материалов, реагентов, структурных особенностей для всех объектов. Помимо этого необходимо создать инструменты для сбора материала исследований и обработки этого материала. - В качестве возможных инструментов сборки могут послужить обычные инструменты: ножницы, скальпель, пинцет и прочее. - В качестве машин для исследований: масс спектрометр, рентген аппарат, аппаратура для улавливания альфа, бета, гамма, нейтронного излучения, МРТ, анализаторы для структуры объекта, машины для изготовления новых материалов на основе ранее полученных. Химический отдел уже есть в РнД, поэтому добавляем уникальные реакции для разных веществ реагентов.

Пример:
Есть SCP-999, с помощи ватки и пробирки мы получаем материал объекта. На материал оказываем разные воздействия, смотрим его структуру. Допустим при пропускание материала SCP999 через масс спектрометр мы получили в результатах много углерода, следовательно, делаем предположение о органической природе объекта. Материалы смешиваем с хим реактивом, допустим серной кислотой, получаем пепел и новое вещество. Вещество используем для изготовления материала, например при обработке стали мы получаем материал с большой упругостью. Материал отправляем в техническое направление: из него делают новый бронежилет, который лучше справляется с физическим уроном. Profit!

Как можно понять, это направление создаёт сырьё для разработки улучшений и позволяет иначе рассмотреть почти все SCP объекты.

Ксенобиология/Биология

Название направления может быть изменено, поэтому пока два названия. Направление специализируется на изучение свойств объектов с точки зрения биология. Для изучения реализуем базовый инструментарий: возможность собирать генетический материал у живых SCP, переносим механику генов и мутаций с ТГ, но добавляем уникальные мутации доступные только объектам, которые необходимо для начала извлечь, а потом восстановить и преобразовать для использования humanом. В вирусологии расширяем список симптомов и стадий. Переписываем 008 под нормальную вирусологию (вроде есть инфа, что 008 модифицировался самим фондом, поэтому имеет смысл перенести proc объекта в вирусологию). Также для разнообразия возможно добавить слаймов (почему бы и нет?), но поменять список экстрактов - сбалансировать/усилить. Для работы добавляем machine:
  • Генетика: dna seqvenser, капсулу для работы с dna, dna анализатор для образцов днк. Импланты, реакции на мутаген. (клонирования не будет)
  • Вирусология: центрифуга, сплайсер для симптомов, подвязка вируса к расе. Систему вакцин оставляем такую же.
  • Ксеноботаника: большая часть machine уже есть в коде, добавляем больше мутаций и механик

Техническое направление

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

Примеры:

  • В билде уже есть версия улучшенной сварки, делаем возможным сделать её не с помощью протолата, а с помощью реагента полученного от SCP.
  • Для оружия делаем машины для изготовления деталей, у каждого оружия делаем компоненты: затвор, спусковой механизм, тип патрона, ствол. Для оружия ближнего боя иные компоненты. Из деталей собираем готовый продукт. (в зависимости от материала или ещё какой-нибудь херни меняем статы оружия: точность, урон, сам тип урона, надежность, вес и габариты)
  • Для брони тоже самое: компоненты и изменение статов.
  • Обслуживание ИИ, боргов. Проверка на ошибки (добавить механ случайных ошибок). Ремонт и улучшения.
  • Экзосьюты.

Вот примерное описание того, что планируется реализовать в билде. Очень вероятно, что потребуются доработки, так как здесь идёт описание не столько кода, сколько геймдизайна нового РнД.
В план не включил ксеноархеологию, так как не уверен, что в ней есть нужда.

  • Pull Request полностью завершен, мне не нужна помощь чтобы его закончить.
  • Я внимательно прочитал все свои изменения и багов в них не нашел.
  • Я запускал сервер со своими изменениями локально и все протестировал.

Заготовка для draft pull
@Avitzh
Copy link
Author

Avitzh commented Jun 12, 2024

Надо что-то делать...

@Avitzh Avitzh closed this Jun 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant