Kinra
【雜貨店】
前一噗太長了所以換一下場所
@vieshaphiel - 好想寫個大富翁自己玩喔
Kinra
目前除了畫sprite之外主要的目標
- 把回合流程完成:目前走到目的地之後如果不能蓋建築就沒事幹了,走到既存建築旁邊也不會發生任何事。初步的目標是讓玩家可以升級生產建築以及拆掉自己蓋的建築
- 技能樹:目前戰鬥中玩家只能拿資源砸敵人。初步的目標是讓玩家可以學會使用武器(不必耗資源)以及提升能力值(可以打倒更危險的敵人)
- 實際加上第二名玩家測試兩人輪流行動
Kinra
但是畫sprite也很重要
- 昨天畫的森林sprite醜爆了,重畫
- 技能樹預定是要透過「玩家興建2x2尺寸的建築&後續與其互動」來發展,所以要把建築sprite畫出來
- 戰鬥畫面目前只有地面而已,我希望戰鬥畫面可以有個intro轉場,為了讓人看得懂轉場,至少要讓戰鬥畫面有個滿版背景
- 要加第二名玩家就得畫第二名玩家的sprite。當然測試期間直接用第一名玩家的sprite也可以啦,不過遲早要畫
Kinra
其他前一噗提過的各種零星構想優先度都比較低,之後我再回去挖自己寫過什麼
Kinra
大家做遊戲絕對不要像我這樣design doc只存在於噗浪上跟腦子裡喔,這是不想負責任把遊戲做完的人才可以用的做法
Kinra
==
剛剛在準備「走到建築旁邊時」的處理,但還沒決定升級建築的UI要怎麼呈現
目前的構想是:如果目的地的相鄰格子裡既有玩家的建築也有空地,那就立刻把建築選項列擺出來讓玩家可以選擇蓋建築,但同時在玩家的建築上加個提示效果
- 如果玩家不按建築選項而是按自己的建築,就把選項列收起來,切換到建築升級的訊息視窗
- 如果玩家又不按升級視窗裡的OK按鈕,而是按取消按鈕或按視窗外的別處,就再把升級視窗收起來,切回建築選項列
Kinra
總之我先把暫時收起選項列的演出做好了
演出都好做,流程才頭痛……
Kinra
走到可升級的建築物旁時顯示提示效果的部分做好了
剩下這些處理
- 如果只能升級但不能蓋新的建築物就不要顯示建築選項列(目前的loop是靠「選項列存不存在」來判定建築階段是不是剛開始,所以得增設判定標準,不然在只能升級的情況下建築階段會卡住)
- 游標經過可升級建築時的highlight效果(目前已經會在右下角顯示建築資訊了,新處理塞在這裡就行)。主要是為了讓玩家知道這是可以按的東西
- 按下可升級建築之後的升級訊息視窗。裡面要顯示升級費用,這得存在建築資料裡
- 升級完的能力變化……還沒想
Kinra
前兩個弄好了
升級視窗就跟建築選項列一樣是指令列,只不過指令只有一種就是確定升級
(也可以好幾種,這樣就能做出升級分歧了)

