中 華 大 學 資 訊 工 程 學 系 100 學 年 度 專 題 製 作 期 末 報 告 3D 遊 戲 電 玩 設 計 專 題 編 號 :PRJ2011-CSIE-10001 指 導 教 授 : 連 振 昌 老 師 專 題 組 員 : B09702024 張 辰 豪 B09702107 姜 伯 樺 B09702074 杜 逸 文 中 華 民 國 100 年 3 月 10 日 1
目 錄 一 專 題 計 畫 摘 要 3 二 背 景 及 目 的 4 1. 背 景 4 2. 目 的 4 3. 預 期 成 效 5 三 專 題 進 行 方 式 5 1. 人 員 配 置 5 2. 專 題 的 進 行 方 式 : 5 3. 時 程 規 畫 : 6 4. 主 要 困 難 與 解 決 之 道 : 7 5 實 做 平 台 : 12 四 專 題 主 要 成 果 13 五 評 估 與 展 望 16 六 結 語 16 七 銘 謝 17 八 工 具 與 製 作 平 台 : 17 九 參 考 文 獻 : 17 2
一 專 題 計 畫 摘 要 在 現 在 科 技 發 達 的 時 代, 平 板 電 腦 跟 智 慧 型 手 機 瘋 狂 量 產, 就 連 遊 戲 也 不 再 限 制 於 平 台 來 玩 樂, 連 3D 大 作 魔 物 獵 人 都 可 以 在 我 們 人 手 一 隻 的 智 慧 型 手 機 上 呈 現, 讓 我 們 了 解 到 3D 即 將 取 代 2D, 所 以 我 們 決 定 使 用 我 們 在 軟 體 工 程 上 面 所 學 習 到 的 方 法, 製 作 一 款 3D 立 體 的 象 棋 遊 戲, 使 用 Micorsoft C# XNA 3.0 來 執 行, 我 們 歷 屆 也 有 學 長 使 用 這 套 軟 體 來 寫 遊 戲, 而 這 套 軟 體 從 以 前 的 1.0 2.0 到 現 在 的 3.0 已 經 越 來 越 完 善, 而 我 們 希 望 可 以 用 這 套 軟 體 來 負 責 程 式 的 撰 寫, 當 然 3D 遊 戲 最 重 要 的 模 型, 我 們 一 開 始 也 蒐 集 了 好 幾 套 相 關 軟 體 的 系 統, 看 看 對 於 我 們 來 講 哪 套 比 較 適 合 我 們 這 種 沒 有 美 術 建 模 基 礎 的 人, 最 後 我 們 在 馬 亞 與 3D Max 之 間 我 們 決 定 使 用 Autodesk 3DS Max 2009, 來 幫 助 我 們 完 成 我 們 所 需 要 的 模 型 建 設, 這 也 是 因 為 Autodesk 3DS Max 2009 的 介 面 易 於 初 學 者 來 使 用, 建 模 的 當 中 我 們 也 實 際 的 了 解 到 3DS Max 這 款 建 模 的 缺 點, 希 望 有 機 會 我 可 以 再 度 學 習 另 一 款 模 型 製 作 馬 亞 這 是 我 們 除 了 軟 體 工 程 課 程 以 外 第 一 次 來 完 成 一 個 東 西, 包 誇 我 們 發 現 XNA 所 使 用 的 語 言 C# 也 是 我 們 從 來 沒 有 學 過 的 語 言, 雖 然 C 語 言 系 列 的 模 式 都 差 不 了 多 少, 不 過 還 是 需 要 我 們 去 一 步 一 步 學 習, 這 也 是 我 們 所 要 突 破 的 困 難 點 3
二 背 景 及 目 的 1. 背 景 在 現 在 科 技 發 達 的 時 代, 就 連 遊 戲 也 不 例 外, 我 們 從 早 期 的 2D 任 天 堂 遊 戲 到 電 腦 2D, 直 到 現 在 3D 遊 戲 整 個 普 及 化, 最 讓 人 印 象 深 刻 的 應 該 就 是 線 上 遊 戲 魔 獸 世 界 (WOW), 而 現 在 IPHONE 跟 HTC 觸 碰 式 手 機 數 量 爆 炸 的 年 代, 連 手 機 遊 戲 都 以 一 個 讓 人 嘆 為 觀 止 的 速 度 成 長, 從 平 面 單 調 的 貪 食 蛇 進 化 到 原 本 只 能 在 PS2 等 等 電 玩 遊 戲 大 型 機 台 上 看 見 的 3D 大 作 魔 物 獵 人 居 然 都 可 以 在 手 機 上 呈 現 了, 真 是 讓 人 感 覺 到 不 可 思 議 在 這 些 實 例 的 面 前 我 們 深 深 感 覺 到 2D 已 經 慢 慢 被 時 代 給 淘 汰, 逐 漸 被 3D 給 取 代, 也 讓 我 們 這 次 的 專 題 主 題 決 定 去 試 著 製 作 一 款 3D 遊 戲, 讓 我 們 可 以 盡 可 能 的 了 解 一 款 3D 遊 戲 他 的 基 本 製 作 條 件 究 竟 需 要 哪 些 東 西, 這 也 是 我 們 第 一 次 以 一 個 團 隊 的 方 式 去 試 著 製 作 一 個 Project 2. 目 的 我 們 希 望 透 過 這 次 的 專 題 製 作, 來 了 解 3D 的 魅 力 究 竟 為 何!? 也 透 過 這 次 的 專 題 製 作, 我 們 要 了 解 如 何 從 0% 的 程 度 開 始 製 作 一 款 遊 戲, 包 誇 遊 戲 的 軟 體 語 言 要 用 甚 麼 來 寫, 還 有 3d 遊 戲 不 外 乎 就 是 立 體 模 型, 市 面 上 的 模 型 製 作 軟 體 鈴 瑯 滿 目, 也 是 我 們 挑 選 的 重 要 項 目 之 一 4
3. 預 期 成 效 我 們 預 計 做 出 一 款 3D 的 小 品 遊 戲, 而 3D 遊 戲 的 類 型 多 到 不 可 思 議, 從 大 富 翁 種 類 的 遊 戲 一 直 到 RPG 都 有, 而 我 們 決 定 採 用 中 國 歷 久 不 衰 的 傳 統 遊 戲 象 棋, 我 們 如 何 把 平 面 的 象 棋 遊 戲 給 整 個 實 體 化, 變 成 了 我 們 這 次 專 題 的 重 點 之 一 三 專 題 進 行 方 式 1. 人 員 配 置 首 先 我 們 的 小 組 為 三 人 所 組 成 分 工 如 下 杜 逸 文 : 負 責 2D 美 工 圖 片 部 分, 模 型 製 作 張 辰 豪 : 程 式 撰 寫, 模 型 製 作 姜 伯 樺 : 程 式 撰 寫, 模 型 製 作 2. 專 題 的 進 行 方 式 : 進 行 方 式 是 由 每 個 禮 拜 兩 次 的 小 組 固 定 會 議 來 共 同 製 作, 每 次 開 會 討 論 各 自 平 時 的 專 題 製 作 進 度, 之 後 將 大 家 的 進 度 做 一 個 統 合, 接 這 再 繼 續 討 論 接 下 來 的 進 度 和 各 自 所 遇 到 的 問 題, 然 後 共 同 解 決, 最 後 在 一 同 商 討 下 一 次 所 需 要 的 進 度 5
3. 時 程 規 畫 : 以 下 這 一 張 圖 是 我 們 的 時 程 表 2 月 3 月 4 月 5 月 6 月 7 月 8 月 9 月 10 月 11 月 12 月 1 月 題 目 選 定 資 料 蒐 集 文 獻 閱 讀 XNA 程 式 語 言 練 習 3ds max 練 習 擬 定 專 題 雛 形 及 設 計 XNA 程 式 撰 寫 3DS MAX 建 模 與 製 作 程 式 整 合 及 補 強 修 正 報 告 撰 寫 6
4. 主 要 困 難 與 解 決 之 道 : 在 專 題 製 作 中 期 我 們 有 將 開 會 的 進 度 與 遇 到 困 難 記 錄 下 來, 以 下 是 我 們 在 開 會 中 所 遇 到 的 狀 況 日 期 :2011/09/16 * 問 題 - 滑 鼠 射 線 已 經 可 以 正 確 的 感 應 到, 棋 子 的 世 界 轉 換 矩 陣 所 製 造 的 球 體 範 圍, 但 是 棋 子 的 世 界 轉 換 矩 陣 所 製 造 的 球 體 範 圍, 和 實 際 看 到 的 棋 子 模 型 並 不 相 符, 因 此 就 算 功 能 已 經 實 現, 卻 和 原 本 所 預 計 的 期 望 不 一 樣 * 改 進 方 法 - 應 該 要 從 3D MAX 去 把 模 型 的 座 標, 更 正 成 和 XNA 的 座 標 方 向 一 樣, 才 能 解 決 此 問 題 * 結 論 - 完 成 功 能, 問 題 原 因 是 模 型 出 錯 日 期 :2011/09/25 *3D MAXS 匯 出 的 模 組 放 進 XNA 裡, 改 變 其 X Y Z 值 是 遵 照 3D MAXS 方 向 軸 * 選 取 棋 子 : 前 提 是 把 棋 盤 上 的 每 一 個 3D 點 直 接 對 應 到 滑 鼠 2D 的 畫 面 中 的 一 個 點, 當 滑 鼠 按 下 左 鍵 之 後, 就 把 2D 點 傳 回 去 找 對 應 到 的 點 2DA -> 2DB 3DB -> 3DA 7
日 期 :2011/09/28 * 已 經 解 決 了 之 前 的 方 向 軸 的 問 題, 現 在 已 經 成 功 的 將 坐 標 軸 對 著 X 轉 了 負 90 度, 現 在 可 以 精 準 的 判 斷 到 滑 鼠 所 製 作 的 射 線 (RAY) 是 否 有 和 我 們 對 物 體 做 的 邊 界 求 有 所 交 集 * 下 一 步 : 把 每 一 個 棋 子 都 套 上 邊 界 球, 去 判 斷 滑 鼠 射 線 是 否 有 和 邊 界 有 交 集, 並 且 在 所 有 攝 影 機 裡 面 都 能 完 成 此 功 能 * 使 用 方 法 : 要 先 把 PickChess 裡 面 的 邊 界 球 的 實 作 和 滑 鼠 射 線 的 實 作 分 開, 因 為 滑 鼠 射 線 只 有 一 條 但 是 邊 界 球 要 有 很 多 個 8
日 期 :2011/10/2 * 完 成 類 別 表 * 把 3D 點 的 對 照 2D 點 的 座 標 標 完 * 把 滑 鼠 射 線 跟 邊 界 求 分 成 不 同 的 類 別 * 滑 鼠 2D 座 標 顯 示 * 下 次 進 度 : 幫 每 個 棋 子 套 上 邊 界 球 日 期 :2011/10/21 * 使 用 棋 子 位 置 高 度 提 升 來 使 用 棋 子,( 以 車 為 第 一 顆 棋 子 按 下 方 向 鍵 右, 切 換 到 下 一 顆 棋 子, 按 下 方 向 鍵 左, 切 換 到 上 一 顆 棋 子, 順 序 為 車 車 馬 馬 象 象 士 士 將 卒 包, 當 標 記 到 最 後 一 顆 棋 子 的 時 候, 返 回 第 一 顆 * 按 下 ENTER 之 後, 可 以 移 動 該 選 取 的 棋 子, 或 者 按 下 ESC 後, 重 回 步 驟 上 一 步 驟 日 期 :2011/10/26 * 按 下 左 鍵 判 斷 如 下 * 判 斷 滑 鼠 的 左 鍵 狀 態 mousestate( 有 0 1 兩 種 狀 態 )mousestate=0 為 沒 有 按 下 過 左 鍵, 把 mousestate+1 之 後 判 斷 滑 鼠 的 範 圍, 再 來 判 斷 範 圍 內 的 狀 態 ( 為 格 點 狀 態 ),gridstate( 格 點 狀 態 有 0 1 2), 0 選 取 的 地 方 ( 沒 有 棋 子 mousestate+1),1 選 起 到 黑 騎 ( 升 起 該 棋 子 9
mousestate 保 持 在 1),2 選 起 到 黑 騎 ( 升 起 該 棋 子 mousestate 保 持 在 1) *mousestate=1 為 按 下 左 鍵 後 mousestate-1, 判 斷 滑 鼠 的 範 圍, 判 斷 範 圍 內 gridstate 的 狀 態 ( 格 點 狀 態 有 0 移 動 1 黑 棋 2 紅 棋 ) 日 期 :2011/10/30 * 做 完 用 滑 鼠 射 線 選 擇 棋 子, 也 做 完 全 部 的 棋 盤 點 的 起 始 建 置 日 期 :2011/11/04 * 當 移 動 的 時 候 移 過 去 的 棋 子, 會 無 法 降 下 來 因 為 按 左 鍵 的 判 斷 和 DREW 裡 面 的 判 斷 互 相 衝 突 到 了 * 移 動 棋 子 時, 滑 鼠 最 後 碰 觸 到 的 棋 子, 會 以 它 做 移 動, 而 不 是 以 飛 起 來 的 那 顆 棋 子 作 移 動 10
日 期 :2011/11/09 * 完 成 了 紅 棋 和 黑 棋 的 轉 換, 再 來 步 驟 在 畫 面 是 作 紅 黑 和 F1 方 框, 做 完 再 作 吃 子 日 期 :2011/11/11 * 今 天 完 成 了 黑 方 F1 說 明 紅 方 的 圖, 也 完 成 了 黑 紅 切 換,F1 說 明 的 畫 面 也 製 作 完 成 ( 還 差 說 明 畫 面 的 按 鍵 選 項 沒 完 成 ) 日 期 :2011/11/13 * 能 做 好 吃 子 和 吃 子 後 棋 子 放 在 哪 日 期 :2011/11/13 * 發 現 BUG * 按 右 鍵 會 一 直 換 紅 黑 方 ( 已 處 理 ) * 期 子 在 棋 盤 外 面 也 會 點 到 ( 已 處 理 ) * 當 選 擇 到 期 子 之 後 可 以 一 直 連 續 的 移 動 它 ( 未 處 理 ) 日 期 :2011/11/23 * 已 經 處 理 好 棋 盤 每 一 個 點 位 的 狀 態 變 化 (0 代 表 沒 子,1 代 表 黑 子,2 代 表 紅 子 ), 把 棋 子 被 吃 掉 之 後 要 放 的 位 置 點 都 建 置 好 了,11/13 的 第 3 個 BUG 並 無 大 礙 不 用 處 理 日 期 :2011/11/26 * 吃 子 完 成 11
日 期 :2011/11/27 * 開 始 圖 和 幫 助 途 還 有 F1 圖 都 已 改 善, 大 致 上 可 以 正 常 玩 了 5 實 做 平 台 : 程 式 方 面 是 使 用 Microsoft C# XNA3.0 去 做 程 式 的 撰 寫 模 型 方 面 是 使 用 3Ds MAX 9 去 建 模 12
四 專 題 主 要 成 果 在 我 們 的 遊 戲 中 一 開 始 的 畫 面 中 提 供 了 開 始 遊 戲 幫 助 和 離 開 遊 戲 的 三 個 選 項 幫 助 這 一 個 選 項 中 提 供 了 遊 戲 的 進 行 方 式 和 流 程, 可 以 讓 玩 家 在 一 開 始 就 了 解 此 遊 戲 的 進 行 方 式 和 內 容, 如 下 圖 所 示 13
按 下 開 始 遊 戲 之 後, 就 會 出 現 下 棋 的 畫 面, 遊 戲 的 設 定 都 是 由 黑 方 先 動 作, 如 下 圖 所 示 移 動 時 會 有 小 圖 示 提 醒 玩 家 現 在 是 換 到 哪 一 方 下 棋 14
在 遊 戲 的 進 行 中 玩 家 可 以 將 遊 戲 的 畫 面 切 換 到 轉 動 棋 盤 的 模 式, 在 這 一 個 模 式 之 中, 可 以 任 意 的 旋 轉 棋 盤 到 玩 家 想 看 到 的 視 野, 讓 玩 家 能 夠 360 度 的 去 觀 賞 棋 盤 戰 局 : 當 遊 戲 的 將 和 帥 的 任 一 方 被 吃 掉, 遊 戲 會 顯 是 勝 利 畫 面 此 時 遊 戲 宣 告 結 束 15
五 評 估 與 展 望 這 一 次 我 們 實 際 做 出 來 的 遊 戲, 和 我 們 在 期 初 中 所 預 期 的 差 了 一 點 點, 當 初 的 期 望 是 要 讓 每 一 個 棋 子 都 擁 有 他 們 各 自 的 立 體 模 型 ( 例 如 車 就 會 看 起 來 真 的 像 一 台 車 子 ), 而 現 在 的 進 度 則 是 進 行 到 每 一 個 棋 子 有 獨 自 的 象 棋 棋 子 的 樣 子, 有 一 點 美 中 不 足 未 來 這 一 個 遊 戲 的 擴 充 能 夠 將 每 一 個 棋 子 的 模 組 分 別 具 體 化 現 實 化, 甚 至 多 擴 充 一 些 模 組 出 來 讓 玩 家 能 夠 自 行 選 擇 所 中 意 的 模 組, 也 可 以 發 展 成 線 上 雙 人 對 弈 模 式, 讓 遊 戲 更 加 的 豐 富 有 趣 六 結 語 在 這 近 一 年 的 時 間 內 我 們 從 無 到 有 製 作 了 一 個 遊 戲, 一 起 去 借 書 一 起 討 論, 從 頭 學 習 一 個 語 言 和 一 個 軟 體, 這 樣 的 經 驗 讓 我 們 成 長 了 許 多, 最 重 要 的 就 是 學 習 到 如 何 把 每 個 人 不 同 的 意 見 統 合 起 來 也 學 習 到 了 真 的 團 隊 合 作 的 去 做 出 一 個 軟 體, 我 們 真 的 很 開 心 能 夠 有 這 個 機 會 做 專 題, 讓 我 們 成 長 許 多 16
七 銘 謝 感 謝 圖 書 館 有 這 麼 多 工 具 書 可 以 借 來 看 感 謝 余 冠 霖 學 長 的 鼎 力 相 助 感 謝 專 題 組 員 一 年 來 的 努 力 與 配 合 感 謝 連 振 昌 老 師 的 督 促 與 指 導 八 工 具 與 製 作 平 台 : 軟 體 : Micorsoft C# XNA 3.0 Autodesk 3DS Max 2009 工 具 : 個 人 電 腦 九 參 考 文 獻 : 參 考 書 籍 : [1] 2D/3D 遊 戲 程 式 設 計 入 門 使 用 XNA 3.0 與 C# 何 振 揚,2009, 文 魁 出 版 [2] 3ds Max 2009 完 全 學 習 手 冊 尖 峰 科 技 張 敏 捷,2009, 佳 魁 資 訊 17
[3] 3ds Max 2009 動 靜 之 美 ( 基 礎 建 模 材 質 光 影 與 動 畫 ) 黃 義 淳,2008, 碁 峰 出 版 [4] XNA 3.0 實 戰 手 冊 Aaron Reed 著 2009 悅 知 出 版 18