欢迎光临散文网 会员登陆 & 注册

可控村民就职的村民AI分析

2023-04-04 10:55 作者:pl  | 我要投稿


## `0` gt

此时村民有职业, 并且正在使用近端的工作方块.


- `block_event`: 切换工作方块, 从近到远

- `ValidateNearbyPoi`: 检查工作方块poi

    - `brain.eraseMemory(JOB_SITE)`: 删除工作方块的记忆

    - `brain.eraseMemory(POTENTIAL_JOB_SITE)`: 删除潜在工作方块的记忆

- `ResetProfession`: 重置职业

    - 检查到有职业,不是傻子且没有经验, 通过

    - `refreshBrain()` 重置大脑, 也就是重新生成所有的 `goal`


## `1` gt

此时村民没有职业, 而且刚刚重置大脑. 远处有一个可用的工作方块.


- `AcquirePoi`: 分配潜在工作方块

    - 检查到 `nextScheduledStart == 0L`:

        - `nextScheduledStart = 当前时间 + nextInt(20)`: 更新下次可用时间, 此处的 `nextInt(20)` 后文称为 `cd_19`

        - 不通过检查, 跳过执行步骤

    - 跳过执行步骤


## `max(2, 1 + cd_19)` gt

此时村民没有职业, 超过可用时间(`AcquirePoi.nextScheduledStart`). 远处有一个可用的工作方块.


- `AcquirePoi`: 分配潜在工作方块

    - 检查到 `当前时间 >= nextScheduledStart` 通过检查

        - `nextScheduledStart = 当前时间 + 20L + nextIint(20)`: 更新下次可用时间, 此处的 `20L + nextInt(20)` 后文称为 `cd_39`

    - 此处省略一些操作, 之后另开一篇文章详细讲.

    - 分配 潜在工作方块 `poi` 到远端的工作方块

    - `brain.setMemory(POTENTIAL_JOB_SITE, blockpos)`


## `max(2, 1 + cd_19) + cd_39` gt (最大值 `59` gt)

此时村民没有职业, 但是已经分配了远端的潜在工作方块, 超过可用时间(`AcquirePoi.nextScheduledStart`)

   

   

## `58` gt

此时村民没有职业, 但是已经分配了远端的潜在工作方块(`58 > max(2, 1 + cd_19)`)


- `block_event`: 切换工作方块, 从远到近

- `ValidateNearbyPoi`: 检查工作方块poi

    - `brain.eraseMemory(JOB_SITE)`: 删除工作方块的记忆

    - `brain.eraseMemory(POTENTIAL_JOB_SITE)`: 删除潜在工作方块的记忆

- `AcquirePoi`: 分配潜在工作方块

    - 检查到 `当前时间 >= nextScheduledStart` 通过检查 (极端情况下会推迟到一个gt执行 \[未验证\])

        - `nextScheduledStart = 当前时间 + 20L + nextIint(20)`: 更新下次可用时间

    - 此处省略一些操作, 之后另开一篇文章详细讲.

    - 分配 潜在工作方块`poi` 到近端的工作方块

    - `brain.setMemory(POTENTIAL_JOB_SITE, blockpos)`: 记住潜在工作方块

- `AssignProfessionFromJobSite`: 分配职业

    - 检查距离潜在工作方块的距离 `< 2` 通过

    - `brain.eraseMemory(POTENTIAL_JOB_SITE)`: 删除潜在工作方块记忆

    - `brain.setMemory(JOB_SITE, blockpos)`: 记住工作方块

    - 设置村民职业


## `60` gt

回到初始状态, 同 `0` gt. 此时村民有职业, 并且正在使用近端的工作方块.


- `block_event`: 切换工作方块, 从近到远

- `ValidateNearbyPoi`: 检查工作方块poi

    - `brain.eraseMemory(JOB_SITE)`: 删除工作方块的记忆

    - `brain.eraseMemory(POTENTIAL_JOB_SITE)`: 删除潜在工作方块的记忆

- `ResetProfession`: 重置职业

    - 检查到有职业,不是傻子且没有经验, 通过

    - `refreshBrain()` 重置大脑, 也就是重新生成所有的 `goal`



可控村民就职的村民AI分析的评论 (共 条)

分享到微博请遵守国家法律