醜爆的森林sprite重新畫完之前我都不敢錄遊戲畫面所以只好用文字說明
Kinra
升級跟建築根本應該拆成兩種不同回合階段的,只是讓他們可以來回跳而已
我包在同一個階段裡處理看起來超髒的,不過寫都寫了懶得改……
Kinra
其實今天為了記錄某個bug所以有錄影片啦
Kinra on Twitter
除了影片裡那個箭頭圖示歪掉的bug(結果是我draw的範圍設錯所以不該縮放的貼圖被縮放了)之外,畫面上沒有森林也是bug,本來2x2建築周圍應該長出一圈森林的,但我腦殘把計算座標用的迴圈改成1x1用的了所以長不出來XD
Kinra
https://images.plurk.com/iOxT2DINeYQGYltICrbhx.png
畫出至少不噁心的森林了(之前的看起來像一群毛毛蟲窩在一起)
多畫幾種讓遊戲隨機挑選好了
阿雅
Kinra
https://images.plurk.com/1VEWEdYgXG26pvCop6fSYm.png
拆建築功能好像有點難寫,先來調整一下鏡頭的設計
之前加上了切換縮放比例的功能,因為是純粹測試用的所以有些衍生的bug放著沒管,剛剛覺得縮放比例功能應該是真的用得到所以把bug修掉了
Kinra
拆建築難寫是因為只有兩種做法
- 蓋建築的相反→當初蓋建築的演出寫得太迂迴了,所以等於要再做一套同樣迂迴的流程
- 直接在建築上面覆蓋一個SimCity般的爆炸動畫然後趁機把底下建築砍掉→要畫sprite
Kinra
我是傾向畫爆炸動畫,因為蓋建築目前演出只是建築從底下浮上來而已超無聊的
實際上蓋建築也應該改成疊個效果動畫才對的,只是我還沒想到要畫怎樣的效果才符合世界觀
Kinra
本來打算只設一種buff建築,每回合會生經驗值給玩家升級點技能
不過覺得這樣RPG跟大富翁不夠融合,所以現在構想改成直接讓建築能提升玩家的能力值,例如HP+建築就是蓋越多HP增加越多,但被拆的話HP就會降
但是玩家還是另外有一個升級機制可以自己升基礎能力值
換句話說就是像惡魔城裡玩家可以練等也可以撿HPMAX道具一樣
Kinra
能力值+的建築個數當然會受地圖大小限制,所以各玩家之間就得互搶地盤才能把自己buff到更強
理想狀態是四名玩家如果單純均分土地的話最後誰都打不贏大魔王
Kinra
>>四名玩家如果單純均分土地的話最後誰都打不贏大魔王
不過這種設計的前提是buff建築本身不能升級,或者能升級但有上限
這樣做也有這樣做的無趣之處
Kinra
剛剛花了兩秒把建築function複製一份改造成建築升級function了,還沒連到回合流程上
好啦不只兩秒,我動作沒那麼快
Kinra
我之前為了讓回合loop每個frame判定建築蓋完了沒,用了兩個不同的屬性來存「目前畫面上顯示的建築」(A)跟「實際上內部資料中的建築」(B),在建築動畫還沒播完之前,正在蓋的建築只會存在A,讓draw拿來畫在畫面上,至於update則會參照B,只要B還是null就會繼續累加建築進度,進度滿了才把A拷貝到B(都是參照,建築是class所以實際上資料只有一份)
但現在看來這作法還蠻呆的,一旦建築蓋完了兩者就毫無差別,等於多一個屬性一直存著一個無謂的重複參照
Kinra
但要說它沒效率或浪費,好像跟其他做法也沒差多少(就多一個參照而已),所以我懶得改了
Kinra
幹 我今天才知道陣列傳的是reference的值,所以我把建築物類型的範本能力值拷貝給各個建築物個體的時候還沒問題,可是一讓建築物升級就連範本能力值都被修改了
Kinra
不過一知道就好解決了,所以建築升級流程組進去了
目前還缺消費資源處理,而且也沒有升級動畫(跟建築動畫一樣從地底浮上來而已)
Kinra
我本來還以為我只要記得struct跟class的差別就好了……
Kinra
Kinra on Twitter
下雨天不想出門買晚餐所以把建築升級流程寫完了
暫時還是沒有升級動畫,我覺得我假日才有力氣畫效果動畫
關於Lv2建築的外觀跟Lv1一樣的問題,我目前的打算是讓建築最高只能升到Lv3,然後卯起來把兩段升級的sprite也畫出來
這不只是因為大富翁的建築這樣才有趣,也是因為其實我一開始畫建築sprite的時候啥都沒想就畫成最高級版了,是畫完發現Lv1太豪華了才把豪華度減回來的……
Kinra
因為最高只有Lv3所以我打算讓升級成本跟升級效益都以指數成長
Kinra
https://images.plurk.com/6oOCAP5NogCrRWReKKAiyp.gif
貼推特顯示起來怪怪的讓我很不爽所以這邊貼一份
預定要在玩家遇到怪獸的時候顯示在玩家頭上的驚嘆號(cf. Pokemon)
Kinra
Kinra on Twitter
實際顯示出來像這樣
Kinra
目前做法很髒,是把戰鬥所需的資料存到一個global變數裡,然後在更新物清單(畫面上所有每frame要update一次的物件)裡面塞一個播完會自毀的動畫sprite物件,再加一個flag表示正在播這個動畫,然後每次遊戲流程update時如果flag立著就確認sprite是不是還在清單裡,不在了才正式呼叫生成戰鬥子畫面的function
Kinra
話說目前蓋建築的時候遇到怪物的話是這樣
先把蓋建築要用的資源扣掉→以剩下的資源開始戰鬥→如果戰敗而無法蓋建築則把剛剛扣掉的資源補回來
這是為了避免辛苦打贏戰鬥了卻因為在戰鬥中把資源砸光光而沒辦法蓋建築,但我現在想想,允許這種情況發生好像比較有趣?
Kinra
好吧可能只有在旁邊看的人會覺得有趣,當事人大概只會覺得幹,還是不要好了
Kinra
Kinra on Twitter
草草畫了廢墟地形sprite之後把拆房子功能加上去了
Kinra
話說我在推特上也寫了,總覺得跟現有房子互動用的指令按鈕應該要顯示在房子上面,而不是底下的指令列
畢竟再怎樣基本上也只會有兩個指令(升級跟拆除),對房子會造成直接影響的指令還是顯示在靠近房子的位置按下去會比較有回饋感(前提當然是升級/拆除動畫要畫啦,不過那是另一個todo)
Kinra
要改這個自然不難,但我本來做指令列的時候考量是希望有個設計可以減少玩家誤按拆除的可能性,所以拆除按鈕會特地顯示在比較遠的地方;如果這樣改的話就不能用這招了
我現在在想實際上到底有沒有必要特地避免誤按,如果要的話就得另想辦法了(例如最近蠻流行的「要按住按鈕一下下才會確定」)
Kinra
Kinra on Twitter
我視窗code寫超爛所以光是做個視窗跟視角捲動一起動的設計就花了快半小時debug
那個code從概念上就錯了所以下次做別的專案再重頭寫個聰明一點的好了
Kinra
Kinra on Twitter
因為不希望從按鈕物件外部用特例處理來實現「按住按鈕一下下才會確定」,今晚花了一堆時間把視窗物件跟輸入物件的互動流程整個大翻修
修完是變成我想要的行為模式了,也的確多把一堆外部的處理交給物件自己處理了,但還是有一些根本的東西留在外部(例如現在還是要在特定的畫面狀態下才會由主loop來呼叫指令列檢查游標所指的指令有沒有變),所以完全沒有code變乾淨的感覺……
Kinra
Kinra on Twitter
加上回合開始時採集資源的演出了。計數器也要跳一下閃一下之類的比較完整,不過我已經累了
Kinra
採集資源演出的流程是
1. 掃一遍所有建築看誰要繳資源了
2. 若有建築要繳資源,就在那個建築的位置生成一個icon叫它飛到左上後自滅,並且把這個icon登記到每次要draw的物件清單,以及一個"modal"物件清單,每次update時更新完所有物件的動畫狀態後只要modal物件清單裡還有東西就不會進行回合階段推進的處理
3. 然後把要繳的資源量存到一個暫存變數裡
4. 結束這個階段並且設好flag,下次回合階段推進時就會到下一個階段
5. 如此一來就會等到所有資源icon通通飛到目的地自滅之後才進入下一個階段
6. 然後在那個階段再把暫存變數裡的資源存進帳戶
Kinra
但這個4~6是有點呆的設計,這樣子只有回合開始時的固定階段內才能播出採集演出,其他時間點的資源變動還是會瞬間發生
所以泛用一點的做法是不管什麼階段,只要update時沒被modal物件擋住,就檢查暫存變數裡有沒有資源要存,一旦有就馬上存
不過如前述我今天累了所以明天再修改成這樣
Kinra
現在開了專案要改又想反悔了,因為這樣等於把本來一回合只需要呼叫幾次的東西變成每秒呼叫60次,好像更呆XD
Kinra
最後改成搭便車型態:原本除了回合的各階段之外就有一個「亂入階段」用的flag,打開就能讓特定的處理插隊;目前為止這個flag都是專門給戰鬥畫面用的,現在另外定義一個值就可以讓帳戶更新處理亂入了
這個flag的判定本來就是每次update就要做,所以結果還是變成每秒判定60次了,只不過是本來就有的判定
Kinra
Kinra on Twitter
畫了超乏味的HP強化建築
期待未來有靈感再來調整建築外觀……總之先把功能加進去了
Kinra
剛剛試玩覺得HP強化建築的成本可能要再更貴一點,不然會蓋太多
改貴的話相對的每一座增加的HP量就會多一點
Kinra
不過也不能貴到變稀有物,規劃上這還是必須是一個多到讓玩家最後必須互搶土地來蓋的大量型建築
Kinra
本專案第一次遭遇到了debug好像成功了但是我搞不清楚到底本來的bug是什麼原因的狀況
感覺又是某種跟參照有關的陷阱,可是怎麼看code都看不出來到底為啥會發生……
Kinra
@vieshaphiel - 【雜貨店】支線:地名系統 目標:營造大富翁的同地區加成效果 傳統上是把同一...
忘了記,試作的地名系統我最近才發現有個地方不合我的構想:道路兩側的土地不會被劃入同一個地名
這也是當然,因為設計上土地要相鄰才會合併
所以我前幾天改了一下,讓合併判定時碰到道路會再往外多判定一格
還沒完全改對(連斜方向也往外推了,所以會合併到看起來離超遠的地),改完之後我就把這個系統併到目前的遊戲裡好了
Kinra
https://images.plurk.com/7zyV7GYLKgMx4P23UhsJAZ.png
好啦應該算是成功了吧
Kinra
最近都在玩別人的遊戲所以這邊擱置了,剛剛稍微開專案摸了一下,加了個戰鬥中指令tooltip會把攻擊威力倍率列出來的功能
很瑣碎,不過總比啥都沒做好
Kinra
地名系統的整合其實還沒動,所以下一步要動的話應該是先做這個
不過我覺得我今年剩下的時間扣掉打機戰之後應該會先把魔劍之書5-2衝完,所以這個專案可能明年才會再動了XD
Kinra
>>我目前的打算是讓建築最高只能升到Lv3,然後卯起來把兩段升級的sprite也畫出來
有鑑於這個目標,我把升級系統的整套做法改掉了
原本是不管升幾級都視為同一種建築,只是根據成長倍率來決定每次升級的時候能力要加多少。優點是可以升的級數很有彈性,缺點是sprite不能變
現在改成升級時會直接變身成另一種建築,這樣子可以升的級數有限,但每一級都可以具體設定sprite跟能力值
https://images.plurk.com/P7HVTNuKZdI41kMaWchRK.png https://images.plurk.com/5QJZqbHj1FfMVaTdK6myPv.png
Kinra
當然我還沒畫sprite所以上圖升級完外觀沒變啦
Kinra
(順帶一提,前幾天寫的資源圖示飛行問題,我剛剛發現原來根本這噗前面就寫過了,所以砍掉了XD)
Kinra
然後我頭一次用了今年C#追加的簡易版tuple功能
我覺得這個專案應該到處都用得到,不過我懶得去找哪裡可以用了……
Kinra
目前圖中呈現一個資源建築太多的景象
實際上預訂的遊戲流程裡會有誘因讓玩家朝遠處走,所以不會像圖中這樣通通蓋在一個小區域裡,但好像還是太多了,起始資源10的話兩種資源建築要各蓋10座才累積得到升級第1座所需的資源
Kinra
目前升到Lv2所需的資源是蓋Lv1成本的10倍
考慮到流程中還打算準備其他各種吃資源的東西,可能還是把資源建築升級成本調低一點比較好……?
Kinra
要不然就是把Lv1建築生資源的速度調快一點(但目前是每回合+1,這是整數值所以要調快馬上就只能變兩倍了)
Kinra
現在看截圖才發現森林sprite底下的參考格線圖層忘記關掉就輸出了XDDD
Kinra
後來把Lv1建築的資源成本改成3+1共4個了(本來是5+3共8個)
原本是不希望玩家光靠走路撿資源就可以每回合蓋建築,所以既然開局就有各10個資源,那麼每回合步數期望值是3.5步的話第三回合才能回本好像剛剛好
但我忘了我設定的撿資源機率只有50%,所以其實每回合撿到的資源數期望值只有1.75個而已……
載入新的回覆