【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.pswp.cn/web/66385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66385.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SSM課設-酒店管理系統功能設計

【課設者】SSM課設-酒店管理系統 分為用戶端管理員端 技術棧: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用戶端主要功能包括: 登錄注冊 客房預訂 客房評論 首頁 管理員端主要功能包括: 會員信息管理 客房信息…

Redis 數據存儲類型

Redis 支持多種類型的數據存儲,每種類型都可以用于不同的場景和需求。下面是 Redis 支持的主要數據存儲類型: 1. String(字符串) 類型簡介:字符串是 Redis 中最簡單的數據類型,可以包含任何數據&#xff…

游戲引擎學習第80天

Blackboard:增強碰撞循環,循環遍歷兩種類型的 t 值 計劃對現有的碰撞檢測循環進行修改,以便實現一些新的功能。具體來說,是希望處理在游戲中定義可行走區域和地面的一些實體。盡管這是一個2D游戲,目標是構建一些更豐富…

cuda從零開始手搓PB神經網絡

cuda實現PB神經網絡 基于上一篇的矩陣點乘,實現了矩陣的加減乘除、函數調用等。并且復用之前元編程里面寫的梯度下降、Adam、NAdam優化方法。實現PB神經網絡如下: #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…

Next.js 實戰 (八):使用 Lodash 打包構建產生的“坑”?

前言 最近一直在折騰 Nextjs15 ,也在斷斷續續地寫《Next.js15 實戰系列》的文章,后來總感覺文章如果沒有線上效果預覽差點意思,所以就想著先把目前做的項目先部署上線,后續再慢慢添加新功能。 因為之前沒有部署過 Nextjs15 工程…

我的世界-與門、或門、非門等基本門電路實現

一、紅石比較器 (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容器常…

Redis 學習指南與資料分享

Redis學習資料 Redis學習資料 Redis學習資料 Redis 作為一款高性能內存數據庫,在當今軟件開發領域占據著重要地位。其豐富的數據類型、強大的功能特性以及廣泛的應用場景,吸引著眾多開發者深入學習。以下為你精心整理的 Redis 學習指南與實用資料分享&…

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…

docker 基礎語法學習,K8s基礎語法學習,零基礎學習

下面是關于Docker和Kubernetes的基礎語法學習資料,包括一些關鍵概念和示例代碼。 Docker 基礎語法 1. 安裝 Docker 首先,你需要安裝 Docker。以下是不同操作系統上的安裝指南: Windows/Mac: 下載并安裝 Docker Desktop。 Linux: 根據你的…

【逆境中綻放:萬字回顧2024我在挑戰中突破自我】

🌈個人主頁: Aileen_0v0 🔥熱門專欄: 華為鴻蒙系統學習|計算機網絡|數據結構與算法 ?💫個人格言:“沒有羅馬,那就自己創造羅馬~” 文章目錄 一、引言二、個人成長與盤點情感與心理成長學習與技能提升其它榮譽 三、年度創作歷程回顧創作內容概…

職場溝通與行為

職場溝通與行為 引言 在職場上,你是否曾遇到過困惑的溝通?是否對同事的行為有過疑慮?這不僅是個別現象,而是我們這個時代工作文化中的普遍問題。許多職場的摩擦,來自溝通不暢或是行為不當。那么,如何才能…