Diamond Square
Implementation of the Diamond–Square Algorithm. This package can draw 2d terrains and 2d interactive terrains in pgzero and pygame.
Also can draw 3D terrains and 3D interactive 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
- Panda3d 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 in 2d and 3d terrains.
-
Change the border shape of the terrain (it is normally a square) using a filter 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
Panda3d Interactive Terrain Example
Go to /sample_codes/panda3d_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:
...
def draw():
terrain.draw_func(screen)
...
def on_mouse_down():
terrain.on_mouse_down_func(pos)
...
def on_mouse_up():
terrain.on_mouse_up_func()
...
def on_mouse_move():
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.2.0: Added 3D Interactive Mode.
Version 1.1.0: Add filter functions for 2D terrains.
Version 1.0.3: Added saving Terrain3D sample code in save_terrain.py.
To view previous versions, go to versions.txt
Coming Soon
Version 1.3.0: Add Save as Image option in Interactive Mode.
Metadata
Release files for diamond-square 1.2.0
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.2.0.tar.gz | 23.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| diamond_square-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.0 kB
Release files / diamond_square-1.2.0.tar.gz
| Download URL | diamond_square-1.2.0.tar.gz |
|---|---|
| Size | 23.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
47d2f0a201fddd3f29c3f5d17c133e391d4fbb1573aeee161f261efbaa0e25cb
|
|
BLAKE2b-256 checksum How to use checksums |
323375fb4a5db2b9013210686905800b8307e52f7f2b01ffbdcdb0da6416cf03
|
| 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.2.0-py3-none-any.whl
| Download URL | diamond_square-1.2.0-py3-none-any.whl |
|---|---|
| Size | 25.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
81c40a0cfadb96181cef8f2d247275858277f47a912c7cb963a1618dd9565155
|
|
BLAKE2b-256 checksum How to use checksums |
d3dae0d7fe23d99d063a1920961dc01009fc4ac5af77095358bf1855e45c3169
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|