Skip to content

Commit 68130d8

Browse files
authored
Merge pull request #5 from lch24/dev
class
2 parents 727bc79 + ed9ff08 commit 68130d8

68 files changed

Lines changed: 6746 additions & 3 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/规则.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
# 规则
2+
3+
## 游戏背景:
4+
5+
## 简则:
6+
7+
* 每场游戏四个玩家参与,每个玩家要经营一个智能工厂,尽可能地获取算力,升级科技,占领市场。
8+
9+
* 选手需要编写无人驾驶汽车,无人机,机器人,打印机的控制代码。
10+
* 比赛时长10min。
11+
12+
## 地图:
13+
14+
15+
16+
x轴竖直向下,y轴水平向右
17+
18+
格子50x50 每格边长1000
19+
20+
有草丛、障碍、资源、算力中心、工厂、市场等地形。
21+
22+
### 草丛
23+
24+
躲入草丛可以从敌方视野中消失。
25+
26+
### 障碍
27+
28+
阻止游戏角色通行
29+
30+
### 资源
31+
32+
工厂生产的必要物资,随机分布在地图各处,游戏角色在其附近9x9格子内可以开采,每处仅能开采100单位,不再生,开采后变为障碍。
33+
34+
### 算力中心
35+
36+
分布在地图各处,为占领方每秒提供一点算力,第一个占领者无需花费算力,后续占领者需要花费20算力占领。占领所需时间为10s钟。
37+
38+
### 工厂
39+
40+
每个玩家的大本营,所有角色的出生点,分布在地图四个角落,耐久度为500,耐久度耗光,则该玩家彻底失败,可以生产产品,可以为游戏角色修复耐久。
41+
42+
### 市场
43+
44+
工厂销售产品的地方,每个工厂附近有些廉价市场,地图中间有一些高额市场,廉价市场以价值2倍的价格收购,高额市场以价格10倍的价格收购。
45+
46+
## 玩家:
47+
48+
每个玩家初始都有一个工厂、一个无人驾驶汽车,一个无人机、一个机器人,30算力,50资源。
49+
50+
### 无人驾驶汽车:
51+
52+
耐久度300,伤害10,移速500,无法对无人机造成伤害,可以开采资源,每秒开采10单位资源。可以运输产品到市场销售,单次最多运输30单位产品。额外的汽车需要30点算力。
53+
54+
### 无人机:
55+
56+
耐久度100,伤害30,移速1500,可以占领算力中心。可以运输产品到市场销售,单次最多运输10单位产品。额外无人机需要40点算力。
57+
58+
### 机器人:
59+
60+
耐久度350,伤害25,移速1000,可以占领算力中心。可以运输产品到市场销售,单次最多运输20单位产品。额外机器人需要50点算力。
61+
62+
## 产品:
63+
64+
共有5类产品,对应的生产消耗、价值、耗时如下表:
65+
66+
| | 半导体 | 药品 | 小商品 | 服饰 | 食品 |
67+
| ----| -------- | ----- | ------ | ----- | ----- |
68+
| 成本 | 10 | 5 | 1 | 8 | 3 |
69+
| 价值 | 40 ~ 120 | 20~60 | 4~12 | 32~96 | 12~24 |
70+
| 耗时 |5|4|2|6|1|
71+
72+
产品价值并不固定,取决于场上发生的事件和交易的市场。
73+
74+
## 算力:
75+
76+
算力有3大用途
77+
78+
1. 修复耐久:算力可用来修复工厂、角色的耐久,一点算力修复一点耐久,修复只能在工厂中完成。
79+
80+
2. 向智慧大脑提问:每次向智能大脑提问需要消耗5点算力。
81+
82+
3. 升级科技:科技所需要的算力,和带来的buff如下。
83+
84+
| 科技 | 消耗 | buff |
85+
| -------- | ---- | ------------------------ |
86+
| 节约成本 | 50 | 除小商品外所有产品消耗-2 |
87+
| 提高效率 | 40 | 所有任务花费时间减半 |
88+
| 营销手段 | 80 | 销售价格提高10% |
89+
| 增加耐久 | 30 | 所有角色,耐久增加50% |
90+
| 战斗文明 | 10 | 所有角色伤害增加30% |
91+
92+
## 市场:
93+
94+
廉价市场按照产品价值收购,高额市场按照产品价值4倍的价格收购,每个市场的某类产品收购一定数量后会出现贬值。
95+
96+
## 智慧大脑:
97+
98+
在游戏进程的每1min都会出现特定的用自然语言描述的事件,对产品价格,角色的运动与完成任务的过程造成影响。例如事件为大雪,可能造成食品和服饰价格上涨,半导体价格下降,无人驾驶汽车移速减慢等效果。
99+
100+
玩家无法提前预知,但可以通过设计提示词,约定返回格式调用智慧大脑(AI)的api,将收到的事件交给大模型决策,例如可以让大模型返回5种产品的生产计划,以及角色需要去执行的任务等。
101+
102+
## 战斗:
103+
104+
所有角色的耐久耗尽时报废,若工厂报废则该玩家离开游戏,最终分数即为当时分数。
105+
106+
无人驾驶汽车攻击方式是碰撞伤害,无人机是锁定目标伤害,范围是5格之内,机器人AOE伤害范围3格之内 。
107+
108+
## 得分:
109+
110+
得分=销售额x10 +摧毁机器数x1000+摧毁工厂数x5000
111+

