我未來一定會往遊戲方面走,所以這門課程對於我而言意義重大,感謝這個課程。
曾經為了完成第一個功課,雖然只是2D遊戲設計,但是花了我很多時間,主要花的時間並不是在什麼想遊戲概念還是撰寫程式碼的過程,那些對我而言都不是問題。
"尋找工具" & "學習怎麼利用" 才是真正最花時間的部分。
我們常常說的API,Application Programming Interface,是指包裝好的,可使用在特定目的的介面。舉個例子,就像是許多網站,在文章的底下會有分享至臉書或之類的社群網站的東西,正是利用的Facebook提供的API做的。而在遊戲世界裡,OpenGL、DirectX、SDL、SFML等,也是用來製作遊戲的API。
這次想要向各位介紹的SFML,正是那麼多種API中,偶然被我找到的
"非常好用無腦方便的API "
其實我原本是想要找一個方法放聲音到遊戲裡,東找找西找找,就找到了SFML,雖然我在作業中只有用來播聲音,但其他生成畫面的部分、控制事件的部分、網路通訊的部分,跟其他API結合的部分,都實在是太酷了,不學會真的浪費掉的感覺QwQ在接下來幾篇的教學範例文中,我們會使用C++語言當作主要語言,雖然SFML支援非常多種語言(這點真的也非常精彩),但因為C++的高效率、嚴謹性及低門檻,且世界上大部分的遊戲製作API都是C++,我們還是選用C++嚕。
步驟 0 : 準備IDE!
首先,我們需要準備一個IDE,IDE可以想成是"用來寫程式的程式",內建許多自動完成功能或整合功能,方便我們開發程式。接下來我們會用微軟的Visual C++做示範。已經裝有IDE的朋友們可以跳到步驟1。Visual C++ 2013 :
http://www.visualstudio.com/zh-tw/downloads/download-visual-studio-vs#DownloadFamilies_2
(中的for Windows Desktop)
(2010也可以啦,但2013的程式碼提示跟環境外觀就是比較爽)
**其實用Visual C++真的很方便QAQ,無論是我寫教學文還是各位朋友在開始學習SFML的時候,但有些人就是堅持不用Visual C++ XDD (老實說,我覺得Visual系列是微軟唯一做得好的軟體ㄟQQ),試試看咩。
步驟 1 : 下載SFML的原始檔!
https://github.com/LaurentGomila/SFML/archive/master.zip
載下來之後,就解壓縮在一個空曠的地方,然後順便建立接下來要建置SFML的API的資料夾。
步驟 2 : CMake & Build!
CMake,可以當作是一個跨平台的"生成Makefile"的神器,根據不同的作業系統或規格,CMake可以藉由使用者想要編譯的目標編譯,例如要選用Visual C++、MinGW或GCC之類的。(MinGW其實是Windows的GCC環境)CMake :
http://www.cmake.org/download/
(中找到最新版的Binary distributions,的Windows Win32 Installer)
注意! 在安裝過程中會出現是否要加進PATH的選項,記得要勾要唷! 然後推薦勾for current user。安裝完後記得用命令元檢查一下,各位可以去看上面的上面那一張,有CMake在尾端唷。
然後重頭戲要來了,我們要用CMake產生專案檔啦! 好興奮喔!
(先說,程式碼擺放的資料夾最好不要跟建置資料夾一樣唷)
選擇好原始檔的位置(Browse Source...)及選擇好輸出專案檔的位置(Browse Build...)之後,按Configure,然後選擇相對應的編譯模組,像這裡我們是用Visual Studio 12 2013(x64先不在我們的範圍之內,但有需要的話可以使用唷)。
按下Finish之後,他會開始跑一連串的東西,請耐心等待唷! 假如安裝沒有問題的話,理當順利完成Configure的程序,Configure意旨設定專案檔要長得什麼樣子,其實在其他很大的專案(例如LLVM),Configure裡面要設定的東西會非常非常多,但SFML真的很方便無腦,接下來馬上按Generate(產生)就好了,除非有其他設定各位想要嘗試XD
然後我們立馬到那個剛剛產生完專案檔的目錄! 打開SFML.sln。
進去之後更改建置目標,將Debug改成Release。
(深色主題真的很好看且對眼睛比較好>w< 推薦給各位)
然後,建置->建置方案,等一段時間。完成之後再回去那個資料夾看看,就可以看到多了一些東西,但我們要的東西是在lib資料夾裡。
步驟 3 : 塞東西!
辛辛苦苦建置完使用SFML時需要的API之後,就馬上開始來測試有沒有問題啦!先把.dll們複製到system32跟SysWOW64(有的話)裡面 :
這麼做是為了方便執行與測試SFML的功能,因為只要這麼一做完,這台電腦的任何SFML程式可以無腦執行,因為對於系統而言,找.dll會從程式執行檔目錄或這些地方開始找。之後要發佈到網路上或分享給朋友們的時候,也記得要把.dll放進程式執行檔的同目錄唷。
然後,到原本的master資料夾(原始檔資料夾),把include資料夾裡面的SFML資料夾複製到Visual Studio在的地方,裡面的include資料夾。像我的例子的話會像這樣子 :
(仔細觀察兩個資料夾的路徑喔)
跟複製.lib檔案至lib資料夾
(仔細觀察資料夾的路徑喔)
步驟 4 : 開IDE!
怒開Visual Studio,新增一個空專案。建立一個空專案之後,裡面應該是空空如也XDDDDD
所以我們要到原始程式檔按右鍵->加入->新增項目,然後按確定。
接下來,是每個SFML專案都要非常注意的設定!
在專案(例如這裡是SFML_TEST)按右鍵->屬性->連結器->輸入->其他相依性->編輯...,中加入以下.lib :
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
(記得用換行)
(假如要撰寫的程式還需要其他功能的話,像是audio或network,記得也要額外補上喔,檔名可以參照lib資料夾裡的.lib名字)
然後終於可以貼程式碼啦!
**這個程式碼範例是來自官網的教學
**This code is quoted from SFML 2.1 tutorial
#include <SFML/Graphics.hpp> int main() { sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!"); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); } window.clear(); window.draw(shape); window.display(); } return 0; }
(話說,假如覺得我照片中的程式碼字型很好看的話,可以參考一下source code pro字型喔,Adobe做的免費字型耶!)
這樣一來,就成功設定好學習SFML的環境了!
有任何問題或這篇文章可以改進或補充之處,歡迎在下面留言唷!
沒有留言:
張貼留言