前進遊戲界:給大學生的行前準備建議

choose-the-right-path「我想進入遊戲業!但是不知道要如何做準備!」

你是學生嗎?你渴望在畢業之後進入遊戲業界工作嗎?你抱持著滿腔的熱情,卻不知道如何替未來的自己做好準備嗎?這篇文章裡,將以我個人的經驗與心得,提供給有興趣進入遊戲業界的學生一些行前準備建議。因為我自己是屬於遊戲程式設計者的身份,所以這篇文章多數的內容是針對未來有志於成為遊戲程式設計師的大學生。在文章最後,則會稍微提到一些關於遊戲企畫設計者遊戲美術設計者的面試加分項目。

對於有志成為遊戲程式設計者的人來說,大專院校中的資訊相關科系,如資訊工程、資訊科學以及資訊管理學系,可以說是最為接近遊戲程式設計的領域。雖然台灣目前已有幾間學校設立了遊戲設計學系,但是以成為遊戲程式設計者的目標來說,我認為選擇資訊相關科系仍然會是比較合適的決定。資訊科系畢業的學生,未來可以從事許多不同面向的工作,例如 IC 設計、韌體開發、軟體設計以及網路多媒體程式設計等等;而一般來說,相較於硬體與軟體產業,遊戲業界在考慮新鮮人的履歷表時,比較少有學歷面向的資格限制。

