本页目录

C-Dogs SDL:经典俯视角跑射游戏

cdogs-sdl · cxong/cdogs-sdl

C-Dogs SDL 是一款经典俯视角跑射(run-and-gun)游戏,使用 C 与 SDL2 开发,支持最多 4 人合作与死亡竞赛模式。玩家可自定义角色、选择多种武器,并在大量用户自制战役中战斗;仓库描述为经典俯视角射击游戏。具体玩法与内容以项目文档...

动作游戏 多人对战 Phaser JavaScript 角色控制 游戏状态管理 网络联机 初级
★ Stars 63 Forks 23 License GPL-2.0 更新 2026-11-01

国内开发环境适配

Windows
AI 推断/待核验
Linux
AI 推断/待核验
macOS
AI 推断/待核验
引擎 / 框架:Phaser 暂无中文教程标记 未标记站长实测
需自备 peerjs.com 的 API key 写入 src/Global.js,PeerJS 官方信令服务器在部分网络环境下可能连接困难,建议自建 PeerServer 或改用国内可达的信令服务(待核验);WebRTC 在受限 NAT/防火墙下可能需额外 STUN/TURN;运行时不要直接双击 index.html,需用本地 Web 服务器(如 Python http.server)承载页面;游戏本体不依赖 npm 构建链。

中文项目介绍

这是一个为 Ludum Dare 33(2015 年)在 48 小时内完成的实验性作品,作者 Omar Shehata 用 HTML5 加 Phaser 框架搭出画面与交互,再用 WebRTC(具体是 PeerJS 封装)打通两台设备之间的点对点连接。它的目标并不是做成一个内容完整的商业游戏,而是验证一个具体的设计假设:如果两名玩家各自只能看到世界的一部分,而且必须靠“偷看对方屏幕”才能补全信息,那么联机游戏会不会自然地把人拉回同一个房间?因此仓库从命名到文档都把自身定位为 experimental p2p multiplayer game,Ludum Dare 的提交页也把它归在 48 小时实验类别下。

玩法上它是一场非对称的双方对抗。人类玩家在桌面端用 WASD 或方向键移动,按 Z 或 K 键发动攻击,攻击方式是用灯光照射幽灵,靠持续命中来消灭对手;幽灵玩家则在移动端通过点击屏幕任意位置移动,点击自己角色就能向下方砸落铁砧,目标是把人类砸死。关键在于“看不见”:README 明确写了 Neither player can fully see the other on their screen,也就是说双方屏幕呈现的是残缺信息,人类看不到幽灵的全部动向,幽灵也难以精确掌握人类的位置。设计师据此鼓励两人坐在同一张桌子旁、甚至允许彼此越过肩膀偷看屏幕,把物理空间里的信息交换变成游戏机制的一部分。这是一种把“同室”当成资源的异步对抗思路,而不是常见的对称竞技。

核心功能

核心特性

技术层面的核心是 PeerJS 的封装。README 说明网络部分依赖 peerjs.com 提供的服务,玩家要在 src/Global.js 里填入自己申请的 API key 才能建立点对点连接。也就是说,这个仓库不包含任何自建信令服务器,联机能力完全外包给第三方公共服务,属于典型的 jam 项目取舍:用最少的代码换来可用的 WebRTC 通道,代价是把可用性绑定在别人的服务上。为了照顾没有 key 的人,Global.js 里有一个 debugStart 开关,可以设成 pc 或 mobile 直接进入单机预览,分别查看桌面端与移动端的界面和操作手感;但文档同时强调此时多人功能不可用,因为缺少信令与对端。

运行方式也写得比较克制:下载仓库、申请并填入 PeerJS API key、然后用本地 Web 服务器打开(README 建议用 Python 自带的简易服务器,因为直接以 file:// 打开会遇到跨域与资源加载限制)。作者还在个人网站 omarshehata.me 上放了一份托管版本,并自嘲说如果打不开多半是他自己把服务器弄坏了——这句话本身也说明该在线版并非有保障的生产部署,只是顺手分享的演示。

技术架构分析

技术要点

从工程角度看,这是一个结构简单、体量很小的 Phaser 项目,适合用来观察 jam 尺度下如何切分职责:Phaser 负责场景、精灵、输入与动画,WebRTC 通道只负责同步少量关键状态,美术由 Tak(@Takorri)负责,音乐来自 Newgrounds 上一位作者(README 说账号已遗失)。它也直观展示了非对称设计的做法——同一套规则下给两端不同的输入方式(键盘 vs 触屏)、不同的视野和不同的胜利条件,而不是把同一个角色复制两份。

如果你打算把它当作学习材料,值得注意几点:一是 API key 直接写在前端文件里,这在实际项目中不可接受,只能算演示级写法;二是 PeerJS 公共服务的可用性、房间匹配、断线重连、异常处理都没做,README 里也没有相关说明,任何声称它“稳定联机”的说法都没有依据;三是仓库没有给出完整的构建脚本或打包流程,运行时依赖你自己准备本地 Web 服务器;四是平台方面文档只区分“桌面端玩家”和“移动端玩家”两种操作形态,并未对 Windows、macOS、Linux 做出正式支持声明,实际能否运行取决于浏览器对 WebRTC 的支持情况以及能否连上 PeerJS 服务。因此它更适合作为一次关于“同室偷看”这一交互想法的参考实现,而非可以直接改造上线的联机框架。

开源许可证与版权说明

许可证标识:GPL-2.0。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目