忍者ブログ

[PR]

×

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

【力殺】默之契-Love Circle-

 

2011 5月 遊戲評論 默之契-Love Circle-

 

|基本資料|

遊戲名稱:默之契-Love Circle-

 

遊戲分類:R18/BL/地圖移動/AVG

遊戲引擎:Nscripter

收費形式:Web Free開放《輪迴篇》、實體販售追加《鑰篇》和《雙龍篇》

作者:主製 一條河.部份協力 KAEN.音樂 彼端、萬古

網頁:http://inparadox.pixnet.net/blog/post/26549975

 

|測試員評分表|(力殺)

劇本  

劇情  7

修辭  8

角色  7

 

美術  

立繪  8

CG  8

背景  7

 

音樂

基本處理  8

劇情搭配  8

協調性   9

 

程式   7

 

總評項  

原創性   8

遊戲完成度 8

 

 

|測試員講評|

 

 

 

 

【簡介】

默之契是inParadox在2011年推出的作品。

 

1月釋出網路版,2月則於CWT27實體販售。網路版開放四個攻略角色和結局,販售版則追加了解謎的《鑰篇》《雙龍篇》兩篇。

 

默之契雖是小規模製作卻展現了十足的誠意,不論是遊戲本體還是販售實物都讓人感受到作者的用心,完整度相當不錯,開拓販售市場的勇氣也值得讚賞。

 

 

 

 

 

【劇情】

默之契故事圍繞著擁有輪迴命運的主角.魅狩。每當魅狩死去,時間就會從當上宮廷預言師那一日重頭來過。有別於其他輪迴梗作品,連主角魅狩都不明白自己輪迴的原因,而陪同魅狩挖掘真相就是玩家的任務。

 

默之契的劇本由一條河主筆,部份由同團的KAEN支援。默之契劇本的運筆非常優美,許多意境遠勝畫面表達,而從文章停頓點乃至於對比句,都看得出來作者在文字演出下了相當多的功夫。

 

文筆漂亮之餘,作為賣點的攻略角色的塑型也相當不錯,攻略角色少的情況下,屬性和劇情完全沒有重疊,每個人物都很有厚度。令筆者意外的是默之契部份劇情挺重口味的,前期──尤其是宮外組──劇情相當歡樂,但後段瞬間急轉直下,筆者也被某些路線虐到心靈創傷,某華府少爺簡直是遊戲唯一的綠洲。

 

而作為故事主幹解謎的部份……其實《輪迴篇》在提示過少的情況下,可以說是完全沒辦法猜出謎底,另外許多結局突然解除輪迴還滿突兀的。

 

甚至直到解謎的《鑰篇》和《雙龍篇》某人的身份到遊戲結束仍然是一頭霧水的狀態。但默之契主要是吃氣氛的作品,氣氛對就足以讓人無視上述缺點。而《雙龍篇》雙ED打通時,筆者也不由得「啊,打破命運真是太好了」這麼讚嘆,作為無限LOOP的作品能讓人說出這番話,結局十足是成功了吧。

 

題外話,每次輪迴魅狩都可以在宮裡過著貴族生活,其實挺讓人羨慕的XD

 

 

 

 

 

【系統】

遊戲平台為Nscripter。

 

遊玩時沒有遇上什麼BUG,操作直覺,介面簡單明快又不失質感,CG動態演出相當不錯。可惜沒額外作CONFIG,文字速度無法微調。

 

默之契在立繪變動時對話框都會隱藏幾秒再顯示,好處是方便玩家留意每個表情變化,而壞處就是對話框閃來閃去容易造成視覺疲乏。

 

另外S/L使用角色圖取代傳統的page1、page2,若按照攻略角色存檔就等於得到了完整的路線回顧,巧思令人驚豔。但這設計雖有新意,開啟S/L時系統卻不會在自動轉到最後存檔頁面,也就是說,若要讀取page2的存檔就得從page1點擊page2再點擊存檔,在反覆存讀下多了一道手續就顯得不親切了。

 

 

 

【圖像】

圖像應該是默之契最有誠意的部份。

 

