在正式開始挑戰30個遊戲演算法的第一天,小哈想先和同學們同步一下接下來的30篇會看到什麼、挑戰什麼、學到什麼。
小哈是個半路出家的遊戲程式設計師,大學讀的是農業機械,研究所摸的是電腦動畫,卻在千禧年初遇上了Flash+ActionScript,我的人生因此徹底改變。從某天開始製作遊戲直至今日,小哈接觸了各種程式語言,參與了各色專案,學會了諸多演算法,享受了遊戲製作帶給我的歡樂與成就感,這些美好,我就想藉著這次的鐵人賽散播給有志一同的大家。
因為不是科班出身,各種電腦科學的演算法,對我從來都是在有需求的情境下學來的,所以接下來的30天,我也會把這一路走來習得的功夫,安排在各種遊戲設計的情境裏,一邊以科普的方式解釋給同學們聽(不需要有什麼程式背景),一邊使用TypeScript的語法實現給同學們看(還能熟悉一個新語言),讓大家在理解之餘,也能實際體驗演算法的成果。
總的來說,這系列的目標是希望讓同學們能認識那些藏在遊戲謎團裏的演算法,也能一窺目前網頁技術最紅的語言之一,TypeScript。當然,電腦科學的演算法就像數學一樣,可以應用在各種不同的程式語言,之所以選擇TypeScript,只不過是小哈的偏心而已。
然而大家也知道,要試著把手伸近一個新的語言或技術,最麻煩就是各種軟體下載、環境設定、模組管理什麼的。為了讓大家能跳過這些麻煩事,而能直接觸碰TypeScript,我會把每一天開的專案都放在code.gamelet.com(簡稱CG)。
CG是一個以TypeScript為語言的遊戲製作平台,使用者可以在其中分享程式模組、音樂美術,製作完的成品也都會得到一個專屬的遊戲網址和玩家論壇。不過小哈在文章中不會使用CG裏的強大功能,僅用基礎的語法帶領大家進入TypeScript的世界。
同學們可以自行複製每天的示範專案,修修改改,為所欲為。如果最後能讓大家從陌生變熟悉,從什麼都不會到寫出一個小小小遊戲,那我就開心了。
第一天的最後,來簡單介紹一下TypeScript吧。
TypeScript是微軟自2012年開發的開源程式語言,是JavaScript的超集,意思是純JavaScript程式碼,TypeScript的編譯器也完全看得懂,但是TypeScript需要經過編譯器,轉換成JavaScript才能在網頁上跑。
TypeScript在JavaScript的基礎上增加了型別控制,解決了以往JavaScript除錯及閱讀困難的窘境,這就是TypeScript為網頁前端工程帶來最主要的好處。
TypeScript目前的發展如日中天,三大網頁前端框架有兩個是基於TypeScript為開發語言(Angular和Vue),在2021年stackoverflow票選最愛的語言中,Typescript名列第三。所以我想,作為我們這系列的語言代表,應該也不為過吧。