ruby-perlin-2D-map-generator 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +79 -3
- data/lib/CLI/command.rb +15 -4
- data/lib/map.rb +8 -0
- metadata +50 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bd8731cdd9870723cfcb6b977f7d111cc160591f727598ae05be919d6dd231f
|
4
|
+
data.tar.gz: d13ec13f781e96e6251bf37ee54d998c065698063e59d99b8143735c48e7e28a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 766f4c73584e9e5152bf6842790bb3f330ca7d7fd9b46ab7427754f4c7869c0529e870827f181b0523f341d9134e8c5fdce18eecc2ef8a9ad2d22f17112cb040
|
7
|
+
data.tar.gz: ed3f8b411ccced1c278e0038abd92ccb6f856f67b683f13ab5298b51f762e71683efecf69e87ab53b56ecacf24859a8541336330fb65dcb15da2a8ae1e3b2740
|
data/README.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
# Ruby Perlin 2D Map Generator
|
2
|
+
|
3
|
+
[](https://badge.fury.io/rb/ruby-perlin-2D-map-generator)
|
4
|
+

|
5
|
+

|
6
|
+
[](https://rubygems.org/gems/ruby-perlin-2D-map-generator)
|
7
|
+
|
2
8
|
A gem that procedurally generates seeded and customizable 2D map using perlin noise.
|
3
9
|
|
4
10
|
Include the gem in your project, or use the executable from the command line.
|
@@ -6,7 +12,22 @@ Include the gem in your project, or use the executable from the command line.
|
|
6
12
|
Map can be rendered in console using ansi colors or returned as 2D array of hashes describing each tile and binome. Completely customizable, use the --help option for full usage details.
|
7
13
|
|
8
14
|
|
9
|
-

|
16
|
+
|
17
|
+
|
18
|
+
# Installation
|
19
|
+
|
20
|
+
### Bundler
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
gem 'ruby-perlin-2D-map-generator'
|
24
|
+
```
|
25
|
+
|
26
|
+
### Manual
|
27
|
+
|
28
|
+
```sh
|
29
|
+
gem install ruby-perlin-2D-map-generator
|
30
|
+
```
|
10
31
|
|
11
32
|
# Customization examples
|
12
33
|
|
@@ -38,6 +59,52 @@ See Command line Usage for full customization, below are some examples. Alter th
|
|
38
59
|
- 100) (default 0.0)
|
39
60
|
```
|
40
61
|
|
62
|
+
# Generate without rendering
|
63
|
+
|
64
|
+
```irb
|
65
|
+
irb(main):001:0> map = Map.new
|
66
|
+
```
|
67
|
+
|
68
|
+
Map can then be manipulated via traditional x,y lookup
|
69
|
+
```irb
|
70
|
+
map[x, y].to_h
|
71
|
+
=>
|
72
|
+
{:x=>0,
|
73
|
+
:y=>1,
|
74
|
+
:height=>0.29251394359649563,
|
75
|
+
:moist=>0.29100678755603004,
|
76
|
+
:temp=>0.6034041566100443,
|
77
|
+
:biome=>{:name=>"deep_valley", :flora_range=>1, :colour=>"\e[48;5;47m"},
|
78
|
+
:items=>[]}
|
79
|
+
```
|
80
|
+
or the less intuitative multidimensional lookup (reversed axis):
|
81
|
+
|
82
|
+
```irb
|
83
|
+
map.tiles[y][x].to_h
|
84
|
+
=>
|
85
|
+
{:x=>0,
|
86
|
+
:y=>1,
|
87
|
+
:height=>0.29251394359649563,
|
88
|
+
:moist=>0.29100678755603004,
|
89
|
+
:temp=>0.6034041566100443,
|
90
|
+
:biome=>{:name=>"deep_valley", :flora_range=>1, :colour=>"\e[48;5;47m"},
|
91
|
+
:items=>[]}
|
92
|
+
```
|
93
|
+
|
94
|
+
or from the command line:
|
95
|
+
|
96
|
+
```bash
|
97
|
+
$ ruby-perlin-2D-map-generator describe coordinates=0,1
|
98
|
+
|
99
|
+
{:x=>0,
|
100
|
+
:y=>1,
|
101
|
+
:height=>0.29251394359649563,
|
102
|
+
:moist=>0.29100678755603004,
|
103
|
+
:temp=>0.6034041566100443,
|
104
|
+
:biome=>{:name=>"deep_valley", :flora_range=>1, :colour=>"\e[48;5;47m"},
|
105
|
+
:items=>[]}
|
106
|
+
```
|
107
|
+
|
41
108
|
# Full Command line Usage
|
42
109
|
```bash
|
43
110
|
$ ruby-perlin-2D-map-generator --help
|
@@ -51,8 +118,14 @@ hashes with each tiles information.
|
|
51
118
|
|
52
119
|
Arguments:
|
53
120
|
(DESCRIBE | RENDER) command to run: render prints the map to standard
|
54
|
-
output using ansi colors
|
55
|
-
|
121
|
+
output using ansi colors. describe prints each tiles
|
122
|
+
bionome information in the map, can be combined with the
|
123
|
+
coordinates keyword to print a specific tile.
|
124
|
+
(permitted: describe, render)
|
125
|
+
|
126
|
+
Keywords:
|
127
|
+
COORDINATES=INT_LIST Used with the describe command, only returns the given
|
128
|
+
coordinate tile details
|
56
129
|
|
57
130
|
Options:
|
58
131
|
--elevation=float Adjust each generated elevation by this percent (0 -
|
@@ -96,4 +169,7 @@ Examples:
|
|
96
169
|
|
97
170
|
Render with options
|
98
171
|
$ ruby-perlin-2D-map-generator render --elevation=-40 --moisture=25 --hs=1
|
172
|
+
|
173
|
+
Describe tile [1, 1]
|
174
|
+
$ ruby-perlin-2D-map-generator describe coordinates=1,1
|
99
175
|
```
|
data/lib/CLI/command.rb
CHANGED
@@ -20,14 +20,25 @@ module CLI
|
|
20
20
|
|
21
21
|
example 'Render with options',
|
22
22
|
' $ ruby-perlin-2D-map-generator render --elevation=-40 --moisture=25 --hs=1'
|
23
|
+
|
24
|
+
example 'Describe tile [1, 1]',
|
25
|
+
' $ ruby-perlin-2D-map-generator describe coordinates=1,1'
|
23
26
|
end
|
24
27
|
|
25
28
|
argument :command do
|
26
29
|
name '(describe | render)'
|
27
30
|
arity one
|
28
|
-
|
29
|
-
desc 'command to run: render prints the map to standard output using ansi colors
|
30
|
-
'
|
31
|
+
permit %w[describe render]
|
32
|
+
desc 'command to run: render prints the map to standard output using ansi colors. ' \
|
33
|
+
'describe prints each tiles bionome information in the map, can be combined with ' \
|
34
|
+
'the coordinates keyword to print a specific tile.'
|
35
|
+
end
|
36
|
+
|
37
|
+
keyword :coordinates do
|
38
|
+
arity one
|
39
|
+
convert :int_list
|
40
|
+
validate ->(v) { v >= 0 }
|
41
|
+
desc 'Used with the describe command, only returns the given coordinate tile details'
|
31
42
|
end
|
32
43
|
|
33
44
|
option :height_seed do
|
@@ -255,7 +266,7 @@ module CLI
|
|
255
266
|
))
|
256
267
|
case params[:command]
|
257
268
|
when 'render' then map.render
|
258
|
-
when 'describe' then puts map.describe
|
269
|
+
when 'describe' then puts(!params[:coordinates].nil? ? map[params[:coordinates][0], params[:coordinates][1]].to_h : map.describe)
|
259
270
|
end
|
260
271
|
end
|
261
272
|
|
data/lib/map.rb
CHANGED
@@ -21,6 +21,14 @@ class Map
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
# rubocop:disable Naming/MethodParameterName:
|
25
|
+
def [](x, y)
|
26
|
+
raise ArgumentError, 'coordinates out of bounds' if y.nil? || y >= tiles.size || x.nil? || x >= tiles[y].size
|
27
|
+
|
28
|
+
tiles[y][x]
|
29
|
+
end
|
30
|
+
# rubocop:enable Naming/MethodParameterName:
|
31
|
+
|
24
32
|
def tiles
|
25
33
|
@tiles ||= MapTileGenerator.new(map: self).generate
|
26
34
|
end
|
metadata
CHANGED
@@ -1,85 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-perlin-2D-map-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Matthews (matthewstyler)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: perlin
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.2.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.2.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: tty-option
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.3.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.3.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '5.18'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '5.18'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mocha
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 2.0.4
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 2.0.4
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 13.0.6
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 13.0.6
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.54.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.54.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.22.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.22.0
|
83
111
|
description: A gem that procedurally generates a seeded and customizable 2D map using
|
84
112
|
perlin noise. Map can be rendered in console using ansi colors or returned as 2D
|
85
113
|
array of hashes describing each tile and binome. Completelycustomizable, use the
|