Skip to content

🏙️ Design the city map model and implement its procedural generation for each new game session.

Notifications You must be signed in to change notification settings

thecrazymage/Procedural-Game-Map-Generation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Procedural-game-map-generation

Данная работа выполнена в качестве практики во 2-м семестре 3-го курса программы ПМИ в РТУ МИРЭА.

Запуск кода

cd ./source
g++ *.cpp -o main.exe
.\main.exe

Постановка задачи

Разработать модель карты города и реализовать её процедурную генерацию для каждой новой игровой сессии.

Карта должна состоять из параллельных пластов прямоугольных районов (горизонтальные линии районов должны быть параллельны друг другу), в которых есть по несколько домов. От каждой двери дома провести тропинку, идущую к более крупной дороге, окружающей район. Размеры карты, домов, дорог, а также количество районов и домов в них реализовать в виде входных параметров, от которых также зависит генерация.

Модель карты

Общая структура карты города будет выглядеть следующим образом (красным выделены двери домов):

Рисоваться карта будет в текстовом редакторе "Блокнот" и будут использованы следующие обозначения:

  • "*" - границы города;
  • "H" - дороги (и тропинки, и основные дороги);
  • "D" - дверь дома;
  • "1" - границы дома;
  • "2" - внутренняя часть дома;
  • "0" - пустое пространство на карте.

Параметры модели

В качестве параметров для генерации используем:

  • height - высота карты в количестве символов без учета границы и дорог;
  • heightCount - количество районов в высоту;
  • width - ширина карты в количестве символов без учета границы и дорог;
  • wideCount - количество районов в ширину;
  • roadSize - ширина основных дорог в количестве символов (для тропинок ширина постоянная и равна 1);
  • diffPercent - коэффициент искажения размера района относительно среднего размера, вычисленного по формуле $\frac{height}{heightCount}$ или $\frac{width}{wideCount}$ в зависимости от расположения (от 0 до 1);
  • housePercent - зависимость количества домов в районе от его размеров (от 0 до 1).

Реализация

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

Результаты

Три разные реализация модели для параметров height = 45, width = 60, wideCount = 3, heightCount = 3, diffPercent = 0.25, roadSize = 2, housePercent = 0.33 выглядят так:
1.

2.

3.

About

🏙️ Design the city map model and implement its procedural generation for each new game session.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages