RGSS

RGSS全稱是Ruby Game Scripting System,意指Ruby 遊戲腳本系統,是套用面向對象腳本語言 Ruby 開發 Windows 2D 遊戲的系統。使用 RGSS,就和 C 語言等程式語言那樣簡單,能創建完全原創的遊戲系統。Ruby 是一種初學者也能很容易使用,並且功能強大的高級語言。

簡介,語法,程式示例,默認腳本結構,使用用途,

簡介

日本的遊戲製作軟體Rpg Maker XP所使用的內部腳本系統,是ruby的擴展庫。
RGSS(Ruby Game Scripting System),本文檔是從 Ruby 的參考手冊上摘錄下使用 RGSS 的必要信息,加上關於 RGSS 獨特方法的解說重編輯而成。對於 RGSS 的用戶,在遊戲程式設計方面不重要的部分進行了大幅刪減,對各處描述也稍作了修改。因此在描述上可能會出現不正確的情況。作為 Ruby 的參考,請注意那些非常簡單的東西。
RGSS編輯器RGSS編輯器
RGSS中的腳本:
在RMXP(Rpg Maker XP)中,按F11就可以打開[腳本編輯器],左邊的視窗是腳本列表,右邊的視窗是腳本內容,左下角可以修改腳本名稱。
在RMXP(Rpg Maker XP)中,遊戲開始運行後,總是從最上邊的腳本開始運行,依次往下,所以,經常把變數聲明、類聲明、函式聲明、函式定義的腳本放在上面,而MAIN腳本總是放在最後。

語法

變數類型:
實變數 @var
常量 VAR
數據類型(註:RGSS中變數類型為弱變數,無需定義,只要初始化即可。):
數值型 0~9
浮點型 0~9,小數點
字元串型 加了""的在ASCII碼錶上的任意字元。
布爾型 true/false
空型 nil
RGSS是Ruby的遊戲腳本系統,所以關鍵字與Ruby原版大同小異,但也有少數修改,如:
RGSS1.02J(或更高版本)中,puts()函式功能被簡化為p,添加了print函式,
RGSS1.03J中添加了塊注釋方法,即以“=begin”開頭,以“=end”結束。
RGSS遇到換行符就自動結束當前的這一行,這一點是與VB相似的,當然,RGSS也可以象C語言那樣以西文分號結束,這點看習慣。
RGSS主程式開始與結束
begin
end
RGSS庫的開始與結束
module 庫名
程式段
end
RGSS類的開始與結束
class 類名 < [父類]
程式段
end
RGSS自定義函式的開始與結束
def 函式名[(參數)]
include 庫名
RGSS類的調用
類名.new[(類中initialize函式的參數)]
RGSS自定義函式的調用
函式名[(參數)]
RGSS中的條件分歧
1.if語句
示例:
if $a == "66rpg"
print("歡迎來到#{$a}")
end
2.if...else語句
示例:
if $username == "admin" and $password == "abc"
print("你好,Admin")
else
print("您無權察看!!")
exit
end
3,if...elsif...else語句
示例:
if $name == "Tony" and $lastname == "Fox"
print("Welcome, Tony Fox!")
elsif $name == "Iceandsnow" and $lastname == "Fox"
print("Welcome, Iceandsnow Fox!")
else
print("Unable Name")
end
4.case語句
case 變數
when 值
語句塊
when 值
語句塊
else
語句塊
end
RGSS中的循環
while ~ end在滿足特定條件期間進行循環的情況下使用 while 語句。
a = 0 # 為變數 a 賦值代入 0。
i = 1 # 為變數 i 賦值代入 1。
while i <= 5 # 當變數 i 為 5 以下時循環開始(重複以下處理),
a += i # 變數 a 加上 i 的值。
i += 1 # 變數 i 的值增加 1。
end # 循環結束。
p a # 顯示計算結果。
這個示例是求從 1 到 5 這五個數字總和的程式。在這裡,變數 i 是用來產生從 1 到 5 這五個數字用的。當然變數名也可以不用 i,一般情況下循環處理用的變數會使用 i、j、k 為名稱。
那么,這個程式最重要的是 i += 1 這行。如果沒有這行 i 的值永遠為 1,而 i <= 5 的條件也會一直滿足,就會成為無限循環。因此,這裡每次都向 i 加上 1 使得 i 的值依次變為 2、3、4、5、6 從而使得循環結束。
變數 a 和 i 的數值變化,如下表所示。
循環 a 的值 i 的值
初始狀態 0 1
1 次後 1 2
2 次後 3 3
3 次後 6 4
4 次後 10 5
5 次後 15 6
循環 5 次後,在 a 的數值裡面實際上進行了 1+2+3+4+5 的計算,i 的值也超過了 5 而執行 end 使得循環結束。
然後以 p 命令顯示最終 a 的值,就會顯示出答案 15。
變化範圍
數值的範圍,例如類似於「從 1 到 5」這樣的概念就稱為變化範圍。
1..5
上述示例表示「從 1 到 5」的意思。使用 .. 運算符,就能作成一個變化範圍。
而且,使用 ... 運算符也可以。
1...5
和 .. 不同的是「不含最後一個數」。所以,這種情況實際上表示的是「從 1 到 4」的意思。
for ~ in ~ end
想在變化範圍表示的範圍內循環的情況下使用 for 語句。
a = 0 # 為變數 a 賦值代入 0。
for i in 1..5 # 變數 i 的值按從 1 到 5 的範圍變化,
a += i # 變數 a 加上 i 的值。
end # 循環結束。
p a # 顯示計算結果。
這個示例和使用 while 語句的示例完全相同,也是求從 1 到 5 這五個數字總和的程式,但比使用 while 的情況更加簡潔。在 while 中變數 i 加上 1 表示的是從 1 到 5 的範圍,然而在 for 中是用變數 i 按「從 1 到 5 的範圍」的順序代入來表示。表面看起來不同,但實際上進行的是意思完全相同的處理。
Ruby 中有許多語法,循環中也存在各種各樣不同的方法。在不同語法使用中,請按照這個示例提示的「讓編寫更簡便」的方式來思考。實際上,如果理解了條件分歧和循環的話,就能進行大部分邏輯運算了。
loop do ~ end
未指定循環次數和條件的情況下,也就是想進行無限循環時使用 loop 語句。這個與 while 和 for 語句的性質稍微有所不同,一般情況下沒有必要注意。
i = 0 # 為變數 i 賦值代入 0。
loop do # 循環開始。
i += 1 # 變數 i 的值增加 1。
p i # 顯示變數 i 的值。
end # 循環結束。
這個示例是「一邊把 i 的值加上 1,一邊顯示 i 的值」的程式,沒有結束條件。一旦運行的話就會連續顯示 1、2、3……。如果這種對話框不斷顯示的話,就算要結束程式也是不可能的,只能按著 F12 鍵不放強行關閉對話框,並點擊右上方的結束按鈕關閉程式。
break
想中途中斷循環就要使用 break 命令。
i = 0 # 為變數 i 賦值代入 0。
loop do # 循環開始。
i += 1 # 變數 i 的值增加 1。
if i == 5 # 如果變數 i 的值為 5 的話,
break # 中斷循環。
end # 條件分歧結束。
p i # 顯示變數 i 的值。
end # 循環結束。
上述示例在程式中加上了「i 等於 5 的就中斷循環」的條件。運行該程式,顯示 1、2、3、4 就結束了。
break 即使在 while 和 for 等其它方法作成的循環中也能使用。
next
在不中斷循環的情況下,跳過本次循環而進入下一次循環時使用 next 命令。
for i in 1..5 # 變數 i 的值按從 1 到 5 的範圍變化,
if i == 3 # 如果變數 i 的值為 3 的話,
next # 進入下一次循環。
end # 條件分歧結束。
p i # 顯示變數 i 的值。
end # 循環結束。
運行這個示例,會顯示 1、2、4、5。

程式示例

1,helloworld程式
begin
print("HelloWorld!!")
end
2,數值運算
begin
x = 10
y = 20
p x+y
end
3,條件判斷
begin
a = 10
if a>=5
print("a的值大於等於5")
else
print("a的值小於等於5")
end
end
4,循環
begin
for i in 1..3
print("這是第#{i}次顯示")
end
end
begin
do
print("這是第#{i}次顯示")
while i <= 4
end
begin
loop do
i++
print("這是第#{i}次顯示")
if i = 4
break
end
end
end
class My_Class
def mian # 主處理
x = 6
y = 5
addnum(x, y)
end
def addnum(num1, num2)
sum = num1 + num2
p sum
end
end
6,類的調用
begin
if $scene != nil
$scene.main
else
exit
end
$scene = Scene_MyClass.new
end
7,庫的生成及調用
module MYMODULE
def division(num1, num2)
sum = num1/num2
return sum
end
end
class My_Class
include MYMODULE
def main
x = 25
y = 16
z = division(x, y)
p z
end

默認腳本結構

