忍者ブログ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【捨丸&KID】如何製作分歧劇情與變數介紹(2)

 

所謂的變數像能裝進文字或數值的盒子。在遊戲中想要記下某些東西時,我們可以把那個數值或是文字列裝到變數之中,並且在必要的時候取出內容來使用。

在這裡我們舉一個遊樂園的例子來思考看看。當想要判斷主角是否持有入場券時要怎麼做呢?

 

  1, 首先準備一個變數。我們將這個變數暫稱為「取得入場券情報」。在Nscripter裡數值變數的初期值,也就是在還沒有輸入任何數值前都是為0。

  2, 然後,如果主角通過了購買入場券的劇情,我們便將「取得入場券情報」的變數輸入數值1。這麼如果有通過購買入場券的劇情則「取得入場券情報」的內容便會是1,而沒通過時內容便仍然是0。

  3, 然後,在進行到要進入遊樂園的劇情時,Nscripter對「取得入場券情報」的內容進行檢查。如果裡面的數字是0的話也就是沒有持有入場券而移動到無法進入的劇情。如果裡面數字是1的話就是擁有入場券而移動到進入遊樂園的劇情。  Nscripter可以於所在的狀況下參照各種數值來對遊戲上劇情該如何進行做出判斷。

 

*  變數會被用到的地方

Pattern1:因應條件來處理劇情分歧

  在變數中輸入data

  →判斷是否有符合條件

  →執行配合其狀況的命令

 

  這是在程式處理中常會出現的pattern。就算是經過system customize而變得龐大又複雜的程式,其實在實際上可以說就是把許多單純的條件分歧連接在一起而已。

 

Pattern2:把會變化的數值表示在畫面上

  在變數中輸入data 

  →將變數的內容表示在畫面上

 

  想將文章中的日期、所選擇的物品等會變化的部份表現在畫面上的時後會使用到變數。還有,讓玩家輸入主角的名字在作品中使用也是屬於這個pattern。

 

Pattern3:計算經過了多少次處理

  在變數中輸入count data

  →當完成了所設定的回數後停止重複處理

 

  for~next命令的pattern。

  在這裡請先想成利用變數來計算重複處理的次數即可。

*  變數的種類

  變數有著數個種類。這裡我們先對其種類和使用方法進行說明。

 

*  數值變數

  輸入數值的變數稱為「數值變數」。在Nscripter裡使用「%3」這樣於數字前面放上%來表示(3只是範例 %1 %2 %4 都可以)。

  變數範例

  %3

  在進行計算數值、角色好感度等跟數字有關的處理或是判斷flag時常被使用。在使用sp製作動作系統還是system customize等高度的處理時無法欠缺的變數。

 

*  文字列變數

  輸入文字列的變數。利用像「$3」這樣於數字前面放上$來表示。

  變數範例

  $3

  文字變數會於像「今天的點心是(文字變數)」這樣,於文章中可以變化的文字部份被使用到。

 

Point:明明是輸入文字為何稱為變數?

  有些讀者可能會覺得「明明是輸入文字為何稱為變數?」在英語中變數為「variable」意思是可變化之物。因此我們使用中文的「變數」時在語感和實際功能上有些微差異。

 

*  變數的號碼

  數字變數和文字變數的號碼即使在script中重複使用也沒有關系。

  %3和$3是完全不同的變數。

 

  Nscripter可以設定使用從0號到24999號共25000個變數。

  從0號到199號是普通的變數,於遊戲動作時間雖然會被保存下來,但是一但經過reset後便會被初期化。

  200號到24999號為止的變數即使經過reset也會被保存下來,稱為global變數。

 

*  變數的用途

利用0與1來判斷是否擁有某物(flag處理)

  於數字變數中輸入0(無)1(有)的數值,進行到需要進行盼斷的時候打開變數認數值進行判斷。

對「是否有從師父手上拿到重要道具」進行判斷

  結果:0(沒有)沒有道具無法打敗敵人

        1(有)擁有道具能夠打倒敵人

 

對「是否壓下拉桿」進行判斷

  結果:0(沒有)前方的樓梯沒有降下來無法繼續前進

       1(有)前方的樓梯有降下來可以繼續前進

 

對「是否放過宿敵」進行判斷

  結果:0(沒有)宿敵已經死去,在主角遇到危機的狀況不會來救助。

        1(有)宿敵在遇到危機時會前來救助。

 

這就是被稱為flag判斷的作法。

 

輸入數值以判斷程度

  在變數中輸入數值,直到進行到需要判斷的地方時比較變數之數值以判斷程度。

在買東西時對「金錢是否足夠」進行判斷(數值:金錢)

  結果:金錢<價格  金額不夠

        金錢>價格  可以購買,也會有殘餘金額

        金錢=價格  雖然能夠購買,但是沒有剩下金額。

 

以數值對「女朋友對主角的感情」進行判斷

  結果:好感度>任意設定的數值   喜歡:前進到true end。

        好感度<任意設定的數值   討厭:前進到bad end。

        好感度=任意設定的數值   普通:前進到normal end。

 

對「手槍裡的子彈是否用光」進行判斷

  結果:殘彈<0發  子彈用光

        殘彈>0發   還有子彈

        殘彈=0發  子彈用光

 

在畫面表示(如cut in)等讓sp移動時使用

  於sp的表示座標中使用變數、或是使用loop命令來讓它移動等在圖像的移動表示上可以用到變數。(請參考2-6)

 

*  文字變數的用途

根據不同的情況可以變化成不同的台詞

  在遊戲中,常會有所持的道具不一樣的情況。當台詞裡出現道具的名稱時可以使用。

 

*  變數的使用法

*  代入

  變數在一開始的時候裡面並沒有輸入任何內容(數字變數時原本為0,而文字列變數則是沒有東西)。因此在使用變數之前必須先輸入data。將data輸入變數這件事我們稱之為「代入」。

  於代入時需使用mov命令。

  程式碼

  mov 變數名稱,值(數值或文字列)

  範例(數值變數)

  mov %3,24

  mov為命令本體。

  %3是變數的名稱。

  範例中將24代入%3。

 

  範例(文字列變數)

  mov $3,”早安!”

  mov是命令本體,$3是變數名稱。

  範例中將「早安!」的文字列代入$3之中,注意文字兩邊一定要加上””這表示雙引號中間的資訊都會被判別成字串。

 

*  變數的初期化

  數字變數的預設初期數值為0,要馬上代入數值也是可以。

  但是若要嚴謹地製作時,在遊戲一開始的時候就要先將要使用的變數代入0將其reset。這樣的作業稱為「變數的初期化」,或者直接稱為「初期化」。

  會這麼做是為了防止變數被輸入數值而在判斷時產生錯誤而造成bug。

 

  並且,在進行數值處理時,常會先代入數值作為初期值。

  以6000元代入主角初期所持有的金錢數目

  mov %25,6000

  以10代入珠美的初期好感度

  mov %20,10

  以6發子彈代入手槍的初期子彈數目

  mov %55,6

 

*  變數是可以直接改寫的

  flag原本為0以1代入之後就變為1,雖然這樣容易讓人以為這是增加數值,但是實際上這並不是增加數值而是直接將變數的內容改寫的命令。

  假設有個內容數值為3的變數。

  那麼代入2之後,變數的內容就變成了所代入的2。

  當想要對數字變數的內容進行加減乘除時,必須使用計算處理命令。

 

*  於文章中表示變數

  當想要在畫面上表示文字列變數中的data時,必須直接在文章中輸入「$3」。

  當文章表示執行到變數的位置時,Nscripter會根據變數的內容在畫面上表示內容的值。

  但是數值變數(%)裡面所輸入的數值無法直接表示在畫面上。

(例文)

 

;mode800

*define

clickstr"!?。」",2

game

*start

bg "BG\093.JPG",1

mov $3, "天譴寶寶一號"

每天一大早,$3說你好!

click

end

 

 

*  半形文字無法被表示

  Nscripter原則上於畫面中所表示的文字無法使用半形文字,如果直接將數值變數表述出來的話文字可能會變成亂碼。當數值是偶數個數時還能夠正常表示,但是如果是奇數個數則在之後的畫面表示文字會變成亂碼。

 

  當想要將數值變數內容的數值表現在畫面上的時候:

 

  先判斷數字變數的數值後於文字列中代入對應的全形文字。

  使用將數值轉換成全形文字代入的itoa2命令。

 

  —必須使用上述的處理。

 

*  itoa2命令

  此命令能夠將數值(如果直接被表示會變成半形文字)轉換成全型文字,代入文字列變數中。

  程式碼

  itoa2 文字列變數,數值

  範例

 

  mov %4,2007

  itoa2 $0,%4 ;這表示將%4裡2007的數字轉為2007代入$0中

  $0;在畫面顯示$0

 

  ;畫面上會表示「2007」

 

*  先決定變數號碼的使用規則

  使用Nscripter必須決定哪個變數號碼給哪個變數使用。但是要使用哪種處理方式和哪些變數號碼都是製作者的自由。

  但是如果將變數只是隨意且沒有規劃的配置很容易會造成混亂,再運用變數之前先決定自己的配置規則後再來運用能夠有效的防止bug的產生。

 

  例如將0~10號規劃為在當時會使用到的變數、20~30號角色們的好感度、31~50號是遊戲內的各個flag,這樣根據需求來切分使用的區塊的話能夠防止使用錯誤的變數,也能夠防止bug。

 

*  在變數後面加上comment

  由於變數在script中只是個單純的數字,在完成腳本之後回來檢視,常常會發生「阿咧?這個%294到底是什麼東西的變數?」這樣混亂的情況。

  所以在設定變數時直接在後面加上一個簡易的comment讓製作者能夠一眼就瞭解這個何種變數的話,在之後的處理也會較輕鬆。

 

  mov %20,10 ; 珠美的好感度(初期值10)

 

  並且除了註解之外於筆記本上(或是Excel等紀錄軟體中)製作變數的清單會讓作業變得更為輕鬆。

 

 

拍手[0回]

PR

この記事にコメントする

お名前
タイトル
メール
URL
コメント
絵文字
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
パスワード

この記事へのトラックバック

この記事にトラックバックする