【Turret vs Tank】敵人設計及配置

更新於 發佈於 閱讀時間約 10 分鐘
上一次我們已經完成了玩家端的部署,接下來就是要有敵人囉。和「Plant vs Zombies」相同,敵人也是分五道過來,不一定會先從哪一道過來,也不一定都會是哪一種敵人會過來。這次的主題就是設計一個簡單的敵人,並亂數的配置它們從不同的方向過來。

最簡單的敵人

這個遊戲叫「Turret vs Tank」,所以我們當然是搜尋看看有哪些「Tank」可以用囉。在「1-CREATE/OBJECTS FROM WEB/」搜尋「Tank」,正好看到一個不錯的最弱的車可以用:
「WartHog」是”疣豬”的意思
看起來就是一台很弱的吉普車,好,就用這台吧。
這台疣豬式衝鋒車,我們沒打算讓它有什麼特殊能力,出來之後就是往前衝,想辦法撞毀玩家的單位(砲台或電腦),甚至是寶箱。簡述一下它需要的規格就像這樣:
  • 只有3點血(可因應平衡性調整)
  • 被玩家砲彈打到時會閃紅光,血量歸零時就自爆離場(不會造成損傷)。
  • 只會向前直行
  • 撞到玩家單位會造成1點損傷,然後自己自爆。
上述的規格中,「只會向前直行」應該沒什麼問題,就是來一張「MOVEMENT」面板就可以,而「被玩家砲彈打到會閃紅光…」這個規格,就是用「HEALTH」這個面板來解決:
它死掉的時候,為了方便,我們就直接來個「Explode」卡吧,但要記得去把「Damage」設為0,不然就會連帶傷害到其他人:
最後就是「撞到玩家單位會造成1點損傷,然後自己自爆」這個規格。很容易理解的是透過「IF-THEN」面板,搭配「Collision Event」來做:
這裡需要注意的重點是”玩家單位”這件事。玩家在運行期可能會生成好幾個呼叫器(supplyer unit)或是迷你砲台(mini turret unit),我們又要怎麼指定它們是”玩家單位”呢?
在這裡我們就要使用「Tag」的屬性來做,打開「Collision Event」,我們點開「Collide with what」,就會看到這些選項:
這幾個項目是這樣的:
  • Any actor:任何一個碰到的物件。
  • Player:帶有「Player」tag的物件。
  • Actors with tag...:帶有指定tag的物件。
  • Specific actor...:直接選擇指定的物件。
  • Nothing:沒碰到任何物件。
我們將會用到的是「Actors with tag...」,然後把tag設定成「Player」:
若我們今天選擇的是「Player」這個tag,其實就跟「Collide with what」選項中的「Player」是同義的,算是一個小技巧。這邊選完了,接下來比較重要的,就是要把我們打算讓疣豬車破壞的單位,都要加上「Player」的tag,就像supplyer_unit:
或是「mini_turret_unit」:
我目前Workshop的版本是把supplyer_crate也加了「player」tag,這個就看大家需求囉。若設定一切順利,目前的進度看起來應該就像這樣:
在我Workshop的專案中,我還做了一個「Tank」敵人。在這個框架下設計流程和「WartHog」就差不多:怎麼移動,怎麼攻擊,怎麼挨打,怎麼死,最後把它OffStage去…差不多就這些事,這邊就不再特別說囉。

亂數決定出生點

GameBuilder一直有一點很奇怪的設計:沒有「亂數」這種卡片。雖在WorkShop有人做了「Random」這樣的卡片,但我忠於一個「不寫程式」的前提下,為大家介紹怎麼做出亂數的規格。
「不寫程式」這件事我似乎一直都沒特別強調。主要的想法是,若使用這樣的工具還要靠寫code來擴充功能,那我乾脆就直接用Unreal開發就好了,功能更強,還不一定真的需要寫到code。
好,那回題。究竟要怎麼”亂數決定出生點”,根本就沒有「亂數」呀?在目前為止的GameBuilder,我們唯一有的「亂數」,就是「隨意逛逛(Wander Around)」這張牌:
這已經是你目前找得到的「亂數」了
所以,我們的「亂數決定出生點」就是:擺一隻隨意逛逛的史萊姆,看到碰到哪一個物件,就決定等等下一個敵人要從哪一道出生。
概念成形之後,我就在最右邊佈置好一些「出生點」,用來讓敵軍出生,然後在場景中找一個地方,佈置好讓史萊姆隨意逛逛的空間,也佈置好5個不同的出生點:
蝸牛那區先不用理它,等會兒會說…
大致上就是這樣,我在左下角畫了塊空間,擺了5個「Collectable Hologram」物件,這對應到右邊的5個敵人出生點。當中間的史萊姆隨意逛逛時,它有可能會碰觸到任何一個Hologram,就可以對應到不同的敵人出生點囉!敵人出生點物件我這邊就命名為「enemy_creator」系列(其他4個物件是複製品,就照GameBuilder自動配置的名字就行了),而史萊姆碰觸到的那5個Hologram就命名為「enemy_spawn_portal」,也是一樣有4個複製品,GameBuilder自動配名。
中間那隻史萊姆就是重點了,我們放進去後,大致上會需要這樣的卡片配置:
這裡會需要5個不同的「IF-THEN」面板,每一個都是一個「Collision Event」配一個「Change Variable」。「Collision Event」的內容,就是不同的「enemy_spawn_portal」如何對應到不同的「enemy_creator」的關係,也就是這樣:
  • 第1個「IF-THEN」的「Collision Event」是判斷是否碰到「enemy_spawn_portal」。
  • 第2個「IF-THEN」的「Collision Event」是判斷是否碰到「enemy_spawn_portal-2」。
  • 第3個「IF-THEN」的「Collision Event」是判斷是否碰到「enemy_spawn_portal-3」。
  • …(依此類推)…
那下面的「ChangeVariable」呢?為何不是開始生成敵人呢?因為我們會有2種以上的敵人,又有5個不同的位置,那豈不是要有10種「IF-THEN」?這裡有一個遊戲開發上很常見也很重要的觀念:
要把規格「單元化」,用組合來完成規格,而不是一口氣包山包海的做完,以免失去修改的彈性及擴充性。
所以,我們的「ChangeVariable」就是只做這件事:
也就是說,史萊姆的角色只決定下一個敵人要去哪個位置出生,其他什麼事都不用做。
預設的「Wander Around」可能會讓你覺得速度有點太慢,卡片裡有一些參數可以調整。如果你想要某個位置”比較”容易出生敵人,你也可以把特定的「enemy_spawn_portal」弄得大一點,等於它的機率就會大一點。大致上目前設定的結果,就會如下面影片展示的那樣(蝸牛那邊先不用理它,下一段會說):

亂數生成敵人

既然我們可以亂數找位置生成了,那要亂數生成不同的敵人當然就可以如法泡製。所以我們也一樣再找一塊地方,這次放一隻蝸牛,來決定要生成哪一種敵人吧。
如上圖,目前我們有兩種敵人,所以就擺個大家機率差不多的位置就行了。 重點也是在蝸牛身上。
在講蝸牛之前,我們倒是應該先決定那5個「enemy_creator」要怎麼生敵人出來。這裡當然還是運用了之前tutorial就介紹過的技巧「ReceiveMessage」。也就是說若它聽到「warthog」就生疣豬車,若聽到「tank」就生坦克。和之前說的原則一樣,它們就別管「亂數」這件事了,「亂數」讓蝸牛來解決。
好,回到蝸牛。它要正式生成敵人,條件就都到齊了:
這個「IF-THEN」面板是處理最終要在哪裡,生成哪一種敵人最終的組合處理,所以會有2種敵人 x 5個出生點 = 10個「IF-THEN」面板,
「Collision Event」很單純,就是疣豬車跟坦克兩種而已。而「Variable Is...」則是要判斷剛剛的史萊姆身上的「portal」變數,現在是1~5的哪一個值。最後的「Send Message」才能決定要給哪一個「enemy_creator」送message,寫成文字是這樣的:
  • 若碰到「warthog」,且史萊姆身上的「portal」是1的話,就給「enemy_creator」送”warthog”訊息。
  • 若碰到「warthog」,且史萊姆身上的「portal」是2的話,就給「enemy_creator-1」送”warthog”訊息。
  • 若碰到「warthog」,且史萊姆身上的「portal」是3的話,就給「enemy_creator-2」送”warthog”訊息。
  • 若碰到「tank」,且史萊姆身上的「portal」是1的話,就給「enemy_creator」送”tank”訊息。
  • 若碰到「tank」,且史萊姆身上的「portal」是2的話,就給「enemy_creator-1」送”tank”訊息。
  • 若碰到「tank」,且史萊姆身上的「portal」是3的話,就給「enemy_creator-2」送”tank”訊息。
  • ...(其他依此類推)...
