遊戲程式設計指南 - 技巧、工具與職業

Connor Taylor

遊戲程式設計師將設計師的構想在我們使用的遊戲引擎中實現。我在Kwalee的手游程式設計團隊工作,主要使用Unity。例如,若設計師希望骰子以特定方式滾動,我會撰寫腳本處理邏輯。我們也與遊戲藝術家合作,確保遊戲既美觀又性能優化。

本文中,我將分享在Kwalee工作五年的心得與建議,涵蓋程序語言、工具及原則,提供職業建議並分享初級與進階技巧。

遊戲程式設計師的工作是什麼?

我們撰寫代碼,使遊戲成為現實。遊戲設計師創造概念,藝術家創造資源,而程式設計師創造可玩的體驗。我們優化遊戲性能並解決已識別的問題。

我們確保遊戲流暢運行。為此,我們需確保代碼潔淨且可擴展,這比想像中難。我們使用編碼標準以保持品質一致,有時需突破框架解決問題。

我們的職責還包括確保遊戲在終端上運行順暢。在我們的手機遊戲中,我們需避免舊設備過熱,因此會與藝術家優化繪製呼叫數。繪製呼叫是從CPU至GPU繪製畫面元素的指令,我們需 minimize 這些呼叫數,避免幀率下降或卡頓。這對手機尤其重要,因市面上有各種硬體規格的設備。

主要遊戲程式語言是什麼?

大多數時間我們撰寫程序使用各種語言。選擇語言種類繁多,有些似乎較簡單,但掌握一門後,學習其他難度會降低。

以下是一些最受歡迎的遊戲程式語言介紹:

  • C# - 廣泛應用於遊戲開發,功能多樣且易學。自動垃圾回收功能為忙碌的程式員提供便利。
  • C++ - 需手動進行記憶體分配及釋放,操作複雜但提供更高速度、控制及性能。
  • Java - 和C#一樣,有自己的記憶體管理及垃圾回收功能,讓開發者不必過多關注細節。雖然不一定是遊戲開發的首選,仍是創建可擴展及高效應用的良好選擇。
  • Swift - 是Apple原生語言,用於開發iOS及macOS應用及遊戲。但對於跨平台開發而言用處有限,因我們的手遊需同時在Android和iOS發佈。

如何成為一名遊戲程式設計師?

有很多方法成為遊戲程式設計師。我選的路徑相對傳統,曾在Staffordshire大學修讀遊戲設計及程式設計。原以為會從事遊戲藝術,因自小熱愛藝術,而且大學藝術模組也很享受。後來發現更喜歡創造遊戲,能在較短時間內完成工作。

但程式設計的美在於即使非傳統途徑也能入行。在Kwalee,我們曾招聘主要靠YouTube自學並製作遊戲趣味的人來。今日的機會很多,見到新生們學的都很多,行業前景令人激動。

你可能好奇AI是否會影響此職業?AI非常有用,愈加精進。遇到問題時可幫助調試或優化代碼,雖然我們期待看到你親自完成的工作,僅作為補充而非技能替代。

遊戲程式設計師的日常是什麼樣?

以我的日常為例。作為首席程式員(夢想工作),我的日常兼具親自動手與團隊管理。

我來到工作,買杯拿鐵,然後檢查QA團隊的bug或阻礙問題,查看團隊是否有需要我協助的。我們透過slack分享進度視頻,獲得快速反饋,同時在支持團隊成員間工作於2-3個專案。我們投入許多時間於共用系統以提高編程效率,確保維護及定期更新以順利運行。

初學者遊戲程式設計提示

若你剛起步且渴望成為正式程式員,我這裡有些入門建議!

  • 網上資源豐富,YouTube上有許多樣例遊戲使你無藉口不學!熱門引擎大多免費,且樂趣十足!
  • 盡量閱讀影響較大的書籍如“Design Patterns: Elements of Reusable Object-Oriented Software”,介紹常用的遊戲模式。
  • 固然有自己點子,但確保從基礎開始穩紮穩打。
  • 當非商業項目時,寫多少程式碼都可以隨心所欲,創造奇特有趣的東西。
  • 建立並活用你的作品集(也是我獲得工作的方式)。當心不要只上傳一些大學常見標準作品,花多一天換皮與增加功能能助你脫穎而出。
  • 建立自己真實遊戲也是明智之舉 - 在Google Play發布遊戲不貴,使你能展示作品給招聘者/發布者/家人/寵物。或许可每年賺幾千美元至擁有全職工作,還可能讓你成為全職獨立遊戲開發者並與發行商合作。
  • 除程式外,學習藝術、設計、QA等相關知識。例如理解QA方法避免自以為工作正常,需以用戶而非寫代碼者的角度看待問題。隨意破壞,嘗試用戶可能做的“離譜”行為。

高級程式設計師提示

以下是助我從初級到資深再到領隊的一些提示。

  • 常學有益,學習不能沒有錯誤!
  • 若熱衷某事 - 可進一步專精。例如若愛玩轉著色器和渲染管道,學得更深入以擴展能力。
  • 可製作非常酷的複雜系統,若合約允許可上傳資源商店展示高級作品。可發展特定領域如遊戲玩法程式員、伺服器程式員、圖形程式員或多人程式員。
  • 或走管理路線,成為導師。進一步職涯的策略是吸收新責任。從改進小流程、小流程變更開始,逐步簡化流程。接觸到導師角色和管理助我更自信,並進行同事檢閱、程式碼檢閱、主持工作坊及領導專案團隊。

無論組織中角色還是管理者,讚美與建設性批評同樣重要。檢驗程式碼時,可以使對方感到振奮!

遊戲程式設計的核心原則是什麼?

以下是一些博客中必講的關鍵主題,也是我們必考慮的重要方面。

源控制/版本控制

如遊戲中的存檔點,開發中也有存檔。它們作用像是一般存儲,允許三四個程式員同時作業於一個系統並推送更改至伺服器。並可輕鬆回滾。

這些術語間有時交疊,但一般來講源控制專注於代碼,版本控制包含所有專案檔案、資源和文檔。

起初使用源控制會感到需要時間適應,版本控制幫我們保存瞬間,若經常更新並使用詳細Commit信息,便安全可靠。可以輕鬆回滾多個點、分支等等。把它當作開發者的安全網,避免Toy Story 2被誤刪,由技術主管硬碟中恢復,當然我們有伺服器保存。

面向對象編程

這是Kwalee主要使用的程式設計類型。它使用對象來代表現實中的事物,或抽象概念,並旨在使用鏡像我們現實中方式的原則來組織代碼庫。通過將代碼組織到可重用、可擴展且更易於維護的獨立類中來保持複雜系統。

當然,目前有些關於它的支持与反對。雖然不是性能最高,但是足以勝任。類似於語言,各有其優勢與弱點,起初學會一種以掌握語言與編譯器(將人類代碼轉成機器碼的翻譯者)的基本原理。你也可考慮其他類型,例如函數式編程,視其更像數學;邏輯編程以事實與規則;步驟程式設計以逐步數據。

編程模式

這些模式非常實用--可重用解決方案,幫助解決常遇到的軟體設計問題。提供解決問題的模板,使您不必每次都重新發明輪子,並可以遵循證實的解決方案。
例如,單例設計模式幫助確保整個遊戲中某類只能有一例,如遊戲設定管理員,使其整個遊戲中只有一個SettingsManager類實例,您不用每次需要它都重建或重複創建它。

還有工廠模式,它可以幫助以更有序靈活的方式創建對象。可以定義方法以基於輸入參數生成特定類型的對象,如角色或物品,使你可以輕鬆創建更多相似類型的對象,無需每次從頭開始。

希望這篇博客能讓你對遊戲程式設計產生興趣,不論你是新手還是經驗豐富的程序員。若你既勤奮又有趣,非常契合我們的團隊,可以了解更多關於Kwalee careers。否則,了解我們的手機遊戲發行並更多熟悉我們作為開發者與發行商釋出的內容。

關於作者:

Connor Taylor,Kwalee遊戲首席程式員,熱衷於遊戲開發及團隊合作。5年以上經驗,創作Jetpack Jump等作品,指導Unity開發。

相關文章

分享這篇文章: