Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thecrazymage/procedural-game-map-generation
:cityscape: Design the city map model and implement its procedural generation for each new game session.
https://github.com/thecrazymage/procedural-game-map-generation
cpp game game-development map-generation procedural-generation
Last synced: about 16 hours ago
JSON representation
:cityscape: Design the city map model and implement its procedural generation for each new game session.
- Host: GitHub
- URL: https://github.com/thecrazymage/procedural-game-map-generation
- Owner: thecrazymage
- Created: 2022-02-24T15:01:02.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-25T16:55:32.000Z (almost 2 years ago)
- Last Synced: 2023-04-17T16:01:18.659Z (over 1 year ago)
- Topics: cpp, game, game-development, map-generation, procedural-generation
- Language: C++
- Homepage:
- Size: 1.42 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Procedural-game-map-generation #
Данная работа выполнена в качестве практики во 2-м семестре 3-го курса программы ПМИ в РТУ МИРЭА.## Запуск кода ##
```bash
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).## Реализация ##
Всю информацию по постановке задачи, алгоритму и реализации процедурной генерации карты города можно найти в [отчёте по практике](https://github.com/thecrazymage/Procedural-game-map-generation/blob/main/docs/%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0.pdf).
## Результаты ##
Три разные реализация модели для параметров height = 45, width = 60, wideCount = 3, heightCount = 3, diffPercent = 0.25, roadSize = 2, housePercent = 0.33 выглядят так:
1.
2.
3.