Skip to content

longl1ve/gameProceduralGenerated

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📘 Назва проєкту

"Відеогра із процедурно генерованим світом"


👤 Автор

  • ПІБ: Кутила Пилип Геннадійович
  • Група: ФЕІ-41
  • Керівник: Болеста Іван Михайлович, д-р. фіз.-мат. наук, професор кафедри радіофізики та комп'ютерних технологій
  • Дата виконання: [01.06.2025]

📌 Загальна інформація

  • Тип проєкту: Відеогра
  • Мова програмування: C#
  • Ігровий рушій: Unity

🧠 Опис функціоналу

  • Процедурна генерація мапи висот на основі шуму Перліна
  • Процедурна генерація двовимірної текстури для попереднього перегляду на основі мапи висот
  • Створення двовимірної текстури мапи "Falloff" для попереднього перегляду
  • Процедурна генерація тривимірних ігрових об'єктів із ландшафтом (як для попереднього перегляду, так і в процесі гри) на основі мапи висот
  • Процедурна генерація безперервного ігрового світу, із використанням вищезгаданих ігрових об'єктів, під час гри з відстеженням позиції користувача
  • Можливість застосувати мапу "Falloff" і/або режим плоского затінення для вищезгаданих ігрових об'єктів (як для попереднього перегляду, так і в процесі гри)
  • Можливість пересування по ігровому світу

🧱 Опис основних класів / файлів

Всі скрипти зберігаються за шляхом: Assets/Scripts

Клас / Файл Призначення
NoiseUtility.cs Генерація мапи висот на основі шуму Перліна
WorldBuilder.cs Побудова ігрового світу
TerrainPreview.cs Відображення попереднього перегляду ландшафту і двовимірних текстур в Unity Editor
TextureUtility.cs Робота з текстурами
MeshUtility.cs Створення полігональних сіток
InfiniteWorld.cs Генерування безперервного ігрового світу
FalloffUtility.cs Створення мапи "Falloff" для ефекту спадання на краях "чанків" ігрового світу
HideOnPlay.cs Переводить в неактивний стан деякі ігрові об'єкти при запуску гри
NoiseSettings.cs Налаштування для генерації мапи висот
TerrainSettings.cs Налаштування ландшафту
DynamicUpdate.cs Автоматичне оновлення сцени гри при зміні параметрів
TextureSettings.cs Налаштування текстур
Chunk.cs Клас для "чанку"
ChunkLOD.cs Управління рівнями деталізації для чанків
LODParameters.cs Параметри для роботи з LOD
MeshCalculator.cs Обчислення полігональних сіток
EditorScripts/DynamicUpdateInspector.cs Кастомний інспектор для DynamicUpdate
EditorScripts/WorldBuilderInspector.cs Кастомний інспектор для WorldBuilder

▶️ Як запустити проєкт "з нуля"

1. Встановлення інструментів

  • Unity Hub
  • Unity Editor 6000.0.32f1 LTS (завантаження через Unity Hub)

2. Клонування репозиторію

git clone https://github.com/longl1ve/gameProceduralGenerated.git
cd gameProceduralGenerated

3. Запуск

  1. Додати Unity проект в Unity Hub (Projects -> Add -> Add project from disk)
  2. Запустити проект в Unity Editor шляхом натискання на відповідний проект, що з'явився в списку проектів

Приклади тестування

Генерація двовимірної текстури мапи висот для попереднього перегляду

  1. Впевнетись, що у вікні ієрархії використовується сцена "Main"
  2. Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  3. Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  4. У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Noise" як опцію для "Preview Type"
  5. За потреби натиснути "Generate"
  6. Результат можна побачити у вікні "Scene"
  7. Додатково, в папці "WorldAssets" можна обрати "Noise.asset" і отримати доступ до параметрів генерування мапи висот через вікно "Inspector"

Генерація двовимірної текстури мапи "Falloff" для попереднього перегляду

  1. Впевнетись, що у вікні ієрархії використовується сцена "Main"
  2. Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  3. Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  4. У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Falloff" як опцію для "Preview Type"
  5. За потреби натиснути "Generate"
  6. Результат можна побачити у вікні "Scene"

Генерація тривимірного ігрового об'єкту із ландшафтом для попереднього перегляду

  1. Впевнетись, що у вікні ієрархії використовується сцена "Main"
  2. Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  3. Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
  4. У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Mesh" як опцію для "Preview Type"
  5. За потреби натиснути "Generate"
  6. Результат можна побачити у вікні "Scene"
  7. Додатково, в папці "WorldAssets" можна обрати "Terrain.asset" або "Texture.asset" і отримати доступ до параметрів генерування або текстурування ландшафту через вікно "Inspector"

Процедурна генерація безперервного ігрового світу під час гри

  1. Впевнетись, що у вікні ієрархії використовується сцена "Main"
  2. Натиснути на "Play"
  3. Залучитись до процесу гри можна через вікно "Game" (керування персонажем на W/A/S/D, стрибок на Space, прискорення на Left Shift)

📷 Приклади / скриншоти

Генерація двовимірної текстури мапи висот для попереднього перегляду

Alt text

Генерація двовимірної текстури мапи "Falloff" для попереднього перегляду

Alt text

Генерація тривимірного ігрового об'єкту із ландшафтом для попереднього перегляду

Alt text

Процедурна генерація безперервного ігрового світу під час гри

Alt text

🧾 Використані джерела / література

  1. K. Perlin. An Image Synthesizer. ACM SIGGRAPH Computer Graphics, Vol. 19, Iss. 3. USA : Association for Computing Machinery, 1985.
  2. N. Shaker, J. Togelius, M. J. Nelson. Procedural Content Generation in Games. Switzerland : Springer Cham, 2016.
  3. T. X. Short, T. Adams. Procedural Generation in Game Design. USA : CRC Press, 2017.
  4. R. Khaled, M. J. Nelson, P. Barr. Design Metaphors for Procedural Content Generation in Games. CHI '13: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. USA : Association for Computing Machinery, 2013.
  5. K. Compton, M. Mateas. Procedural Level Design for Platform Games. AIIDE'06: Proceedings of the Second AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment. USA : AAAI Press, 2006.
  6. В. Койбічук, Р. Кочережченко, К. Гриценко, В. Яценко, А. Єфіменко. Алгоритми процедурної генерації ігрового контенту з використанням графів. Information Technology: Computer Science, Software Engineering and Cyber Security, Vol. 3. Національний технічний університет «Дніпровська Політехніка», 2024.
  7. M. Hendrikx, S. Meijer, J. Van Der Velden, A. Iosup. Procedural Content Generation for Games: A Survey. ACM Transactions on Multimedia Computing, Communications, and Applications, Vol. 9, Iss. 1. USA : Association for Computing Machinery, 2013.
  8. J. Togelius, G. N. Yannakakis, K. O. Stanley, C. Browne. Search-based Procedural Content Generation. EvoApplicatons'10: Proceedings of the 2010 international conference on Applications of Evolutionary Computation, Vol. 1. Germany : Springer-Verlag, 2010.
  9. S. Lague. Procedural Terrain Generation, Educational YouTube Video Series. - 2016. - [Cited 2025, 06 February]. - Available from : https://www.youtube.com/playlist?list=PLFt_AvWsXl0eBW2EiBtl_sxmDtSgZBxB3.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published