Skip to content

Commit db54c46

Browse files
docs: What is Kitten Engineers?
1 parent 0ae6f36 commit db54c46

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed

packages/documentation/docs/development.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ To develop without containers, you can build a development version of the usersc
8686

8787
## Type-Checking
8888

89-
To fill the **Problems** panel in VS Code with all current, type-related errors, run the [`typecheck:all`](/reference/Repository Scripts/#typecheckall) npm task in VS Code.
89+
To fill the **Problems** panel in VS Code with all current, type-related errors, run the [`typecheck:all`](./reference/Repository%20Scripts/index.md#typecheckall) npm task in VS Code.
9090

9191
## Commit Standards
9292

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Kitten Engineers
2+
3+
KE is a future extension to KS, that will take over decision-making in the KG automation environment. It is still in its design phase.
4+
5+
## What is it going to be?
6+
7+
Let's first have a look at KS, and at what it is _supposed_ to be. KS should really just follow simple instructions as directly as possible. When you tell it to build a hut, it should just build that hut, no strings attached.
8+
9+
But that's not how KS behaves in all areas. Some features provide exceptions to existing logic, or they replace it (for example, [building the best unicorn building first](./sections/religion.md#ziggurats)). If you look at it very strictly, even triggers are a sort of decision-making component that conflicts with just implementing strict instructions.
10+
11+
Over the years, there have been many feature requests that would have expanded the dynamic behavior of KS even further, but there is more defensive stance on integrating features like that today. The reason for that is often that KE would likely be a better place to implement the requested feature. Adding too many dynamic behaviors into KS can make the overall behavior very hard to control. In the past, this has lead developers to include exceptions in completely unrelated areas of the code base, leading to issues that were very hard to understand.
12+
13+
## How will this work?
14+
15+
Instead of giving you thousands of parameters to adjust, like KS, KE will be an empty canvas. It should then allow you to author _rules_, if the _conditions_ of a rule are met, the rule will trigger _actions_. Consider the following data structure:
16+
17+
```yaml
18+
rules:
19+
- name: Build huts
20+
conditions:
21+
- resource: wood
22+
is: GREATER_THAN_OR_EQUAL
23+
value: bonfire.buildings.hut[next].price.wood * 1.5
24+
actions:
25+
- ks:
26+
setting: bonfire.buildings.hut.limit
27+
value: bonfire.buildings.hut.limit + 1
28+
```
29+
30+
!!! warning
31+
32+
Don't expect rule sets to necessarily be authored in YAML. At this time, this is purely for illustration.
33+
34+
The idea of this rule would be to allow KS to build another hut when we have 1.5 times the amount of wood in stock that the next hut would cost. Making decisions, and adjusting KS settings, on such a granular level is impossible with KS today.
35+
36+
Manipulating settings in KS is also only one of the types of actions that KE should be able to perform. Overall, it should provide the ability to:
37+
38+
1. Make changes to KS settings.
39+
1. Load entire settings states into KS.
40+
1. Trigger actions in KG directly.
41+
42+
Specifically loading entire settings states is probably going to be the major way people are going to interact with KE, as most people will not be interested in the manual labor of writing actions, as shown above, to modify KS behavior. The recent development of [state management](./sections/state-management.md) has been the initial foundational work for this feature. KS has also been continously extended to provide an API that allows developers to control it externally. This API is currently being solidified. We provide extensive schemata for the KS settings structure, which allow developers to author settings profiles, which can also be composed from other profiles, and be shared online.
43+
44+
In theory, users can already make use of this behavior today, but pre-authored settings profiles will likely not catch on until the feature is documented properly.
45+
46+
## When will it be available?
47+
48+
KE will be done, when it's done. There is no date or timeline for its development. However, this is a potential roadmap for the progress oriented at the KS release cycle.
49+
50+
- v2.0.0-beta.8 - Settings profiles integrated into KS
51+
- v2.0.0-beta.9 - Settings profiles stable, integrated into UI. Deprecate state management
52+
- v2.0.0-beta.10 - Settings profiles sharing infrastructure
53+
- v2.0.0-beta.? - KE pre-alpha development starts
54+
- v2.0.0-rc - Settings profiles feature complete. First KE alpha release
55+
56+
<!-- prettier-ignore-start -->
57+
*[API]: Application Programming Interface
58+
*[KE]: Kitten Engineers
59+
*[KG]: Kittens Game
60+
*[KS]: Kitten Scientists
61+
<!-- prettier-ignore-end -->

packages/documentation/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,4 @@ nav:
7373
- Development:
7474
- Getting Started: development.md
7575
- Repository Scripts: reference/Repository Scripts/index.md
76+
- Kitten Engineers: engineers.md

0 commit comments

Comments
 (0)