(圖片來源:http://www.rougarai.com/)

大學考試的錄取率年年昇高,至今年甚至已經達到 100% 的錄取率,如果你身為一位大學畢業生,在每年六、七月新鮮人開始投履歷尋找工作時,要如何從眾多的大學畢業生中脫穎而出?如何爭取到更多的面試機會與工作機會?又或者應不應該念研究所?要回答這些疑問,首先必須瞭解的關鍵問題是:「進入遊戲業界需要什麼樣的能力?」

基本能力,通常是工作應徵者的第一道關卡;如果連基本能力都無法滿足,很可能就無法得到面試以及工作的機會。在遊戲業界中,程式設計者所需具備的基本能力有兩項:

  • 程式設計能力:必須熟悉 C++ 語言,真正瞭解虛擬與繼承的使用時機,能夠使用 STL 並且瞭解資料結構與容器,認識基本的設計模式 (Design Patterns),並且具備優秀程式設計者的特質
  • 英文讀寫能力:能夠閱讀以英文撰寫的技術文件、國外討論區的文章,以及各種英文技術書籍,並且能夠撰寫簡單的英文句子與其他人進行討論。

通過以上兩項基本能力的門檻以後,接下來的關卡考驗則是專業能力的條件項目;依所學領域的分野,大致上可分為客戶端 (Client Side) 伺服端 (Server Side) 兩大領域:

  • 客戶端:具備 3D 繪圖領域的知識,至少熟悉 DirectX 或 OpenGL 兩者之一。瞭解基礎的 Windows 視窗程式設計,能夠使用 MFC 或 .NET 製作視窗程式,認識 Lua 語言。
  • 伺服端:具備網路通訊協定與網路架構理論知識,熟悉 Linux 平台以及 GCC 操作,瞭解封包傳送、加解密與壓縮的方法,能夠使用 SQL 語法處理資料庫,認識 Perl 或 Python 語言。

瞭解上述的基本能力專業能力項目之後,就可以開始思考念研究所是否對這些項目有所幫助了。在你的面前,有兩條岔路延展開來:

  • 大學畢業,當兵,進入業界。
  • 大學畢業,念研究所,碩士畢業,當兵,進入業界。

在這兩個選項之間,存在著時間成本以及機會成本上的差異。如果選擇第一條路,在讀完大學後直接投入遊戲界,優勢在於能夠及早接觸業界,學習成長的同時也為公司做出貢獻;有了現實層面的壓力,成長的速度往往遠勝於在學校的學習效果。只要能夠在一間不錯的公司裡工作,二年之內,就能夠熟悉各種遊戲開發的知識,進而成為優秀的遊戲程式設計者。而如果選擇第二條路,讀完大學後繼續就讀研究所,並且在二年後順利拿到學位證書,然後再進入遊戲界,優勢在於工作之後如果覺得不如預期,將比較有後路能夠轉向其他業界。然而,在碩士班裡,往往需要花費許多時間在畢業論文之上,而比較少有磨練程式設計能力的機會;在對於程式設計實作能力非常重視的遊戲業界中,這是比較容易使面試主管產生疑慮之處。

如果沒有仔細思考念研究所的目的為何,只是跟著其他人上補習班、考研究所然後念研究所。進入研究所後,只管挑選比較熱門的研究領域,或者比較輕鬆的指導教授,整天窩在研究室裡玩著連線遊戲,然後在二年級下學期才匆匆忙忙地開始著手動工撰寫論文,即使擁有了碩士學位也難以經得起時間與工作的考驗。博士畢業生,要有發現問題的能力;而碩士畢業生,應該要有獨立解決問題的能力,這才是碩士學位的價值所在。

如果你已經做出決定,確定要朝向碩士班的目標努力,除了考慮想要就讀的目標學校良窳與否的考量以外,最好能夠先確定指導教授的研究領域是否與遊戲開發有關連性;因為雖然資訊相關科系的研究所相當多,但是真正能夠稱得上與遊戲開發或遊戲程式設計相關的系所卻很少。以研究領域來說,與遊戲業界最為相關的應該是電腦圖學 (Computer Graphics) 以及網路理論 (Network Theory) 的相關領域。

lego-xbox360-controller在電腦圖學的領域中,可以學習到各種繪圖程序的基礎理論與知識,對於想要成為專攻 3D 程式設計的人來說很有幫助;另一方面,如果有志於開發伺服器程式系統的話,網路理論則是最合適的研究領域。此外,可能大部分人都會認為人工智慧 (Artificial Intelligence) 也是與遊戲製作非常有關連性的領域,然而人工智慧在國內遊戲界的應用非常少。國內的遊戲作品很少使用複雜的人工智慧技術,也鮮少使用模糊邏輯、類神經網絡、基因演算法之類的理論,所以目前能夠一展所長的機會並不多。

在資訊科系中,需要學習的課程科目非常多,同時也有很多的機會接觸各種不同的程式語言。各種程式語言都有各自的優點與缺點以及不同的學習曲線,雖然也有以 Java、C# 語言或者 Flash ActionScript 撰寫的遊戲,但是以遊戲界的現況來說,最首要、而且必須熟練自如的程式語言還是非 C++ 語言莫屬。而在資訊工程學系滿坑滿谷的課程目錄中,我會選擇資料結構線性代數離散數學演算法這四門課程,做為最重要的學習目標。

(圖片來源:http://blogs.theage.com.au/)

需要特別注意的是,資訊相關科系的各種課程,與遊戲程式設計幾乎沒有直接的關連性存在。但是為了成為一位優秀的程式設計者,這些課程就像是紮馬步、練內功一樣,絕對是不可或缺的訓練過程。只是如果要學習遊戲程式的相關知識,就必須靠自己的努力,投入額外的時間閱讀書籍文章並且撰寫程式。另外,在廣告媒體上強力促銷的資訊證照考試,對於遊戲業界的工作,到底有沒有加分的作用?其實只要對照一下上述的基本能力以及專業能力列表,就不難理解這些證照的加分效果其實相當有限。

其他資訊產業的狀況我並不清楚,但以遊戲業來說,學歷多半只會在你尋找第一份工作時產生效用。當你在第一份工作裡持續二年以上的時間之後,未來如果轉換公司,面試主管更會注重的是你在前一份工作中所學習到的知識、所完成的工作項目,以及所獲得的知識經驗;所謂的學歷或者學位,已經變得微不足道了。反過來說,如果在第二、第三份工作面試時,還需要不時強調自己的學歷而非工作經驗,可能就會使面試主管產生疑慮了。

不論你是大學畢業生或者碩士畢業生,找工作與投履歷就是一種推銷自己的競賽,必須盡可能地展現出自己的優點,以及與其他競爭者的不同之處。如果能夠展示出與遊戲相關的作品、專題或者比賽成果,就能夠很快地吸引面試主管的目光而獲得更多的工作機會。現在各種與遊戲製作相關的活動及比賽越來越多,參加這些比賽,不僅僅只是為了豐厚的獎金獎品,在團隊合作的過程中所獲得的經驗,不論好壞,都是金錢難以比擬的無價收穫。

在這個人人都有部落格的年代裡,除了擁有記錄自己生活點滴的小天地之外,不妨另外開設一個專門的部落格,將自己對於遊戲程式、遊戲設計或者遊戲美術的相關文章、學習心得及個人作品,以文字、圖片或者其他的形式記錄下來。痛快地玩過一款遊戲之後,能不能以自己的觀點去剖析遊戲的設計?遊戲中使用了 Pixel Shader 或者哪些先進的繪圖技術?有什麼地方能夠更進一步的改善?這些都是非常好的自我訓練題材。幾年之後,部落格裡一點一滴的累積起來的內容,將會搖身一變成為你個人的王牌銷售員。(註:記得時常進行備份。)

即使你現在所就讀的科系,不是屬於資訊相關科系,平時也比較少有機會接觸程式設計方面的知識,轉個彎吧!別忘了還有很多的可能性,例如轉校考試校內轉系輔系申請雙主修學位以及選擇相關學程等等方法。我自己是從大二時才開始學習程式設計與資訊領域的知識,直到大三才開始接觸遊戲開發的相關知識,大四時跑去修了幾門研究所與其他系所的課程。當時在網路上,有個人氣鼎盛的專業遊戲論壇「拿鐵遊戲研究院」,有許多業界的前輩在此分享程式、企畫與美術的相關心得。在參與討論的過程中,不僅使我學習到許多業界相關知識,瞭解未來前進的方向,也認識了引薦我進入遊戲業界的前輩。只要有心去做,就會找到方法而不是藉口。

除了國內的遊戲業界以外,或許你的目標更遠大,想要到美國的 Activision Blizzard 或者日本的 Square Enix 工作;目標不同,應該如何做準備?如果你想到美國的遊戲業界工作,最好的方式就是申請美國學校的研究所,直接攻讀相關研究領域的碩士學位。在畢業之後,就有比較大的機會能夠留在美國,並且得到遊戲業界的工作機會。如果你想到日本的遊戲業界工作,則需要先到日本念一至二年的語言學校,接著再去就讀遊戲開發的專門學校。但是一般來說,日本遊戲公司較為保守,並不會輕易接納非日本人擔任正職工作,請在做出決定之前仔細考量清楚。

除了以上關於程式設計者的準備方向以外,如果你的目標是成為遊戲企畫設計者,什麼科系畢業並不是很重要的因素;在達成遊戲企畫設計者的基本條件之外,如果懂得撰寫簡單的程式,或者熟悉美術的製作軟體,都能夠在面試中獲得不少加分。而對於遊戲美術設計者來說,展現出來的實力才是關鍵;看起來再怎麼高明的學位證書,也比不上眼見為憑的作品來得具有說服力。另外,美術設計的領域中,分成平面設計、動畫設計、多媒體設計等等不同的範疇,所需熟練的技能以及工具,與遊戲美術領域有所不同,在自我學習時需要多加留心。

the-future-next-exit我想應該有不少人是因為「喜歡玩遊戲」或者「對遊戲製作充滿憧憬」,當初才會選擇就讀資訊相關科系,從此與電腦結下不解之緣。如果你在經歷大一的程式語言課程後沒有放棄,在大二的數位邏輯課程後沒有轉向硬體之路,在大三的演算法課程後存活了下來,那麼恭喜你,已經獲得進入遊戲業界的門票了!接下來更要勤加練習程式設計的功力,努力充實各方面的能力,才能夠進入遊戲業界,成為一位合格的遊戲程式設計者!

(圖片來源:http://www.employmentspot.com/)

最後我想說的是,即使遊戲業界目前有許多令人不滿意的現況存在,即使目前的薪資待遇比不上電子產業,仍然有許多人默默地認真工作著,為了製作出好遊戲、為了讓公司能夠賺錢,也為了證明我們能夠做到。只要擁有熱情,就不會對自己失去信心。如果能夠在困境中闖出一條路,就可以獲得更大的成就與收穫!而對每位大學生來說,想不想、要不要,或者該不該念研究所,都有家庭、金錢與現實狀況等各種因素需要詳加考量,不論你所做的選擇是什麼,有句話說:「機會是留給做好準備的人。」當機會來臨時,你是否已經準備好面對挑戰了?Be Prepared!

91 Replies to “前進遊戲界:給大學生的行前準備建議”

  1. 其實除了電腦圖學以及網路理論外,還有一門遊戲業常常忽視、但是事實上很重要的大學科:人機介面(Human Computer Interface,簡稱HUI)。這學科其實很有趣,會研究包括個別玩家的心理和行為、社群互動、人體工學、使用者習慣、體感操作… 算是一個很跨領域的學科。像站長先前譯作的那篇銀髮玩家的文章,就是屬於HUI的研究範疇; 而wii正是HUI的成功實踐。我先前修這門課的時候,就曾讀到有關於WOW為什麼可以一下吸引那麼多玩家後,還能確實把握而不讓玩家流失的文章。說起來,很多大作之所以成為大作,不是畫面頂尖、也不是玩法獨特,而是因為他們設計出來的介面(操作介面、任務介面、甚至是玩家自訂介面)夠貼近玩家呀。

    站長這篇實在寫得很好耶。以後有人問起,我就請他來這邊看囉~

  2. 寫得真讚﹗這篇連結以後應該會常用 :)

    Client side需要的知識方面我有一點點不同的看法﹐因為client side其中有大致可以分為gamplay和engine兩個領域﹐
    如果是gamplay的話具備基本3D繪圖領域的知識當然是必須的﹐但是不一定要到會用DirectX或OpenGL這麼低階﹐那算是engine的範圍。
    (不過如果面試時被問到DirectX或OpenGL的差異﹐基本的認識還是要有的啦)
    不同公司有不同的標準﹐以上純屬個人經驗﹐我常常覺得自己是利用AI programming對於graphic programming方面的要求低才入這行的

    會用Lua很有很大的幫助﹐不過其實只要有熟悉遊戲界常用的任何scripting language (例如Unreal Script等)其實都有加分效果

    有自己的demo也有很大的幫助﹐成品不需要有多炫﹐但是要能有效地表現自己的problem solving skill﹐
    像是自己寫一個高完整度的mod﹐或是用自己寫的graphic engine和physics寫一個簡單登陸月球的遊戲
    有時候比用Unreal Engine或是其他現成的引擎寫出一個跟別人沒什麼不同的射擊遊戲更能表現出自己的能力。

  3. 不知道走研究所->考研發替代役(以前的國防役)是不是也能算一條路?我聽說有人這樣進了鈊象還是昱泉的樣子,受訓時間大概在三周到六周左右,現在當兵我記得是一年兩個月。

    但我也有聽到負面消息,除了綁四年以外,抽到不同的單位學非所用好像也是應考慮的風險。

  4. 現在的遊戲已是線上遊戲的世界,而且公司也不如以前多,要再擠進去發展好像不如以前好。可是因技術開放,所以我想會有新的領域會用到以前單機遊戲的程式方法,所以我想機器人玩具應是一個新的應用。
    現在的32位元單晶片也可以有256k Bytes的記憶體,和之前286時代差不多。程式一樣是和人互動,只差環境由人工設定變成由感測器輸入,人工智慧則可以繼續使用。
    我因選讀電子而無法走軟體及遊戲,想出這樣的方式回來。目前是想將Lua移進單晶片,發現機會是有。eCOS+Lua使用約200KB,是很有機會,不過沒有時間弄到會動。
    到時可能會用Lua寫人工智慧,在使用Lua上還有機會請教站長啦。

  5. “機器人玩具”–或說”機器人”已經發展很久了, 早期受限於處理器效能, 雖然現在也是, 只是變成cp值的trade off.
    就執行效能(速度)而言: asic > mcu, 於 mcu上: c > script. 雖然script有很好的彈性, 但是在效能嚴格的環境就顯得弱勢很多. 我的想法是, 如同 java (VM)加速器的存在, script也可以做出加速器來減少效能的損失, 這樣script豋場的機會才會變多.

  6. To Hua:
    若是有Java chip我也想用啊。可是Java出了二十年了,也沒有Java chip。目前的Java都是用ARM在模擬的,而我也是用ARM上跑script,Lua已是script中最小最快的。重點是可以一邊寫程式,一邊看機器人動作。用Java好像不行吔,它還要下載起動,那原本在跑的馬達控制程序就不知要如何再連上。

  7. 對了我忘了說明我的架構,基本的機器人馬達控制是由C語言寫的,Lua是負責高階的控制程序。因為機器人發展時所遇到的狀態往往非預期,才希望由可以隨時可以調整的script來做。先以Lua開發下命令動作,再看各感測器狀態,再調整程式動作。若是效能有不足的動作,再改寫為C,反正動作已經在script已驗過,就不用測了。
    要是還是不夠用,那就只能用FPGA或CPLD來做了(抱歉,我沒有那個財力開asic)。
    會選上Lua是因為和C之間的親和力以及動態Programming的特性。可動態Programming的語言且又要塞進單晶片的也有Lisp語言,可是語法好像不如Lua來得親和性高。由Lua來做中間語言也比較容易交接給別人用。至於效能嗎…等一段時間後就會有更好更快更大的單晶片出來…哈哈。證明可行性會比效能來得重要。
    版主!抱歉在此發表和主題不太相關的議題。可是用Lua實在沒什麼地方可以發表啊。

  8. To Wallace:

    “重點是可以一邊寫程式,一邊看機器人動作”, 聽起來像發展時候的一種debug方式, 可以不中斷原本的執行之下修改程式. 所以正式產品不會包含script的情況下, 應該就不需要擔心效能問題了.

    再者, 即使使用script當作不中斷程式執行下的debug方式, 也要配合一種傳輸機制才能把新的script載入進mcu的memory. 也許可以嘗試用網路傳送自訂的指令進入client機器, 雖然跟使用script相比, 可能比較不方便就是了. @@

    java (VM)加速器: google關鍵字”jvm 硬體加速”
    例如 – http://larc.ee.nthu.edu.tw/dtc/doc/0824.pdf
    不過不是很普遍的原因, 大概是加速之後的效能仍然沒有到可接受的範圍吧. (我也不是很確定)

  9. To Hua:
    感謝補充說明。
    因為看到on-line game因多人互動而搶了單機game市場。所以個人認為Robot若是可以和人及其他Robot互動是否可以開創新市場。而目前Toy Robot並沒有好的可程式化界面,來實現這個理想。有想過像樂高的圖形化語言,可是對個人來說太難了。至少先做出srcipt界面的總可以吧!

  10. ”Robotics Studio”這東西,根本沒考量現實狀況,好像什麼都可以用軟體模擬,實際就是不行啊!以實際設計上會有機構、電子及軟體設計,是Robot設計必經程序。應由軟體支援電子及機構除錯,並不是由軟體模擬可以解決的。所以可以看到它只支援已經好的東西上的軟體修改,Robot不改機構那叫Robot設計嗎?那只是一廂情愿的做法。
    另外使用它還要學會它的環境設計語言以及C++語言,這都不是一般玩家可以負擔的。我不認為玩Robot要如此困難,要安裝編譯環境、模擬環境及學習操作C++語言。
    如果可以開個HyperTerminal,經由無線傳輸,寫下Lua程式就可以動作,這樣就很滿足了。
    必竟使用者方便才會有市場。(正巧接上第一篇回應所提的問題)

  11. @lsk:
    謝謝你的補充,我也認為不止電腦圖學以及網路理論與遊戲業界有關連性而已。不過我對於 HUI 的知識涉獵很少,以前沒有修過相關的課程真是可惜。不知道 HUI 的範疇是否包含軟系統 (In-Game UI) 與硬系統 (Input Device) 兩者?

    以 User 的觀點來看,In-Game 的介面設計真是一門大學問,以前製作小遊戲時也嘗過不少苦頭。偏偏業界喜歡把介面設計這項任務交給新手去做,所以經常導致產出差勁的 UI 設計成果。

    另外我對於遊戲系統的 Input Device 也很感興趣,任天堂已經在 DS 和 Wii 主機上為我們示範了兩次「操作方法帶來全新樂趣」的最佳實例,我認為未來的遊戲系統操作方式,將不會只侷限於搖桿、鍵盤或者滑鼠而已。接下來的發展,一定會越來越有趣~ :D

    @R2D2:
    感謝你的補充,Client Side 的程式的確可以分成 Gameplay 與 Engine 兩個領域,問題在於,剛進入業界的新手,通常無法自由選擇要在哪一個領域中工作。所以我認為,除非是完全專注於 AI Programming 領域,否則對於 DirectX 或者 OpenGL 還是需要具備基本的使用能力。從另一個角度來說,也是因為台灣的遊戲業界分工並不精細,程式設計者無可避免地會接觸到各種領域,而其中又以 Graphics Programming 的需求最大,所以才會開出這樣的條件項目。

    我也同意只要會使用任一種 Scripting Language 都會有加分效果(舉 Lua 為例是個人偏好 XD)。不論是 Demo、Mod 或小遊戲,目的就是為了證明自己的能力;但是別說是高完整度的 Mod,就連低完整度的 Mod 我都沒見過啊。 XD

    學生們,多加加油吧~

    @doomleika:
    現在一般兵役的役期已經調整為 1 年整,而研發替代役為 3 年整。

    事實上,我個人不建議選擇研發替代役這條路。以大專兵來說,必須先經過 2 個月新訓加上 3 個月的專業訓,下部隊的實際時間只有 7 個月整,牙一咬很快就過去了。雖然替代役有正常上下班(理論上)以及薪水較高的優點,但也存在比較高的風險與時間成本,萬一遇到糟糕的公司,可是會讓人欲哭無淚,想走也走不了……

    對遊戲界來說,三年的變化實在太大了,如果是「為了進入遊戲業界」這個目的,因此選擇研發替代役,我認為可能不是很妥當的決定。請三思而後行。 = =+

  12. @Wallace & Hua:
    兩位好,

    基本上,我對於電子與機械方面的知識可以說是一竅不通,所以對於兩位討論的內容只是一知半解而已。以下提出我的一點看法,如果有錯誤的話還請不吝指正。

    「可以一邊寫程式,一邊看機器人動作」聽起來就超酷的啦!Lua 的程式碼應該很適合做這種事,只要經過良好的程式碼設計,在更改 AI 指令之後存檔,然後重新 load/do file 應該就能夠達成這樣的效果。沒想到 Lua 也能夠應用在機器人的 AI 上,還真是有趣極了!如果能夠讓玩家在電腦上撰寫 AI 動作指令,並且即時傳輸給機器人做出反應,真的會非常不得了啊啊啊!

    我的想法是,如果單純論 embedded 的能力,Lua 絕對是兼具了 speed 與 lightweight 的優勢,另外 Lua 也可預先編譯成 binary 格式進一步提升執行效能。但是如果應用在單晶片上,到底是單純使用 Java 的效能比較好?或者是使用 C 語言搭配 Lua 的效能較佳?可能要經過實際的測試程序才能證實。

    只要是與 Lua 相關的議題,都可以在這裡發表,不用介意啦。 XD
    而且,也是因為在此提出了不同的意見與想法,才會知道原來也有同好或者同行存在呀~ :)

    感謝兩位的討論與回應。 ^^

  13. 看過許多的進入遊戲業界的相關文章,就這文章寫的最好!而且還談到國外進修XD
    不過你們是用Lua的Script呀…我們的是由一位老外寫的Script語言,
    改善Lua一些缺點(那位老外有摸過Lua),但是沒有像Lua運用那麼廣泛,
    且文獻參考也有限的缺點。雖然那位原創者在我們公司。

  14. 其實「可以一邊寫程式,一邊看機器人動作」,的構想是來自電影中的智慧型機器人Android。在我使用Lua單獨運作模式時發現,它可以形成”一問一答”的特性時,就想到可以實現類似Android的溝通方式。
    可是現行買的到的Toy Robot都沒有安裝夠強的處理器及記憶體。而且都是處在由PC編譯後下載執行的模式上。
    其發展程序為(A)->Load->Test->(A+B)->Load->Test->(A+B+C)->Load->Test->Finish。
    有了Lua在Robot內時則為(A)->Test->(B)->Test->(C)->Test->(A+B+C)->Test->Finish。
    要是程序很多很長,每次都要進行下載並看一次A動作,不是很浪費時間。
    可是既然電影中的Android的處理能力都很強,為何現實的Toy Robot都裝僅能動作的處理器,而不是安裝可以處理解析語言的處理器。
    或許沒有想到已可實現,就同許多工程師一開始也是如此認為,我還要再詳細說明整個操作程序,才會了解。可是這次討論得到一句話用以描述特性也算是一項收穫。

  15. To Wallace:

    “為何現實的Toy Robot都裝僅能動作的處理器,而不是安裝可以處理解析語言的處理器。” 這個問題的答案應該是視產品的功能而定. 如果產品要求僅是”僅能動作”, 控制馬達用不到32 bit mcu, 8 bit mcu已經能勝任. 而”處理解析語言的處理器”能在8 bit mcu上完成嗎? 8 bit mcu與 32 bit mcu的價格差多少?

    因此, 我認為你把發展時期的測試環境與產品本身搞混了. 發展時期結束後, 就不需要將script留在系統中了. 如果假設此產品本身的功能僅有動作以及簡易的決策, 你會為了產品本身用不到的script提升硬體等級嗎?

  16. 忘了說, 印象中Lego NXT已經用到Arm了, 如果產品本硬體等級夠高(當然價錢也很高)的話, 想在上面跑什麼都行.

  17. 啊我打太快打錯了。是HCI啦~~ 真抱歉。wiki有很詳細的入門:http://en.wikipedia.org/wiki/Human-computer_interaction

    “Because human-computer interaction studies a human and a machine in conjunction, it draws from supporting knowledge on both the machine and the human side. On the machine side, techniques in computer graphics, operating systems, programming languages, and development environments are relevant. On the human side, communication theory, graphic and industrial design disciplines, linguistics, social sciences, cognitive psychology, and human performance are relevant. Engineering and design methods are also relevant.”

    作研究時會跟不同領域的人一起工作,很有趣呢~

  18. To Hua:
    感謝你再次點出我提出觀點的關鍵處。
    你說的8位元和32位元MCU價位差,好像沒有吧,以ARM7 LPC2103為例單價為USD$3,內含32K Flash,和8051是沒有差價的哦。
    問題是升級到32位元沒有放入新功能才會對不起”工程師”這個頭銜。一定有什麼32位元可做,但8位元不可做的,且在一樣的成本下用軟體產生新的能力,這才是真正的創意啊。
    自古以來有許多實驗室的東西一開始被人認為不能賣,最後還是商品化,缺的只是良好的應用領域及商品化包裝。
    所以不要為自己設限,保持開放的心,才能找出新的道路,不是嗎:)

  19. To Wallace:

    我想觀點的差異可能在於我們所處的環境不同導致. 在IC設計的角度, 控制馬達用的8 bit mcu甚至用不到8051, 公司依自己的需求寫一顆就夠了. 設計8 bit mcu的困難度遠小於32 bit mcu(不只是硬體,還包含compiler/debugger等 tool chain), 自己做跟向別人買, 價錢當然是有差別的. 但如果都是個別買來兜起來, 從你的例子看來就沒有什麼差異了.

    再者, 你先提到的是”升級到32位元”而不是先考慮需求, 雖然以我的邏輯看來是有點奇怪, 但如果你是在”現有的系統”上想應用(新的附加價值), 就解釋得通了.

    我不是認為robot+script沒搞頭, 我的觀點是”先決定需求才決定架構”. 以你之前的看法, 我猜測你想要做的toy robot應該是類似Lego NXT這樣的半成品機器人, 方便一般使用者(而不是工程師)修改其功能. 這時候以script當成程式介面對”入門”的使用者是相當友善的, 一方面隱藏了底層的C/asm, 另一方面省去了JTAG或是其他燒EPROM的方式. 缺點也正如優點, 隱藏底層的code, 以及沒有辦法燒EPROM, 也就沒辦法由使用者加入新的元件(例如新的感測器).

    版主很抱歉, 回應了許多跟主題無關的文字. 正巧我對機器人也有興趣, 所以就一直寫下去了. @@

  20. To Hua:
    原來是背景不同所造成的見解不同。
    關於燒錄部分可以使用外接SD卡來做。這是由掌上遊戲機的概念來的,所以可以回存。
    至於新加元件,則要使用Hot Plug通信方式來做。這是由USB裝置的使用概念來的,IIC及CAN Bus通信協定應是可以做到。
    我的先期開發是先由可以找到現有的元件拼起來的,所以可否實現最重要。因為還要經上市考驗。
    而做IC因為一次就要生產數萬個,需求沒開好,一次投資就完了,所以偏重產量考量。我想還是用在確定已有人可以接受的市場吧。像我這種不知市場有多大的狀況,還是用散件來拼,風險比較低。

  21. @vamper:
    你好,

    你們公司是用自製的 Scripting Language?而且還是由外國人寫的?在國內的遊戲公司真的很少見呢。用 Lua 的好處是不用自己花心思開發與維護,對於一般的遊戲公司來說,可以節省一些人力成本。

    謝謝你喜歡這篇文章。 ^^

    @lsk:
    看到 HUI 時我以為是我記錯了。 :P
    對於遊戲來說,人機介面設計真的十分重要。這種跨領域的研究還真是有趣呀~

    @afuliu:
    慢慢來,加油加油~ XD

    @Wallace & Hua:
    沒問題。或許有其他的讀者,也對機器人的議題感興趣,正好能夠從你們的討論中瞭解一些相關知識,這樣也很不賴~ ^^
    如果你們需要交換 E-Mail 的話,可以寫信給我,然後我再把對方的 E-Mail 給你們,以便於討論更專業深入的機器人議題。 XD

  22. 是自制的。是一位超強老外寫的。
    我們某一款遊戲的game play都是用此Script去寫出來的。(在那一個團隊中)
    恩…主要是改善Lua對C++的一些不友善的設計。
    新的Script對於C++的OO的支援性很強大,連我覺得很神….。
    詳細我也說不清楚,而且我對Lua也不太瞭解,
    所以不能說出裡面的詳細優點。

    細節部分,這我不能再說了@@
    今早被上司認出vamper到底是誰= =
    突然覺得世界變好小XD

  23. @vamper:
    真厲害啊。 @_@
    我也很希望有天能夠做到「把 Gameplay 完全用 Script 寫」的程度!
    目前還在努力中。 = =+

    你的上司是在這裡看到留言,然後發現你的真實身份嗎?
    雖然被發現了,但是沒有做壞事不用擔心啦~ XD

  24. 我們公司也是用一個類Lua的script engine耶,名字是De開頭的,而且聽說也是前輩自己開發的,但是那個人現在不在我們公司了。我在美國,所以開發者也是外國人。不知道不會是上面提到的同一個人?世界不會真的那麼小吧 :P

    我記得用自家的script engine有個很大的理由就是記憶體管理。我們在console上的記憶體有限,因此不能讓script engine為所欲為… 細節就還沒深入去研究了。

  25. To 半路:
    對呀~更可怕的是…那款遊戲的game play全都是他一人寫的@@

    To lsk:
    可惜不是De開頭(Script Engine名稱)。
    我對script也是興趣缺缺,所以還沒拜讀他的source code,
    所以詳細細節部分也沒看。

  26. @lsk:
    記憶體管理是個大問題啊。以前 Lua 在 Garbage Collection 方面也有些問題,目前已經在 5.1 版中獲得改善。

    @vamper & vamper的 上司(只是個小主管):
    以前就聽過松鼠的大名了!沒想到原作者竟然在台灣的遊戲業界,真是太酷了~ @_@!!!
    Squirrel 的語法和 Lua 真的長得好像呀,改天來玩看看可愛的松鼠。 XD

    謝謝你們的回應~ :D

    (之前那篇留言,被我自己手殘砍掉了。希望沒有人發現…… 囧rz)

  27. @aming:
    (驚!)傳說中的 Aming 大出現了,快拜快拜。 < (_ _")>
    我真的越來越想玩松鼠了…… XD

    還請多多指教呀~ ^^

  28. Game Developer Research 網站在今年訪問了 2000 位左右的遊戲業界工作者(以北美地區為主),統計出一些相關數據。其中,關於製作遊戲所使用的程式語言:

    • 76% 使用 C++ 語言
    • 31% 使用 C# 語言
    • 19% 使用 Java/J2ME 語言
    • 9% 於某些部分仍然使用 Assembly 語言

    給各位做個參考。 :)

  29. 各位遊戲設計界高手你們好!!
    這部落格的文章和留言都好有深度喔!!

    請問既然有31%使用C#製作遊戲,
    且似乎成為趨勢,
    是否意味著可跳過C/C++直接學C#呢?

    可否煩請各位高手們為想進入這行的菜鳥們
    寫一篇可遵循的閱讀書單(從無到線上3D遊戲製作)?

    感謝!!

  30. @samkung:
    你好,

    雖然有部分比例的遊戲是使用 C# 製作的,但是並不代表該遊戲肯定會完全使用 C# 開發,所以可以說 C/C++ 仍然是遊戲程式設計者必學的程式語言。

    如果要從無到有學習遊戲程式設計的話,我認為你可以先找一本不要太厚的 C++ 書籍整本讀完,學會基本知識之後,再找一些如《C++ Primer》之類的經典書籍來仔細研讀,接著當你熟悉了基礎的程式設計以後,就可以開始找些電腦圖學的書籍來看了。

    比起以前,現在市面上與遊戲程式設計相關的中文書籍真的非常多,實際上也不需要遵循著標準書單的順序來閱讀,首先還是挑選自己看得順眼、讀得下去的書比較重要。真的培養出興趣的話,你現在的許多問題都會迎刃而解的。 :)

  31. 謝謝半路站主的回應!!

    有些人說要先把C學好再學C++,
    但有些人認為直接學C++即可,
    請問大家的建議是?

    半路站主好像是傾向後者對吧?

    感謝!!

  32. @samkung:
    C 語言的基礎知識很重要,不過 C 與 C++ 語言其實有許多共通之處,所以你可以先從 C++ 開始學習沒問題。如果在學習途中遇到比較難以理解,例如指標之類的觀念,也可以再回頭去找 C 語言的書來讀。不論學習什麼程式語言,最重要的方法就是要多動腦思考,並且多多動手寫程式噢~ :)

  33. 你好,請問一下在遊戲產業的伺服端主要的內容是什麼?
    類似mis?因為學習的技術領域感覺有點偏向管理類的,
    那考相關證照對於進入產業有沒有幫助?謝謝。

  34. @neweaver:
    你好,

    Server 端的遊戲程式設計領域,主要任務在於開發「遊戲伺服器的程式系統」,當然也會接觸一些伺服器管理面的工作,不過最主要還是在於寫低階網路程式、遊戲運算邏輯、與客戶端程式溝通,以及與資料庫溝通的相關工作項目上,可以說與 MIS 的專業領域完全不同。

    就目前已知的各種證照來說,幫助都不是太大。

  35. 看完了很多篇文章,我現在有點小小的困惑….請問成為遊戲企劃跟遊戲製作人是不一樣的路嗎?
    現在面臨大學,打算考資訊工程…但以我的能力比較傾向領導類的製作人
    原本想說一個企劃要有四個方面的能力:文字、繪圖、程式、音樂(網路上的知識找的)
    所以才選擇資訊工程,但領導能力是企業管理?!還是上大學之後雙修?!
    如果想要成為遊戲製作人,要先成為企劃?!

  36. @羽婷:
    妳好,

    想成為遊戲製作人,不一定要先成為企畫設計者喔!

    企畫設計者、美術設計者或程式設計者,都擁有成為遊戲製作人的條件資格。但我想妳必須瞭解的是,沒有人在一進入遊戲業界時,就可以立即成為遊戲製作人,領導一整個團隊的成員製作遊戲。

    一位優秀的遊戲製作人,至少必須在企畫設計、美術設計或程式設計,這三大領域中具備一項非常專精的能力,額外還需要瞭解市場行銷、團隊領導,甚至是財務分析等知識。但是,幾乎所有的遊戲製作人,一開始都是從一個小小的企畫、美術、程式、行銷、測試,或其他職位開始做起的。

    我的建議是:不要為了成為遊戲製作人,而選擇就讀企業管理相關科系。

  37. 蠻喜歡你寫的這些文章,這些都是精華中的精華!!
    再看完”為什麼你不該進入遊戲業?”這個pdf檔後
    我這個人一下子心中湧現出太多的讚美詞
    真的感謝你把這些的寶貴經驗毫不隱藏的分享出來!
    雖然我現在只看了一點點,但我真的覺得你應該去當遊戲工程的教授耶

  38. @巨人泰坦:
    你好,

    我最開心的事情之一,就是猴子靈藥的文章內容,對你以及各位讀者有實質的幫助。遊戲工程,Game Engineering,聽起來還滿酷的,不過我還沒有這麼厲害能夠當教授啦。 XD

    謝謝你的讚美,感謝你的回應喔~ :D

  39. HI,半路:
    你好,我又來留言了,最近在做期末專題,TCP/IP的實作,我們這組打算作一個網路五子棋的程式,可以打字聊天那種~~
    只是,我看C++網路程式設計的書籍,它裡面有好多我看不懂的資料型態,雖然我的程式設計基礎是建立在C語言上面,可是一接觸到JAVA之後,我就發現JAVA給我的感覺要比C++溫和許多,
    真不曉得為什麼,可以請半路先生指點一些接觸C++視窗程式設計,網路程式設計,及遊戲程式設計該注意的東西嗎…感覺學JAVA久了對C語言真的有點小小的…敬畏。
    另外我看到好多種關於C++,C#的遊戲設計,DirectX 或者XNA 該學習哪種比較好呢?DirectX 前陣子讀過一些些,也看過範例,感覺和我現在學網路程式設計一樣,一堆堆看不懂的型態不懂使用方法和效果…好複雜。

  40. @ming:
    我的情況不一樣,C/C++用熟了以後就不再想用Java了,我比較喜歡C那種純粹、一切回歸本質的風格,Java感覺是把簡單的東西複雜化。

    C是設計成貼近系統底層的語言,從系統底層的角度去想就不難了。
    可以把所有的資料都想成記憶體裡的bytes,CPU其實不懂資料型態,例如int加法就是把記憶體裡的4 bytes取出來送入加法的電路(32位元系統下),不管裡面存的值是什麼意義,所謂資料型態是compiler根據語法判斷該叫CPU用整數還是浮點數加法的指令,以及避免程式師犯錯(如把int拿來做float加法是做得到的,但邏輯就會錯了)。

    我建議從基礎的Windows API開始學起(像是用CreateWindow()建視窗,用CreateFile()開檔案),不講基礎直接就用Windows Form寫視窗程式的書就不用看了。
    我覺得這兩本書不錯,日本人寫的
    http://www.books.com.tw/exep/prod/booksfile.php?item=0010421442
    http://www.books.com.tw/exep/prod/booksfile.php?item=0010290096
    網路程式的基礎是socket,第二本有稍微介紹,或是網路搜尋一下socket或winsock。

    還有函式或struct不會用可以查MSDN,這是寫Windows程式必備的參考資料,如上面說到的winsock
    http://msdn.microsoft.com/en-us/library/ms740673(v=VS.85).aspx

  41. @ming:
    如果你比較熟悉 Java 的話,我還滿建議從 C# 與 XNA 開始學習起。因為一旦你碰了 C# 後,就會發現它與 Java 有許多的相似性存在,也比較不會像 C/C++ 一樣難以親近。

    另外一條路,就是使用 C/C++ 與 Win32 SDK 打造的「本格派」視窗程式,一開始的學習門檻來得比較高,但也是專業的遊戲程式設計者必學不可的程式設計知識。

    @Shark:
    感謝你的建議以及兩本書籍的推薦介紹。

  42. 我是一個因為自己的人格特質核心想要進入【遊戲產業】的人,當一個【遊戲企劃師】的人,為了自己的夢想,也想要到國外之歐美的地方遊戲產業發展(當然~英文要很強的呢)

    我思索了很久,從我大二開始蒙混到現在,我絕得現在我都沒有辦法找到自己的興趣,直到有一天,遊戲讓我有了新的想法,我想進入!我真的、真的、真的很想要進入發展我自己的藍海!!

    就像自家人所說的:目前沒有引導我的人,雖然有點可惜、後悔,但我也曾經在追逐遊戲企劃師的過程當中,曾經迷路過曾經迷失了我自己、忘了自己的興趣、也開始有點自暴自棄

    我的想法在一開始的時候,就想說面對不同的知識種類當中,我們應該面對於自己的興趣以及人格特質核心去加以的應用才會發展出與他人不同的特色 ^^

    我想要邁向遊戲企劃師,我也知道自己程式能力很差,可是我稍微、稍微有一點自信的關於3D軟體的部份,很多時候,我都在想自己該怎麼做?該怎麼辦?該怎麼做自己而不是與他人競爭是與自己的能力競爭並且超越

    直到現在大學畢業了,我對於遊戲充滿的熱情很豐富,但是,我卻一度的對於自己很失望,遊戲呼喚我,但我卻不知道自己該怎麼走入下一步??

    我需要各位大大的幫忙,可以給小的我一點知識以及方向

Leave a Reply