作者:艾薩克[艾]
日期:2007/04/15 11:40
會發這篇主題主要是因為最近在弄Java的時候
發現了RM跟Java有很多類似的地方呢..
Java是Object Oriented languag (OO)
簡單來說就是以物件為概念的語言
每個物件有自己的屬性(開關,變數等等)
而物件之中又有獨立的程式/功能
當主程式需要一個動作的時後,只要呼叫物件中的程式就可以了
假設我們有個物件『人物』
裡面有個功能叫做『向前走』
那麼要使這個人物往前移動的話,主程式只要呼叫『人物』裡面的『向前走』就可以了
說了這一堆,跟RM有什麼關係呢?
如果把RM的每個物件的分頁當作一個功能來使用
看起來是不是跟Java很接近呢?
假設我們設定了一個事件『人物』
分頁1的內容是:指定動作,這個事件,一步前進
那麼要讓這個事件往前移動的話,呼叫『人物』的第一頁就可以了
這樣聽起來好像很麻煩
弄的這麼麻煩到底有什麼用?
直接指定事件向前移動不是更方便?
當我們指定特定事件的時候的確是不需要這麼麻煩
可是如果我們需要同時操控10個或者100個事件呢?
慢慢設定100個事件會花掉多少時間我不想去算
不過可以確定的是,用手動設定那100個事件很花時間
利用上面說到的事件分頁利用可以很輕鬆的設定100個事件
在RM裡面,事件呼叫分成三種
公用事件,地圖事件(指定特定事件),地圖事件(指定變數事件)
利用第三個呼叫方式,配合上迴圈的運用
可以自動的呼叫數個事件內的功能
而且這樣在主程式裡面的程式碼可以大幅減少
閱讀/除錯起來更為輕鬆
呼呼,那麼就先寫到這邊吧
有任何指教也請提出來吧
(早會用這方法的高手也請鞭的輕一點(死)
─────────────────────────────────
回應 (1)
~仁傑~ 於 2007/04/15 12:54
其實啊, 閱讀/除錯方面不見得更為輕鬆
原因就跟我一次寫ARPG的慘劇有關(?)
(雖然跟艾薩克的原意有分別, 不過頗能解釋情況)
先想像一下, 我設計了一個史萊姆的事件, 把它大部分的動作和反應都放在事件裡面
(假設史萊姆的行動完全一致!當一個被打就同時受傷!)(噗)
然後我用一個主程式事件控制它們的一切行為....
嗯, 之後我將史萊姆事件複製在不同的地圖上
如果, 如果有BUG出現的時候~
發現BUG根本不在控制行為的主程式中, 而是史萊姆事件的某頁中
那麼你就要在不同的地圖上找出所有史萊姆事件修正
如果真的複製了一百個才發現BUG的話
找一百個史萊姆不比在主程式上改一百次輕鬆得多吧......
重新複製一百個也不見得奏效到哪裡......
-----------------------------------
結論就是BUG在事件中的話, 不見得有多輕鬆......
當然用在簡單的東西上(例如有隊士兵在集訓)應該是超級不錯的XDD
總之謝謝分享喔~XD
─────────────────────────────────
回應 (2)
~仁傑~ 於 2007/04/15 13:03
對了, 說到這個方便的技巧
GM(Game Maker)或許會更為適合吧
因為用過GM的人也知道, 所有事件都放在Object這個夾中
然後可以將同一事件複製一百次一千次, 改的時候只需要改Object中的那個事件
記憶中~好像是一個那事件的動作指令 = 同時指令地圖上的所有複製事件
那就真的達到閱讀/除錯超級輕鬆的情況
─────────────────────────────────
回應 (3)
艾薩克[艾] 於 2007/04/15 13:24
>仁傑
可以用地圖事件在呼叫公用事件-w-+
這樣只要修改公用事件1次,全部的事件都修改好了
這也是OO的另一個特色-獨立運行
把每個事件當作一個介面,呼叫另外一個相關的功能
然後功能再往下細分成更多的功能
話說OO的本意就是讓程式設計分工化
提昇程式碼的可修改性跟減少程式呼叫的複雜化(雖然這點我個人還不能做的很好...)
另,GM我沒什麼研究(死
那個對我來說太複雜了(?)
─────────────────────────────────
回應 (4)
Serrok 於 2007/04/15 13:33
...怎麼說起來也和Flash的Action Script好像...(炸逃)
─────────────────────────────────
回應 (5)
anby 於 2007/04/15 15:43
不過rm的自由度比起java或是gm小就是......
─────────────────────────────────
回應 (6)
~仁傑~ 於 2007/04/15 17:13
> 艾薩克
這樣也是沒錯啦~ <= 當時完全忘記了公用事件
不過隨著事件的複雜性增加, 用到的公用事件會變得很多(死)
還有的是, 如果真的說起我的ARPG慘劇的話
事情就不只是單單修改公用事件那麼簡單(?)
(一切都是某傑半用RGSS半用事件的後果)
─────────────────────────────────
回應 (7)
小書童 於 2007/04/15 17:42
這個就很像物件導向的原理很像(?)
NPC生的兒子也是NPC,所以絕對會有老爸特性
@@不錯的好方法~謝拉~
去試試看,有問題再請教XD
─────────────────────────────────
回應 (8)
裂神妖 於 2007/04/15 18:26
Object Oriented languag.......
e:我被拋棄了.....(泣
(毆
這方法我"推箱子"系統有用過
當初只是覺得每個箱子都要設覺得很麻煩XD
才想到了這方法
─────────────────────────────────
回應 (9)
syu小優 於 2007/04/15 19:33
即是說, 在RM中要愛用 [公用事件]?
抱歉我想問一句, JAVA都用來做什麼?
─────────────────────────────────
回應 (10)
Serrok 於 2007/04/15 23:16
>優
JAVA應用的層面非常非常廣...
從手上的小小的手機甚至到太空船上的程式都有(愣)
大多數都是作為控制和溝通電子產品介面使用這樣
是一種"物件導向"的程式語言~
─────────────────────────────────
回應 (11)
艾薩克[艾] 於 2007/04/15 23:20
>Serrok
Flash..沒研究XD
等有研究的時候再來寫一篇從Flash看RM(?)
>anby
肯定的
畢竟RM不是專門拿來寫程式的阿
>仁傑
除了高畫質跟多按鍵以外
個人不是很喜歡RMXP....|||
RGSS雖然很好用,可是因為這樣把許多內建功能取消
實在不知道開發小組在想什麼
>小書童
我不知道OO的中文翻譯是不是你說的物件導向
聽起來感覺挺像的XD
>裂神妖
我在BnB也用到這東西呢XD
畢竟BnB的事件超過200個...(默
>syu小優
公用事件很好用,不過這次的主題不是推獎公用事件的好(炸
主要是說利用地圖事件的分頁來減少一堆重複的程式碼
另,Java的用途很多
手機遊戲大部分也都是Java做的
網頁設計也會用到JavaScript(這好像跟Java有點不同..)
─────────────────────────────────
回應 (12)
艾薩克[艾] 於 2007/04/15 23:28
>Serrok
竟然趁我打回應的時候把我要說的說掉了(毆
聽說汽車跟冰箱裡面也有Java喔-w-+
好像有點離題了(死
─────────────────────────────────
回應 (13)
小書童 於 2007/04/16 01:10
>>艾薩克[艾]
這樣的話,要先設定好第一個然後再進行複製100個
再用這三種方式操作?
這樣的話每一支都做同樣的動作吧?
我是想到可以事件內容用回圏判定自己亂數走路
= =|||這樣應該使用移動類型就好了orz
─────────────────────────────────
回應 (14)
艾薩克[艾] 於 2007/04/16 01:19
>小書童
這的確是用在同樣動作指定的時候比較方便
不過根據設計者的作法不同
弄出來的東西也可以很多元化
在這邊說的只是個概念般的東西
實際的運用就沒有多加講解(死
─────────────────────────────────
回應 (15)
syu小優 於 2007/04/16 01:44
>RGSS雖然很好用,可是因為這樣把許多內建功能取消
>實在不知道開發小組在想什麼
聽到這句後突然很想哭啊 ...
─────────────────────────────────
回應 (16)
裂神妖 於 2007/04/16 02:19
>RGSS雖然很好用,可是因為這樣把許多內建功能取消
所以我實在對某些一看到自己用2K3做不出來的東西就直接叫人用XP的人感到無言
擺明是看不起2K3= =
─────────────────────────────────
回應 (17)
霹靂神K 於 2007/04/16 09:29
Enterbrain在省成本
以腳本編輯器為主打
事實上弄一個腳本編輯器應是容易多了
比較花些時間的基本操作介面省略了不少
有腳本編輯器當然是好的
但RM2X的一般操作介面功能已經很鳥了
結果XP的更鳥,東刪刪西刪刪...
另外,除了XP的Ruby外
RM不能弄出物件導向設計
你說的是以物件的概念去設定屬性而已
沒辦法自由設定公有私有成員
沒辦法自由產生物件
簡單的說就是無法設計真正的類別
到最後你還是得手動產生"偽"物件
用函式一個一個代入屬性
而且那些屬性要存在什麼位置還得手動設定(所以是"偽"物件)
在還沒有物件時就直接用公式等方法設定還比較快
結果除了程式碼比較整齊好整理外
沒別的好處...orz
─────────────────────────────────
回應 (18)
小書童 於 2007/04/16 10:15
>>艾薩克[艾]
可以進階教學了嗎XD
======================================================
XP刪了哪些東西?差在哪?
~'~或許可以用RM功能自己自創新物件程式碼(好像不可能)
有辦法讀取事件的分頁裡的內容嗎?好像只能讀取事件分頁的ID
─────────────────────────────────
回應 (19)
霹靂神K 於 2007/04/16 12:01
交通工具、地形判斷被移除掉;
事件的觸發條件、部份事件指令縮水…
不過也新增了一些新玩意就是
有些不錯用,但我還是覺得以前有些功能不該刪
─────────────────────────────────
回應 (20)
黑衣蒙面人 於 2007/04/16 12:33
沒...沒有地形判斷!?=口=
─────────────────────────────────
回應 (21)
艾薩克[艾] 於 2007/04/16 12:57
播放影片的功能也取消了(死
雖然說那個功能好像幾乎都沒有用到(汗
>小書童
進階是要給作者(?)自己去想的阿XD
照本宣讀的話,程式之魂可是會哭泣的(?)
─────────────────────────────────
回應 (22)
米開朗基羅十八世 於 2007/04/16 15:54
要是RM有Warcraft III World Edit的水準就好了
一定可以有很多非常厲害的遊戲出現
─────────────────────────────────
回應 (23)
小書童 於 2007/04/16 17:25
>>艾薩克[艾]
說了半天,難道要交學費@@??
>>霹靂神K
原來如此...真的很頭痛呢..
─────────────────────────────────
回應 (24)
~仁傑~ 於 2007/04/16 19:45
大家都好像離題了XDD"
地形判斷是有的, 一個簡單的RGSS指令就做到了
可以參考腳本中的Interpreter~ 會學到很多RGSS化的指令
我比較在乎的是沒有角色色調控制(只有色相控制)和角色閃爍=W="
還有公用事件的並列&自動執行居然一定有開關為條件!!!
(還好我直接改RGSS腳本補完了)
─────────────────────────────────
回應 (25)
Serrok 於 2007/04/18 18:12
>艾薩克
喔呵呵~(?)
話說,人人家都有JAVA..................的圖示喔。(炸逃)
(註:咖啡杯。)
─────────────────────────────────
回應 (26)
ycj 於 2007/04/18 20:07
聽說只是因為他們愛喝JAVA咖啡
才取名為JAVA
是這樣嗎 = =