GameDesign 板


LINE

總覺得自己標題下的不夠好 但我有點不曉得該怎麼定自己的標題@@ 各位高手們晚安,我們專題的遊戲已經快要告一段落了 這段時間我常上來問一些奇怪的問題,很謝謝各位熱心的幫忙 但最近我在遊戲上遇到了設計關卡的問題,所以又來請求協助了 還希望各位高手能指點一二,謝謝 我想請問類似雷電、雙截龍這類遊戲通常往前移動到某一個程度的時候 都會出現敵人。 雙截龍我有點忘了,但是雷電我確定的是怪物的出現順序都是固定的, 就算重玩,下一次出現的敵人、出現的順序還是那樣 也就是說可能場景到了A地方的時候a群怪要出現,B地方的時候b群怪要出現 其實我們專題遊戲也是打算採用這個方法來出現敵人 不同的是我們是類似雙截龍的橫向卷軸, 當玩家往右走到一定程度的時候,那些設定好的固定怪就會出現, 沒打完就不能繼續前進,但我在設計上一直有個疑問 就是關於敵人的呼叫問題,既然我在A地方那些敵群只會出現一次 那麼我該怎麼設計比較好? 假設我程式是向下面那樣寫 add_enemy(){ //用來判斷是否要呼叫敵人的函式 if( A群敵人還沒出現過==ture && 主角已經移動到了a地方==true ){ 呼叫A群怪物 A群怪物還沒出現過=false; } if( B群敵人還沒出現過==true && 主角已經移動到了b地方==true ){ 呼叫B群怪物 B群怪物還沒出現過=false; } } 其實我一直覺得我這個方法很不好,因為我明知不管是A群或B群敵人 這些敵人就只會出現這麼一次,那為什麼我每次都還要去判斷要不要出現這些怪 而且假設我有十個關卡,那這樣我不就會有add_enemy_1(); add_enemy_2(); 等十個函式來判斷現在是第幾關,第三關的話呼叫第三關的函式來判斷要新增哪群怪 所以我才想來請教一下我這樣的方法真的合適嗎@@? 還是這根本就是錯誤的設計 不曉得我的問題這樣描述會不會太模糊,還請各位多多包涵 謝謝 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 49.158.0.128
1F:推 cooper6334:你的出怪模式應該不會讓怪跳著出,所以用一個陣列存 03/30 01:01
2F:→ cooper6334:每批怪出現的位置,再記已經出到第幾批怪 03/30 01:02
3F:→ cooper6334:if(現在位置>=出怪位置[第n批]){出第n批怪;n++;} 03/30 01:04
4F:→ cooper6334:有很多關就 if(現在位置>=出怪位置[第m關][第n批])... 03/30 01:12
5F:推 LayerZ:如果是雷電的話 與其說位置,不如說是時間? 03/30 01:29
6F:→ LayerZ:做一個pair<時間, 生怪資訊>的queue,照時間排列 03/30 01:30
7F:→ LayerZ:關卡開始時取出關卡資料 只比對queue的最前頭 時間到了就 03/30 01:31
8F:→ LayerZ:生怪並丟掉就好啦 一個時間也只需要判斷一次 03/30 01:32
9F:→ LayerZ:需要循環生怪的話可能要在生怪資訊做旗標,讀到的話再調整 03/30 01:33
10F:→ LayerZ:應該是演算法跟資料結構的範圍了@@ 03/30 01:35
11F:→ LayerZ:如果是雙結龍這種橫向卷軸的話.. 03/30 01:37
12F:→ LayerZ:關鍵資料是x座標而不是時間 03/30 01:40
13F:→ LayerZ:因為不是線性的,要掃描玩家經過的x座標,取出掃描過的x座 03/30 01:42
14F:→ LayerZ:標的生怪資訊.. 03/30 01:42
15F:→ LayerZ:一樣做個queue 按照x座標排列 03/30 01:44
16F:→ LayerZ:要用一個韓式寫完所有判斷也太難了... 03/30 01:48
17F:→ LayerZ:練習自己建立class/struct來整理資料 用point索引資料 03/30 01:49
18F:→ LayerZ:用stl容器跟演算法來簡化索引 03/30 01:50
19F:→ LayerZ:最後,如果有時間壓力,效能又不會太差,一個用add()函式完 03/30 01:52
20F:→ azureblaze:另外每次判斷並沒有你想的那麼昂貴,除非敵人有幾萬個 03/30 01:52
21F:→ LayerZ:成他也是ok的,重點是完成 03/30 01:52
22F:→ yoll522:原來如此,我真的是受教了,很感謝各位的幫助 03/30 10:38
23F:推 ddavid:如果生怪一定有某些順序性,可以嘗試類似Topological Sort 03/30 14:06
24F:→ ddavid:的方式建圖,然後只把可能的項目推到queue內,被觸發到的 03/30 14:08
25F:→ ddavid:事件就去查它指向的其它事件是不是已經沒有其它事件指著, 03/30 14:09
26F:→ ddavid:若無就跟著推進queue裡,這樣這個queue應該是最小的了。 03/30 14:10
27F:→ ddavid:另外如果有個絕對順序標準(雙截龍)那其實就不用想那麼多 03/30 14:11
28F:→ ddavid:了,反正是循序的,都只要看Linked List第一項就好,用過丟 03/30 14:12
29F:→ ddavid:掉自然不會重覆了。 03/30 14:12
30F:→ ddavid:像洛克人那種退後前進怪會重生的就得全搜了,但是洛克人把 03/30 14:13
31F:→ ddavid:關卡用樓梯等方式分割成多塊,所以單塊的搜尋量也不多。 03/30 14:14
32F:→ yoll522:好的,謝謝你的建議 04/01 14:23







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP