跳轉到內容

影片遊戲設計/程式設計

來自華夏公益教科書

程式設計

[編輯 | 編輯原始碼]

程式設計是你將概念付諸實踐的方式,是你構建遊戲的方式。有各種各樣的程式語言。這些語言將在後面詳細介紹。

遊戲程式設計師或遊戲開發者,負責實現遊戲設計,影片遊戲程式設計的大部分內容都枯燥乏味,缺乏創造性,除非遊戲設計需要一些創新或更新。但要注意,對於任何開發人員,尤其是實現影片遊戲的開發人員來說,最糟糕的情況是從一個糟糕的遊戲設計開始,無法做出決定或不堅定地做出選擇會導致開發人員不得不實現糟糕的概念,直到遊戲設計師接受結果(或由於時間/成本限制而被迫同意),最終導致一個不合格的產品。

並非所有的開發工作都很有吸引力,在遊戲中,大部分開發工作都不具有吸引力,例如,遊戲的介面在大多數遊戲設計中都很常見,做多一個只是走過場。現在,我們以支援影片卡硬體更改或低階最佳化任務為例,這對一個有創造力的程式設計師來說是最高階的。

注意
這些概念也有助於建立一個好的遊戲開發團隊,並非所有的工作都是一樣的,甚至沒有那麼複雜,而且取決於你希望將你的想法開發到什麼程度,你可能只需要很少的專家程式設計師。

學習程式設計

[編輯 | 編輯原始碼]

因為它可以說是遊戲設計中最難的部分,所以我們將花相當多的時間來學習它。如果你對想學習的語言有所瞭解,並且已經閱讀了各種語言,你應該開始實際學習。如果你能參加課程,那就太好了,如果不能,還有很多其他選擇。購買一些程式設計書籍,在網際網路上或華夏公益教科書上查詢一些教程,並檢視開源程式的原始碼。不要認為這很容易,事實並非如此;但要嘗試並從中獲得樂趣。如果你沒有從中獲得樂趣,那豈不是違背了學習的初衷嗎?

一些資源:Google CodeSourceforge

選擇程式語言

[編輯 | 編輯原始碼]

在你開始程式設計之前,選擇適合你需求的程式語言很重要。請記住,沒有一種語言適合所有人或所有情況。語言選擇如此之多,以至於幾乎不可能選擇一種。在你決定學習 Java 或組合語言之前,確保你清楚地知道要做什麼。遊戲的複雜程度如何?當然,花很多時間和精力學習一種能力不足以完成你計劃要做的事情的語言,或者學習一種過於複雜而超出你需求的語言,都是得不償失的。當你開始閱讀各種語言時,你不可避免地會讀到“低階”和“高階”語言。在這個階段,這不是很重要,但在後面會變得非常重要。本質上,低階語言(例如:C++、C、Asm)更強大、速度更快,允許你控制計算機的內部工作機制。然而,它們通常更難學習。高階語言(例如:BASIC)更容易學習和使用,但缺乏低階語言的強大功能和靈活性。


聲音在任何遊戲中都起著不可或缺的作用,因為它在潛意識和意識層面上影響著玩家的情緒!你能想象玩 UT 或 Quake 卻沒有聲音嗎?那將是不可忍受的!遊戲中的聲音(當然,取決於遊戲型別)通常包括背景音樂、事件音效(汽車喇叭、槍聲等)和環境音效(腳步聲、風吹聲、鳥叫聲、海浪聲、蟲鳴聲、回聲等)。

背景音樂,根據遊戲型別,可能會一直播放,但也會像電影一樣完全停止並改變以適應某些情緒,例如,如果你進入戰鬥,音樂可能會變成節奏更快或更不穩定的曲子。

另一方面,音效在由某些事件觸發時播放。如果玩家要開啟一扇門,門上可能會發出咯吱聲。音效可以為遊戲增添很多真實感,選擇合適的聲音可以使遊戲真正栩栩如生。但請注意,音效太多或具有不切實際的屬性,可能會影響遊戲體驗或讓玩家感到厭煩。例如,有一個遊戲中有一個噴氣揹包。這個噴氣揹包有無限的燃料,所以玩家可以在空中漂浮無限的時間。噴氣揹包執行時,會發出類似於氣流的聲音。這種聲音隨著時間的推移會變得非常煩人,因為它在遊戲中經常聽到。此外,如果聲音具有奇怪的屬性,它可能會降低真實感。例如,發出“嘎嘎”聲的機關槍,或者其聲音比實際射擊速度更快的機關槍。

環境音效在玩家進入環境時觸發,並迴圈播放,直到玩家離開。請注意,這些聲音檔案數量最多,並且有時會隨機順序迴圈播放多個聲音,以在環境中營造出變化的感覺(例如,兩隻唱著完全不同聲音的鳥,或者兩個角色走路時,鞋子的咯吱聲對每個角色來說都不一樣)。

遊戲通常為玩家提供許多關於輸入的選項。常見的輸入方式包括滑鼠、鍵盤、操縱桿和遊戲手柄。理想情況下,遊戲引擎應該抽象輸入,以便使用者可以選擇以上任何一種輸入方式。此外,要記住的一件重要的事情是,所有玩家在按鍵或按鈕位置方面都有不同的偏好,並且通常希望有特定的配置。這意味著輸入也應該被抽象化,以允許按鈕或鍵在遊戲中執行不同的操作。

首先要理解鍵盤事件被程式解釋的不同方式。接收鍵盤事件的最常見方式是透過回撥輪詢

  • 回撥 - 通常由使用 GLUT 庫的遊戲使用,函式指標被傳遞給 GLUT,它將該函式“註冊”為鍵盤事件回撥。這意味著,任何時候按下或釋放一個鍵,GLUT 都會呼叫相應的函式,傳遞鍵資料,並允許程式相應地做出反應。
  • 輪詢 - 更常用於使用 SDL 的遊戲,如果回撥函式在引擎中破壞了抽象,則輪詢非常有用。輪詢是一個過程,遊戲在空閒時間檢查鍵盤事件集合。因此,對於遊戲迴圈中的每一次傳遞,你的遊戲都可以輪詢集合,從而快速響應按鍵事件,並且不會丟失資料。

每個作業系統都有自己的 TCP/IP API,因此,如果你打算為特定平臺開發,那麼你必須檢視該作業系統的 SDK(例如,Windows API 的 WinSock)。如果你正在編寫跨多個平臺移植的遊戲,一個好的選擇是SDL_net

選擇網路 API 後,應該為遊戲引擎構建封裝套接字的類。你還必須在網路協議 TCP 和 UDP 之間做出決定(儘管透過抽象,可以使用任何一種)。

  • TCP - 此協議在兩臺計算機之間建立連線。如果存在任何錯誤,在計算機之間傳送的資料將被重新發送。此協議的缺點是,它的整體速度不如 UDP 快。
  • UDP - 此協議不建立連線。資料包被髮送到一個地址,傳送者不知道它是否已正確到達並且沒有錯誤。可以使用 UDP 編寫協議來提供錯誤檢查和重新發送功能。

決定權在於程式設計師,以及最適合遊戲的方案。如果主題是網路象棋遊戲,速度不是主要問題,可以使用 TCP 來避免一些麻煩。但是,對於多人 FPS 遊戲,UDP 由於速度更快,是一個更好的選擇。

《Free Fire》是一款非常火爆的遊戲,擁有超過4100萬玩家。Sea Limited 公司於2009年在新加坡成立,最初名為Garena,由上海交通大學和斯坦福大學商學院畢業生李小加創立。Garena最初是一家遊戲開發和發行公司,後來擴充套件成為一家科技巨頭,還提供金融服務和電子商務。2017年,公司更名為Sea,但數字娛樂部門保留了Garena的名字。

同年,《Free Fire》作為一款大逃殺多人遊戲釋出,並迅速獲得國際成功。它在2019年成為全球下載量最大的手機遊戲,併成為Garena的重要收入來源。

2021年,Garena 釋出了圖形增強版《Free Fire Max》,但尚未超越原始版本在收入上的表現。根據AppMagic的資料,這兩款應用在2022年都是下載量最多的射擊類遊戲,分別超過1億次下載。


《Free Fire》已成為與《PUBG Mobile》和《使命召喚:移動版》並列的“三大”射擊類手機遊戲之一,這是因為《堡壘之夜》在2020年8月被從App Store和Google Play中移除。這三款遊戲佔據了該型別遊戲收入的大部分,而該型別遊戲的受歡迎程度下降速度比其他遊戲子類別更快。

2022年初,印度禁止了《Free Fire》和其他53款被認為威脅國家安全的應用;《Free Fire Max》仍然可以在Google Play商店中使用。根據data.ai的資料,《Free Fire》曾是印度下載量第二高的應用,也是消費支出最高的應用。雖然Sea總部位於新加坡,但其最大股東是中國社交媒體公司騰訊控股。2022年,《Free Fire》和Sea的年收入大幅下降,部分原因是印度禁令。

自2019年以來,《Free Fire》也舉辦了電子競技比賽,其世界系列賽在2021年吸引了540萬直播觀眾,成為歷史上觀看人數最多的電子競技賽事。這些區域性賽事在全球範圍內開放,並提供數百萬美元的獎金。

《Free Fire》被《PUBG Mobile》的開發商Krafton指控侵犯版權,該公司在2022年1月對Garena提起訴訟,指控其遊戲物品、機制和外觀存在相似之處。蘋果和谷歌也被列入訴訟,因為它們負責分發這款遊戲,該訴訟尚未解決。

我們收集了關於《Free Fire》的資料和統計資訊。請閱讀以下內容以瞭解更多資訊。

[編輯 | 編輯原始碼]

以下是遊戲開發中使用的免費指令碼引擎列表。

  • KonsolScript - 一款免費的遊戲指令碼語言。
  • Lua - Lua指令碼語言。

遊戲工具

[編輯 | 編輯原始碼]

以下是在遊戲開發中使用的免費軟體工具列表。

  • Blender3D - 一款免費且非常先進的建模軟體,雖然上手難度較高,但功能與任何其他商業建模軟體一樣強大。
  • OGRE - 一款免費的圖形引擎。頂尖水平。
  • Terragen - 一款免費的非商業用途地形生成器。
  • TrueSpace - 專業級的3D建模、動畫和渲染軟體,之前售價高達700美元(USD),現在在被微軟收購後可免費下載。

團隊組建和協調

[編輯 | 編輯原始碼]

其他

華夏公益教科書