除了角色變換立繪和服裝的數量異常驚人之外,幾乎所有NPC都有立繪,CG數噴得豪邁之餘背景也相當用心。隨新劇情展開的眾角色換裝秀已經可以列入遊戲亮點了,不過部份立繪骨架和比例不正,角色不同立繪的頭身數沒有統一,CG品質也時好時壞,是默之契比較可惜的地方。

 

拋開中國風=古色古香的包袱,默之契的用色從原畫到介面都相當繽紛,看得出來繪師在色調上下了很多功夫,尤其喜歡CG和介面相輔相成的TITLE部份。

 

中國風背景一向是冷門素材,這類型的遊戲也算少數。而默之契捨棄素材和傳統手繪,3D建模後進2D後製,場景契合,數量也很有心意。

 

 

【音樂】

音樂由彼端和萬古這兩個自製遊戲圈有名的樂師操刀,曲數和品質都很有保證。

 

一些遊戲更換BGM時都有被噎到的不快感,但默之契音樂穿插非常流暢,恬淡、哀愁和嚴肅場景的表現都相當不錯。不少曲目使用了西方樂器卻又不失中國風,很令人驚豔。筆者最喜歡的曲目是常用於關鍵敘述的「悠遠」,和遊戲基調相當契合。

 

另外音樂、後記等等需要靠地圖的支線任務才能開啟,善用了地圖移動系統這點很有趣。

 

拍手[3回]

PR

【捨丸&KID】SAVE與LOAD自訂界面

 

SAVE與LOAD要自訂界面非常容易,只要不使用預設的按鈕,自己製作一的按鈕叫SAVE或LOAD,並連到自己做好的*save 或 *load標籤就可以,以下也是參考前人模組改寫的:
;==========Save制御==========
*save
goto *save_1

;-----簡略化Subroutine-----
*save_sub_1
lsp 500,":a;sys/save.jpg",0,0
lsp 10,":s/13,15,0,0;#ffffff#999999PAGE1",50,150
lsp 11,":s/13,15,0,0;#ffffff#999999PAGE2",50,190
lsp 12,":s/13,15,0,0;#ffffff#999999PAGE3",50,230
lsp 13,":s/13,15,0,0;#ffffff#999999PAGE4",50,270
lsp 14,":s/13,15,0,0;#ffffff#999999PAGE5",50,310
lsp 15,":s/13,15,0,0;#ffffff#999999EXIT",50,500
return
;這邊先製作頁碼按鈕與跳出按鈕的圖
*save_sub_2
;spbtn 10,101:spbtn 11,102:spbtn 12,103:spbtn 13,104:spbtn 14,105
exbtn 10,101,"P10,1S4,(se\maoudamashii_system40.wav)"
exbtn 11,102,"P11,1S4,(se\maoudamashii_system40.wav)"
exbtn 12,103,"P12,1S4,(se\maoudamashii_system40.wav)"
exbtn 13,104,"P13,1S4,(se\maoudamashii_system40.wav)"
exbtn 14,105,"P14,1S4,(se\maoudamashii_system40.wav)"
exbtn 15,106,"P15,1S4,(se\maoudamashii_system40.wav)"
;為了華麗改用exbtn

return
;只要是sub區塊 用gosub指令就一定要加return,才可以跳回原本的地方


save_check_sub
csp-1
lsp 99,":a;sys/save.jpg",0,0
lsp 51,":s/13,15,0,0;#ffffff確定要儲存檔案嗎?",290,200
lsp 52,":s/13,15,0,0;#ffffff#999999YES",310,230
lsp 53,":s/13,15,0,0;#ffffff#999999NO",450,230

btndef ""
exbtn 52,11,"P52,1S4,(se\maoudamashii_system40.wav)"
exbtn 53,12,"P53,1S4,(se\maoudamashii_system40.wav)"
;save check box要變華麗的話請先有華麗的素材~~

*save_check_sub_lp
btnwait2 %BtnRes
if %BtnRes=0 goto *save_check_sub_lp
if %BtnRes=-1 mov %BtnRes2,2:csp -1:return
if %BtnRes=11 mov %BtnRes2,1:csp -1:return
if %BtnRes=12 mov %BtnRes2,2:csp -1:return

goto *save_check_sub_lp
;-----日期取得-----
*save_time
mov $1,""
savetime %1,%2,%3,%4,%5
itoa2 $2,%2:add $1,$2:add $1,"月"
itoa2 $2,%3:add $1,$2:add $1,"日"
itoa2 $2,%4:add $1,$2:add $1,"時"
itoa2 $2,%5:add $1,$2:add $1,"分"
return
;-----日期取得到此-----


;-----Save畫面跳出-----
*save_end
btndef clear
csp -1
print 10,250
deletescreenshot ;砍掉遊戲截圖
mov %BtnRes,50
;為啥要多這個「mov %BtnRes,50」奇怪的指令咧,因為在sub區塊用btnwait相關指令,不知道為啥輸入的變數會直接再傳到return之後遇到的第一個btnwait 或是 textbtnwait,然後程式碼就亂跳了,非常歡樂,所以我習慣再跳回去之前輸入一個什麼意義都沒有的數字,在這裡是隨便輸入一個50,其實要輸入什麼數值都可以。
return
;-----Save跳出到此-----
;-----Subroutine到此-----

;-----Save畫面處理-----
;-----PAGE1-----
*save_1

gosub *save_sub_1
lsp 101,":s/13,15,0,0;#ffffff#999999DATA1",250,50
lsp 102,":s/13,15,0,0;#ffffff#999999DATA2",250,120
lsp 103,":s/13,15,0,0;#ffffff#999999DATA3",250,190
lsp 104,":s/13,15,0,0;#ffffff#999999DATA4",250,260
lsp 105,":s/13,15,0,0;#ffffff#999999DATA5",250,330
lsp 106,":s/13,15,0,0;#ffffff#999999DATA6",250,400
lsp 107,":s/13,15,0,0;#ffffff#999999DATA7",250,470
lsp 108,":s/13,15,0,0;#ffffff#999999DATA8",250,540
lsp 201,":s/13,15,0,0;#ffffff$901",350,50
lsp 202,":s/13,15,0,0;#ffffff$902",350,120
lsp 203,":s/13,15,0,0;#ffffff$903",350,190
lsp 204,":s/13,15,0,0;#ffffff$904",350,260
lsp 205,":s/13,15,0,0;#ffffff$905",350,330
lsp 206,":s/13,15,0,0;#ffffff$906",350,400
lsp 207,":s/13,15,0,0;#ffffff$907",350,470
lsp 208,":s/13,15,0,0;#ffffff$908",350,540

savefileexist %101,1
savefileexist %102,2
savefileexist %103,3
savefileexist %104,4
savefileexist %105,5
savefileexist %106,6
savefileexist %107,7
savefileexist %108,8
;這邊是如果該savefile8存在,就將1的數值輸入%108,否則就是0
if %101=1 lsp 301,":c/1,0,3;savedata/save01.bmp",520,25
if %102=1 lsp 302,":c/1,0,3;savedata/save02.bmp",620,100
if %103=1 lsp 303,":c/1,0,3;savedata/save03.bmp",520,170
if %104=1 lsp 304,":c/1,0,3;savedata/save04.bmp",620,240
if %105=1 lsp 305,":c/1,0,3;savedata/save05.bmp",520,310
if %106=1 lsp 306,":c/1,0,3;savedata/save06.bmp",620,380
if %107=1 lsp 307,":c/1,0,3;savedata/save07.bmp",520,450
if %108=1 lsp 308,":c/1,0,3;savedata/save08.bmp",620,520
notif %101=1 lsp 301,":c/1,0,3;sys/save00.bmp",520,25
notif %102=1 lsp 302,":c/1,0,3;sys/save00.bmp",620,100
notif %103=1 lsp 303,":c/1,0,3;sys/save00.bmp",520,170
notif %104=1 lsp 304,":c/1,0,3;sys/save00.bmp",620,240
notif %105=1 lsp 305,":c/1,0,3;sys/save00.bmp",520,310
notif %106=1 lsp 306,":c/1,0,3;sys/save00.bmp",620,380
notif %107=1 lsp 307,":c/1,0,3;sys/save00.bmp",520,450
notif %108=1 lsp 308,":c/1,0,3;sys/save00.bmp",620,520
;這邊是呈現縮圖的程式碼 save00.bmp可以是透明圖,或是nodata之類的
print 16

btndef ""
gosub *save_sub_2



exbtn 101,1,"P101,1S4,(se\maoudamashii_system40.wav)"
exbtn 102,2,"P102,1S4,(se\maoudamashii_system40.wav)"
exbtn 103,3,"P103,1S4,(se\maoudamashii_system40.wav)"
exbtn 104,4,"P104,1S4,(se\maoudamashii_system40.wav)"
exbtn 105,5,"P105,1S4,(se\maoudamashii_system40.wav)"
exbtn 106,6,"P106,1S4,(se\maoudamashii_system40.wav)"
exbtn 107,7,"P107,1S4,(se\maoudamashii_system40.wav)"
exbtn 108,8,"P108,1S4,(se\maoudamashii_system40.wav)"
;在這邊要稍稍注意一下按鈕的音效是在哪一個頻道,如果跟遊戲進行中使用的頻道相同,會使得return之後原本正在播放的音效中斷
*save_1_lp
btnwait2 %BtnRes


if %BtnRes=0 goto *save_1_lp
if %BtnRes=-1 goto *save_end
if %BtnRes=-10 goto *save_end
if %BtnRes=1 gosub *save_check_sub:if %BtnRes2=1 savegame 1:savescreenshot2 "savedata/save01.bmp":mov %1,1:gosub *save_time:mov $901,$1:csp -1:goto *save_1
if %BtnRes=2 gosub *save_check_sub:if %BtnRes2=1 savegame 2:savescreenshot2 "savedata/save02.bmp":mov %1,2:gosub *save_time:mov $902,$1:csp -1:goto *save_1
if %BtnRes=3 gosub *save_check_sub:if %BtnRes2=1 savegame 3:savescreenshot2 "savedata/save03.bmp":mov %1,3:gosub *save_time:mov $903,$1:csp -1:goto *save_1
if %BtnRes=4 gosub *save_check_sub:if %BtnRes2=1 savegame 4:savescreenshot2 "savedata/save04.bmp":mov %1,4:gosub *save_time:mov $904,$1:csp -1:goto *save_1
if %BtnRes=5 gosub *save_check_sub:if %BtnRes2=1 savegame 5:savescreenshot2 "savedata/save05.bmp":mov %1,5:gosub *save_time:mov $905,$1:csp -1:goto *save_1
if %BtnRes=6 gosub *save_check_sub:if %BtnRes2=1 savegame 6:savescreenshot2 "savedata/save06.bmp":mov %1,6:gosub *save_time:mov $906,$1:csp -1:goto *save_1
if %BtnRes=7 gosub *save_check_sub:if %BtnRes2=1 savegame 7:savescreenshot2 "savedata/save07.bmp":mov %1,7:gosub *save_time:mov $907,$1:csp -1:goto *save_1
if %BtnRes=8 gosub *save_check_sub:if %BtnRes2=1 savegame 8:savescreenshot2 "savedata/save08.bmp":mov %1,8:gosub *save_time:mov $908,$1:csp -1:goto *save_1
;搭配之前的程式碼,要按yes %BtnRes2才會等於1,才會繼續執行下去 「savescreenshot2 "savedata/save08.bmp"」就是儲存遊戲截圖 「gosub *save_time:mov $908,$1」這兩行指令是用來顯示當時遊戲時間用的。

if %BtnRes=101 csp -1:goto *save_1
if %BtnRes=102 csp -1:goto *save_2
if %BtnRes=103 csp -1:goto *save_3
if %BtnRes=104 csp -1:goto *save_4
if %BtnRes=105 csp -1:goto *save_5
if %BtnRes=106 csp -1:goto *save_end

goto *save_1
;這行不加的話用滑鼠滾輪可能會滑到意外的程式碼區塊唷
;-----PAGE2-----
*save_2
……
……
;-----PAGE5-----
*save_5
……
;==========Save制御終了==========
基本上要做幾頁就做幾頁吧,除了按鈕編號不同其他都一樣,但NS遊戲應該不至於要記錄上百次才對
做出來長這樣,按鈕位置什麼的就自己調整吧!

接下來是load,load比起save來說容易多了,就只是要check有沒有檔案存在就好,程式碼如下:
;==========Load制御==========
*load
goto *load_1

;-----簡略化Subroutine-----
*load_sub_1
lsp 500,":a;sys/load.jpg",0,0
lsp 10,":s/13,15,0,0;#ffffff#999999PAGE1",50,150
lsp 11,":s/13,15,0,0;#ffffff#999999PAGE2",50,190
lsp 12,":s/13,15,0,0;#ffffff#999999PAGE3",50,230
lsp 13,":s/13,15,0,0;#ffffff#999999PAGE4",50,270
lsp 14,":s/13,15,0,0;#ffffff#999999PAGE5",50,310
lsp 15,":s/13,15,0,0;#ffffff#999999EXIT",50,500
return
*load_sub_2
;spbtn 10,101:spbtn 11,102:spbtn 12,103:spbtn 13,104:spbtn 14,105

exbtn 10,101,"P10,1S4,(se\maoudamashii_system40.wav)"
exbtn 11,102,"P11,1S4,(se\maoudamashii_system40.wav)"
exbtn 12,103,"P12,1S4,(se\maoudamashii_system40.wav)"
exbtn 13,104,"P13,1S4,(se\maoudamashii_system40.wav)"
exbtn 14,105,"P14,1S4,(se\maoudamashii_system40.wav)"
exbtn 15,106,"P15,1S4,(se\maoudamashii_system40.wav)"

return

*load_check_sub
csp -1
lsp 99,":a;sys/load.jpg",0,0
lsp 51,":s/13,15,0,0;#ffffff確定要讀取檔案嗎?",290,200
lsp 52,":s/13,15,0,0;#ffffff#999999YES",310,230
lsp 53,":s/13,15,0,0;#ffffff#999999NO",450,230

mov %BtnRes2,0

btndef ""
exbtn 52,11,"P52,1S4,(se\maoudamashii_system40.wav)"
exbtn 53,12,"P53,1S4,(se\maoudamashii_system40.wav)"

*load_check_sub_lp
btnwait2 %BtnRes
if %BtnRes=0 goto *save_check_sub_lp
if %BtnRes=-1 csp -1:mov %BtnRes2,2:return
if %BtnRes=11 csp -1:mov %BtnRes2,1:return
if %BtnRes=12 csp -1:mov %BtnRes2,2:return
;-----Load畫面跳出-----
*load_end
btndef clear
csp -1
print 10,250
deletescreenshot
mov %BtnRes,50
return
;-----Load跳出到此-----
;-----Subroutine到此-----

;-----PAGE1-----
*load_1

gosub *load_sub_1

lsp 101,":s/13,15,0,0;#ffffff#999999DATA1",250,50
lsp 102,":s/13,15,0,0;#ffffff#999999DATA2",250,120
lsp 103,":s/13,15,0,0;#ffffff#999999DATA3",250,190
lsp 104,":s/13,15,0,0;#ffffff#999999DATA4",250,260
lsp 105,":s/13,15,0,0;#ffffff#999999DATA5",250,330
lsp 106,":s/13,15,0,0;#ffffff#999999DATA6",250,400
lsp 107,":s/13,15,0,0;#ffffff#999999DATA7",250,470
lsp 108,":s/13,15,0,0;#ffffff#999999DATA8",250,540
lsp 201,":s/13,15,0,0;#ffffff$901",350,50
lsp 202,":s/13,15,0,0;#ffffff$902",350,120
lsp 203,":s/13,15,0,0;#ffffff$903",350,190
lsp 204,":s/13,15,0,0;#ffffff$904",350,260
lsp 205,":s/13,15,0,0;#ffffff$905",350,330
lsp 206,":s/13,15,0,0;#ffffff$906",350,400
lsp 207,":s/13,15,0,0;#ffffff$907",350,470
lsp 208,":s/13,15,0,0;#ffffff$908",350,540

print 16

btndef ""
gosub *load_sub_2
savefileexist %101,1
savefileexist %102,2
savefileexist %103,3
savefileexist %104,4
savefileexist %105,5
savefileexist %106,6
savefileexist %107,7
savefileexist %108,8
if %101=1 lsp 301,":c/1,0,3;savedata/save01.bmp",520,25:exbtn 101,1,"P101,1S4,(se\maoudamashii_system40.wav)"
if %102=1 lsp 302,":c/1,0,3;savedata/save02.bmp",620,100:exbtn 102,2,"P102,1S4,(se\maoudamashii_system40.wav)"
if %103=1 lsp 303,":c/1,0,3;savedata/save03.bmp",520,170:exbtn 103,3,"P103,1S4,(se\maoudamashii_system40.wav)"
if %104=1 lsp 304,":c/1,0,3;savedata/save04.bmp",620,240:exbtn 104,4,"P104,1S4,(se\maoudamashii_system40.wav)"
if %105=1 lsp 305,":c/1,0,3;savedata/save05.bmp",520,310:exbtn 105,5,"P105,1S4,(se\maoudamashii_system40.wav)"
if %106=1 lsp 306,":c/1,0,3;savedata/save06.bmp",620,380:exbtn 106,6,"P106,1S4,(se\maoudamashii_system40.wav)"
if %107=1 lsp 307,":c/1,0,3;savedata/save07.bmp",520,450:exbtn 107,7,"P107,1S4,(se\maoudamashii_system40.wav)"
if %108=1 lsp 308,":c/1,0,3;savedata/save08.bmp",620,520:exbtn 108,8,"P108,1S4,(se\maoudamashii_system40.wav)"
notif %101=1 lsp 301,":c/1,0,3;sys/save00.bmp",520,25
notif %102=1 lsp 302,":c/1,0,3;sys/save00.bmp",620,100
notif %103=1 lsp 303,":c/1,0,3;sys/save00.bmp",520,170
notif %104=1 lsp 304,":c/1,0,3;sys/save00.bmp",620,240
notif %105=1 lsp 305,":c/1,0,3;sys/save00.bmp",520,310
notif %106=1 lsp 306,":c/1,0,3;sys/save00.bmp",620,380
notif %107=1 lsp 307,":c/1,0,3;sys/save00.bmp",520,450
notif %108=1 lsp 308,":c/1,0,3;sys/save00.bmp",620,520


*load_1_lp
btnwait2 %BtnRes

if %BtnRes=0 goto *load_1_lp
if %BtnRes=-1 goto *load_end
if %BtnRes=-10 goto *load_end
if %BtnRes=1 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 1
if %BtnRes=2 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 2
if %BtnRes=3 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 3
if %BtnRes=4 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 4
if %BtnRes=5 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 5
if %BtnRes=6 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 6
if %BtnRes=7 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 7
if %BtnRes=8 gosub *load_check_sub:if %BtnRes2=1 csp -1:loadgame 8

if %BtnRes=101 csp -1:goto *load_1
if %BtnRes=102 csp -1:goto *load_2
if %BtnRes=103 csp -1:goto *load_3
if %BtnRes=104 csp -1:goto *load_4
if %BtnRes=105 csp -1:goto *load_5
if %BtnRes=106 csp -1:goto *load_end

goto *load_1


;-----PAGE2-----
……
程式碼跟畫面幾乎一樣,就不多說明了,當然想要自己調整成save與load是完全不同的風格是一定可以做到的,撇開畫面配置,所謂save與load其實也就只有savegame 1 和 loadgame 1 這兩個指令,因此想要在腳本進行中偷偷做一個玩家沒發覺的存檔,在玩家死掉(?)之後自動load,回到所謂的 checkpoint是很容易的。

 

 

拍手[4回]