由於面板和所需卡片都是一樣的,只是屬性值不同,所以在編輯上有一個小技巧一定要知道:按著Alt鍵點擊面板時,可複製面板出來哦!這樣就會比較方便了:
大致上亂數生成敵人的說明就到此為止了。為了增加一些難度的設定(不要一開始就random到坦克…玩家一定守不住),我又加了一些敵方單位的”價格”設定。蝸牛會一直存錢,但有可能會馬上花掉買疣豬車,也有可能會存夠錢買到坦克。這些都是變數的操作可以完成的事情,這邊我也就不特別說明了。
以下的影片是我目前在WorkShop的成果。當然,這確實會需要經過不少數值調整,才不會難度偏高或偏低,不過這和GameBuilder的使用教學沒直接關係,所以就跳過了:

結論

經過這個遊戲的實作,我必須很遺憾地說,這個工具還有很多可以改善空間,即使是拿來當作prototype的製作工具。
主要的問題當然是在功能上的不足(例如沒有「亂數」,這種事情真的很難理解…),操作順暢度只能算是及格。官方把不少心力投注在API的功能擴充上,我個人認為是方向完全錯誤的。如同我之前提到的,我若真的要寫code的話,再怎麼選也是學Unity,也絕對輪不到GameBuilder。
這個專題目前就到此為止了,沒有意外的話我應該是不會再寫了,除非下次大改版,改到我覺得值得再回頭來玩玩,屆時才會再回來寫囉。
為什麼會看到廣告
Google實驗室Area120釋出了一個「製作遊戲」的遊戲叫「Game Builder」。 主要的用戶是遊戲編導,方便他們以拖拉卡片的型式來驗證遊戲性好不好。 因此這個專題就是「Game Builder」的"真心話(好用難用都會說)"和"大冒險(真的來挑戰看看能做什麼遊戲)"囉!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
在這個遊戲的workshop中,看到一個【Aqua Defense】,訂閱下來小玩了一下。除了一直有奇怪的重複音效以外,大致上完成度算是夠高了。基本上這就是一個【Plants vs Zombies】規格的作品,不過它沒有向日葵這種單位可以生產錢幣,而是定時生產,剩下的就是其他單位不同而已。
在這個遊戲的workshop中,看到一個【Aqua Defense】,訂閱下來小玩了一下。除了一直有奇怪的重複音效以外,大致上完成度算是夠高了。基本上這就是一個【Plants vs Zombies】規格的作品,不過它沒有向日葵這種單位可以生產錢幣,而是定時生產,剩下的就是其他單位不同而已。
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次要來介紹2024年突兀出現在烏克蘭戰場上的龐然大物,來跟烏克蘭人一起看所謂的「龜甲戰車」(turtle tank)是怎麼回事,另外介紹這幾年來格柵裝甲(slat armour)的發展與應用。
Thumbnail
  從基本貓的設計思路中,我們也能看到這款遊戲與現在流行的抽卡遊戲的差異。遊戲初期,設計的焦點被放在「攻擊距離」、「攻擊力」、「範圍與單體傷害」、「血量」、「移動速度」以及「花費」這六個項目上,這使得初始的九隻基本貓每隻都能在特定的情境裡面起到作用,也比純數值遊戲有著更多玩家操作與發揮戰術的空間。
Thumbnail
這款遊戲在歐美Twitch上非常受歡迎,直播主紛紛玩起這款遊戲。遊戲和絕地求生相似,有毒圈和死亡時掉落裝備,但也有自己的特色,例如能夠建築遮蔽物。手速和反應能力是遊戲中存活的關鍵。
Thumbnail
戰車逆位 | 失控飛竄的蟑螂 勇士駕駛著由人面獅身獸所拉動的戰車,牠們一黑一白蹲坐在前頭,目光同勇士皆直視前方。身後隔著河水,是一座看似富饒、高塔林立的城鎮。戰車在外的目的不得而知,可能是為了守護身後的事物,也可能是為了抵禦外敵入侵,又或者是準備出征。 塔羅牌意 戰車牌
有!只是應該叫兵仔,兵仔是誰?是鬥雞?為什麼他要做鬥雞?是原生被挑戰嗎?原生悲被挑戰怎麼樣?要殺人?你們相不相信兵仔是好人?只是心裡住著一個魔鬼。有個仔的就是內在小孩,兵仔不是魔鬼。小魔鬼可以嗎?小魔慈比較好。兵仔應該要有一顆鬥爭心,非鬥雞文化。 不是為道業而生?是的,兵仔不是為道業而生,因為他要
Thumbnail
以無機物搭配無機物而成,堅不可摧的銅牆鐵壁!
Thumbnail
突破限界,將兩種有機物合成,全新進化的型態!
Thumbnail
使用危險扳機讓整體能力大幅度提升的強化型態!
Thumbnail
以更強的力量強化了兔子坦克型態,造型前衛的兔子坦克氣泡型態!
Thumbnail
TRPG是一種很不好推坑的遊戲,DM難找、隊友也不好找,而想找到合適的DM與隊友就更難了。許多人的TRPG體驗是從"野團"開始。受惠於網路平台的發達,現在TRPG網路團算是蓬勃,找網團跑團相比於面團簡單很多。本篇淺談一些野團時可能遇到的玩家類型,系列的第一篇,來談談野團中常遇到的一類玩家"看客"…
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這次要來介紹2024年突兀出現在烏克蘭戰場上的龐然大物,來跟烏克蘭人一起看所謂的「龜甲戰車」(turtle tank)是怎麼回事,另外介紹這幾年來格柵裝甲(slat armour)的發展與應用。
Thumbnail
  從基本貓的設計思路中,我們也能看到這款遊戲與現在流行的抽卡遊戲的差異。遊戲初期,設計的焦點被放在「攻擊距離」、「攻擊力」、「範圍與單體傷害」、「血量」、「移動速度」以及「花費」這六個項目上,這使得初始的九隻基本貓每隻都能在特定的情境裡面起到作用,也比純數值遊戲有著更多玩家操作與發揮戰術的空間。
Thumbnail
這款遊戲在歐美Twitch上非常受歡迎,直播主紛紛玩起這款遊戲。遊戲和絕地求生相似,有毒圈和死亡時掉落裝備,但也有自己的特色,例如能夠建築遮蔽物。手速和反應能力是遊戲中存活的關鍵。
Thumbnail
戰車逆位 | 失控飛竄的蟑螂 勇士駕駛著由人面獅身獸所拉動的戰車,牠們一黑一白蹲坐在前頭,目光同勇士皆直視前方。身後隔著河水,是一座看似富饒、高塔林立的城鎮。戰車在外的目的不得而知,可能是為了守護身後的事物,也可能是為了抵禦外敵入侵,又或者是準備出征。 塔羅牌意 戰車牌
有!只是應該叫兵仔,兵仔是誰?是鬥雞?為什麼他要做鬥雞?是原生被挑戰嗎?原生悲被挑戰怎麼樣?要殺人?你們相不相信兵仔是好人?只是心裡住著一個魔鬼。有個仔的就是內在小孩,兵仔不是魔鬼。小魔鬼可以嗎?小魔慈比較好。兵仔應該要有一顆鬥爭心,非鬥雞文化。 不是為道業而生?是的,兵仔不是為道業而生,因為他要
Thumbnail
以無機物搭配無機物而成,堅不可摧的銅牆鐵壁!
Thumbnail
突破限界,將兩種有機物合成,全新進化的型態!
Thumbnail
使用危險扳機讓整體能力大幅度提升的強化型態!
Thumbnail
以更強的力量強化了兔子坦克型態,造型前衛的兔子坦克氣泡型態!
Thumbnail
TRPG是一種很不好推坑的遊戲,DM難找、隊友也不好找,而想找到合適的DM與隊友就更難了。許多人的TRPG體驗是從"野團"開始。受惠於網路平台的發達,現在TRPG網路團算是蓬勃,找網團跑團相比於面團簡單很多。本篇淺談一些野團時可能遇到的玩家類型,系列的第一篇,來談談野團中常遇到的一類玩家"看客"…