【C++】如何从源代码编译红色警戒2地图编辑器

【C++】如何从源代码编译红色警戒2地图编辑器

  • 操作视频
    • 视频中的代码不需要下载三方库,已经包含三方库。
  • 一、运行效果:
  • 二、源代码来源及编程语言:
  • 三、环境搭建:
    • 安装红警2
    • 安装VS2022
    • 下载代码,源代码其实不太多,由于源代码是外网的,我fork到gitee了份代码:
  • 四、可能碰到的问题
  • vs2022 downloads are blocked by x-block-origin.
  • 五、参考
  • 红警游戏地图里边有些感觉是类似3D的2D展示,源代码很有学习的价值。

操作视频

视频中的代码不需要下载三方库,已经包含三方库。

https://www.bilibili.com/video/BV1GTwNehEB5/?spm_id_from=333.1387.homepage.video_card.click&vd_source=0578c14da2b84f0964bbee439d4fd921

一、运行效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个地图就是冰天雪地,哈哈

二、源代码来源及编程语言:

https://github.com/electronicarts/CNC_TS_and_RA2_Mission_Editor
源代码编程语言:C++/C

三、环境搭建:

打建编译环境前这个源代码库的帮助文档也要好好瞅瞅:
在这里插入图片描述

安装红警2

这里我是安装的共和国之辉,其他的没有测试过不太清楚是否可以正常试用
在这里插入图片描述

安装VS2022

这个直接通过微软安装,其实这里先只需要安装很少部分,当通过VS2022打开下载的源代码时,VS会提醒安装所缺的编译器及相关的东西,好像有1、2个多G要安装。

下载代码,源代码其实不太多,由于源代码是外网的,我fork到gitee了份代码:

https://gitee.com/r77683962/CNC_TS_and_RA2_Mission_Editor
源代码大概1.6M的样子,这里要小心,编译源代码需要的其他三方库比较多
在这里插入图片描述
这步很重要,这里好像是要更新三方库的下载索引还是啥的,我在这里吃过亏,如果这里不操作,三方库不下载,编译时会报很多源代码依赖不到。
在这里插入图片描述

这里展示了部分已经下载的三方库:
在这里插入图片描述
这是用du命令看到的文件列表:
C:\Users\Administrator\AppData\Local\vcpkg
Administrator@MS-NXTARZGVVQFH MINGW64 ~/AppData/Local/vcpkg/downloads
$ du -sh *
1.6M 7z2408-extra.7z
103M PowerShell-7.2.23-win-x64.zip
1.6M boostorg-algorithm-boost-1.86.0.tar.gz
20K boostorg-array-boost-1.86.0.tar.gz
20K boostorg-assert-boost-1.86.0.tar.gz
84K boostorg-bind-boost-1.86.0.tar.gz
788K boostorg-boost-boost-1.86.0.tar.gz
36K boostorg-cmake-boost-1.86.0.tar.gz
56K boostorg-concept_check-boost-1.86.0.tar.gz
380K boostorg-config-boost-1.86.0.tar.gz
64K boostorg-container_hash-boost-1.86.0.tar.gz
16K boostorg-conversion-boost-1.86.0.tar.gz
168K boostorg-core-boost-1.86.0.tar.gz
52K boostorg-crc-boost-1.86.0.tar.gz
44K boostorg-describe-boost-1.86.0.tar.gz
76K boostorg-detail-boost-1.86.0.tar.gz
120K boostorg-exception-boost-1.86.0.tar.gz
48K boostorg-function-boost-1.86.0.tar.gz
76K boostorg-function_types-boost-1.86.0.tar.gz
56K boostorg-functional-boost-1.86.0.tar.gz
704K boostorg-fusion-boost-1.86.0.tar.gz
4.0K boostorg-headers-boost-1.86.0.tar.gz
48K boostorg-integer-boost-1.86.0.tar.gz
20K boostorg-io-boost-1.86.0.tar.gz
1.5M boostorg-iterator-boost-1.86.0.tar.gz
132K boostorg-move-boost-1.86.0.tar.gz
128K boostorg-mp11-boost-1.86.0.tar.gz
1.5M boostorg-mpl-boost-1.86.0.tar.gz
232K boostorg-optional-boost-1.86.0.tar.gz
108K boostorg-predef-boost-1.86.0.tar.gz
848K boostorg-preprocessor-boost-1.86.0.tar.gz
204K boostorg-range-boost-1.86.0.tar.gz
624K boostorg-regex-boost-1.86.0.tar.gz
180K boostorg-smart_ptr-boost-1.86.0.tar.gz
16K boostorg-static_assert-boost-1.86.0.tar.gz
20K boostorg-throw_exception-boost-1.86.0.tar.gz
32K boostorg-tuple-boost-1.86.0.tar.gz
392K boostorg-type_traits-boost-1.86.0.tar.gz
24K boostorg-typeof-boost-1.86.0.tar.gz
3.6M boostorg-unordered-boost-1.86.0.tar.gz
160K boostorg-utility-boost-1.86.0.tar.gz
792K bzip2-1.0.8.tar.gz
41M cmake-3.29.2-windows-i386.zip
588K lzo-2.10.tar.gz
1.5M madler-zlib-v1.3.1.tar.gz
88K msys2-mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
1.9M msys2-msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
0 temp
387M tools

这是URL地址列表,其实不需要手动下载,估计是递归依赖下载:
https://github.com/boostorg/algorithm/archive/boost-1.86.0.tar.gz -> boostorg-algorithm-boost-1.86.0.tar.gz…
https://github.com/boostorg/array/archive/boost-1.86.0.tar.gz -> boostorg-array-boost-1.86.0.tar.gz…
https://github.com/boostorg/assert/archive/boost-1.86.0.tar.gz -> boostorg-assert-boost-1.86.0.tar.gz…
https://github.com/boostorg/bind/archive/boost-1.86.0.tar.gz -> boostorg-bind-boost-1.86.0.tar.gz…
https://github.com/boostorg/boost/archive/boost-1.86.0.tar.gz -> boostorg-boost-boost-1.86.0.tar.gz…
https://github.com/boostorg/cmake/archive/boost-1.86.0.tar.gz -> boostorg-cmake-boost-1.86.0.tar.gz…
https://github.com/boostorg/concept_check/archive/boost-1.86.0.tar.gz -> boostorg-concept_check-boost-1.86.0.tar.gz…
https://github.com/boostorg/config/archive/boost-1.86.0.tar.gz -> boostorg-config-boost-1.86.0.tar.gz…
https://github.com/boostorg/container_hash/archive/boost-1.86.0.tar.gz -> boostorg-container_hash-boost-1.86.0.tar.gz…
https://github.com/boostorg/conversion/archive/boost-1.86.0.tar.gz -> boostorg-conversion-boost-1.86.0.tar.gz…
https://github.com/boostorg/core/archive/boost-1.86.0.tar.gz -> boostorg-core-boost-1.86.0.tar.gz…
https://github.com/boostorg/crc/archive/boost-1.86.0.tar.gz -> boostorg-crc-boost-1.86.0.tar.gz…
https://github.com/boostorg/describe/archive/boost-1.86.0.tar.gz -> boostorg-describe-boost-1.86.0.tar.gz…
https://github.com/boostorg/detail/archive/boost-1.86.0.tar.gz -> boostorg-detail-boost-1.86.0.tar.gz…
https://github.com/boostorg/exception/archive/boost-1.86.0.tar.gz -> boostorg-exception-boost-1.86.0.tar.gz…
https://github.com/boostorg/function/archive/boost-1.86.0.tar.gz -> boostorg-function-boost-1.86.0.tar.gz…
https://github.com/boostorg/function_types/archive/boost-1.86.0.tar.gz -> boostorg-function_types-boost-1.86.0.tar.gz…
https://github.com/boostorg/functional/archive/boost-1.86.0.tar.gz -> boostorg-functional-boost-1.86.0.tar.gz…
https://github.com/boostorg/fusion/archive/boost-1.86.0.tar.gz -> boostorg-fusion-boost-1.86.0.tar.gz…
https://github.com/boostorg/headers/archive/boost-1.86.0.tar.gz -> boostorg-headers-boost-1.86.0.tar.gz…
https://github.com/boostorg/integer/archive/boost-1.86.0.tar.gz -> boostorg-integer-boost-1.86.0.tar.gz…
https://github.com/boostorg/io/archive/boost-1.86.0.tar.gz -> boostorg-io-boost-1.86.0.tar.gz…
https://github.com/boostorg/iterator/archive/boost-1.86.0.tar.gz -> boostorg-iterator-boost-1.86.0.tar.gz…
https://github.com/boostorg/move/archive/boost-1.86.0.tar.gz -> boostorg-move-boost-1.86.0.tar.gz…
https://github.com/boostorg/mp11/archive/boost-1.86.0.tar.gz -> boostorg-mp11-boost-1.86.0.tar.gz…
https://github.com/boostorg/mpl/archive/boost-1.86.0.tar.gz -> boostorg-mpl-boost-1.86.0.tar.gz…
https://github.com/boostorg/optional/archive/boost-1.86.0.tar.gz -> boostorg-optional-boost-1.86.0.tar.gz…
https://github.com/boostorg/predef/archive/boost-1.86.0.tar.gz -> boostorg-predef-boost-1.86.0.tar.gz…
https://github.com/boostorg/preprocessor/archive/boost-1.86.0.tar.gz -> boostorg-preprocessor-boost-1.86.0.tar.gz…
https://github.com/boostorg/range/archive/boost-1.86.0.tar.gz -> boostorg-range-boost-1.86.0.tar.gz…
https://github.com/boostorg/regex/archive/boost-1.86.0.tar.gz -> boostorg-regex-boost-1.86.0.tar.gz…
https://github.com/boostorg/smart_ptr/archive/boost-1.86.0.tar.gz -> boostorg-smart_ptr-boost-1.86.0.tar.gz…
https://github.com/boostorg/static_assert/archive/boost-1.86.0.tar.gz -> boostorg-static_assert-boost-1.86.0.tar.gz…
https://github.com/boostorg/throw_exception/archive/boost-1.86.0.tar.gz -> boostorg-throw_exception-boost-1.86.0.tar.gz…
https://github.com/boostorg/tuple/archive/boost-1.86.0.tar.gz -> boostorg-tuple-boost-1.86.0.tar.gz…
https://github.com/boostorg/type_traits/archive/boost-1.86.0.tar.gz -> boostorg-type_traits-boost-1.86.0.tar.gz…
https://github.com/boostorg/typeof/archive/boost-1.86.0.tar.gz -> boostorg-typeof-boost-1.86.0.tar.gz…
https://github.com/boostorg/unordered/archive/boost-1.86.0.tar.gz -> boostorg-unordered-boost-1.86.0.tar.gz…
https://github.com/boostorg/utility/archive/boost-1.86.0.tar.gz -> boostorg-utility-boost-1.86.0.tar.gz…
https://github.com/madler/zlib/archive/v1.3.1.tar.gz -> madler-zlib-v1.3.1.tar.gz…
https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
https://mirror.msys2.org/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
https://mirror.selfnet.de/msys2/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst -> msys2-mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst…
https://mirror.selfnet.de/msys2/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst -> msys2-msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst…
https://mirror.yandex.ru/mirrors/msys2/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
https://mirror.yandex.ru/mirrors/msys2/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
https://mirrors.ustc.edu.cn/msys2/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
https://mirrors.ustc.edu.cn/msys2/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.2.0-1-any.pkg.tar.zst
https://repo.msys2.org/msys/x86_64/msys2-runtime-3.5.3-3-x86_64.pkg.tar.zst
https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz
https://www.mirrorservice.org/sites/sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz -> bzip2-1.0.8.tar.gz…

