top of page
  • 作家相片任性分析師 GT

程式小白也能當遊戲工程師?RenPy 讓你輕鬆打造自己的遊戲(Ren'Py 入門篇)|教學

已更新:4月20日


renpy logo
Ren'Py Logo

Ren'Py 作為一款新手友善的遊戲設計套件,雖然是建構於 Python,但實際編寫上不須太多 Python 操作,簡單劇本甚至可以完全不使用 Python。


因此也受到許多製作人的青睞!


這次就來和大家一起了解簡單的 Ren'Py 操作!


 

入門篇——教學目錄


💡 延伸閱讀——從 0 到 1 的遊戲專案


 

Ren'Py 是什麼?可以利用 Ren'Py 做出什麼遊戲?


網路上大多對 Ren'Py 的介紹,都會提及它是建構於 Python 的視覺小說遊戲引擎。而更簡單來說,Ren'Py 更像是台灣玩家熟悉的 2D 劇情遊戲(包含 2D 主軸的解謎或乙女遊戲)。


《心跳文學部!》即是使用 Ren'Py 引擎的著名作品之一。



Ren'Py 作為劇情遊戲(或說視覺小說)引擎,基本功能包括設定劇情的主線支線、場景轉換、等等。


同樣地,因為 Ren'Py 是建構於 Python 的遊戲引擎,對於會使用 Python 的製作人,更可以在 Ren'Py 以 Python 程式碼自創基礎功能以外的新功能。


下載連結與支援平台,請參考官網:https://www.renpy.org/


若是對遊戲專案從 0 到 1 的開發規劃有興趣,也可參考站上的另一篇文章:

 

為什麼推薦 Ren'Py?


最主要的兩個原因:「對程式小白友善」且「上手快速」。


如開頭提到,Ren'Py 不需要會 Python 也可以使用,甚至只要會基礎 Python 就能做到很多複雜操作!


Ren'Py Launcher 可以讓製作人直接透過 UI 介面做測試,劇情內容與設定都相當單純。


更重要的是,他的官網文件和網路資源相當豐富(中文資源也是!),即便有問題也不怕找不到解答。


Ren'Py 中文官方文件:https://www.renpy.cn/doc-tw/quickstart.html


 

下載 Ren'Py,一起操作 Ren'Py 基礎功能


✰ 下載並啟動 Launcher


首先,請從官網下載 Ren'Py Launcher:https://www.renpy.org/


完成安裝後,啟動 Ren'Py 可以看到以下 Launcher 內容:

Ren'Py Launcher - 英文版

語言可透過右下小字「preferences」調整成中文(Traditional Chinese)

Ren'Py Launcher - 中文版

✰ 官方範例


Launcher 內預設會提供兩個 Project 供製作人參考使用,也就是畫面上的 PROJECTS 區塊 Tutorial、The Question(trial_project , room_exploration 並非預設,是我自己新開的專案)


一開始還不知道怎麼開始,很建議先看一下預設的 The Question 內容,這是官方提供的遊戲 Demo,可以了解 Ren'Py 可以做到什麼事,再透過 Tutorial 了解細部功能與操作!


📍 開啟專案路徑:PROJECTS ➡️ The Question ➡️ Launch Project(啟動專案)


Ren'Py 官方專案 - The Question

所有範例專案的劇情程式都存放在 script.rpy,可以在 Launcher 右上區塊「編輯檔案」的 .rpy 檔案中找到,並進一步了解裡面的編寫方式。


💡 小提醒:Ren'Py 預設是用 Atom 編輯 .rpy 檔,沒有編輯器的人記得須先下載才能進行編輯。


✰ 開始製作自己的遊戲


看完範例,若要建立一個新的 Project,則可點擊左下方文字:Create New Project(新建專案),輸入專案名稱和遊戲畫面尺寸後,即可開始編輯自己的遊戲內容!


基礎功能有以下(底下內容都在 script.rpy 中進行編輯):


一、人物與對話


出場角色都必須在 script.rpy 劇情開始前完成定義。定義方式:

# 範例
# define 角色程式代稱 = Character('角色名稱')
define m = Character('賀玄')

也可以加入更多參數:

# 範例
# define 角色程式代稱 = Character('角色名稱', color = '角色名稱顏色')
define m = Character('賀玄', color="#a1a0f2")

完成角色定義後,則可以開始劇情:

# 範例
# define 角色程式代稱 = Character('角色名稱', color = '角色名稱顏色')
define m = Character('賀玄', color="#a1a0f2")

label start:
    
    m "大家好!"
    

label start 的內容則是遊戲正式劇情,每行雙引號("")表示對話。若沒有在雙引號前指定將角色程式代稱,則不會顯示對話角色,適合用來作為旁白或描述動作。


若要測試遊戲內容,則必須回到 Launcher,選定 Project 後,點選「啟動專案」。


此範例中,我們設定的唯一角色程式代稱為 m,故以上劇情中只能看到角色賀玄只說了一句「大家好」。



有關角色(Character)的其他參數:https://www.renpy.cn/doc-tw/quickstart.html#character


二、角色圖像與背景圖


劇情遊戲少不了吸睛的圖像,顯示角色人像在遊戲中則可使用 show 的功能:

define m = Character('賀玄', color="#a1a0f2")

label start:

    show m_smile
    
    m "大家好!"
    

這裡的 m_smile 為圖檔,程式碼會自動抓取 game/images 資料夾中,檔名為 m_smile 的圖檔(eg. png, jpg, jpeg)顯示。


由於預設都是置中顯示,若要設定位置可以用 at 指定位置:

define m = Character('賀玄', color="#a1a0f2")

label start:

    show m_smile at left
    
    m "大家好!"

若要隱藏角色人像,則使用 hide 指令:

define m = Character('賀玄', color="#a1a0f2")

label start:
    
    show m_smile at left
    
    m "大家好!"
    
    hide m_smile

若遇到檔名不同,或是想先定義圖片再使用於劇本,亦可用以下方式呈現一樣的效果:

define m = Character('賀玄', color="#a1a0f2")
image m_smile = "images/character/man/happy_man.png"

label start:
    
    show m_smile at left
    
    m "大家好!"
    
    hide m_smile

背景圖設定和人物設定大同小異,背景圖若存在 game/images 資料夾中,則可直接呼叫使用。顯示方式為 scene:

define m = Character('賀玄', color="#a1a0f2")
image m_smile = "images/character/man/happy_man.png"

label start:

    scene inside_building
    
    show m_smile
    
    m "大家好!"
    
    hide m_smile

三、選單 (Menu)


選單內容即為在劇情進行中,玩家能依據選單提供的行動來做選擇,藉此觸發支線劇情。


選單功能名稱為 menu,可以在 menu 底下提供不同選項,並在選項中決定不同選項要觸發什麼內容。

# 選單範例
        
label start:

    menu:
    
    "晚餐要吃什麼?" # 第一句可以先補充情境敘述,供玩家選擇時參考
    
    # 日式料理作為選項一

    "日式料理": 
    
        # 這邊放選擇日式料理後的觸發行為
        
        "走吧,去吃日式料理!"
    
    # 漢堡作為選項二
        
    "漢堡":
    
        # 這邊放選擇漢堡後的觸發行為
            
        "走吧,去吃漢堡!"

這邊也提供官方專案 The Question 當中的選單程式碼:


# 前略

    menu:

        "當她吸引了我的目光時,我決定......"

        "馬上問她。":

            jump rightaway 
            
            # jump 功能:跳躍到指定 label
            # 此處會跳到 label rightaway 繼續劇情

        "以後問她。":

            jump later
            # 此處會跳到 label later 繼續劇情            

label rightaway:

    show sylvie green smile

... # 後略

label later:

    "我現在還沒辦法下定決心,決定之後再問她。"

... # 後略

補充:label start 是遊戲必須要有的 label,為的是讓遊戲能辨別劇情從哪裡開始。除此之外,製作人是可以自由添加其他 label 來拓展 / 管理劇情支線的。


✰ 做好遊戲啦!輸出成 Mac 和 PC 版本供玩家遊玩


若是完成遊戲劇本編輯,可以回到 Launcher,準備輸出


📍 輸出路徑:Launcher ➡️ Actions 區塊 ➡️ 建立釋出版(Build Distributions)



點選後,可以根據「建立套件」處選擇想將遊戲輸出到哪個系統環境。決定好後,就可以點選「建立」。


📍 (範例)輸出 Mac & Windows 檔案:建立套件 ➡️ 勾選 ✔️ `PC: Windows & Linux` 以及 ✔️ `Macinotsh`  ➡️ 建立


可從「建立套件」中選擇要輸出成什麼系統

隨後,Launcher 就會依照選擇的系統環境將遊戲打包成對應的 zip 檔。這樣就大功告成啦!


 

結語 & 教學素材來源


這次的教學很簡單地概括了從零到一的基礎功能,當然 Ren'Py 有的功能遠遠不止這些!還有音樂、自建按鈕 ... 等等,相當客製化的功能存在,進階程式碼內容可以參考這篇文章:


素材來源:

貼心提醒:網路素材請注意授權,避免侵犯作者著作權

 

自己的測試作品


因為打造一款遊戲需要耗費大量的心力,同時,這也是難以一人達成的目標!


完成一款遊戲,除了需要發想遊戲腳本,還需要美術、音樂,以及程式人員把一切彙整起來。因此,也為了完成這個浩大工程,很希望有想開發自己遊戲的朋友們一起交流!


有興趣的人歡迎透過 Email 或站內的「與我聯繫」來聊聊。對遊戲開發沒經驗但有興趣的人也很歡迎 :)


遊戲 Demo


一、純劇情遊戲


早期開發測試用,純對話劇情。遊戲影片:URL




二、2D 密室解謎遊戲


👉 直接到遊戲網頁試玩


透過與指定的背景物品互動解謎的遊戲。


若是游標放置在可互動物品上(如:畫面牆上的肖像畫),物件會發光顯示。


點擊可互動物件後,即可觸發線索(或其他支線)。


若是對從 0 到 1 的開發過程有興趣,可以參考這兩篇文章:


或是直接到遊戲網頁試玩


兩項 Demo 作品的素材來源


歡迎有興趣的朋友們一起加入!

 

最後,關於教學內容有任何問題都可以提出!或是有其他想了解的功能也歡迎許願 :)


Comments


bottom of page