Campfire is an in-progress game engine built using OpenGL and Vulkan. Most of the engine's features are currently disabled, as we work through switching to Vulkan, but are available on the OpenGL branch.
When creating issues or pull requests, please use the following labels to help organize and prioritize work:
平台標籤 (Platform):
platform: linux- Linux 相關問題platform: windows- Windows 相關問題platform: macos- macOS 相關問題platform: cross-platform- 跨平台問題
類型標籤 (Type):
type: bug- 錯誤報告type: enhancement- 功能請求type: documentation- 文檔改進type: question- 問題諮詢type: performance- 性能改進
組件標籤 (Component):
component: vulkan- Vulkan 渲染component: opengl- OpenGL 渲染component: editor- 編輯器層component: scripting- Lua 腳本系統component: physics- 物理系統component: particles- 粒子系統
優先級標籤 (Priority):
priority: critical- 緊急priority: high- 高優先級priority: medium- 中優先級priority: low- 低優先級
Vulkan SDK: 1.2.148.1
# 克隆包含所有 submodules
git clone --recursive https://github.com/danhuynh0803/Campfire
cd Campfire
# UNIX Makefile
cmake -B build
cmake --build build --config Release -j4
# Microsoft Windows
cmake -B Build -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE="" -DVCPKG_MANIFEST_MODE=OFF
cmake --build Build --config Release --parallel 4注意: 項目還提供了 vcpkg 配置文件(位於 vcpkg-config/ 目錄)作為替代的依賴管理方案,但目前暫未使用。詳情請參閱 vcpkg-config/README.md。
| Functionality | Library |
|---|---|
| Mesh Loading | assimp |
| Physics | bullet |
| OpenGL Function Loader | glad |
| Windowing and Input | glfw |
| OpenGL Mathematics | glm |
| Texture Loading | stb |
| Logging | spdlog |
| Scene Loading/Saving | json |
| GUI | imgui |
| Audio | FMOD |
| Scripting | Lua 5.4.0 |
| Entity Component System | entt |
| Profiling | tracy |
注意: 有關依賴庫的詳細配置和 C++20 升級路徑,請參閱 DEPENDENCIES.md。
- Particle Effect System: 實現 Color Over Lifetime、Size Over Lifetime、隨機顏色生成等功能
- Lua Scripting: 重構和擴展 LuaEntity(400+ 行),創建 LuaCamera,添加 Lua 全局變量 Inspector
- File System: 擴展跨平台文件系統 API,完善 Windows 文件系統文檔
- Asset Browser: 添加右鍵選單、雙擊瀏覽、編輯按鈕等功能增強
- Transform Widget: 實現撤銷/重做系統,與 Lua Transform 集成
- Vulkan Layer: 性能優化和 bug 修復,實現 shader 文件監視器
- Editor UI: 集成 Font Awesome 圖標,添加鍵盤快捷鍵,改進配色方案
詳細的提交參考信息請見文檔末尾。
以下貢獻已通過 git 提交歷史驗證:
- Color Over Lifetime: 添加粒子顏色隨時間變化功能(提交
e854862) - Size Over Lifetime: 實現粒子大小隨時間變化(提交
7d50936) - Random Spawn Color: 添加隨機生成顏色選項(提交
291b45f) - 基礎加速度選項(提交
5a43774) - 修復 Inspector bug(提交
7004b30)
- 重組和擴展 LuaEntity: 重構 LuaScript,添加 400+ 行代碼(提交
c3a7e26) - LuaCamera 組件: 創建新的 Lua 攝像機接口(提交
2e6b3ac) - Lua 全局變量 Inspector: 在 Inspector Widget 中添加 Lua 全局變量顯示(提交
91db8b1) - 嵌套 Lua 表支持: 為嵌套 Lua 表添加 ShowJsonObject 方法(提交
2e6b3ac)
- Windows FileSystem 文檔: 為 WindowsFileSystem.cpp 添加詳細註釋(提交
8941e37) - 跨平台文件系統擴展: 擴展 FileSystem API 以支持 AssetBrowser 功能(提交
3475b07)
- 右鍵選單: 為資產瀏覽器添加右鍵上下文選單(提交
3475b07- 96 行變更) - 雙擊瀏覽: 實現雙擊打開資產功能(提交
5039c4a) - 編輯按鈕: 為腳本資產添加編輯按鈕(提交
55a1746)
- 完整的撤銷/重做: 實現 TransformWidget 的撤銷/重做系統(提交
40ef4b3) - Lua Transform 集成: 將 TransformComponent 與 LuaEntity 連接(提交
56e36e2) - 代碼文檔: 添加詳細註釋(提交
fc42dbf)
- 性能優化: 移除不必要的
graphicsQueue.waitIdle()調用(提交ec441d1) - 圖像佈局修復: 修復 VulkanSwapChain 中的圖像佈局轉換(提交
8819c68,edbe0c6) - Shader 文件監視器: 實現 Vulkan shader 的臨時文件監視器(提交
bb55ea1)
- Font Awesome 集成: 添加 Font Awesome 5 圖標字體支持(提交
23661b5,ef54aa7) - 快捷鍵: 為命令管理器添加撤銷/重做鍵盤快捷鍵(提交
18d9b6f) - UI 改進: 改進 Hierarchy 和 Inspector widget 的配色方案(提交
3154280,5d27c45)
- CMake 升級: 將 CMAKE_CXX_STANDARD 設置為 C++20(提交
8bbd3e4) - 現代線程: 將
std::thread切換到 C++20jthread(提交ea5eafb) - Windows 信息: 添加邏輯處理器信息顯示(提交
52f1ea4)
注意: 早期版本中聲稱「實現」或「創建」整個 Editor Layer、Hierarchy Widget、Inspector Widget 等是不準確的。實際貢獻主要是功能增強、bug 修復和特定功能添加,而非這些系統的初始實現。
[警告] 以下內容由 AI 自動生成,並非項目官方文檔的一部分。這些內容可能包含不準確或過時的信息,僅供參考。
要在 Linux 上進行 C++ 編程,您需要安裝編譯器、設置開發環境,並熟悉基本的編譯和調試過程。以下是詳細步驟:
- 安裝編譯器: 大多數 Linux 發行版默認包含 GNU 編譯器集合 (GCC)。您可以通過以下命令檢查是否已安裝:
gcc -v如果未安裝,請使用以下命令進行安裝:
- Debian/Ubuntu:
sudo apt-get update
sudo apt-get install build-essential gdb- Red Hat/Fedora:
sudo dnf group install "Development Tools"這些命令將安裝 GCC 編譯器和 GDB 調試器。
- 編寫 C++ 程序:
使用您喜歡的文本編輯器(如 Vim、Nano 或 Visual Studio Code)創建一個新的 C++ 源文件。例如,使用 Nano 創建一個名為
hello.cpp的文件:
nano hello.cpp在文件中輸入以下代碼:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}保存並關閉編輯器。
- 編譯程序:
在終端中,導航到包含
hello.cpp的目錄,並使用以下命令編譯:
g++ -o hello hello.cpp此命令使用 g++ 編譯器將源代碼編譯為名為 hello 的可執行文件。
- 運行程序: 編譯成功後,使用以下命令運行程序:
./hello您應會在終端中看到輸出:Hello, World!。
-
使用集成開發環境 (IDE): 雖然命令行工具功能強大,但使用 IDE 可以提高開發效率。Visual Studio Code 是一個流行的選擇。您可以通過以下步驟在 Linux 上設置 Visual Studio Code 進行 C++ 開發:
-
安裝 Visual Studio Code: 從 Visual Studio Code 官方網站 下載適用於您發行版的安裝包,並按照指示進行安裝。
-
安裝 C++ 擴展: 啟動 Visual Studio Code,點擊左側的擴展圖標(或按
Ctrl+Shift+X),搜索C++,然後安裝由 Microsoft 提供的 C/C++ 擴展。 -
配置編譯和調試環境: 按照 Visual Studio Code 的官方文檔 中的指南,設置
tasks.json和launch.json以配置編譯和調試任務。
-
-
調試程序: 使用 GDB 調試器,您可以在終端中運行以下命令啟動調試:
gdb ./hello在 GDB 提示符下,輸入 run 運行程序,使用 break 設置斷點,使用 step 或 next 單步執行代碼。
通過以上步驟,您可以在 Linux 上成功進行 C++ 開發。隨著經驗的積累,您可以探索更多高級工具和庫,以提高開發效率和代碼質量。
參考資料:
- Using C++ on Linux in VS Code
- How To Compile And Run a C/C++ Code In Linux - GeeksforGeeks
- Writing and Compiling C++ on Linux [A How-To Guide] - HackerNoon
AI 生成時間:2025年2月18日,20:02:10
以下是 Microsoft Visual C++ (MSVC) 編譯器的常用命令行選項參考:
-
基本命令:
cl <source_file>: 編譯源文件cl /Fe<output_file> <source_file>: 編譯並指定輸出文件名cl /c <source_file>: 僅編譯不鏈接
-
輸出文件:
/Fe<file>: 命名可執行文件/Fo<file>: 命名對象文件/Fd<file>: 命名程序數據庫 (PDB) 文件
-
調試:
/Zi: 在 PDB 文件中啟用調試信息/Z7: 在對象文件中啟用調試信息/DEBUG: 在可執行文件中包含調試信息
-
優化:
/O1: 優化大小/O2: 優化速度/Ox: 完全優化/Ob<n>: 內聯函數擴展 (n = 0, 1, 2)/Ot: 偏向快速代碼
-
預處理器:
/D<name>: 定義宏/U<name>: 取消定義宏/I<dir>: 添加目錄到包含搜索路徑/P: 預處理到文件(不編譯)
-
鏈接:
/link: 傳遞選項給鏈接器/LIBPATH:<dir>: 添加目錄到庫搜索路徑/NODEFAULTLIB: 忽略默認庫/OUT:<file>: 指定輸出文件名/SUBSYSTEM:<subsystem>: 指定子系統 (CONSOLE, WINDOWS)
-
警告:
/W<n>: 設置警告級別 (0-4)/WX: 將警告視為錯誤/wd<n>: 禁用特定警告/Wall: 啟用所有警告/we<n>: 將特定警告視為錯誤
-
代碼生成:
/EHsc: 啟用標準 C++ 異常處理/GR: 啟用運行時類型信息 (RTTI)/MD: 鏈接 MSVC 運行時庫 (DLL)/MT: 鏈接 MSVC 運行時庫 (靜態)/openmp: 啟用 OpenMP 支持/arch:<type>: 指定架構 (SSE, SSE2)
-
運行時檢查:
/RTC1: 啟用運行時錯誤檢查/RTCs: 啟用堆棧幀運行時錯誤檢查/RTCu: 啟用未初始化變量運行時錯誤檢查
-
其他:
/nologo: 抑制啟動橫幅/MP: 啟用多處理器編譯/analyze: 啟用代碼分析/FS: 強制同步 PDB 寫入/showIncludes: 顯示包含文件路徑
-
鏈接器選項:
/DLL: 創建 DLL/INCREMENTAL: 啟用增量鏈接/LTCG: 啟用鏈接時代碼生成/MAP: 生成映射文件/NOLOGO: 抑制鏈接器啟動橫幅/OPT:<option>: 鏈接器優化 (REF, ICF)/PDB:<file>: 指定 PDB 文件名/RELEASE: 在可執行文件頭中設置校驗和
-
環境變量:
INCLUDE: 包含文件的目錄LIB: 庫文件的目錄PATH: 可執行文件的目錄
使用 cl /? 或 link /? 命令獲取每個選項的更詳細信息。
AI 生成內容,可能不完整或過時


