Diamond Square
Implementation of the Diamond–Square Algorithm. This package can draw terrains and interactive terrains in pgzero and pygame.
Also can draw 3D terrains in panda3d.
Sample Generations
⚠️ You MUST include all four interactive functions for pgzero interactive
Missing even one will cause failures or unpredictable behavior.
Table of Contents
- Why Use Diamond Square?
- Usage
- Terrain Examples
- Pgzero Terrain Example
- Pygame Terrain Example
- Panda3d 3D Terrain Example
- Interactive Terrain Examples
- Pgzero Interactive Terrain Example
- Pygame Interactive Terrain Example
- Other Examples
- Custom Biome Examples
- Terrain and Terrain 3D Saving Examples
- Terrain Examples
- Requirements for Pgzero Interactive
- Versions
- Coming Soon
Why Use diamond-square?
This package provides a complete implementation of the Diamond–Square algorithm with:
-
Fast rendering of the Diamond-Square algorithm written in C.
-
Multiple built‑in biomes.
-
Adjustable roughness, scale, and size.
-
Support for pgzero and pygame.
-
3d terrain drawing in panda3d.
-
Interactive mode.
-
Change the border shape of the terrain (it is normally a square) using a function.
-
The ability to save generated terrain as an image.
-
Functions to add or remove biomes dynamically.
It is designed for both experimentation and game development, making 2d/3d terrain generation simple and customizable.
Usage
Terrain Examples
Pgzero Terrain Example
Go to /sample_codes/pgzero_terrain.py
Pygame Terrain Example
Go to /sample_codes/pygame_terrain.py
Panda3d 3D Terrain Example
Go to /sample_code/panda3d_terrain3d.py
Interactive Terrain Examples
Pgzero Interactive Terrain Example
Go to /sample_codes/pgzero_interactive_terrain.py
Pygame Interactive Terrain Example
Go to /sample_codes/pygame_interactive_terrain.py
Other Examples
Terrain and 3D Terrain Saving Examples
Go to /sample_codes/terrain_saving.py
Custom Biome Examples
Go to /sample_code/custom_biome.py
Requirements for Pgzero Interactive
For Pgzero Interative Mode, it requires all four of the following functions to be placed in their corresponding pgzero event handlers:
terrain.draw_func(screen)
terrain.on_mouse_down_func(pos)
terrain.on_mouse_up_func()
terrain.on_mouse_move_func(pos)
If any one of these is missing, the interactive mode will:
-
fail to update correctly
-
behave unpredictably
-
or stop working entirely
These must be placed in these functions in pgzero:
-
def draw():→terrain.draw_func(screen) -
on_mouse_down(pos):→terrain.on_mouse_down_func(pos) -
on_mouse_up():→terrain.on_mouse_up_func() -
on_mouse_move(pos):→terrain.on_mouse_move_func(pos)
Versions
(Latest) Version 1.0.3: Fix bugs, and added saving Terrain3D sample code in save_terrain.py.
Version 1.0.2: Bug fixes.
Version 1.0.1: README Image Fixes.
Version 1.0.0: Added 3D Terrain Generation in panda3d.
To view previous versions, go to versions.txt
Coming Soon
Version 1.1.0: Add filter functions for 2D terrains.
Metadata
Release files for diamond-square 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| diamond_square-1.0.3.tar.gz | 22.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diamond_square-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.1 kB
Release files / diamond_square-1.0.3.tar.gz
| Download URL | diamond_square-1.0.3.tar.gz |
|---|---|
| Size | 22.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
571c8f6017c82dec4a2c0a304a1127546e0ecba66f67de7c954f65bce251bcab
|
|
BLAKE2b-256 checksum How to use checksums |
8f4eacaf5d048cf09aebdf12097a96a5472578e2259121bc518a1673f1497232
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / diamond_square-1.0.3-py3-none-any.whl
| Download URL | diamond_square-1.0.3-py3-none-any.whl |
|---|---|
| Size | 22.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
20151df7cf3ca8a338d2f4a6f37bd7122ee36089e9fa577e6d270bb0cb120c8d
|
|
BLAKE2b-256 checksum How to use checksums |
d7c27761ddbac65fb8b66731be5f674438d3057d0bc196de31f90f6247ae1b1b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|