運營活動需求實現
平時遊戲運營活動需求,看起來是蠻復雜的。事實上本質上任務系統或者成就系統類似。
一般需求像這樣:
1. 活動有開始時間和結束時間要求。
2. 活動給出的獎勵也有開始時間和結束時間要求。
3. 完畢活動須要做完幾件事情(我們稱作事件或者條件事件)。
4. 相比較任務和成就系統,這樣的活動條目非常少。
分享一下我們的做法:
1. 獨立實現一個活動server。存儲的DB也是獨立。這種優點是,活動server和主邏輯server的全然分離的,DB數據能夠隨便清除,很easy維護。
2. 主邏輯server,不斷將事件通過網絡協議的方式通知活動server;
3. 主邏輯server,通知事件後。活動server將可能返回已完畢的活動條目。
主邏輯server,沒有什麽好說的。考慮活動的特點。我們僅僅要無腦地將事件發給活動server。
活動server實現幾個地方略微講究一下。
1. 每次收到玩家登錄消息時,就將全部未接受的活動項。自己主動接受下來。這裏註意的一點事,即使這個活動開始時間未到。我們也接受下來。
2. 收到事件通知時,要註意一下活動是否已經開始,和活動是否已經結束。1&2這樣做的目的是,某個活動的開始的時候。玩家不用又一次登錄。這個是比較重要體驗問題。
3. 完畢活動後,給主邏輯server發獎勵的話,需要推斷一下,當前時間是否是獎勵發放時間範圍內。
舉一個實際的樣例:
2014.10.1~2014.10.7充值的玩家,在2014.10.5~20.10.7期間,能獲得雙倍掉落的獎勵。
接受時間:2014.10.1~2014.10.7
事件:充值
獎勵時間:2014.10.5~20.10.7
獎勵內容:雙倍掉落
1. 某個玩家登錄時,活動server生成這個 活動任務 對象。
2. 這個玩家充值的時候,活動server收到這個充值事件,僅僅要在2014.10.1~2014.10.7內。就推斷該活動是否完畢。
3. 玩家登錄後。主邏輯server發一個空的通知事件,然後就收到雙倍獎勵內容,後面該幹什麽就幹什麽。
這類需求頭腦保持清醒。看似眼花繚亂的需求,實現起來很簡潔。
運營活動需求實現