惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Martin Fowler
Martin Fowler
The Cloudflare Blog
The Register - Security
The Register - Security
WordPress大学
WordPress大学
量子位
Vercel News
Vercel News
C
Check Point Blog
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
PCI Perspectives
PCI Perspectives
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
美团技术团队
Schneier on Security
Schneier on Security
O
OpenAI News
M
MIT News - Artificial intelligence
S
Secure Thoughts
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security Affairs
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cyber Attacks, Cyber Crime and Cyber Security
GbyAI
GbyAI
L
LINUX DO - 最新话题
The Last Watchdog
The Last Watchdog
C
CERT Recently Published Vulnerability Notes
aimingoo的专栏
aimingoo的专栏
V
V2EX
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
Unciv:开源跨平台的文明V重制版,用LibGDX打造怀旧4X策略游戏
Cheman · 2026-06-18 · via BlogFinder

今天在 GitHub Trending 上看到一个有意思的项目:Unciv,这是一款用 LibGDX 开发的开源文明V重制版,能在 Android 和桌面端流畅运行,特别适合怀旧玩家和模改爱好者。

一、项目概述

Unciv 是一个开源的、专注于模改(moddability)的 Android 和桌面端文明V重制版,使用 LibGDX 游戏开发框架构建。项目的核心理念是打造一个轻量、快速、可模改、开源且深度的 4X 策略游戏,即使是在低配置设备上也能流畅运行。

核心特性:

  • 跨平台支持:Android、Linux、Windows、macOS、Raspberry Pi 全覆盖
  • 开源免费:完全开源,无广告,无内购
  • 模改友好:强大的模改系统,玩家可以自定义文明、单位、建筑等
  • 轻量高效:相比原版 Civ V,资源占用极低,启动速度快
  • 多语言支持:通过社区翻译,支持多种语言

项目在 GitHub 上获得了广泛的关注,支持通过 Google Play、F-Droid、itch.io、Flathub、AUR、Homebrew、Chocolatey 等多种方式安装。

二、技术原理

架构设计

Unciv 基于 LibGDX 框架开发,这是一个成熟的跨平台 Java 游戏开发框架,支持 Windows、Linux、macOS、Android、iOS 和 Web 平台。项目采用典型的 LibGDX 多层架构:

├── core/          # 核心游戏逻辑(平台无关)
├── desktop/       # 桌面端启动器和打包配置
├── android/       # Android 平台特定代码
├── ios/           # iOS 平台特定代码(未活跃维护)
└── assets/        # 游戏资源(JSON 配置、图像、音频)

核心技术栈与选型理由

LibGDX 是项目的技术基石,选型理由包括:

  • 跨平台能力:一套代码编译到多个平台,降低维护成本
  • 成熟稳定:拥有丰富的生态系统和社区支持
  • 性能优秀:基于 OpenGL ES,渲染性能出色
  • Java 生态:便于利用现有的 Java 库和工具链

JSON 驱动的配置系统是 Unciv 模改系统的核心。游戏的所有规则、文明、单位、建筑、科技树等都以 JSON 文件定义,存放在 android/assets/jsons/ 目录下。这种设计使得玩家无需编写代码即可创建复杂的模改。

关键算法与设计模式

  1. 状态模式(State Pattern):游戏中的单位和城市都有复杂的状态管理,使用状态模式清晰地处理不同状态下的行为。

  2. 观察者模式(Observer Pattern):用于实现事件系统和 UI 更新机制,当游戏状态变化时自动通知相关组件。

  3. 策略模式(Strategy Pattern):AI 决策系统使用策略模式,不同的 AI 难度和风格采用不同的决策策略。

数据流分析

游戏的数据流主要围绕 GameInfo 对象展开,这是整个游戏状态的核心数据结构:

// 核心游戏状态结构
class GameInfo {
    val civilizations: MutableList<Civilization> = mutableListOf()
    val cities: MutableList<City> = mutableListOf()
    val tiles: MutableList<Tile> = mutableListOf()
    val units: MutableList<MapUnit> = mutableListOf()
    val difficulty: Difficulty = Difficulty.None
    val gameParameters: GameParameters = GameParameters()
    // ...
}

所有游戏操作都会修改 GameInfo 或其子对象,然后通过序列化保存到本地或用于多人游戏同步。

三、安装与快速开始

环境要求

  • Android 5.0+
  • 桌面端:Java 11+(推荐 OpenJDK 11 或 17)
  • 磁盘空间:至少 100MB 可用空间

安装步骤

Android 设备:

# 通过 Google Play 安装
# 或下载 F-Droid 版本
# 或从 GitHub Releases 下载 APK

Linux 桌面:

# Flatpak 安装(推荐)
flatpak install flathub io.github.yairm210.unciv

# 或从 AUR 安装(Arch Linux)
yay -S unciv-bin

# 或下载 Jar 文件运行
java -jar Unciv.jar

Windows:

# 下载安装 MSI
# 或从 Chocolatey 安装
choco install unciv

# 或下载 Jar 文件运行
java -jar Unciv.jar

macOS:

# 使用 Homebrew 安装
brew update && brew install unciv

# 或下载 Jar 文件运行
java -jar Unciv.jar

最简运行示例

桌面端运行 Jar(所有平台通用):

# 下载最新 Release 的 Jar 文件
wget https://github.com/yairm210/Unciv/releases/latest/download/Unciv.jar

# 运行游戏
java -jar Unciv.jar

Docker 运行(实验性):

# 拉取并运行 Docker 镜像
docker run -d -p 6901:6901 -p 5901:5901 ghcr.io/yairm210/unciv

# 在浏览器中访问
# http://localhost:6901/vnc.html?password=headless

四、使用方法与实战

基础用法

  1. 开始新游戏:启动游戏 → 选择"快速游戏"或"新游戏" → 选择文明 → 配置游戏参数 → 开始

  2. 游戏界面

    • 底部:选中单位的动作栏
    • 右侧:城市和生产信息
    • 顶部:资源栏(金币、科研、文化等)
    • 左侧:游戏速度和菜单
  3. 基本操作

    • 点击单位进行选择
    • 点击目的地移动单位
    • 点击城市查看详情
    • 双指缩放地图

进阶用法

模改安装:

  1. 从社区或 Steam 创意工坊下载模改(JSON 文件或文件夹)
  2. 将模改放入以下目录:
    • Android:/sdcard/Android/data/com.unciv.app/files/mods/
    • 桌面:~/.local/share/unciv/mods/(Linux)或 %APPDATA%\unciv\mods\(Windows)
  3. 在游戏中启用模改:设置 → 模改 → 启用所需模改

自定义文明: 创建 MyCiv.json 文件,定义新文明:

{
  "name": "我的文明",
  "leaderName": "领导者",
  "flags": ["IsCityState", "IsMajorCiv"],
  "uniqueUnits": ["MY_UNIQUE_UNIT"],
  "uniqueBuildings": ["MY_UNIQUE_BUILDING"],
  "startBias": ["Coast", "Luxury"],
  "cityNames": ["首都", "第二城", "第三城"]
}

实际项目示例

场景:创建自定义单位

{
  "name": "激光步兵",
  "unitType": "LandUnit",
  "cost": 150,
  "strength": 40,
  "rangedStrength": 25,
  "range": 2,
  "movement": 2,
  "requiredTech": "LaserTechnology",
  "upgradesTo": "None",
  "uniqueTo": "未来文明",
  "uniques": [
    "3倍伤害对抗机械化单位",
    "+10% 防御在丘陵地形"
  ]
}

五、常见问题与解决方案

安装失败

问题:Android 安装 APK 时提示"解析包错误" 解决方案

  • 检查 Android 版本是否 ≥ 5.0
  • 确保下载的 APK 文件完整(重新下载)
  • 在设置中允许"安装未知来源应用"

问题:桌面端运行 Jar 提示"找不到 Java" 解决方案

# 检查 Java 版本
java -version

# 如果未安装,安装 OpenJDK 11
# Ubuntu/Debian
sudo apt install openjdk-11-jdk

# macOS
brew install openjdk@11

# Windows:从 Adoptium 下载安装

运行时错误

问题:游戏启动后黑屏或崩溃 解决方案

  • 更新显卡驱动
  • 如果是集成显卡,尝试禁用 GPU 加速:在启动参数中添加 --disable-gpu
  • 检查日志文件:~/.local/share/unciv/logs/ 或 Android 的 logcat

问题:游戏卡顿、帧率低下 解决方案

  • 在设置中降低图形质量
  • 关闭动画效果
  • 如果是大地图(巨图),考虑减小地图尺寸
  • 升级设备硬件(推荐 4GB+ RAM)

模改问题

问题:启用的模改没有效果 解决方案

  • 确认模改文件放置在正确目录
  • 检查模改是否兼容当前游戏版本
  • 查看游戏日志中的模改加载错误
  • 尝试禁用其他模改(模改冲突)

问题:自定义文明/单位不显示 解决方案

  • 检查 JSON 语法是否正确(使用 JSON 校验器)
  • 确认所有引用的科技、建筑等存在
  • 查看游戏内的"模改验证"工具的输出

兼容性问题

问题:保存的游戏在新版本中无法加载 解决方案

  • Unciv 通常保持向后兼容,但重大更新可能破坏兼容性
  • 尝试用旧版本加载存档,然后导出游戏状态
  • 关注 GitHub Releases 的更新日志,了解破坏性变更

六、总结

Unciv 是一个令人敬佩的开源项目,它证明了开源社区能够创造出高质量、跨平台的游戏重制版。通过使用 LibGDX 框架和 JSON 驱动的配置系统,项目实现了极高的可移植性和可模改性。

项目亮点:

  • ✅ 完全开源,代码质量高,适合学习 LibGDX 游戏开发
  • ✅ 真正的跨平台,覆盖移动端和桌面端
  • ✅ 强大的模改系统,社区创作活跃
  • ✅ 轻量高效,低配设备也能流畅运行
  • ✅ 持续维护,开发者活跃

适合人群:

  • 文明系列老玩家,想要在移动设备上体验文明V
  • 开源爱好者,想要贡献代码或模改
  • 游戏开发学习者,想要研究 LibGDX 实际项目
  • 4X 策略游戏爱好者,寻找轻量级替代品

如果你怀念文明V的经典玩法,又想要在手机或低配电脑上玩,Unciv 绝对值得一试。而且,作为开源项目,你不仅可以免费游玩,还可以参与到项目的开发和改进中。

相关资源:

  • GitHub 仓库:https://github.com/yairm210/Unciv
  • 在线文档:https://yairm210.github.io/Unciv/
  • Discord 社区:https://discord.gg/bjrB4Xw
  • F-Droid 下载:https://f-droid.org/en/packages/com.unciv.app/