aboutsummaryrefslogtreecommitdiff
path: root/docs/enemy
diff options
context:
space:
mode:
authorjacopograndi <jacopo.grandi@outlook.it>2022-01-14 17:27:24 +0100
committerjacopograndi <jacopo.grandi@outlook.it>2022-01-14 17:27:24 +0100
commit98f356e68b759bf84300290315d4ada09c41f79b (patch)
tree8364b73af804ce9e3b6f3961703cc557e2046455 /docs/enemy
parent536ca1336141c191c9536202c439ce381bcda855 (diff)
more docs
Diffstat (limited to 'docs/enemy')
-rw-r--r--docs/enemy/enemy.md114
1 files changed, 114 insertions, 0 deletions
diff --git a/docs/enemy/enemy.md b/docs/enemy/enemy.md
new file mode 100644
index 0000000..114fb49
--- /dev/null
+++ b/docs/enemy/enemy.md
@@ -0,0 +1,114 @@
+## enemy system
+
+### design
+The enemies are spawned by the wave system, their 3d model is a mathematical shape. These shapes are the 5 [Platonic solids](https://en.wikipedia.org/wiki/Platonic_solid), the 13 [Archimedean solids](https://en.wikipedia.org/wiki/Archimedean_solid) and their dual the 13 [Catalan solids](https://en.wikipedia.org/wiki/Catalan_solid), which amount to 31 shapes. <br>
+
+The enemies are arranged in a tree based on their topology using [Conway polyhedron notation](https://en.wikipedia.org/wiki/Conway_polyhedron_notation). Four operators are used: kis, ambo, dual, snub (k, a, d, s). From these operators all the shapes in the game can be obtained if the staring shape is a Tetrahedron (T). For example, an Octahedron (O) is an ambo Tetrahedron (aT): ) = aT. saT is the snub cube, from which the game is named. Each node of the tree is a shape and each edge represent an operation. The root is T and each operation is appended to the left of T, so the snub cube saT is connected to the Octahedron aT and aT is connected to T. <br>
+
+The other operators can be obtained by the four operator used:
+- truncation: t = dkd
+- expansion: e = aa
+- bevel: b = dkda = td
+- join: j = da
+- meta: m = kda
+- ortho: o = daa
+- gyro: g = dsd
+
+**topology graph**
+- T = [Tetrahedron](https://en.wikipedia.org/wiki/Tetrahedron)
+ - k, kT = [Triakis Tetrahedron](https://en.wikipedia.org/wiki/Triakis_tetrahedron)
+ - d, dkdT = dkT = [Truncated Tetrahedron](https://en.wikipedia.org/wiki/Truncated_tetrahedron)
+ - a, aT = O = [Octahedron](https://en.wikipedia.org/wiki/Octahedron)
+ - k, kaT = [Triakis Octahedron](https://en.wikipedia.org/wiki/Triakis_octahedron)
+ - d, dkaT = tC = [Truncated Cube](https://en.wikipedia.org/wiki/Truncated_cube)
+ - a, aaT = [Cuboctahedron](https://en.wikipedia.org/wiki/Cuboctahedron)
+ - d, daaT = jC = [Rhombic Dodecahedron](https://en.wikipedia.org/wiki/Rhombic_dodecahedron)
+ - k, kdaaT = mC = [Disdyakis Dodecahedron](https://en.wikipedia.org/wiki/Disdyakis_dodecahedron)
+ - d, dkdaaT = bC = taaT = [Truncated Cuboctahedron](https://en.wikipedia.org/wiki/Truncated_cuboctahedron)
+ - a, aaaT = eC = [Rhombicuboctahedron](https://en.wikipedia.org/wiki/Rhombicuboctahedron)
+ - d, daaaT = oC = [Deltoidal Icositetrahedron](https://en.wikipedia.org/wiki/Deltoidal_icositetrahedron)
+ - d, daT = C = [Cube](https://en.wikipedia.org/wiki/Cube)
+ - k, kdaT = [Tetrakis Hexahedron](https://en.wikipedia.org/wiki/Tetrakis_hexahedron)
+ - d, dkdaT = tO = [Truncated Octahedron](https://en.wikipedia.org/wiki/Truncated_octahedron)
+ - s, saT = [Snub Cube](https://en.wikipedia.org/wiki/Snub_cube)
+ - d, dsaT = g = [Pentagonal Icositetrahedron](https://en.wikipedia.org/wiki/Pentagonal_icositetrahedron)
+ - s, sT = [Icosahedron](https://en.wikipedia.org/wiki/Icosahedron)
+ - k, ksT = [Triakis icosahedron](https://en.wikipedia.org/wiki/Triakis_icosahedron)
+ - d, dksT = [Truncated Dodecahedron](https://en.wikipedia.org/wiki/Truncated_dodecahedron)
+ - a, asT = [Icosidodecahedron](https://en.wikipedia.org/wiki/Icosidodecahedron)
+ - d, dasT = jD = [Rhombic Triacontahedron](https://en.wikipedia.org/wiki/Rhombic_triacontahedron)
+ - k, kdaaT = mD = [Disdyakis Triacontahedron](https://en.wikipedia.org/wiki/Disdyakis_triacontahedron)
+ - d, dkdaaT = bD = [Truncated Icosidodecahedron](https://en.wikipedia.org/wiki/Truncated_icosidodecahedron)
+ - a, aasT = eD = [Rhombicosidodecahedron](https://en.wikipedia.org/wiki/Rhombicosidodecahedron)
+ - d, daasT = oD = [Deltoidal Hexecontahedron](https://en.wikipedia.org/wiki/Deltoidal_hexecontahedron)
+ - d, dsT = D [Dodecahedron](https://en.wikipedia.org/wiki/Dodecahedron)
+ - k, kdsT = [Pentakis Dodecahedron](https://en.wikipedia.org/wiki/Pentakis_dodecahedron)
+ - d, dkdsT = tI = [Truncated Icosahedron](https://en.wikipedia.org/wiki/Truncated_icosahedron)
+ - s, ssT = [Snub Dodecahedron](https://en.wikipedia.org/wiki/Snub_dodecahedron)
+ - d, dssT = gD = [Pentagonal Hexecontahedron](https://en.wikipedia.org/wiki/Pentagonal_hexecontahedron)
+
+**effects**
+
+Enemies start with 10 lives. When a life is lost and the shape is T, the shape dies. Otherwise, an operator is lost and lives are set back to 10.
+
+The enemies gain effects based on their topology:
+- T: no effect
+- k: speed, 20%
+- a: damage, 2x
+- d: duplicates on death (only when losing the d)
+- s: armored (multiplies life by 3), speed -20%
+
+Effect stack exponentially, so aaaT does 2^2^2=8x more damage, ssT is very slow and very armored (3^3=9 shots).
+
+```
+Example for ssT:
+1. after 90 damage, s is removed
+5. after 30 damage, s is removed
+6. after 10 damage, T dies.
+```
+
+```
+Example for dkdasT:
+1. after 30 damage, d is removed and 4 kdasT are spawned
+2. after 30 damage, k is removed
+3. after 30 damage, d is removed and 2 asT are spawned
+4. after 30 damage, a is removed
+5. after 30 damage, s is removed
+6. after 10 damage, T dies.
+```
+
+```
+Values of life(shape)
+life(daaT) = 10 * 2*(10 * 3) = 70
+life(ssT) = 90 + 30 + 10 = 130
+life(dssT) = 90 + 2*(90 + 30 + 10) = 350
+life(dkdasT) = 30 + 4*(30 + 30 + 2*(30 + 30 + 10)) = 830
+```
+
+---
+
+### models
+- **all 31 shapes**
+
+### path subsystem
+- **hide/show**
+- **instantiate**
+- **follow**
+- **destroy on end**
+
+### hierarchy
+- **design topological hierarchy**
+
+### stats
+- _name_
+- effects
+- type/description
+
+### color change
+- _change based on resource color_
+
+### hit effect
+- **dissolve**
+
+### gui
+- info detail