Ресурсы по проектированию симулятора человека.(думаю, 13-й этаж) [закрыто]

StackOverflow https://stackoverflow.com/questions/825925

  •  05-07-2019
  •  | 
  •  

Вопрос

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

Я написал несколько симуляций с базовым классом human, которые имеют подклассы male и female.У них есть рутина под названием runYear, и они взаимодействуют.Они встречаются, работают, умирают, заводят детей, грустят, совершают самоубийство, разводятся и т.д.

Он будет работать тысячи "лет" и, в зависимости от параметров семян, вырастет очень большим или отмрет.

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

По техническому вопросу:

  1. должен ли я рассмотреть возможность использования объектно-ориентированной базы данных для хранения этой информации?
  2. Я планировал написать это на C # (из соображений удобства), было бы лучше изучать LISP?
  3. Есть ли какие-либо другие симуляторы с открытым исходным кодом, с которыми кто-нибудь сталкивался, возможно, я смогу почерпнуть некоторые идеи из

Любые другие идеи / предложения были бы просто потрясающими.

Эрик

Это было полезно?

Решение

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

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

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

Пара примеров о существующих системах:

Другие советы

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

Как только вы настроите свой Мир, создайте себе Абстрактный Человеческий класс.Этот класс будет обладать базовыми человеческими способностями.Вы можете указать такие данные, как рост, вес, возраст и т.д...

Оттуда вы наследуете класс Human и создаете классы Woman и Man, каждый со своими специализированными атрибутами.Класс женщины может иметь размер груди, кулинарные навыки, уровень сексуальной загорелости и т.д...Мужской класс будет в основном предназначен для отслеживания того, кто лысый.

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

Как только вы разберетесь со всем этим, вы можете начать работать над забавными вещами.Вы можете создавать объекты, чтобы внести хаос в их жизнь, такие как Болезни, Религия, Деньги, Преступность, Бедность, Голод, Наводнения, Торнадо и т.д..

Я думаю, что первый шаг - это сначала уметь описательно описать вашу проблему.

Мне нравится думать об этом как о System-of-Systems проблема.Для этого взгляните на Системный язык.Таким образом, вы можете начать с высокого уровня, а затем повышать точность по мере развития вашей системы.

Вам следует взглянуть на моделирование дискретных событий фреймворки (в конце есть ссылка на список).Я только знаю Симпотичный для Python, но есть и другие, с открытым исходным кодом и коммерческие.Базовый фреймворк также довольно прост, так что это должно быть легкое "упражнение по программированию".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top