音游核心玩法

音游的核心玩法

nekocon

音游核心玩法的需求

  • 判定秕脓、狀態(tài)(邏輯
  • 動(dòng)畫、特效会油、UI(表現(xiàn)

代碼設(shè)計(jì)和技術(shù)總結(jié)上細(xì)分為

判定


設(shè)計(jì):

將一個(gè)時(shí)間段預(yù)先根據(jù)譜面和note的判定區(qū)間分為n個(gè)已知判定結(jié)果的區(qū)間

  • 將所有note的判定區(qū)間和結(jié)果存在容器中虚缎,以毫秒為單位作為key,以結(jié)果Perfect瞎抛、Great、None作為value.

  • 前后note的區(qū)間重疊有判定優(yōu)先級(jí)之分

  • 優(yōu)點(diǎn):判定效率取決容器的尋址速度却紧,而不是等式判定桐臊,會(huì)更高效率胎撤,更快。缺點(diǎn):數(shù)據(jù)量比較大


技術(shù)總結(jié)

根據(jù)順序断凶,判定會(huì)經(jīng)過(guò)如下3個(gè)模塊

  • 觸碰
    • iOS伤提、Android原生觸碰代碼
  • 判定
    • FixedUpdate、Update的區(qū)分
    • 規(guī)范高效的代碼
  • 音頻
    • BGM
    • key音

狀態(tài)(buff)


設(shè)計(jì)

  • 定義:游戲內(nèi)所有和數(shù)值有關(guān)的行為和規(guī)則认烁,都理解為狀態(tài)肿男,如扣血、加fever却嗡、fever期間暴擊等
  • 難點(diǎn):這是策劃內(nèi)容最多變的地方舶沛,為了應(yīng)對(duì)核心玩法中最冗亂、復(fù)雜的模塊窗价,必定需要一種編程模式去實(shí)現(xiàn)

技術(shù)總結(jié)

拋棄具象的Entity編程模式如庭,改用抽象接口去實(shí)現(xiàn)解耦,用組合替換繼承
public interface IBuff
{
    void Execute();
}

public class Hurt : IBuff
{
    public int value;

    public void Execute()
    {
        CharacterManager.instance.hp -= value;
    }
}
//Init note damage buff
IBuff hurt = new Hurt
{
    value = damage,
};
//Execute when note attack
hurt.Execute();

事件(event)


再?gòu)?fù)雜的兩層關(guān)系撼港,都可以通過(guò)中間層解決-魯迅
示例1坪它,邏輯和表現(xiàn)、數(shù)據(jù)的代碼都放在一起帝牡,造成耦合:

//如果擊中Perfect區(qū)間
if (m_TimeNodeOrders[Touch.instance.touchtick] == PERFECT)
{
    //生成Perfect特效
    EffectManager.instance.PlayPerfect();
    StaticManager.instance.AddPerfectCount();
}

示例2往毡,游戲邏輯只和event有關(guān)系,而event作為中間層和其他層產(chǎn)生關(guān)系靶溜,匿名者原則

//下面腳本放在游戲事件驅(qū)動(dòng)器GameEvent中
EventManager.instance.Regist("OnPerfectHitted").trigger += EffectManager.instance.PlayPerfect();
EventManager.instance.Regist("OnPerfectHitted").trigger += StaticManager.instance.AddPerfectCount();
//如果擊中Perfect區(qū)間
if (m_TimeNodeOrders[Touch.instance.touchtick] == PERFECT)
{
    //觸發(fā)事件
    EventManager.instance.Invoke("OnPerfectHitted");
}

游戲表現(xiàn)(view)


設(shè)計(jì)

定義:游戲中的實(shí)體表現(xiàn)卖擅,分別有note、人物墨技、特效惩阶、UI

技術(shù)總結(jié)

  • 緩沖池(Pool)提高note和特效的生成效率、降低內(nèi)存負(fù)擔(dān)

  • 動(dòng)畫狀態(tài)機(jī)(FSM)提高腳本的靈活性和準(zhǔn)確性

  • 數(shù)據(jù)綁定(binding)扣汪,讓一些數(shù)據(jù)的綁定免去重復(fù)沒(méi)有創(chuàng)造性的代碼

  • 著色器(shader)優(yōu)化長(zhǎng)按效率断楷,組合圖案形成長(zhǎng)按,剔除崭别,在像素著色器做透明處理

面臨的一些問(wèn)題

安卓機(jī)型的硬件不統(tǒng)一冬筒,造成適配問(wèn)題

  • 游戲卡頓
  • 音頻延遲

改進(jìn)

  1. Unity2018.3開始了新的GC系統(tǒng)可以暫時(shí)禁用GC以避免卡頓,Unity2019引入了一種新的GC工作方式茅主,incremental GC舞痰。
  2. Unity2018引入和ECS框架,可以更大程度地去應(yīng)用設(shè)備的多核功能诀姚,以優(yōu)化游戲核心玩法的流暢度與卡頓响牛。
  3. Unity2018應(yīng)用了新的音頻系統(tǒng),低延遲播放音頻。
  4. 核心玩法的數(shù)據(jù)綁定不再用可視化工具呀打,而是純代碼執(zhí)行
  5. Criware矢赁,Superpowered等一些第三方的音頻中間鍵
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贬丛,隨后出現(xiàn)的幾起案子撩银,更是在濱河造成了極大的恐慌,老刑警劉巖豺憔,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件额获,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡恭应,警方通過(guò)查閱死者的電腦和手機(jī)咪啡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)暮屡,“玉大人撤摸,你說(shuō)我怎么就攤上這事“伲” “怎么了准夷?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)莺掠。 經(jīng)常有香客問(wèn)我衫嵌,道長(zhǎng),這世上最難降的妖魔是什么彻秆? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任楔绞,我火速辦了婚禮,結(jié)果婚禮上唇兑,老公的妹妹穿的比我還像新娘酒朵。我一直安慰自己,他們只是感情好扎附,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布蔫耽。 她就那樣靜靜地躺著,像睡著了一般留夜。 火紅的嫁衣襯著肌膚如雪匙铡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天碍粥,我揣著相機(jī)與錄音鳖眼,去河邊找鬼。 笑死嚼摩,一個(gè)胖子當(dāng)著我的面吹牛钦讳,可吹牛的內(nèi)容都是我干的矿瘦。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蜂厅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼匪凡!你這毒婦竟也來(lái)了膊畴?” 一聲冷哼從身側(cè)響起掘猿,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唇跨,沒(méi)想到半個(gè)月后稠通,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡买猖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年改橘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玉控。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡飞主,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出高诺,到底是詐尸還是另有隱情碌识,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布虱而,位于F島的核電站筏餐,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏牡拇。R本人自食惡果不足惜魁瞪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惠呼。 院中可真熱鬧导俘,春花似錦、人聲如沸剔蹋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)滩租。三九已至赋秀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間律想,已是汗流浹背猎莲。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留技即,地道東北人著洼。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親身笤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子豹悬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 回顧 DJMAX 系列系統(tǒng)設(shè)計(jì)上的進(jìn)化。 引言 之前看到關(guān)于 Pentavision 的解體的新聞液荸,這意味著 DJ...
    jagttt閱讀 887評(píng)論 0 2
  • 作者:一字馬胡 轉(zhuǎn)載標(biāo)志 【2017-11-12】 更新日志 日期更新內(nèi)容備注 2017-11-12新建文章初版 ...
    beneke閱讀 2,211評(píng)論 0 7
  • 認(rèn)真對(duì)待每一件事情瞻佛,即使不知道這件事有沒(méi)有結(jié)果,只要努力認(rèn)真對(duì)待娇钱,也許會(huì)有好的結(jié)果呢I吮?
    花開花落花滿天09閱讀 295評(píng)論 0 0
  • 長(zhǎng)輩們一路對(duì)我照顧關(guān)愛(ài)有加文搂,不止感謝适刀,更是暖心。 西藏之旅煤蹭,本是不情愿笔喉,但卻意外收獲很多。正如當(dāng)兵后悔兩年硝皂,不當(dāng)兵...
    最美李清照閱讀 247評(píng)論 0 6
  • “懷舊是一種錯(cuò)覺(jué)常挚,甚至它更可能是一種幻覺(jué),有人用過(guò)這樣一個(gè)比喻吧彪,比喻記憶本身是葡萄待侵,那么回憶的過(guò)程就是發(fā)酵,每個(gè)人...
    _卷葉收顏閱讀 278評(píng)論 0 0