四、可能碰到的问题

vs2022编译前需要下载源代码依赖的三方库,可能会报下载载被x-block-origin。

vs2022 downloads are blocked by x-block-origin.

C:\Windows\System32\drivers\etc\hosts里最后添加:
140.82.114.4 github.com

151.101.1.6 github.global.ssl.fastly.net

151.101.65.6 github.global.ssl.fastly.net

151.101.129.6 github.global.ssl.fastly.net

151.101.193.6 github.global.ssl.fastly.net

14.82.114.4 assets-cdn.github.com

五、参考

1.​红警2的地图编辑器居然更新2.0了,还开源了
https://bbs.nga.cn/read.php?tid=39569282&page=e&rand=747

2.https://gitee.com/r77683962/CNC_TS_and_RA2_Mission_Editor

红警游戏地图里边有些感觉是类似3D的2D展示,源代码很有学习的价值。

感谢阅读。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/4090.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

封装Redis工具类

基于StringRedisTemplate封装一个缓存工具类,满足以下需求: 方法1:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间 方法2:将任意Java对象序列化为json并存储在string类型的key中,并且可以设置TTL过期时间,用于处理缓存击穿问题 方法3:根据指定的…

三电平空间矢量详解

0. 前言 空间矢量PWM控制策略是依据变流器空间电压切换来控制变流器的一种新颖思路的控制策略。最早由日本学者在20世纪80年代初针对交流电动机变频驱动而提出的,主要思路在于抛弃了原有的正弦波脉宽调制,而是采用逆变器空间电压的矢量以获得准圆形旋转磁场,从而在不高的开关…

Go 切片:用法和本质

