"Відеогра із процедурно генерованим світом"
- ПІБ: Кутила Пилип Геннадійович
- Група: ФЕІ-41
- Керівник: Болеста Іван Михайлович, д-р. фіз.-мат. наук, професор кафедри радіофізики та комп'ютерних технологій
- Дата виконання: [01.06.2025]
- Тип проєкту: Відеогра
- Мова програмування: C#
- Ігровий рушій: Unity
- Процедурна генерація мапи висот на основі шуму Перліна
- Процедурна генерація двовимірної текстури для попереднього перегляду на основі мапи висот
- Створення двовимірної текстури мапи "Falloff" для попереднього перегляду
- Процедурна генерація тривимірних ігрових об'єктів із ландшафтом (як для попереднього перегляду, так і в процесі гри) на основі мапи висот
- Процедурна генерація безперервного ігрового світу, із використанням вищезгаданих ігрових об'єктів, під час гри з відстеженням позиції користувача
- Можливість застосувати мапу "Falloff" і/або режим плоского затінення для вищезгаданих ігрових об'єктів (як для попереднього перегляду, так і в процесі гри)
- Можливість пересування по ігровому світу
Клас / Файл | Призначення |
---|---|
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 |
- Unity Hub
- Unity Editor 6000.0.32f1 LTS (завантаження через Unity Hub)
git clone https://github.com/longl1ve/gameProceduralGenerated.git
cd gameProceduralGenerated
- Додати Unity проект в Unity Hub (Projects -> Add -> Add project from disk)
- Запустити проект в Unity Editor шляхом натискання на відповідний проект, що з'явився в списку проектів
- Впевнетись, що у вікні ієрархії використовується сцена "Main"
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Noise" як опцію для "Preview Type"
- За потреби натиснути "Generate"
- Результат можна побачити у вікні "Scene"
- Додатково, в папці "WorldAssets" можна обрати "Noise.asset" і отримати доступ до параметрів генерування мапи висот через вікно "Inspector"
- Впевнетись, що у вікні ієрархії використовується сцена "Main"
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Falloff" як опцію для "Preview Type"
- За потреби натиснути "Generate"
- Результат можна побачити у вікні "Scene"
- Впевнетись, що у вікні ієрархії використовується сцена "Main"
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Mesh" є активним (можна зробити активним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- Впевнетись, що у вікні ієрархії ігровий об'єкт "Plane" є неактивним (можна зробити неактивним шляхом натискання на чекбокс у вінкі "Inspector", попередньо обравши такий ігровий об'єкт в ієрархії ігрової сцени)
- У вікні "Inspector" ігрового об'єкта "WorldBuilder" обрати "Mesh" як опцію для "Preview Type"
- За потреби натиснути "Generate"
- Результат можна побачити у вікні "Scene"
- Додатково, в папці "WorldAssets" можна обрати "Terrain.asset" або "Texture.asset" і отримати доступ до параметрів генерування або текстурування ландшафту через вікно "Inspector"
- Впевнетись, що у вікні ієрархії використовується сцена "Main"
- Натиснути на "Play"
- Залучитись до процесу гри можна через вікно "Game" (керування персонажем на W/A/S/D, стрибок на Space, прискорення на Left Shift)
- K. Perlin. An Image Synthesizer. ACM SIGGRAPH Computer Graphics, Vol. 19, Iss. 3. USA : Association for Computing Machinery, 1985.
- N. Shaker, J. Togelius, M. J. Nelson. Procedural Content Generation in Games. Switzerland : Springer Cham, 2016.
- T. X. Short, T. Adams. Procedural Generation in Game Design. USA : CRC Press, 2017.
- 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.
- 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.
- В. Койбічук, Р. Кочережченко, К. Гриценко, В. Яценко, А. Єфіменко. Алгоритми процедурної генерації ігрового контенту з використанням графів. Information Technology: Computer Science, Software Engineering and Cyber Security, Vol. 3. Національний технічний університет «Дніпровська Політехніка», 2024.
- 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.
- 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.
- 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.