登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
Gitee 2025 年度开源项目评选中
代码拉取完成,页面将自动刷新
开源项目
>
游戏/娱乐
>
游戏
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
3
Star
0
Fork
0
三体自动化技术协会
/
databank
代码
Issues
21
Pull Requests
0
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
关于公共区视觉渲染与代码执行平衡的设计变更提案
待办的
#ICX36I
xiaochi
成员
创建于
2025-09-09 13:30
### 核心问题回顾 公共区 1MB 内存的每个字节同时作为**道机指令**和**可视化像素颜色**。如果一个字节的值必须固定为某个指令(例如 `MOV` 的操作码),那么它作为像素颜色就是随机且不可控的;反之,如果一个字节的值必须固定为某种颜色(例如红色),那么它作为指令就可能毫无意义(如 `NOP`)或导致程序崩溃。 这导致了玩家在公共区进行**有意义的视觉创作**和**复杂算法编程**时,会面临极大的内在冲突,其编程难度对大多数玩家而言可能过高。例如,要在公共区画一朵精美的花,同时让花的像素区域也能执行复杂的程序,几乎是自相矛盾的。 ### 提案:引入“视觉缓冲区”概念和专用视觉指令 为了解决上述冲突,同时保持“世界即程序”的统一性,我们建议对公共区的视觉渲染机制进行以下调整: 1. **公共区内存 (mem.img) 保持统一性:** * PUB Segment (1MB) 仍然是唯一的公共内存空间,每个字节既是数据,也是道机可以执行的指令。这一点不变,是游戏的核心底层基础。 2. **引入“视觉缓冲区” (Soft Display Buffer) 概念:** * 在**后端渲染引擎**中引入一个**临时的、非持久化的“视觉缓冲区”**(可以理解为一种渲染层叠加机制)。这个缓冲区不直接修改 `mem.img` 中的原始字节。 3. **重新定义 `SET_COLOR` 及引入新的视觉指令:** * **`SET_COLOR` 指令的语义演进:** * 不再直接将一个字节值写入 `mem.img` 中对应的像素地址。 * 而是,当道机执行 `SET_COLOR [addr_x] [addr_y] [color_byte_value]` 时,它会通知渲染引擎,在 `(addr_x, addr_y)` 坐标处,将该像素的**最终显示颜色**设置为 `color_byte_value` 所代表的颜色。这个操作**只作用于视觉输出层,不改变 `mem.img` 中对应地址的实际字节值。** * **新增核心视觉操作指令:`DRAW_BUFFER`** * **指令:** `DRAW_BUFFER [source_mem_addr] [dest_x] [dest_y] [width] [height]` * **功能:** 当道机执行此指令时,它会从 `mem.img` 的 `source_mem_addr` 位置,读取 `width * height` 个字节的数据。然后,这些数据会被解释为像素颜色信息,并通知渲染引擎,在公共区可视化输出的 `(dest_x, dest_y)` 起始位置上,**高效地渲染**出由这些数据构成的图像。 * **关键特性:** 同样,此操作**只影响最终的视觉渲染,不会修改 `mem.img` 中 `dest_x, dest_y` 对应区域的字节内容。** 这使得玩家可以在 `source_mem_addr` 存储纯粹的图像数据(字节序列),而无需担心这些图像数据被道机误解释为指令而导致崩溃。 * **优势:** 玩家可以专门租赁一块区域来存放图片数据,然后用一条 `DRAW_BUFFER` 指令高效地将其绘制出来,极大地降低了视觉创作的门槛和复杂度。 ### 后端实现思路 (TDD 视角) 1. **`tao` 执行流:** `tao` 在执行指令时,如果遇到 `SET_COLOR` 或 `DRAW_BUFFER`,它会解析指令参数(如源地址、目标坐标、宽高、颜色值)。 2. **渲染引擎接口:** `tao` 不直接修改 `mem.img`,而是通过内部接口(或共享内存)向**独立的渲染引擎**提交一个“渲染命令”队列。这个队列包含诸如“在坐标 X,Y 绘制颜色 C”、“从内存 M 读取图片并绘制到 X,Y 区域”等指令。 3. **渲染引擎工作:** * **基底层:** 渲染引擎会首先根据 `mem.img` 的当前状态,生成一个默认的 1024x1024 像素图像(即每个字节值直接映射的颜色)。 * **叠加层:** 随后,渲染引擎会处理 `tao` 提交的“渲染命令”队列。它会根据这些命令,在基底层图像上进行叠加、覆盖或混合操作,生成最终呈现给玩家的图像。 4. **持久性:** `mem.img` 仍然是世界状态的唯一持久化存储。视觉渲染是其“表层”的、实时生成的解释,不改变底层数据。 ### 优势和意义 * **真正的“数据即指令”和“世界即程序”:** `mem.img` 始终是程序的底层运行环境,玩家的算法和数据都在这里。 * **降低视觉创作门槛:** 玩家可以更轻松地在公共区绘制复杂的图案、显示信息或创建动态的视觉效果,而无需应对代码与颜色的双重冲突。他们只需在租赁的内存区域存储图片数据,并通过简单的 `DRAW_BUFFER` 指令将其渲染。 * **深化的算法博弈:** * **防御画作:** 即使是“画图”,玩家也需要编写算法来 **防御** 自己的视觉输出,例如检测图案是否被破坏,并在下一帧自动修复。这本身就是一种复杂的算法攻防。 * **动态视觉:** 玩家可以通过算法生成动态变化的图案、动画,甚至虚拟生命的外观。 * **信息隐藏:** 玩家仍然可以在底层 `mem.img` 中编写复杂的、非视觉友好的攻击代码,并将其隐藏在美观的视觉层之下。 * **平衡两种玩家:** * **代码玩家** 可以专注于编写高效、复杂的算法,甚至可以用算法动态生成视觉效果。 * **创作玩家** 可以有更直观的工具来表达创意,他们的作品也需要算法来维护和生存,从而被引导进入更深层的策略玩法。 这个方案既保留了我们游戏的底层硬核理念,又极大地提升了玩家在视觉创作方面的自由度和友好性,同时深化了算法博弈的维度。 请您评估此提案的技术可行性和对整体架构的影响。期待与您进一步讨论!
### 核心问题回顾 公共区 1MB 内存的每个字节同时作为**道机指令**和**可视化像素颜色**。如果一个字节的值必须固定为某个指令(例如 `MOV` 的操作码),那么它作为像素颜色就是随机且不可控的;反之,如果一个字节的值必须固定为某种颜色(例如红色),那么它作为指令就可能毫无意义(如 `NOP`)或导致程序崩溃。 这导致了玩家在公共区进行**有意义的视觉创作**和**复杂算法编程**时,会面临极大的内在冲突,其编程难度对大多数玩家而言可能过高。例如,要在公共区画一朵精美的花,同时让花的像素区域也能执行复杂的程序,几乎是自相矛盾的。 ### 提案:引入“视觉缓冲区”概念和专用视觉指令 为了解决上述冲突,同时保持“世界即程序”的统一性,我们建议对公共区的视觉渲染机制进行以下调整: 1. **公共区内存 (mem.img) 保持统一性:** * PUB Segment (1MB) 仍然是唯一的公共内存空间,每个字节既是数据,也是道机可以执行的指令。这一点不变,是游戏的核心底层基础。 2. **引入“视觉缓冲区” (Soft Display Buffer) 概念:** * 在**后端渲染引擎**中引入一个**临时的、非持久化的“视觉缓冲区”**(可以理解为一种渲染层叠加机制)。这个缓冲区不直接修改 `mem.img` 中的原始字节。 3. **重新定义 `SET_COLOR` 及引入新的视觉指令:** * **`SET_COLOR` 指令的语义演进:** * 不再直接将一个字节值写入 `mem.img` 中对应的像素地址。 * 而是,当道机执行 `SET_COLOR [addr_x] [addr_y] [color_byte_value]` 时,它会通知渲染引擎,在 `(addr_x, addr_y)` 坐标处,将该像素的**最终显示颜色**设置为 `color_byte_value` 所代表的颜色。这个操作**只作用于视觉输出层,不改变 `mem.img` 中对应地址的实际字节值。** * **新增核心视觉操作指令:`DRAW_BUFFER`** * **指令:** `DRAW_BUFFER [source_mem_addr] [dest_x] [dest_y] [width] [height]` * **功能:** 当道机执行此指令时,它会从 `mem.img` 的 `source_mem_addr` 位置,读取 `width * height` 个字节的数据。然后,这些数据会被解释为像素颜色信息,并通知渲染引擎,在公共区可视化输出的 `(dest_x, dest_y)` 起始位置上,**高效地渲染**出由这些数据构成的图像。 * **关键特性:** 同样,此操作**只影响最终的视觉渲染,不会修改 `mem.img` 中 `dest_x, dest_y` 对应区域的字节内容。** 这使得玩家可以在 `source_mem_addr` 存储纯粹的图像数据(字节序列),而无需担心这些图像数据被道机误解释为指令而导致崩溃。 * **优势:** 玩家可以专门租赁一块区域来存放图片数据,然后用一条 `DRAW_BUFFER` 指令高效地将其绘制出来,极大地降低了视觉创作的门槛和复杂度。 ### 后端实现思路 (TDD 视角) 1. **`tao` 执行流:** `tao` 在执行指令时,如果遇到 `SET_COLOR` 或 `DRAW_BUFFER`,它会解析指令参数(如源地址、目标坐标、宽高、颜色值)。 2. **渲染引擎接口:** `tao` 不直接修改 `mem.img`,而是通过内部接口(或共享内存)向**独立的渲染引擎**提交一个“渲染命令”队列。这个队列包含诸如“在坐标 X,Y 绘制颜色 C”、“从内存 M 读取图片并绘制到 X,Y 区域”等指令。 3. **渲染引擎工作:** * **基底层:** 渲染引擎会首先根据 `mem.img` 的当前状态,生成一个默认的 1024x1024 像素图像(即每个字节值直接映射的颜色)。 * **叠加层:** 随后,渲染引擎会处理 `tao` 提交的“渲染命令”队列。它会根据这些命令,在基底层图像上进行叠加、覆盖或混合操作,生成最终呈现给玩家的图像。 4. **持久性:** `mem.img` 仍然是世界状态的唯一持久化存储。视觉渲染是其“表层”的、实时生成的解释,不改变底层数据。 ### 优势和意义 * **真正的“数据即指令”和“世界即程序”:** `mem.img` 始终是程序的底层运行环境,玩家的算法和数据都在这里。 * **降低视觉创作门槛:** 玩家可以更轻松地在公共区绘制复杂的图案、显示信息或创建动态的视觉效果,而无需应对代码与颜色的双重冲突。他们只需在租赁的内存区域存储图片数据,并通过简单的 `DRAW_BUFFER` 指令将其渲染。 * **深化的算法博弈:** * **防御画作:** 即使是“画图”,玩家也需要编写算法来 **防御** 自己的视觉输出,例如检测图案是否被破坏,并在下一帧自动修复。这本身就是一种复杂的算法攻防。 * **动态视觉:** 玩家可以通过算法生成动态变化的图案、动画,甚至虚拟生命的外观。 * **信息隐藏:** 玩家仍然可以在底层 `mem.img` 中编写复杂的、非视觉友好的攻击代码,并将其隐藏在美观的视觉层之下。 * **平衡两种玩家:** * **代码玩家** 可以专注于编写高效、复杂的算法,甚至可以用算法动态生成视觉效果。 * **创作玩家** 可以有更直观的工具来表达创意,他们的作品也需要算法来维护和生存,从而被引导进入更深层的策略玩法。 这个方案既保留了我们游戏的底层硬核理念,又极大地提升了玩家在视觉创作方面的自由度和友好性,同时深化了算法博弈的维度。 请您评估此提案的技术可行性和对整体架构的影响。期待与您进一步讨论!
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (2)
标签 (1)
master
zsh
TAO1
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
NodeJS
1
https://gitee.com/wu-org/databank.git
[email protected]
:wu-org/databank.git
wu-org
databank
databank
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册