Ruby Game Script System
├─Game_Actors 處理角色排列的類。
├─Game_BattleAction 處理行動 (戰鬥中的行動) 的類。
├─Game_Battler 處理戰鬥者的類。
│ ├─Game_Actor 處理角色的類。
│ └─Game_Enemy 處理敵人的類。
├─Game_Character 處理角色的類。
│ ├─Game_Event 處理事件的類。
│ └─Game_Player 處理主角的類。
├─Game_CommonEvent 處理公共事件的類。
├─Game_Map 處理地圖的類。
├─Game_Party 處理同伴的類。
├─Game_Screen 處理螢幕的類。
│ └─Game_Picture 處理圖片的類。
├─Game_SelfSwitches 處理獨立開關的類。
├─Game_Switches 處理開關的類。
├─Game_System 處理系統附屬數據的類。
├─Game_Temp 處理在沒有存檔的情況下的臨時數據的類。
├─Game_Troop 處理隊伍的類。
├─Game_Variables 處理變數的類。
├─Interpreter 執行事件命令的解釋器中的命令的類。
├─Scene_Battle 處理戰鬥畫面的類。
├─Scene_Debug 處理調試畫面的類。
├─Scene_End 處理遊戲結束畫面的類。
├─Scene_Equip 處理裝備畫面的類。
├─Scene_File 處理遊戲讀取、存檔畫面的基類。
│ ├─Scene_Save 處理存檔畫面的類。
│ └─Scene_Load 處理讀取畫面的類。
├─Scene_Gameover 處理遊戲結束畫面的類。
├─Scene_Item 處理物品畫面的類。
├─Scene_Map 處理地圖畫面的類。
├─Scene_Menu 處理選單畫面的類。
├─Scene_Name 處理名稱輸入畫面的類。
├─Scene_Shop 處理商店畫面的類。
├─Scene_Skill 處理技能畫面的類。
├─Scene_Status 處理狀態畫面的類。
├─Scene_Title 處理標題畫面的類。
├─Spriteset_Battle 處理戰鬥的精靈的類。
├─Spriteset_Map 處理地圖的精靈的類。
├─Bitmap(RGSS) 點陣圖的類。
├─Color(RGSS) 顏色的類。
├─Font(RGSS) 字型的類。
├─Plane(RGSS) 平面的類。
├─Rect(RGSS) 矩形的類。
├─RGSSError(RGSS) 處理 RGSS 內部異常的類。
├─RPG(Module) 集合了 RPGXP 數據結構等的模組。
│ ├─RPG::Cache(Module) 讀取 RPGXP 的各種圖片,建立並存儲 Bitmap 對象的模組。
│ ├─RPG::Sprite(RGSS) 追加了 RPGXP 使用的各種效果處理的精靈的類。
│ │ └─Sprite_Character 角色顯示用精靈。
│ │ └─Sprite_Battler 戰鬥顯示用精靈。
│ ├─RPG::Weather(RGSS)用 RPGXP 事件指令顯示天氣效果(雨,風,雪)的類。
│ ├─RPG::Map(Data)地圖的數據類。
│ ├─RPG::MapInfo(Data) 地圖信息的數據類。
│ ├─RPG::Event(Data) 地圖事件的數據類。
│ │ └─RPG::Event::Page(Data) 事件頁的數據類。
│ │ ├─RPG::Event::Page::Condition(Data) 事件頁“條件”的數據類。
│ │ └─RPG::Event::Page::Graphic(Data) 事件頁“圖像”的數據類。
│ ├─RPG::EventCommand(Data) 事件指令的數據類。
│ ├─RPG::MoveRoute(Data) 移動路線的數據類。
│ ├─RPG::MoveCommand(Data) 移動命令的數據類。
│ ├─RPG::Actor(Data) 角色的數據類。
│ ├─RPG::Class(Data) 職業的數據類。
│ │ └─RPG::Class::Learning(Data) 職業“學會的特技”的數據類。
│ ├─RPG::Skill(Data) 技能的數據類。
│ ├─RPG::Item(Data) 物品的數據類。
│ ├─RPG::Weapon(Data) 武器的數據類。
│ ├─RPG::Armor(Data) 防具的數據類。
│ ├─RPG::Enemy(Data) 敵人的數據類。
│ │ └─RPG::Enemy::Action(Data) 敵人“行為”的數據類。
│ ├─RPG::Troop(Data) 隊伍的數據類。
│ │ ├─RPG::Troop::Member(Data) 隊伍成員的數據類。
│ │ └─RPG::Troop::Page(Data) 戰鬥事件頁的數據類。
│ │ └─RPG::Troop::Page::Condition(Data) 戰鬥事件頁“條件”的數據類。
│ ├─RPG::State(Data) 狀態的數據類。
│ ├─RPG::Animation(Data) 動畫的數據類。
│ │ ├─RPG::Animation::Frame(Data) 動畫“幀”的數據類。
│ │ └─RPG::Animation::Timing(Data) 動畫“SE 與閃爍的時機”的數據類。
│ ├─RPG::Tileset(Data) 圖塊的數據類。
│ ├─RPG::CommonEvent(Data) 公共事件的數據類。
│ ├─RPG::System(Data) 系統的數據類。
│ │ └─RPG::System::Words(Data) 系統“用語”的數據類。
│ ├─RPG::AudioFile(Data) 聲音檔案的數據類。
├─Sprite(RGSS) 精靈的類。
│ ├─Sprite_Picture  顯示圖片用的精靈。
│ ├─Sprite_Timer  顯示計時器用的精靈。
│ └─Arrow_Base  在戰鬥畫面使用的箭頭游標的精靈。
│ ├─Arrow_Enemy  選擇敵人的箭頭游標。
│ └─Arrow_Actor  選擇角色的箭頭游標。
├─Table(RGSS) 多維數組的類。
├─Tilemap(RGSS) 管理元件地圖的類。
├─Tone(RGSS) 色調的類。
├─Viewport(RGSS) 視口的類。
└─Window(RGSS) 遊戲內視窗的類。
└─Window_Base  遊戲中全部視窗的基類。
├─Window_Selectable  擁有游標的移動以及滾動功能的視窗類
│ ├─Window_Command  一般的命令選擇行視窗。
│ ├─Window_MenuStatus  顯示選單畫面和同伴狀態的視窗。
│ ├─Window_Item  物品畫面、戰鬥畫面、顯示瀏覽物品的視窗。
│ ├─Window_Skill  特技畫面、戰鬥畫面、顯示可以使用的特技瀏覽的視窗。
│ ├─Window_Target  物品畫面與特技畫面的、使用對像角色選擇視窗。
│ ├─Window_EquipRight  裝備畫面、顯示角色現在裝備的物品的視窗。
│ ├─Window_EquipItem  裝備畫面、顯示瀏覽變更裝備的候補物品的視窗。
│ ├─Window_ShopCommand  商店畫面、選擇要做的事的視窗
│ ├─Window_ShopBuy  商店畫面、瀏覽顯示可以購買的商品的視窗。
│ ├─Window_ShopSell  商店畫面、瀏覽顯示可以賣掉的商品的視窗。
│ ├─Window_Message  顯示文章的信息視窗。
│ ├─Window_PartyCommand  戰鬥畫面、選擇戰鬥與逃跑的視窗。
│ ├─Window_DebugLeft  調試畫面、指定開關及變數塊的視窗。
│ └─Window_DebugRight  調試畫面、個別顯示開關及變數的視窗。
├─Window_Help  特技及物品的說明、角色的狀態顯示的視窗。
├─Window_Gold  顯示金錢的視窗。
├─Window_PlayTime  選單畫面顯示遊戲時間的視窗。
├─Window_Steps  選單畫面顯示步數的視窗。
├─Window_SkillStatus  顯示特技畫面、特技使用者的視窗。
├─Window_EquipLeft  裝備畫面的、顯示角色能力值變化的視窗。
├─Window_Status  顯示狀態畫面、完全規格的狀態視窗。
├─Window_SaveFile  顯示存檔以及讀檔畫面、保存檔案的視窗。
├─Window_ShopNumber  商店畫面、輸入買賣數量的視窗。
├─Window_ShopStatus  商店畫面、顯示物品所持數與角色裝備的視窗。
├─Window_NameEdit  名稱輸入畫面、編輯名稱的視窗。
├─Window_NameInput  輸入名稱的畫面、文字選擇視窗。
├─Window_InputNumber  信息視窗內部使用、輸入數值的視窗。
├─Window_BattleStatus  顯示戰鬥畫面同伴狀態的視窗。
└─Window_BattleResult  戰鬥結束時、顯示獲得的 EXP 及金錢的視窗。
【其中帶(RGSS)的類指內部類,帶(Data)的類指RMXP的數據類】

使用用途

基本上,使用RPG Maker XP設計的遊戲是完全使用RGSS撰寫的。
一般而言,使用者可以使用內建的RGSS腳本,加上事件指令來編輯遊戲系統,而不需要懂得/親自撰寫任何程式。如果有事件指令無法實現的系統時,則可以透過修改RGSS完成。
此外,使用者也可以完全不使用內建的RGSS腳本,自己用RGSS重頭編寫想要的遊戲系統。雖然說RGSS本身是專門為RPG設計而成,但理論上要使用RGSS製作其他遊戲(動作遊戲、益智遊戲等...)也是可行的。
網路上公開的自製RGSS腳本非常的多,大部份使用起來都非常的簡單,只要按照說明復置貼上到腳本編輯器就好。另外“RPG Maker VX”中搭載了名為RGSS2的RGSS進化版本。

相關詞條

熱門詞條

聯絡我們