То, что я хочу сделать, это процедурно генерировать игровой контент таким же образом каждый раз, когда он отображается, без необходимости отображать все в игре до тех пор, пока игрок не достигнет этого определенного раздела игры, используя PRNG. Я пытаюсь написать космическую игру RTS. Я также хочу иметь карту сражений на планетарном уровне, где игрок может контролировать единицы, которыми он владеет. также большинство сражений, с которыми нужно сражаться в космосе. Я хочу процедурно генерировать звезды, планеты, луны и при строительстве кораблей или воинских частей. Я хочу, чтобы конкретная вещь создавалась одинаково каждый раз. Одни и те же игровые среды. Кто-нибудь знает какие-нибудь советы или статьи, которые мне помогут? Я не знаю, как установить PRNG для создания контента, такого как звезды/планеты w и т. Д.Я хочу написать PRNG в C#
ответ
Не изобретайте велосипед. Просто используйте System.Random
, который is a PRNG.
[Случайный класс] представляет генератор псевдослучайных чисел, устройство, которое производит последовательность чисел, которые отвечают определенным статистическим требованиям к случайности.
Просто постройте случайный объект с помощью appropriate seed.
Предоставление одинакового значения семени различным случайным объектам приводит к тому, что каждый экземпляр производит идентичные последовательности случайных чисел.
Фактическое использование такого, хорошо, функция кода поколения - но, по крайней мере, теперь у вас есть способ повторить ту же «случайную» последовательность по требованию ;-)
Алгоритм, используемый Random, не может быть гарантирован в реализации, но такое посевное использование будет «последовательным» в той же среде. В любом случае вы можете тривиально использовать Random сейчас и поменять его позже, если потребуются более высокие гарантии.
Я считаю, что это не подходит для SE. Хорошо написано, но только на краю, где вы не можете судить, какие ответы лучше, потому что у вас нет ключа, нет меры. Кроме того, здесь запрашиваются ресурсы, потому что эти ссылки имеют тенденцию стареть и становятся недействительными. – Palec