我正在构建CIPHERFRONT,一个2-4人浏览器策略游戏,涉及隐蔽舰队、命令信号和追踪其他玩家隐藏的指挥核心。 我使用Codex作为跨TypeScript、React、PixiJS和Socket.IO堆栈的编码代理。它帮助实现、规则系统迭代和测试覆盖。 我保留了游戏设计、机制、艺术指导、测试优先级和发布决策的责任。 我的工作流程中最重要的变化不是简单地编写代码更快,而是学习我需要将游戏规则描述为不变量,而不仅仅是描述屏幕应该看起来像什么。 “隐藏对手的船只”听起来像一个规范。它不是。 一个客户端可以将敌方船只显示为问号,同时仍然保留其真实身份在浏览器状态中。界面看起来正确,但信息实际上并没有真正保密。 在一个隐藏信息的多人游戏中,这意味着规则即使普通玩家永远不会注意到也会被打破。 我最终需要的合同要更具明确性: * 服务器拥有规范的游戏状态。 * 每个指挥官收到一个玩家专属视图,带有移除在浏览器到达之前的敌方身份和私人情报的视图。 * 移动和战斗验证由服务器而不是信任客户端进行。 * 重连玩家收到相同的过滤视图而不是全状态的便利dump。 * 例如,抽取顺序和秘密选择保持私人,而公开信息如牌堆大小保持可见。 一旦那些界限变得明确,Codex就变得更加有用。它可以帮助跟踪规则在共享引擎、服务器、界面和回归测试之间。 但是,决定什么必须保密,审核是否实施实际上尊严了界限仍然是我的责任。 这已经成为我使用代理构建的最大教训: “使其隐蔽”邀请视觉解决方案。 “这个字段在对手的载荷中永远不会在揭露条件X之前出现”给了代理一个可以实现和测试的具体内容。 还有一个问题,自动化测试和Codex都无法诚实地回答。 Codex在整个开发过程中看到规则和术语,而我设计了游戏。 两个都无法经历真正新玩家的第一轮。 因此,我已经将当前的测试缩小到一个问题: 新玩家可以启动快速启动,了解指挥核心是目标,并在10分钟内完成一个合法的回合吗? 对其他开发人员使用代理的多人游戏:在代理接触网络或隐藏状态之前,您定义哪些不变量?您拒绝将哪些信息发送给客户端,即使界面会隐藏它? 如果有人可以花10分钟时间,直接构建可以在此处找到:https://conquest-private.fly.dev/ 它在桌面浏览器中运行,快速启动不需要帐户:https://conquest-private.fly.dev/ 我正在在此处收集结构化反馈:https://patchloop.io/games/cipherfront 最有用的反馈将是你最初犹豫的地方,最初你认为指挥核心是什么用途,以及你第一次回合感到更加自信的东西。 结构化表单使用Discord登录;如果你不想登录,留下这个帖子的评论同样有用。 披露:我同时构建了CIPHERFRONT和Patchloop,后者托管反馈页面。 Patchloop仅用于反馈目的。