Skip to content

Rating: (8/10) This code generates a 3D environment using the Ursina game engine, importing modules, defining ground tiles, generating random paths, and storing terrain, and initializing the app.

Notifications You must be signed in to change notification settings

Statute8234/CityGame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

CityGame

This code is a procedural 3D environment generation script using the Ursina game engine. It imports modules, defines a class for ground tiles, generates a random path for a river, stores ground tiles in a list, generates terrain using Perlin noise, and generates buildings on top of the ground.

Static Badge Static Badge Static Badge Static Badge

Table of Contents

About

This code is a procedural generation script for a 3D environment using the Ursina game engine. It imports modules from Ursina, Perlin noise, random, and pathfinding libraries. It defines a class for ground tiles, a method for generating a random path for a river, a list fullMap for storing generated tiles, and a method for generating ground terrain using Perlin noise. It also defines a class for building and a method for building on top of the ground. The script initializes the Ursina app, sets up camera and lighting, and runs the app.

Features

The Ursina game engine is used in a procedural generation script for a 3D environment. The script uses libraries like Ursina, Perlin noise, random, and pathfinding to create complex environments. The ground tile class defines the properties and behaviors of the terrain, while the river path generation method generates a random path for a river. The terrain storage list, fullMap, stores references to all generated ground tiles. Perlin noise is used to create a natural-looking ground terrain with variations in height and form. The building class establishes a structure for buildings to be placed on the ground tiles. The construction method provides a method for placing buildings on top of the terrain. The Ursina app initialization sets up the application, and the camera and lighting setup enhances the visual appeal of the 3D environment. The application execution loop runs the application and updates the environment.

Imports

ursina, ursina.shaders, perlin_noise, random, sys, pathfinding.core.grid, pathfinding.finder.a_star

Rating

The code is well-structured and implements features such as generating terrain, building structures, and finding paths using the A* algorithm. It is easy to read and understand, with clear function and variable names. The code is modular, promoting reusability and maintainability. It leverages libraries like Ursina for 3D graphics, PerlinNoise for terrain generation, and pathfinding for pathfinding algorithms. However, there are some cons to the code. The riverPath variable should be removed to avoid confusion. Adding comments to complex sections, especially the pathfinding algorithm and terrain generation, would improve understanding for future readers or maintainers. There is no error handling mechanism implemented, which could lead to crashes or unexpected behavior if input parameters are invalid or operations fail. The BuildBuilding function may have an issue with building placement, as it selects random coordinates but doesn't check if the position is suitable for placing a building. To improve, the code should remove the riverPath variable, add comments, implement error handling mechanisms, and ensure building placement validation.

About

Rating: (8/10) This code generates a 3D environment using the Ursina game engine, importing modules, defining ground tiles, generating random paths, and storing terrain, and initializing the app.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages