|
【文章儲存】【魔塔論-6】造塔論延伸,關於玩家,細節,細節,還是細節BY冥靈212121 |
副总编 二十三级 |
第6篇 接着上一篇的魔塔論。 這一篇可能沒什麼技術含量,很多東西是簡便易行的,但是少有人能全部考慮到。
|
副总编 二十三级 |
我們說做一部魔塔,是為了什麼?科學研究,自我娛樂、休閒,還是服務大眾?魔塔是種遊戲,因此必然有其對應的玩家,一個魔塔在製作時需要考慮玩家感受。 @罕見古怪的生物 說,要做出難度,需要考慮玩家的感受,給他們造成一種錯覺使之產生思維定勢。的確從玩家的角度考慮製作是很重要的,不妨換位思考下,作者就是玩家,一個有大多數玩家共有想法的「萬能」玩家,那麼設計地圖的時候可以封殺大眾化路線以提升難度。 但今天我講的重點不在這裏。除了對難度的把握以外,還有對製作本身的把握。一個遊戲,讓玩家玩着通暢是很重要的,製作是否精細、流暢能很大程度地影響玩家對遊戲的感受。 舉個例子,一個魔塔有怪物手冊,但是怪物手冊邊上堵着個藍門,從科學的角度要不要開藍門?顯然是不要。但是如果從玩家感受的角度,玩家在探一遍路的過程中需要時刻關注怪物數據以熟記之,沒有這個怪物手冊,會對玩家的心理產生巨大的壓力。這二者相互矛盾,對遊戲整體是不利的。
|
|
副总编 二十三级 |
要注重細節,很多時候某個塔玩不過不是因為本身的難度很高而是因為這個塔細節處理得不到位使玩家產生了「畏難情緒」。 下面就來講講這些細節(以魔塔樣板里的細節為主),這些是我做塔的時候總結出來的細節,特別是玩計算的魔塔,如果對細節的處理失當,極有可能得不到應有的研究。
|
|
副总编 二十三级 |
1.胡波 這個不必多說,儘量避免,包括暗牆、暗道、表面上可行實際上不可行的飛點破點、陷阱類機關等。當然如果是隱藏結局類的設置,為保持探索性,可以不指出來。
|
|
副总编 二十三级 |
2.移動速度 這一點是很多人忽略的問題,某些要精確研究的魔塔,需要大量的移動,而樣板那僅僅4.3的移動速度是不夠的;但正是因為需要大量的移動,為避免操作失誤或移動不流暢,速度不能過快。我的建議是速度處在4.7-5.0的範圍內為宜, @fjddy 喜歡在遊戲之前加一個設定移動速度的選擇,以照顧所有的玩家。
|
|
副总编 二十三级 |
另外,不得不說的一點是「遲緩」,我不知道樣板的製作者怎麼想的,除了與時間掛鈎的魔塔,「遲緩」沒有實際的作用,反而會讓玩家心生厭煩感。 但有一種遲緩建議有興趣的人嘗試:如果增加一個和傷害相關的變量,叫「速度」,且遲緩後這個「速度」下降。 修改方案:腳本編輯器的■speedup,改那個4.3
|
|
副总编 二十三级 |
3.存檔 包括存檔個數和快速讀取最近存檔。 樣板限定的存檔個數為8,實際上很多需要反覆測試的魔塔,8個存檔是不夠的,這時候可以考慮把存檔拉出來,不過拉出來還是麻煩了些。這時候很多人都會修改存檔個數。
|
|
副总编 二十三级 |
然而這並不能解決所有的問題,如果最近的存檔編號在8以上,那就無法立刻讀到那個存檔,這也使得許多玩家喪失耐心。 所以做好這點,讓玩家不會因為小問題而「輕生」! 修改方案:把■protect savefile 的30行改存檔頁數,個數=頁數*4;▲Scene_Title的第49行,0..?的?改成存檔個數;▲■protect savefile 第206、332行,0..?的?改成存檔個數。
|
|
副总编 二十三级 |
4.Z鍵bug 殺怪開門再簡單不過,設個變量就完事,但這樣就產生了新的問題——可以不殺怪就獲取那個變量。 操作方法是按住Z然後觸碰怪物,怪物沒有變化,門開了! 這樣容易被喜歡投機取巧的玩家鑽空子,相當傷腦筋!除此之外,獲得物品、開門也有類似的影響。
|
|
副总编 二十三级 |
不過好在解決方案還是有的,有兩種。一是把有實際效果的開關、變量、加減血等移到其他事件頁;二是判定,當按下快捷鍵時觸發事件,自動啟動結局,返回標題畫面。你可以把兩種結合起來。 有了二之後是不是就不需要一了呢?不一定。當使用炸彈或者聖錘的時候,怪物相同頁的事件是無法執行的,這樣就有必要把要觸發的開關、變量等移至獨立開關A=ON時執行的那頁。
|
|
副总编 二十三级 |
5.難度、版本顯示 在左邊狀態欄上有所呈現即可,能讓作者看着放心,玩家玩着舒心。
|
|
副总编 二十三级 |
6.事件名稱——dead 這個問題被一些人忽略,但很重要。我們說魔塔里可見的設置都是平等的,相同的牆不要有普通牆和暗牆的區別。同樣相同的地板不要有正常地板和不能飛的地板的區別。 比如殺怪開機關門,殺完怪後遠處某個地方放着的一個機關門開了。但這個機關門不是開完就算數,它是中心對稱飛行器的一個落點,很重要的一個落點。這樣就會少一條正常過關的路。 還有就是不可通行的事件,名稱卻是「dead」,也會造成一定影響。
|
|
副总编 二十三级 |
這個問題比較麻煩,如果無實際用途可以不用,有需要的話可以看看公共事件- 每層的並行處理內容 和 事件結束的處理,裏面有個41號變量記錄了所有執行過的事件。 與這個問題相關的是樣板自帶的阻擊bug,阻擊背後有事件(執行過的事件),阻擊怪就動不了了。 聯合制塔時碰到了這樣的問題,不過自己找到了一個解決辦法:
|
|
副总编 二十三级 |
▲●Game_Player 204行開始,「#夾擊怪」以後、「#退敵怪」以前的一大段東西,把這段替換為: did=0 if $game_party.item_number($game_variables[120])<1#沒有阻止退敵的物品時 for i in 0...$game_variables[119].size xx=($game_map.events[$game_variables[119][i]].x- $game_player.x).abs yy=($game_map.events[$game_variables[119][i]].y- $game_player.y).abs kx=$game_map.events[$game_variables[119][i]].x ky=$game_map.events[$game_variables[119][i]].y px=$game_player.x py=$game_player.y ee=$game_map.events[$game_variables[119][i]].event.name [6,3].to_i if (xx==1 and yy<1) or (xx<1 and yy==1) aa=$data_enemies[ee].name.split('/')[1].to_i $game_actors[$game_variables[1]+1].hp-=aa $game_player.animation_id=3#顯示動畫3 if $game_actors[$game_variables[1]+1].hp<=0 $game_variables[19]=1 $game_temp.common_event_id = 12#生命小於0,調用1號結局 else dx=(2*kx-px).to_i dy=(2*ky-py).to_i if $game_map.have_an_event?(dx,dy) == true did=$game_map.check_event(dx,dy) if $game_map.events[did].event.name == "dead" $game_map.events[did].event.x-=dx $game_map.events[did].event.y-=dy $game_map.events[did].erase if $movedevents.include?($game_map.map_id)==false $movedevents[$game_map.map_id]=[] end $movedevents[$game_map.map_id][did]=$game_map.he_at(did) else did=0 end end if py-ky>0 $game_map.events[$game_variables[119][i]].move_up end if ky-py>0 $game_map.events[$game_variables[119][i]].move_down end if px-kx>0 $game_map.events[$game_variables[119][i]].move_left end if kx-px>0 $game_map.events[$game_variables[119][i]].move_right end all=$game_map.events[$game_variables[119][i]].event.id if $movedevents.include?($game_map.map_id)==false $movedevents[$game_map.map_id]=[] end $movedevents[$game_map.map_id][all]=$game_map.he_at(all) if did !=0 $game_map.events[did].event.x+=kx $game_map.events[did].event.y+=ky $movedevents[$game_map.map_id][did]=[kx , ky] end end end end end#退敵怪
|
|
副总编 二十三级 |
用到的就是「dead」的判定,可見這還是有作用的。 至於更複雜的,比如把阻擊怪推到一個可能會發生劇情的位置,那麼需要更複雜的設置,在此不展開。
|
|
副总编 二十三级 |
7.BGM @cc928yreally 的BGM是有名的,因為聽這個BGM後會覺得沒動力拆塔。說明從玩家的角度,BGM很重要,支持振奮人心的高燃值的音樂或者有魔塔氣氛的陰沉的音樂。 有人說,淡淡的音樂作為背景不也挺好的?在這裏,淡淡的音樂可以用作調劑,不過總不能讓玩家一直提不起精神吧…… 飯店放嘈雜的音樂可以加快顧客用餐速度,像這個就是音樂對行動的影響。
|
|
副总编 二十三级 |
8.畫面 細的東西不說,在什麼地方就要像什麼,在魔塔里就要像在魔塔里,在路上就要像在路上,在湖邊就要像在湖邊…… 然後是畫面的感覺,不過分浮誇(對比度過低),也不過分鮮艷(飽和度過高)。對比度包括素材本身對比度和地板與事件的對比度。 善用各種圖片處理工具,可以讓畫面變得更整潔美觀。
|
|
副总编 二十三级 |
9.零碎的效果(動畫、SE等) 還是以適度為好,不堆砌,也不缺乏,讓玩家從零碎的效果中保持清醒的頭腦,明確自己在幹什麼。 我能想到的就是這麼多,這篇就到這裏吧~!
|
|
副总编 二十三级 |
哦對,想起來個事兒,這不是腳本問題。 50層復刻的雙倍攻擊十字架在怪物傷害顯示上有體現,那麼,請看這段: 這是十字架,注意十字架的id是10,計算怪物傷害時需要用到十字架的id。
|
|
副总编 二十三级 |
大約46行的時候加一段這個: @hate=0#仇恨傷害 $game_variables[198]=1.to_i #這是要添加的內容
@mhp=$game_actors[$game_variables[1]+1].hp#基礎勇生命
|
|
副总编 二十三级 |
#再往下看,當出現下面這行字時: @md=($game_actors[$game_variables[1]+1].dex*@orbdef).to_i#修正勇防 #添加腳本,然後根據敵人的id號改,下面這段是添加的部分: if @enemyid==59 if $game_party.item_number(10)>=1 $game_variables[198]=2.to_i end end if @enemyid==48 if $game_party.item_number(10)>=1 $game_variables[198]=2.to_i end end if @enemyid==47 if $game_party.item_number(10)>=1 $game_variables[198]=2.to_i end end if @enemyid==62 if $game_party.item_number(46)>=1 $game_variables[198]=2.to_i end end #添加的部分結束,10是聖十字架,所以有「if $game_party.item_number(10) >=1」,而46是屠龍匕。 if $game_switches[Playerdate_magicdef] @mmd=($game_actors[$game_variables[1]+1].int*@orbmdef).to_i#修正勇魔防 else @mmd=0#未開啟魔防下魔防=0 @purge=0 end
|
|
副总编 二十三级 |
#這段和原來的對比下,把原來的刪去改成這段東西: if (@ma*$game_variables[198]-@ed).to_i>0 #勇士的攻擊>怪物的防禦
@eatimes=(@ehp/((@ma*$game_variables[198]-@ed) *@orbatktimes).to_i).to_i#怪物的攻擊次數 @eatimes-=1 if @eatimes==@ehp*1.0/((@ma*$game_variables[198]-@ed)*@orbatktimes).to_i #整數的情況下怪物的攻擊次數要-1
|
|
副总编 二十三级 |
|
|
副总编 二十三级 |
順便提下,善用rm的音樂節拍變化功能,對mid改節拍,修改的不是節拍而是音調。 比較有用的是125%,音調從1升至3,這能提升氣氛的緊張感;還有150%,從1升至5;80%,從1降至b6;75%,從1降至5;50%,降一個八度。
|
|