【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.mzph.cn/web/66385.shtml

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

相关文章

SSM课设-酒店管理系统功能设计

【课设者】SSM课设-酒店管理系统 分为用户端管理员端 技术栈: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用户端主要功能包括: 登录注册 客房预订 客房评论 首页 管理员端主要功能包括: 会员信息管理 客房信息…

游戏引擎学习第80天

Blackboard:增强碰撞循环,循环遍历两种类型的 t 值 计划对现有的碰撞检测循环进行修改,以便实现一些新的功能。具体来说,是希望处理在游戏中定义可行走区域和地面的一些实体。尽管这是一个2D游戏,目标是构建一些更丰富…

cuda从零开始手搓PB神经网络

cuda实现PB神经网络 基于上一篇的矩阵点乘,实现了矩阵的加减乘除、函数调用等。并且复用之前元编程里面写的梯度下降、Adam、NAdam优化方法。实现PB神经网络如下: #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…

我的世界-与门、或门、非门等基本门电路实现

一、红石比较器 (1) 红石比较器结构 红石比较器有前端单火把、后端双火把以及两个侧端 其中后端和侧端是输入信号,前端是输出信号 (2) 红石比较器的两种模式 比较模式 前端火把未点亮时处于比较模式 侧端>后端 → 0 当任一侧端强度大于后端强度时,输出…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…

打破编程“鄙视链”:探索行业发展新路径

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 打破…

【统计的思想】假设检验(一)

假设检验是统计学里的重要方法,同时也是一种“在理想与现实之间观察求索”的测试活动。假设检验从概率的角度去考察理想与现实之间的关系,籍此来缓解测试可信性问题。 我们先来看一个例子。民航旅客服务系统,简称PSS系统,有一种业…

SpringBoot2 + Flowable(UI)

文章目录 引言I 技术栈软件架构基于 Vue.js 和 Element UI 的后台管理系统工程结构II 依赖rest,logic,conf 的依赖工作流flowable jar包flowable-ui所需jar包III 配置jdbc 配置 nullCatalogMeansCurrent = true引言 I 技术栈 软件架构 前端基于vue 、element-ui框架分模块设…

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim (因为不支持鼠标,通常 使用键盘上的箭…

基于海思soc的智能产品开发(高、中、低soc、以及和fpga的搭配)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 市场上关于图像、音频的soc其实非常多,这里面有高、中、低档,开发方式也不相同。之所以会这样,有价格的因素&am…

51单片机——DS18B20温度传感器

由于DS18B20数字温度传感器是单总线接口,所以需要使用51单片机的一个IO口模拟单总线时序与DS18B20通信,将检测的环境温度读取出来 1、DS18B20模块电路 传感器接口的单总线管脚接至单片机P3.7IO口上 2、DS18B20介绍 2.1 DS18B20外观实物图 管脚1为GN…

STL容器-- list的模拟实现(附源码)

STL容器-- list的模拟实现(附源码) List的实现主要时考察我们对list这一容器的理解,和代码的编写能力,通过上节对list容器的使用,我们对list容器已经有了一些基本的了解,接下来就让我们来实现一些list容器常…

Lynx TiDB 慢日志收集工具

作者: 小龙虾爱大龙虾 原文来源: https://tidb.net/blog/7247e68f 简介 lynx 工具可以定时将 TiDB 集群的慢查询收集并持久化到后端数据库中,然后通过 grafana 查询展示出来,这可以帮助我们更好的分析慢查询日志。 背景 尽管…

Gin 源码概览 - 路由

本文基于gin 1.1 源码解读 https://github.com/gin-gonic/gin/archive/refs/tags/v1.1.zip 1. 注册路由 我们先来看一段gin代码,来看看最终得到的一颗路由树长啥样 func TestGinDocExp(t *testing.T) {engine : gin.Default()engine.GET("/api/user", f…

【逆境中绽放:万字回顾2024我在挑战中突破自我】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…

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

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

中职网络建设与运维ansible服务

ansible服务 填写hosts指定主机范围和控制节点后创建一个脚本,可以利用简化脚本 1. 在linux1上安装系统自带的ansible-core,作为ansible控制节点,linux2-linux7作为ansible的受控节点 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…

数据库服务体系结构

1. 数据库服务应用配置 服务进行配置有什么作用? 实现服务运行启动 实现某些功能 应用配置有三种方式? 利用编译安装进行配置 编写配置文件信息 ,.默认的配置文件: /etc/my.cnf 利用启动命令参数配置信息,mysqld_safe --skip-grant-tables --…

Langchain+FastApi+Vue前后端Ai对话(超详细)

一、引入 首先可以先看下作者的文章 FastApi相关文章:创建最简单FastApi的项目Vue相关文章:最简单的aixos二次封装Langchain相关文章:如何使用LangSmith跟踪deepseek模型 二、后端搭建 1 项目文件结构 routers:存放api接口se…

简历_使用优化的Redis自增ID策略生成分布式环境下全局唯一ID,用于用户上传数据的命名以及多种ID的生成

系列博客目录 文章目录 系列博客目录WhyRedis自增ID策略 Why 我们需要设置全局唯一ID。原因:当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题。 问题:id的规律性太明显、…