本页目录

Curse of War(Linux 终端 ncurses 实时战略游戏)

curseofwar · a-nikolaev/curseofwar

Curse of War 是一款用 C 语言编写、面向 Linux 的实时战略游戏,运行于 ncurses 终端界面。与多数 RTS 不同,玩家不直接操控单位,而是专注高层战略:建造基础设施、争夺资源、调动军队。README 称其核心机制接近一战至二战式战争,但未...

策略 多人对战 无明确引擎 C 敌人 AI 程序化生成 游戏状态管理 网络联机 中级
★ Stars 367 Forks 40 License GPL-3.0 更新 2026-10-26

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
未知
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
README 未提及国内网络或镜像相关事项;构建需 ncurses 开发库,SDL 版本需 SDL 依赖,具体依赖清单待核验。

中文项目介绍

Curse of War 是一款面向 Linux 的实时战略(RTS)游戏,使用 C 语言实现,界面基于 ncurses 终端库。它由 Alexey Nikolaev 开发,版权年份为 2013 年,采用 GNU GPL v3 或更高版本发布。

与常见 RTS 不同,玩家并不直接操控具体单位,而是把注意力放在高层战略规划上:建设基础设施、确保资源、调动军队。README 指出,其核心机制“相当接近一战至二战类型的战争”,但游戏并不对应任何具体历史时期,也没有历史背景设定。

项目同时提供 ncurses 与 SDL 两种构建方式,并支持通过 CMake 在 Linux 或 Windows 上编译。

玩法指南

README 给出了适合上手的启动方式:

$ curseofwar -i4 -q1 -dee

或使用更小的地图:

$ curseofwar -i4 -q1 -dee -W16 -H16

通常游戏从地图四角的 4 个小国开始,玩家扮演绿色国家的统治者,目标是征服整张地图。

人口在地块上的显示方式如下(草地地块):

  • . 表示 1–3 名居民,.. 表示 4–6,... 表示 7–12
  • : 表示 13–25,.: 表示 26–50,.:. 表示 51–100
  • :: 表示 101–200,.:: 表示 201–400,::: 表示 400–499

人口会从高密度地块向低密度地块迁移;人口只在城市中增长,每个模拟步按村庄 10%、城镇 20%、要塞 30% 增长。控制城市即控制其周边领土。

玩家旗帜显示为地块右侧的白色“P”,电脑对手旗帜显示为左侧的“x”。

操作方式:

  • 方向键与 H、J、K、L 移动光标
  • R 或 V 依次建造村庄 → 城镇 → 要塞
  • 空格 添加/移除旗帜;X 移除全部己方旗帜;C 移除一半旗帜
  • S 减速,F 加速,Q 退出

核心功能

终端界面

默认使用 ncurses 用户界面,在终端中运行,README 将其描述为节奏较快的动作策略游戏。

高层战略而非微操

玩家不控制单位,而是通过基础设施、资源与军队调动来推进战局。

六边形地图

地图由六边形地块构成,支持菱形、矩形、六边形三种地图形状;菱形与矩形最多 4 个国家,六边形最多 6 个。

人口即资源

人口是首要资源,人口兴旺是取胜关键。每个地块最多容纳每个国家 499 人;多国人口出现在同一地块时会交战,人口最多的一方成为地块所有者。

地块类型

山地与金矿不可居住;金矿是国家黄金来源,需要用军队包围才能控制;村庄、城镇、要塞分别提供 +10%、+20%、+30% 的人口增长;草地是普通可居住区域。

旗帜机制

每个国家可在地图上放置旗帜,改变人口迁移速率,使本国人口向旗帜所在地聚集,可用于提升己方城市人口或征服他国领土。

城市争夺与摧毁

争夺城市时,若守方军队受损严重,城市可能被摧毁——要塞降为城镇,城镇降为村庄,村庄被入侵者彻底烧毁。

电脑对手个性

电脑对手具有不同“性格”,会影响其作战方式。

多人模式

通过 UDP 进行客户端-服务器通信,支持服务器与客户端启动参数。

技术架构分析

构建与运行

README 提供两条构建路径:

  1. 使用 make(Linux)
    • ncurses 版本:$ make
    • SDL 版本:$ make SDL=yes
    • 安装:make install,需定义 DESTDIR 变量,详见 INSTALL 文件
  2. 使用 CMake(Linux 或 Windows)
    • 详见 COMPILE-WITH-CMAKE 文件

技术要点与学习建议

从 README 可确认的技术信息包括:C 语言实现、ncurses 终端 UI、可选 SDL 构建、CMake 构建支持、六边形地块地图、基于人口迁移与增长的模拟规则、旗帜影响迁移速率、AI 对手个性差异,以及基于 UDP 的客户端-服务器联机。

适合学习的方向:

  • 阅读 C 语言实现的终端游戏主循环与 ncurses 渲染方式
  • 理解以人口为核心资源的策略模拟规则设计
  • 观察六边形地图与多国竞争的地块归属判定
  • 研究简单的 UDP 客户端-服务器同步模型及其局限

补充说明

命令行参数

README 列出了较完整的启动参数:

  • -W width / -H height:地图宽高,默认均为 21
  • -S [rhombus|rect|hex]:地图形状,默认矩形
  • -l [2|3| ... N]:国家数量,默认为最大值 N
  • -i [0|1|2|3|4]:国家间不平等程度,0 最低、4 最高
  • -q [1|2| ... L]:按质量选择玩家位置,1 为地图上最好位置,L 为最差,仅单人模式
  • -r:完全随机初始条件,覆盖 -l、-i、-q
  • -d [ee|e|n|h|hh]:AI 难度,从最易到最难,默认普通
  • -s [p|sss|ss|s|n|f|ff|fff]:游戏速度,从最慢到最快,默认普通
  • -R seed:指定地图生成的随机种子
  • -T:显示时间线
  • -E [1|2| ... L]:启动服务器,最多容纳 L 个客户端
  • -e port:服务器端口,默认 19140
  • -C IP:启动客户端并连接指定服务器 IP
  • -c port:客户端端口,默认 19150
  • -v:显示版本号;-h:显示帮助

多人联机

启动一个供两名玩家使用的服务器:

$ ./curseofwar -E 2

客户端连接:

$ ./curseofwar -C <server's IP>

服务器默认端口 19140,客户端默认端口 19150,可用 -e 与 -c 分别指定。地图等选项必须在启动服务器时设置,连接后地图与数据会传给客户端。游戏速度不能由客户端修改,必须由服务器初始设定;并非所有数据都会发送给客户端(例如人口信息不会完整发送)。

README 明确说明多人模式仍处于相对早期开发阶段,可能随时变化;联机双方应使用相同版本的游戏,所有通信通过 UDP 完成,并欢迎报告多人模式问题。

许可与联系

项目以 GNU GPL v3 或更高版本发布,源代码位于 https://github.com/a-nikolaev/curseofwar 。开发邮件列表为 curseofwar-dev@googlegroups.com,IRC 频道为 irc.freenode.net 上的 #curseofwar。

开源许可证与版权说明

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

相似项目