kiwi-ecs 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +145 -0
  3. metadata +11 -145
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b17b772e56b3533bac84c71c609eb8544908667c4cac99725327399d1fd44fed
4
- data.tar.gz: d8669b034e3db56f038919b60aa8f7f2b36eb6b98e7f12d22f533ac2c2680454
3
+ metadata.gz: 2ecb91b181779636d95d7c72fb3e8bcb6713498253b03ea8dc033a9e99027f59
4
+ data.tar.gz: 1e06daecfa95b5ecd6f3a6faca0a3b4385dd501ceed81ab9b6816ba62cc327df
5
5
  SHA512:
6
- metadata.gz: f5e2f0b3770ffe2eeebd64f590aec863fc8074f4ec1331578f1a7f5ee42ac69e8ca257c3cf9717f8e7b43c876dbe80f946e9e74045e0a4efa9feaeb78b8b05c7
7
- data.tar.gz: a42b7f00ee919b7cd1d37f70c0a19f1b217d429f604f67e0a99734c4de4336d7bcecea9235e244fb884c93288f06df38c9b9e4a453520e7ce86809c92ad5a6e0
6
+ metadata.gz: 05a2f1676d8883b1e0bdbecd4138e5c424482bedd23a945a815444c86eae88c692b769ebe8cbbfc00910b47ba4219bed79bce5e6c4f678c71de784a5e4078869
7
+ data.tar.gz: '08a375f932ad364d8194bd97cfd71578eaad9631e8e989c76bfb9dbd33cdacc83c93ba6afd740ee2dc3c80e79fb7576c2c213d912fffee0285ddf155fa85c54f'
data/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # Kiwi
2
+
3
+ Kiwi is a versatile entity component system focussing on fast iteration and a nice api.
4
+
5
+ To get started, read the [usage guide](#usage) below.
6
+
7
+ [![Tests](https://github.com/Jomy10/kiwi-ecs-ruby/actions/workflows/tests.yml/badge.svg)](https://github.com/Jomy10/kiwi-ecs-ruby/actions/workflows/tests.yml)
8
+
9
+ ## Installation
10
+
11
+ The library is available from [ruby gems](https://rubygems.org/gems/kiwi-ecs):
12
+
13
+ ```sh
14
+ gem install kiwi-ecs
15
+ ```
16
+
17
+ To use it in your ruby source files:
18
+
19
+ ```ruby
20
+ require 'kiwi-ecs'
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### The world
26
+
27
+ The world is the main object that controls the ecs.
28
+
29
+ ```ruby
30
+ world = World.new
31
+ ```
32
+
33
+ ### Components
34
+
35
+ Creating a component is as simple as declaring a struct:
36
+
37
+ ```ruby
38
+ Position = Struct.new :x, :y
39
+ ```
40
+
41
+ Classes can also be used instead of structs
42
+
43
+ ```ruby
44
+ class Velocity
45
+ attr_accessor :x
46
+ attr_accessor :y
47
+ end
48
+ ```
49
+
50
+ ### Entities
51
+
52
+ An entity is spawned with a set of components:
53
+
54
+ ```ruby
55
+ entityId = world.spawn(Position.new(10, 10))
56
+
57
+ world.spawn(Position.new(3, 5), Velocity.new(1.5, 0.0))
58
+ ```
59
+
60
+ The `world.spawn(*components)` function will return the id of the spawned entity.
61
+
62
+ Killing an entity can be done using `world.kill(entityId)`:
63
+
64
+ ```ruby
65
+ world.kill(entityId)
66
+ ```
67
+
68
+ ### Systems
69
+
70
+ #### Queries
71
+
72
+ Queries can be constructed as follows:
73
+
74
+ ```ruby
75
+ # Query all position componentss
76
+ world.query(Position) do |pos|
77
+ puts pos
78
+ end
79
+
80
+ # Query all entities having a position and a velocity component, and their entity ids
81
+ world.query_with_ids(Position, Velocity) do |id, pos, vel|
82
+ # ...
83
+ end
84
+ ```
85
+
86
+ ### Flags
87
+
88
+ Entities can be tagged using flags
89
+
90
+ #### Defining flags
91
+
92
+ A flag is an integer
93
+
94
+ ```ruby
95
+ module Flags
96
+ Player = 0
97
+ Enemy = 1
98
+ end
99
+ ```
100
+
101
+ #### Setting flags
102
+
103
+ ```ruby
104
+ id = world.spawn
105
+
106
+ world.set_flag(id, Flags::Player)
107
+ ```
108
+
109
+ #### Removing a flag
110
+
111
+ ```ruby
112
+ world.remove_flag(id, Flags::Player)
113
+ ```
114
+
115
+ #### Checking wether an entity has a flag
116
+
117
+ ```ruby
118
+ world.has_flag(id, Flags::Player)
119
+ ```
120
+
121
+ #### Filtering queries with flags
122
+
123
+ ```ruby
124
+ world.query_with_ids(Pos)
125
+ .filter do |id, pos|
126
+ world.has_flag(id, Flags::Player)
127
+ end
128
+ .each do |id, pos|
129
+ # Do something with the filtered query
130
+ end
131
+ ```
132
+
133
+ The `hasFlags` function is also available for when you want to check multiple flags.
134
+
135
+ ## Road map
136
+
137
+ - [ ] System groups
138
+
139
+ ## Contributing
140
+
141
+ Contributors are welcome to open an issue requesting new features or fixes or opening a pull request for them.
142
+
143
+ ## License
144
+
145
+ The library is licensed under LGPLv3.
metadata CHANGED
@@ -1,158 +1,24 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kiwi-ecs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Everaert
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2023-08-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: |
14
- # Kiwi
15
-
16
- Kiwi is a versatile entity component system focussing on fast iteration and a nice api.
17
-
18
- To get started, read the [usage guide](#usage) below.
19
-
20
- [![Tests](https://github.com/Jomy10/kiwi-ecs-ruby/actions/workflows/tests.yml/badge.svg)](https://github.com/Jomy10/kiwi-ecs-ruby/actions/workflows/tests.yml)
21
-
22
- ## Installation
23
-
24
- This library is currently not on ruby gems, but will arrive shortly.
25
-
26
- To use it now, simple `git clone https://github.com/jomy10/kiwi-ecs-ruby`.
27
-
28
- Then incude the world.rb file in your ruby files like so:
29
-
30
- ```ruby
31
- require_relative 'kiwi-ecs-ruby/src/world.rb'
32
- ```
33
-
34
- ## Usage
35
-
36
- ### The world
37
-
38
- The world is the main object that controls the ecs.
39
-
40
- ```ruby
41
- world = World.new
42
- ```
43
-
44
- ### Components
45
-
46
- Creating a component is as simple as declaring a struct:
47
-
48
- ```ruby
49
- Position = Struct.new :x, :y
50
- ```
51
-
52
- Classes can also be used instead of structs
53
-
54
- ```ruby
55
- class Velocity
56
- attr_accessor :x
57
- attr_accessor :y
58
- end
59
- ```
60
-
61
- ### Entities
62
-
63
- An entity is spawned with a set of components:
64
-
65
- ```ruby
66
- entityId = world.spawn(Position.new(10, 10))
67
-
68
- world.spawn(Position.new(3, 5), Velocity.new(1.5, 0.0))
69
- ```
70
-
71
- The `world.spawn(*components)` function will return the id of the spawned entity.
72
-
73
- Killing an entity can be done using `world.kill(entityId)`:
74
-
75
- ```ruby
76
- world.kill(entityId)
77
- ```
78
-
79
- ### Systems
80
-
81
- #### Queries
82
-
83
- Queries can be constructed as follows:
84
-
85
- ```ruby
86
- # Query all position componentss
87
- world.query(Position) do |pos|
88
- puts pos
89
- end
90
-
91
- # Query all entities having a position and a velocity component, and their entity ids
92
- world.query_with_ids(Position, Velocity) do |id, pos, vel|
93
- # ...
94
- end
95
- ```
96
-
97
- ### Flags
98
-
99
- Entities can be tagged using flags
100
-
101
- #### Defining flags
102
-
103
- A flag is an integer
104
-
105
- ```ruby
106
- module Flags
107
- Player = 0
108
- Enemy = 1
109
- end
110
- ```
111
-
112
- #### Setting flags
113
-
114
- ```ruby
115
- id = world.spawn
116
-
117
- world.set_flag(id, Flags::Player)
118
- ```
119
-
120
- #### Removing a flag
121
-
122
- ```ruby
123
- world.remove_flag(id, Flags::Player)
124
- ```
125
-
126
- #### Checking wether an entity has a flag
127
-
128
- ```ruby
129
- world.has_flag(id, Flags::Player)
130
- ```
131
-
132
- #### Filtering queries with flags
133
-
134
- ```ruby
135
- # TODO
136
- ```
137
-
138
- The `hasFlags` function is also available for when you want to check multiple flags.
139
-
140
- ## Road map
141
-
142
- - [ ] System groups
143
-
144
- ## Contributing
145
-
146
- Contributors are welcome to open an issue requesting new features or fixes or opening a pull request for them.
147
-
148
- ## License
149
-
150
- The library is licensed under LGPLv3.
151
- email:
13
+ description: Kiwi is a versatile entity component system that is focussed on fast
14
+ iteration and a nice api
15
+ email:
152
16
  executables: []
153
17
  extensions: []
154
- extra_rdoc_files: []
18
+ extra_rdoc_files:
19
+ - README.md
155
20
  files:
21
+ - README.md
156
22
  - lib/arch_store.rb
157
23
  - lib/archetype.rb
158
24
  - lib/bitmap.rb
@@ -164,7 +30,7 @@ homepage: https://github.com/jomy10/kiwi-ecs-ruby
164
30
  licenses:
165
31
  - LGPL-3.0-or-later
166
32
  metadata: {}
167
- post_install_message:
33
+ post_install_message:
168
34
  rdoc_options: []
169
35
  require_paths:
170
36
  - lib
@@ -179,8 +45,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
45
  - !ruby/object:Gem::Version
180
46
  version: '0'
181
47
  requirements: []
182
- rubygems_version: 3.3.3
183
- signing_key:
48
+ rubygems_version: 3.3.26
49
+ signing_key:
184
50
  specification_version: 4
185
51
  summary: An entity component system with a nice api, fit for a variety of use cases
186
52
  test_files: []