Dejan Zeljko

About Me Login

Semantic World Generation

Semantic World Generation Banner

Project Overview

Semantic World Generation is my thesis project for my bachelors degree in Creative Computing, which focuses on Game Development. It explores how Large Language Models and embeddings can steer procedural content. A two-stage pipeline pre-generates a world in Python from a small set of human-provided semantic labels (e.g., “coastal dunes,” “alpine valley,” “marsh”), then imports a reproducible package into Unreal Engine for real-time exploration and user studies. Terrain is shaped using fractal Brownian motion and OpenSimplex noise, while scatter algorithms distribute props according to biome-specific parameters, which were all defined by LLMs.

Scope & Role: Solo R&D and implementation. Technologies: Python, Trellis, Unreal Engine C++, GLB/glTF, OpenAI embeddings.

Pipeline at a Glance

Skills Demonstrated

Skill Description
Systems Architecture Designed a two-stage, file-based pipeline with reproducible seeds and strict interfaces between Python and Unreal.
Procedural Generation Implemented fBM/OpenSimplex terrain, parametric chunk profiles, and moisture-aware prop scatter.
LLM & Embeddings Used curated wordsets + transformer similarity to expand and validate semantic labels for coherent chunk adjacency.
3D Asset Flow Automated 2D→3D synthesis via Trellis into GLB, with caching and variant selection.
Unreal Engine C++ Procedural mesh build from .npy heightmaps, glTFRuntime ingestion, deterministic prop spawning, and in-game metadata UI.

Core Features

Technical Concepts and Tools

Semantic Expansion

Labels are embedded and matched against a curated vocabulary; transformer similarity guides coherent neighbors and filters out semantically distant options.


Chunk Profiles & Terrain

Numeric profiles (e.g., height_scale, roughness, moisture) parameterize noise generators and scatter. Profiles serialize to JSON for auditability and reproducibility.


Trellis Mesh Synthesis

2D reference images turn into textured .glb assets. The importer caches GLBs and assigns variants per placement.


Unreal Integration

ProceduralMeshComponent builds terrain from .npy heightmaps; glTFRuntime loads GLBs; a GeneratedAssetInfoComponent stores metadata for on-screen inspection and user studies.

Learning Takeaways

Pairing semantics with deterministic generation yields worlds that feel intentional yet remain reproducible. Curated vocabularies and similarity filtering were crucial to avoid incoherent chunk borders, and variant meshes substantially improved perceived richness. The file-based bridge kept Python and Unreal decoupled, making iteration fast.

Evaluation & Results

In a small user study, participants reported high believability and immersion, with slightly lower coherence at biome seams. Usability scored strongly, and feedback highlighted the value of visible metadata for understanding generator intent. Future work includes smarter seam blending and adaptive scatter near borders.

Tools Used

Downloads & Links