SpeedyE1780 / PCG-Tool

Universal Tool to generate content procedurally in games
MIT License
0 stars 0 forks source link
cmake cpp cpp23 csharp demo game game-development level-generator maze-generator procedural-generation prototype python tools unity unreal-engine wave-function-collapse

PCG-Tool

Description

The PCG Tool is made up of the C++ DLL library that can be used with C++ and other languages by using the C DLL.

This library can be used with C#, Unity, Unreal and Python.

A REST API is available to use the library with languages not yet implemented.

The library can be previewed using the web app.

Documentation

PCG Engine

The PCG Engine contains multiple libraries used to generate levels, mazes, sequences and combination.

The output are tested by using golden values to preserve the same behavior after making changes to the implementation.

C# Wrapper

The C# Wrapper exposes all native functions to C# and can be used with Unity.

The output is tested using the same golden values in the PCG Engine tests to make sure the output matches.

GAM703-Engine Demo

This is a demo project using the game engine I developed during the GAM 703 course.

It shows how to use the library with native C++ projects.

Python Wrapper

The Python Wrapper exposes all native functions to python and can be used with pygame.

The output is tested using the same golden values in the PCG Engine tests to make sure the output matches.

Unity Package

The Unity package uses the C# Wrapper to call the C++ library.

It adds editor windows to the engine to generate content during edit mode.

Unity Maze Demo

The Unity Maze Demo is a project to showcase the engine's maze generation during play mode and edit mode.

Unreal

The Unreal plugin contains:

PCG Web API

The PCG Web API is an ASP.NET Core project that uses the C# Wrapper to expose the library functions to the API.

It uses post method and request body to get the parameters and returns a JSON representing the generated content.

PCG Web APP

The PCG Web APP is a NextJS website that's used to preview the PCG Web API responses.

Sequence and Combination results are shown as a string.

Level Generation results are previewed on the website using PlayCanvas.

The JSON representing the level is also shown on the screen in a text area and can be copied to use in an engine.

Journal

The journal folder contains entries indicating links/questions used to solve the problems I was facing.