Skip to main content

grid_engine

Description

grid_engine is a framework for generating and manipulating grids. It provides a number of classes and functions for generating and manipulating grids. Each grid is composed of Cell objects and is defined by a Blueprint. A grid can be generated from a blueprint, loaded from a file, or created manually. It can also be pickled for later use. It can be rendered as a 2D image, an animated GIF or an ASCII string. Grids provide a number of relevant methods for pathfinding, cell manipulation, and more.

Installation

To install grid_engine, run the following command:

```bash
pip install gridengine_framework
```

Usage

To use gridengine you can import any number of the submodules and utilize its respective features or you can import the main module.

```python
import grid_engine as ge

# Create a grid
grid = ge.grid.Grid(cell_size=10, grid_dimensions=(1000, 1000))

# Save a grid
ge.grid.save_grid(grid)

# Load a grid
loaded_grid = ge.grid.Grid.load_grid(1)
```

grid_engine also provides a command line interface. To use it, run the following command:

```bash
python -m grid_engine --help

# Output:
# usage: gridengine [-h] [-i] [-b BLUEPRINT] [--ascii] [-l LOAD] [-t] [-ns NOISE_SCALE] [-no NOISE_OCTAVES] [-nr NOISE_ROUGHNESS] [-r ROWS] [-c COLUMNS] [-s SIZE] [-S] [-T TYPE] [-v]

# Generate a visualized grid from a blueprint. For producing a blueprint, see the blueprint module.

# options:
#   -h, --help            show this help message and exit
#   -i, --interactive     Run an interactive session
#   -b BLUEPRINT, --blueprint BLUEPRINT
#                         Load a blueprint from a file
#   --ascii               Print the grid as ascii
#   -l LOAD, --load LOAD  Load a grid from a file
#   -t, --terrain         Whether to generate terrain with the grid.
#   -ns NOISE_SCALE, --noise-scale NOISE_SCALE
#                         Noise scale
#   -no NOISE_OCTAVES, --noise-octaves NOISE_OCTAVES
#                         Noise octaves
#   -nr NOISE_ROUGHNESS, --noise-roughness NOISE_ROUGHNESS
#                         Noise roughness
#   -r ROWS, --rows ROWS  Number of rows in the grid
#   -c COLUMNS, --columns COLUMNS
#                         Number of columns in the grid
#   -s SIZE, --size SIZE  Size of each cell in the grid
#   -S, --save            Save the grid object to a file
#   -T TYPE, --type TYPE  Type of file to save the grid as
#   -v, --verbose         Verbose output
```

Examples

The following examples demonstrate the use of the grid_engine package.

CLI

The following command:

```bash
python -m grid_engine -v -S -t -ns 400 -no 75 -nr 0.55 -r 450 -c 800 -s 2
```

Will produce the following output:

```bash
Generating blueprint with cell size 2, 450 rows and 800 columns. Total_cells: 360000 ...
Success! Blueprint generated. Dimensions: (1600, 900)
Building grid from blueprint ...
Finding landmasses ...
Separating islands from landmasses ...
done
Finding start to river ...
Found largest landmass: 0 with 302951 cells
Finding lake coastal cells ...
Found 1094 cells.
Validating start/end of river ...
Start cell: pd00229(445, 228), End cell: dq00087(146, 86))
Building river ...
Getting river cells by walk ...
Generating river with end designated ...
Cells in river: 300 | Current cell: kb00082 | Next cell: kc00082
River steps: 300
Found largest landmass: 0 with 302951 cells
Finding lake coastal cells ...
Found 1094 cells.
Validating start/end of river ...
Start cell: ip00499(275, 498), End cell: dv00087(151, 86)
Building river ...
Getting river cells by walk ...
Generating river with end designated ...
Cells in river: 757 | Current cell: dz00082 | Next cell: ea000814
River steps: 757
done
Success! Grid generated.
Pickling grid ...
Success!
Pickling blueprint ...
Success!
Generating grid image ...
Importing pillow ...
Preparing raw image ...
Counting cells ...
Total cells: 360000
Shuffling cells ...
Cells drawn. 100%
Saving grid image ...
Grid ID: 8d564
```

The following image is the result of the above command:

grid

The river generation algorithm is not perfect. I am currently working on improving it.

The above command will also produce the following files(Not included in the repository... That is, generate your own!):

  • grid.cf1b9.pickle: A pickled Grid object.

  • blueprint.cf1b9.pickle: A pickled TerrainGridBlueprint object.

    import grid_engine
    from grid_engine import Grid
    
    # Load the 8d564 grid(assuming you've not generated any other grids)
    _8d564 = Grid.load_grid('8d564')
    
    print(_8d564.grid_id)
    # output: 'fb16965aa77f44138dd6149b823ee9e4'
    
    # Get a random cell
    cellA = _8d564.random_cell(attr=('passable', True))
    
    # Get another
    cellB = _8d564.random_cell(attr=('passable', True))
    
    # Get a path from cellA to cellB
    path, cost = _8d564.get_path(cellA, cellB)
    print(path)
    

Release files for gridengine-framework 0.91.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gridengine-framework 0.91.9
File Size Uploaded
gridengine_framework-0.91.9.tar.gz 51.0 kB Details

Release files / gridengine_framework-0.91.9.tar.gz

Download URL gridengine_framework-0.91.9.tar.gz
Size 51.0 kB
Tags Source
SHA-256 checksum
How to use checksums
e4c6ca614ab51e86748bd48015bbbae1bfa8a773b43c3fcc18f8598bc1ac168a
BLAKE2b-256 checksum
How to use checksums
9b868d8f23d0f485407df312e314c02acfb7b812ba7196799dca654e70b90919
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.12.0b4+

Release history Release notifications | RSS feed

This release

0.91.9 This release

1 release file

0.91.8

1 release file

0.91.7

1 release file

0.91.6

1 release file

0.91.5

1 release file

0.91.4

1 release file

0.91.3

1 release file

0.91.2

1 release file

0.91.1

1 release file

0.91.0

1 release file

0.9.99

1 release file

0.9.98

1 release file

0.9.97

1 release file

0.9.96

1 release file

0.9.95

1 release file

0.9.94

1 release file

0.9.93

1 release file

0.9.92

1 release file

0.9.91

1 release file

0.9.9

1 release file

0.9.8

1 release file

0.9.7

1 release file

0.9.6

1 release file

0.9.5

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.9

1 release file

0.8.8

1 release file

0.8.7

1 release file

0.8.6

1 release file

0.8.5

1 release file

0.8.4

1 release file

0.8.3

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.8.0

1 release file

0.7.9

1 release file

0.7.8

1 release file

0.7.7

1 release file

0.7.6

1 release file

0.7.5

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.9

1 release file

0.6.8

1 release file

0.6.7

1 release file

0.6.6

1 release file

0.6.5

1 release file

0.6.4

1 release file

0.6.3

1 release file

0.6.2

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.9

1 release file

0.5.8

1 release file

0.5.7

1 release file

0.5.6

1 release file

0.5.5

1 release file

0.5.4

1 release file

0.5.3

1 release file

0.5.2

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.9

1 release file

0.4.8

1 release file

0.4.7

1 release file

0.4.6

1 release file

0.4.5

1 release file

0.4.4

1 release file

0.4.3

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

0.3.5

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page