@@ -7,13 +7,13 @@ __System Integrator__.
7
7
8
8
In practice, this means that:
9
9
10
- - Custom Actions (or, in general, custom TreeNodes) must be reusable building
10
+ - Custom Actions (or, in general, custom TreeNodes) must be __ reusable __ building
11
11
blocks. Implement them once, reuse them many times.
12
12
13
- - To build a Behavior Tree out of TreeNodes, the Behavior Designer must
14
- not need to read nor modify the source code of the a given TreeNode.
13
+ - To build a Behavior Tree out of TreeNodes, the Behavior Designer __ must
14
+ not need to read nor modify the source code __ of the a given TreeNode.
15
15
16
- There is a __ major design flaw __ that undermines this goal in version ` 2.x ` :
16
+ There was a major design flaw that undermined these goals in version ` 2.x ` :
17
17
the way the BlackBoard was used to implement DataFlow between nodes.
18
18
19
19
As described in [ issue #18 ] ( https://github.com/BehaviorTree/BehaviorTree.CPP/issues/18 )
@@ -72,17 +72,19 @@ shared __key/value__ table, i.e. a glorified bunch of global variables.
72
72
The key is a `string`, whilst the value is
73
73
stored in a type-safe container similar to `std::any` or `std::variant`.
74
74
75
- The problem is that writing/reading in an entry of the BB is done __implicitly__
76
- in the source code and it is usually hard-coded. This makes the TreeNode
75
+ The problem is that writing/reading in an entry of the BB was done __implicitly__
76
+ in the source code and it was usually hard-coded. This made the TreeNode
77
77
not reusable.
78
78
79
79
To fix this, we still use the Blackboard under the hood, but it can not be
80
- accessed directly anymore. Entries are read/written using respectively `InputPorts`
81
- and `OutputPorts`.
80
+ accessed directly anymore.
82
81
83
- These ports __must be modelled__ to allow remapping at run-time.
82
+ In version `3.x`Blackboard entries can be read/written using respectively
83
+ `InputPorts` and `OutputPorts`.
84
84
85
- Let's take a look to an example at the old code:
85
+ These ports __must be defined explicitly__ to allow remapping at run-time.
86
+
87
+ Let's take a look to an example writte using the __old__ code:
86
88
87
89
```XML
88
90
<root>
@@ -143,7 +145,7 @@ and modify it.
143
145
In other words, `NodeParameter` is already a reasonably good implementation
144
146
of an `InputPort`, but we need to introduce a consistent `OutputPort` too.
145
147
146
- This is the new code:
148
+ This is the __new__ code:
147
149
148
150
```XML
149
151
<root>
@@ -246,7 +248,7 @@ remapping in the XML definition. No C++ code need to be modified.
246
248
From the point of view of the XML, remapped ports of a SubTree looks exactly
247
249
like the ports of a single node.
248
250
249
- For more details, refer to the example __t06_subtree_port_remapping.cpp_ .
251
+ For more details, refer to the example __t06_subtree_port_remapping.cpp__ .
250
252
251
253
252
254
## ControlNodes renamed/refactored
@@ -271,17 +273,17 @@ By "reactive" we mean that:
271
273
272
274
273
275
The main concern of the original author of this library was to build reactive
274
- Behavior Trees (see for reference this [publication](0https://arxiv.org/abs/1709.00084).
276
+ Behavior Trees (see for reference this [publication](0https://arxiv.org/abs/1709.00084)) .
275
277
276
278
I share this goal, but I prefer to have more explicit names, because reactive
277
279
ControlNodes are useful but hard to reason about sometimes.
278
280
279
- I don't think reactive Controlnodes should be the mindlessly by default.
281
+ I don't think reactive ControlNodes should be used mindlessly by default.
280
282
281
283
For instance, most of the time users I talked with should have used `SequenceStar`
282
284
instead of `Sequence` in many cases.
283
285
284
- I renamed the ControlNodes to reflect this reality:
286
+ I renamed the ControlNodes as follows to reflect this reality:
285
287
286
288
287
289
| Old Name (v2) | New name (v3) | Is reactive? |
@@ -302,7 +304,7 @@ more than a single asynchronous child.
302
304
303
305
The new recommendation is:
304
306
305
- >__Reactive nodes shouldn't have more than a single asynchronous child__.
307
+ >__Reactive nodes should NOT have more than a single asynchronous child__.
306
308
307
309
This is a very opinionated decision and for this reason it is documented but
308
310
not enforced by the implementation.
0 commit comments