要想更好的了解一个知识点,实战是最好的经历。 题目 我这里放一道题目: package mainimport "fmt"func SliceRise(s []int) {s append(s, 0)for i : range s {s[i]}fmt.Println(s) }func SlicePrint() {s1 : []int{1, 2}s2 : s1s2 append…

蓝桥杯备考:堆和priority queue(优先级队列)

堆的定义 heap堆是一种特殊的完全二叉树,对于树中的每个结点,如果该结点的权值大于等于孩子结点的权值,就称它为大根堆,小于等于就叫小根堆,如果是大根堆,每个子树也是符合大根堆的特征的,如果是…

快速搭建深度学习环境(Linux:miniconda+pytorch+jupyter notebook)

本文基于服务器端环境展开,使用的虚拟终端为Xshell。 miniconda miniconda是Anaconda的轻量版,仅包含Conda和Python,如果只做深度学习,可使用miniconda。 [注]:Anaconda、Conda与Miniconda Conda:创建和管…

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

和组合导航一样,也可以通过预积分 IMU 因子加上雷达残差来实现基于预积分和图优化的紧耦合 LIO 系统。一些现代的 Lidar SLAM 系统也采用了这种方式。相比滤波器方法来说,预积分因子可以更方便地整合到现有的优化框架中,从开发到实现都更为便…

微信消息群发(定时群发)-UI自动化产品(基于.Net平台+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) 关联源码及工具下载https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/lichao19897314/90096681https://download.csdn.net/download/…

ESP8266-01S、手机、STM32连接

1、ESP8266-01S的工作原理 1.1、AP和STA ESP8266-01S为WIFI的透传模块,主要模式如下图: 上节说到,我们需要用到AT固件进行局域网应用(ESP8266连接的STM32和手机进行连接)。 ESP8266为一个WiFi透传模块,和…

动手学大数据-3社区开源实践

目录 数据库概览: MaxComput: HAWQ: Hologres: TiDB: Spark: ClickHouse: Apache Calcite 概览 Calcite RBO HepPlanner 优化规则(Rule) 内置有100优化规则 …

WPS数据分析000004

目录 一、表格阅读技巧 冻结窗格 拆分窗口 新建窗口 阅读模式 护眼模式 二、表格打印技巧 打印预览 打印缩放 打印区域 打印标题 分页打印 打印位置 页眉页脚 逐份打印 三、表格保护技巧 锁定单元格 隐藏公式 文档权限 文件加密 一、表格阅读技巧 冻结窗…

【Android】蓝牙电话HFP连接源码分析

一、概述 在Android系统中,HF(Hands-Free Profile)客户端与AG(Audio Gateway)端之间的HFP(Hands-Free Profile)连接是蓝牙音频通信的重要组成部分。这一过程涉及多个层次和组件的协同工作&…

Redisson发布订阅学习

介绍 Redisson 的消息订阅功能遵循 Redis 的发布/订阅模式,该模式包括以下几个核心概念: 发布者(Publisher):发送消息到特定频道的客户端。在 Redis 中,这通过 PUBLISH 命令实现。 订阅者(Sub…

【Linux 重装】Ubuntu 启动盘 U盘无法被识别,如何处理?

背景 U盘烧录了 Ubuntu 系统作为启动盘,再次插入电脑后无法被识别 解决方案(Mac 适用) (1)查找 USB,(2)格式化(1)在 terminal 中通过 diskutil list 查看是…

【LLM-RL】DeepSeekMath强化对齐之GRPO算法

note 文章目录 note一、GRPOReference 一、GRPO 论文:DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models (https://arxiv.org/pdf/2402.03300)GRPO 在 DeepSeek V2 中采用了,GRPO 在训练过程…

Rust Actix Web 项目实战教程 mysql redis swagger:构建用户管理系统

Rust Actix Web 项目实战教程:构建用户管理系统 项目概述 本教程将指导你使用 Rust 和 Actix Web 构建一个完整的用户管理系统,包括数据库交互、Redis 缓存和 Swagger UI 文档。 技术栈 Rust 编程语言Actix Web 框架SQLx (MySQL 数据库)Redis 缓存Uto…

git系列之revert回滚

1. Git 使用cherry-pick“摘樱桃” step 1: 本地切到远程分支,对齐要对齐的base分支,举例子 localmap git pull git reset --hard localmap 对应的commit idstep 2: 执行cherry-pick命令 git cherry-pick abc123这样就会将远程…

Hadoop•用Web UI查看Hadoop状态词频统计

听说这里是目录哦 通过Web UI查看Hadoop运行状态🐇一、关闭防火墙二、在物理计算机添加集群的IP映射三、启动集群四、进入HDFS的Web UI 词频统计🦩1、准备文本数据2、在HDFS创建目录3、上传文件4、查看文件是否上传成功5、运行MapReduce程序6、查看MapRe…

国产编辑器EverEdit -重复行

1 重复行 1.1 应用场景 在代码或文本编辑过程中, 经常需要快速复制当前行,比如,给对象的多个属性进行赋值。传统的做法是:选中行-> 复制-> 插入新行-> 粘贴,该操作有4个步骤,非常繁琐。 那有没…

LabVIEW桥接传感器数据采集与校准程序

该程序设计用于采集来自桥接传感器的数据,执行必要的设置(如桥接配置、信号采集参数、时间与触发设置),并进行适当的标定和偏移校正,最终通过图表呈现采集到的数据信息。程序包括多个模块,用于配置通道、触…