docs/规则_PVE.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# 规则(PVE 版本)
2+
3+
## 游戏背景
4+
5+
单名玩家经营智能工厂,在限定时间内通过采集资源、生产产品并在市场销售来积累积分。强调运营策略与事件驱动的调度优化。支持对接智慧大脑(AI)以进行规划和策略优化,便于开展机器学习实验。
6+
7+
## 简则
8+
9+
- 每场游戏为单人模式,玩家经营一个智能工厂,目标是在时限内尽可能提升积分。
10+
- 玩家编写无人驾驶汽车、无人机、机器人、打印机等的调度与任务代码,执行采集、生产、运输、销售等任务并可以通过机器学习优化策略。
11+
- 比赛时长:10 分钟。
12+
13+
## 地图
14+
15+
- 坐标:x 轴竖直向下,y 轴水平向右。
16+
- 地图网格:50×50,单格边长 1000。
17+
- 地形包含:草丛、障碍、资源、算力中心、工厂、市场等。
18+
19+
### 障碍
20+
21+
- 阻止角色通行;不可穿越。
22+
23+
### 资源
24+
25+
- 工厂生产所需物资,随机分布。
26+
- 角色在资源点附近 9×9 格内可开采;每处上限 100 单位,耗尽后该格变为障碍;不再生。
27+
28+
### 算力中心
29+
30+
- 分布在地图各处;开启后每秒提供 1 点算力。
31+
- 开启时间 10 秒。
32+
33+
### 工厂
34+
35+
- 玩家的大本营与角色出生点;耐久度随时间降低,速度由场上发生时间决定。
36+
- 工厂可进行产品生产与角色耐久修复(见“算力”用途)。
37+
38+
### 市场
39+
40+
- 地图随机存在若干廉价市场;地图边缘存在高额市场。
41+
- 廉价市场按产品基础价值收购;高额市场按 4 倍基础价值收购。
42+
- 市场对特定产品存在贬值阈值:某类产品收购达到一定数量后,该市场对该类产品价格降低(每一场都是一个随机函数)。
43+
44+
## 玩家与初始资源
45+
46+
- 初始单位:工厂×1、无人驾驶汽车×1、无人机×1、机器人×1。
47+
- 初始算力:30;初始资源:50。
48+
49+
## 角色单位
50+
51+
所有角色单位不产生战斗伤害;保留耐久度用于事件影响与修复机制。
52+
53+
### 无人驾驶汽车
54+
55+
- 耐久度:300;移速:500。
56+
- 采集:可开采资源,每秒 10 单位。
57+
- 运输:可运输产品至市场,单次最多 30 单位。
58+
- 额外招募:30 点算力。
59+
60+
### 无人机
61+
62+
- 耐久度:100;移速:1500。
63+
- 占领:可占领算力中心。
64+
- 运输:单次最多 10 单位。
65+
- 额外招募:40 点算力。
66+
67+
### 机器人
68+
69+
- 耐久度:350;移速:1000。
70+
- 占领:可占领算力中心。
71+
- 运输:单次最多 20 单位。
72+
- 额外招募:50 点算力。
73+
74+
## 产品与生产
75+
76+
共有 5 类产品;生产消耗、价值区间与耗时如下:
77+
78+
| 产品 | 成本 | 价值(基础) | 耗时 |
79+
| ------ | ---- | ------------ | ---- |
80+
| 半导体 | 10 | 40 ~ 120 | 5 |
81+
| 药品 | 5 | 20 ~ 60 | 4 |
82+
| 小商品 | 1 | 4 ~ 12 | 2 |
83+
| 服饰 | 8 | 32 ~ 96 | 6 |
84+
| 食品 | 3 | 12 ~ 24 | 1 |
85+
86+
- 产品“基础价值”会受事件与市场类型影响(见“事件与智慧大脑”与“市场”)。
87+
- 工厂排队生产,多个生产线可并行(并行度可在对局参数配置)。
88+
89+
## 算力(Compute)
90+
91+
算力有以下用途:
92+
93+
1. 修复耐久:在工厂中可用算力修复工厂与角色和工厂耐久;1 点算力修复 1 点耐久。
94+
2. 智慧大脑提问:每次向智慧大脑(AI)提问消耗 5 点算力。
95+
3. 升级科技:为运营提供长期 Buff:| 科技 | 消耗 | Buff |
96+
| ---------- | ---- | -------------------------------------------------- |
97+
| 节约成本 | 50 | 除小商品外所有产品成本 -2 |
98+
| 提高效率 | 40 | 所有任务耗时减半(采集/生产/运输/占领) |
99+
| 营销手段 | 80 | 销售价格提高 10%(对基础价值与市场倍率后价格生效) |
100+
| 增加耐久 | 30 | 所有角色耐久 +50% |
101+
| 多线并行 | 60 | 增加产线可同时执行多个生产任务 |
102+
103+
## 事件与智慧大脑(AI)
104+
105+
- 每 1 分钟出现一次自然语言事件,影响产品价格、移动速度、任务耗时等。例如“大雪”可能导致食品/服饰价格上涨、半导体价格下降、移动速度降低、采集效率下降。
106+
- 玩家可以通过调用智慧大脑 API 获取对事件的解读与建议,包括:
107+
108+
- 5 种产品的生产配比与时序建议;
109+
- 采集与运输路由;
110+
- 占领算力中心的优先级;
111+
- 销售市场选择与数量分配;
112+
- 建议通过约定 Prompt 与返回 JSON 格式进行对接,便于机器学习与强化学习:
113+
- 引擎在接收计划后按规则执行;若计划不可行(越界、产能不足等),应返回错误并保留上次合法计划;也可允许引擎自动对计划进行轻量修正(例如就近可达资源点替换)。
114+
115+
## 任务与队列模型
116+
117+
- 角色任务包含:移动、采集、运输、占领、修复。
118+
- 任务可插队或取消需付出代价(例如调度切换开销);若启用“运营自动化”科技,切换开销降低。
119+
- 工厂生产队列与运输队列分离;并行度与切换开销可在对局配置中设定。
120+
121+
## 积分结算
122+
123+
- 最终得分仅由经济指标构成:
124+
125+
- 销售额 × 10;
126+
- 占领算力中心的持续收益体现为更高生产/销售效率的间接加分(不单独计分)。
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using Preparation.Utility;
2+
using Preparation.Utility.Value;
3+
4+
namespace GameClass.GameObj.Areas;
5+
6+
public class Bush(XY initPos)
7+
: Immovable(initPos, GameData.NumOfPosGridPerCell / 2, GameObjType.BUSH)
8+
{
9+
public override bool IsRigid(bool args = false) => false;
10+
public override ShapeType Shape => ShapeType.NULL_SHAPE_TYPE;
11+
public void Hide(Character character)
12+
{
13+
if (character.Position == initPos)
14+
character.Visible = false;//使角色invisible
15+
}
16+
17+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Preparation.Utility;
2+
using Preparation.Utility.Value;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace GameClass.GameObj.Areas
10+
{
11+
class ComputeCenter
12+
{
13+
14+
}
15+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using Preparation.Interface;
2+
using Preparation.Utility;
3+
using Preparation.Utility.Value;
4+
using Preparation.Utility.Value.SafeValue.LockedValue;
5+
using System.Threading.Tasks.Dataflow;
6+
7+
namespace GameClass.GameObj.Areas;
8+
9+
public class Resource(XY initPos)
10+
: Immovable(initPos, GameData.NumOfPosGridPerCell / 2, GameObjType.RESOURCE)
11+
{
12+
public InVariableRange<long> HP { get; } = new(GameData.ResourceHP);
13+
public override bool IsRigid(bool args = false) => true;
14+
public override ShapeType Shape => ShapeType.SQUARE;
15+
protected readonly object actionLock = new();
16+
public object ActionLock => actionLock;
17+
18+
private ResourceState State = ResourceState.HARVESTABLE;
19+
public ResourceState ERstate
20+
{
21+
get
22+
{
23+
lock (actionLock)
24+
return State;
25+
}
26+
}
27+
public ResourceType EResourceType = ResourceType.LARGE_RESOURCE;
28+
public void SetERState(ResourceState state)
29+
{
30+
State = state;
31+
}
32+
}

0 commit comments

Comments
 (0)