大家好~這裡是鐵匠史密斯!(Bro fist!)
經過了這 30 天,我們從一開始什麼都沒有,只靠一個 wstring map
,到現在能讓角色在迷宮中「走動、轉身、看到牆壁與地板」,一步一步搭建出屬於我們的 Console FPS 小世界。
今天的文章,不會有新程式碼,我想帶大家 回顧整個系列的脈絡,以及 下一步的方向。
wchar_t* screen
畫布wstring map
地圖(fPlayerX, fPlayerY)
fPlayerA
、AoV
)screen
與 map
的對應Day 17 ~ 29:
Q
、E
旋轉視角W
、S
前進後退#
、x
、.
、-
)A
、D
橫移 以及 旋轉矩陣一個「迷宮探索」Console 遊戲雛形完成!
其實,javidx9大神在後面還有實作一個目前我還沒釐清的部分,叫做
Corner Detection,顧名思義,就是檢測牆壁在轉角處時要用線條點綴,增加3D的立體感,像是這樣:
多加了線條,使牆面更有立體感。
但是,要記得,我們是以wstring map
,也就是擴充字元 #
來表示牆,所以,只有點的概念。
既然只有點,但是要怎麼要像其他遊戲一下呈現面的概念呢?
這就是我接下來要下功夫的事情了XD,還需要透過一些原理才可以參透 javidx9 大神的思路~
這 30 天真的不容易,每天都要輸出一篇文章,還要推導公式、畫圖、寫程式、驗證,再把腦中混亂的想法整理成條理。
過程中我犯過錯、也推翻過之前的假設,但那正是 學習的樂趣 —— 不斷修正,才能更靠近真實。
最棒的是,當初在大學讀光學時,完全沒想到有一天能把「針孔成像」的理論,拿來解釋 FPS 遊戲的牆壁高度公式,這種跨領域的連結,對我來說特別有趣。
30 天走完,心中真的只有一句話:
我對常常寫文章紀錄/分享自己知識的人由衷地給予尊敬 (Respect)
感謝每一位看到這裡的朋友,不管你是跟著學,還是只是路過點進來,都希望這些內容能讓你覺得:
「原來 C++ Console 也能這麼有趣!」
接下來我會繼續打磨這個專案,繼續完成Ray Casting ─ Consol FPS這一系列的文章!
也會在未來寫更多關於 C++、電腦圖學、光學比喻 的文章。
朋友們,這不是結束,而是新的開始。
我們繼續走下去!!