任務系統實現 資料結構和處理流程版

2022-08-17 01:57:05 字數 2827 閱讀 6907

隨著網路遊戲的發展,任務越來越成為遊戲的重要內容之一,甚至專門出現了標榜任務為遊戲主要玩法的網路遊戲,任務成為了遊戲中玩家獲得樂趣的重要手段,也是遊戲的特色之一,精彩的任務系統,不但能豐富遊戲樂趣,也是重要的道具和經驗**,下面從伺服器端和客戶端兩方面,以乙個數值策劃的角度出發,通過資料結構和操作流程來論述任務系統。至於任務在具體遊戲中的規劃則略去,以提供乙個通用的框架模板.

本文不涉及具體任務的設計以及任務規劃.也不包括任務撰寫方式在資料結構和流程上的優化方法.任務的指令碼實現也不在討論之列.

一,概述

任務系統資料結構要包含的內容分兩部分,伺服器部分和客戶端部分.

伺服器部分:任務完成標識表,任務變數記錄表

客戶端部分:任務文字說明表

二,設計理念

任務完成標識表其實只是乙個簡單的字串,一般將此字串儲存在角色資料裡的在乙個欄位中,用二進位制的位表示任務的完成情況,使用時將此字串按每2位讀取一次的方式讀取到乙個獨立的陣列中(使用2位來表示乙個任務的情況,00表示任務未接,11表示已經完成,01表示已接未完成,10表示接了失敗),按照陣列的下標來對應相應的任務(如第18組資料對第18號任務,第2000組對應第2000號任務)即使需要記錄2048個任務,也只需花費很少的資料空間.甚至為了節約起見,只用一位二進位制來記錄任務的

完成情況(0未完成,1完成),乙個字元就可以記錄八個任務的完成情況,很節省吧.

任務變數記錄表是一組資料,被儲存在伺服器端的角色資料裡,主要記錄任務的完成情況,一般通過記錄任務的編號(體現在任務完成標識表裡就是被閱讀後的陣列下標),任務變數名,任務變數值等來獲得乙個任務的具體完成情況,為了保證資料的節約,這個表是有大小限制的,也就是說,這種方式,玩家同時可接的任務數量是有上限的,不過這不是大問題,很多遊戲都是這麼做的,eq,wow~

任務文字說明表就完全是客戶端的文字說明顯示了,伺服器通過閱讀任務變數記錄表統計出角色當前有的任務編號,發給客戶端,客戶端通過編號顯示任務日誌.很簡單,沒什麼好說的

三,表結構說明

好,現在我們要做乙個任務系統,假設遊戲中最終有2048個任務(不少了,wow共有3000個任務,而且還只是玩家層面的任務數量,實際上乙個系列的七八個任務可能只用了乙個任務完成標識,其餘是通過任務變數來區別的),玩家同時可接的任務數量為20個任務完成標識表

資料名資料型別長度字段說明

missionflag   int陣列節完成標記

說明:此字串儲存在角色資料中,為2進製,暫定節,儲存在乙個欄位中,可標記2048個任務(以後如果需要增加任務數量,可增加標記位元組)。使用1位來表示乙個任務的情況,0表示任務未接,表示已經完成,使用陣列下標來和全部任務的順序列表來對應,以獲得角色的任務完成情況。

任務變數記錄表

資料名資料型別長度字段說明

missionid int 16 任務編號

missionname char 16 任務變數名

missionvalue char 16 任務變數值

說明:變數表為100條記錄(假定可以支援20個任務),任務變數並配合任務完成標記對其進行刪改。

任務編號(missionid):對應的任務編號,是任務變數屬於哪號任務的標誌。

任務變數名(missionname):任務變數量名,如time,num等等,隨意,用來簡單表示記錄的是什麼。

任務變數值(missionvalue):編號對應的值,也就是time,num等的值是多少,任務指令碼將自行構造語句解悉其具體內容.

三、任務文字說明表

資料名資料型別長度字段說明

missionid int 32 任務編號

missionname char 16 任務變數名

missionvalue char 16 任務變數值

missiontext 任務日誌說明

說明:記錄在客戶端的步驟說明表,根據比對任務編號、變數和其值,來顯示不同的任務日誌。

任務編號(missionid):從服務端任務變數表中完全複製過來的資料。

任務變數名(missionname):同上

任務變數值(missionvalue):同上

任務日誌說明(missiontext):於以上三條記錄相對應的時候,任務日誌所顯示的說明文字。

四,資料操作流程

服務端兩個任務庫的操作

1、接下任務時的操作

角色獲得需要使用任務變數的任務前,先檢查任務變數表是否為空,如任務變數已經全部被使用,則不能獲得此任務。如有任務變數表有多餘空間,則角色接下任務,再將相應數值寫入變數表。

2、完成任務時候的操作

判斷角色任務完成標記字串,當角色完全完成乙個任務時,將角色任務完成標記字串根據陣列下標對應此任務的標記設定為1,並刪除所有任務變數表中此任務相關的任務變數記錄。

任務變數的具體數值和標識,由指令碼自行控制,因此在製作任務時,需要製作exl**,記錄任務和其編號已及使用的任務變數已及值的對應含義,方便撰寫指令碼時候備查使用。

客戶端日誌查詢

1、(可選)客戶端開啟任務日誌,首先查詢任務完成標識表,忽略所有未接任務。所有已完成任務通過讀取客戶端任務說明表直接顯示已經完成(這裡有兩種做法,如果不想對已經完成的任務進行說明,這步可以不用,如果想詳細說明,需要再擴充套件一張表,一般不會有人想詳細列出已經完成的任務吧,所以無視本條內容吧)。

2、查詢任務變數記錄表,統計出所有被記錄的任務編號,然後根據其任務變數名和值,讀取客戶端任務文字說明表中能符合其編號和任務變數名和值的記錄,把其中的文字部分顯示出來。

用以上完成標識和任務變數分開儲存的方式,能夠海量的記錄人物的任務完成情況而又不會浪費很多空間,通過簡單讀取任務完成情況表就可以迅速的獲得人物幾千個任務的完成情況,通過查詢任務變數記錄表則可以輕鬆獲得任務的具體步驟的內容,以完成標識來維護任務變數表,太晚了磕睡,寫的很草,自己都感覺深澀難懂,深更半夜也沒機會舉例子說明了,有程式基礎的應該能看懂吧

附件超大附件

資料結構實驗任務

實驗內容和目的 通過資料結構課程實驗,使學生熟練掌握四種基本資料結構 集合 線性結構 樹形結構 網狀結構在求解實際問題中的應用,進一步鞏固常用資料結構的基本概念及其不同的實現方法,掌握基本的查詢和排序的演算法理論與實現技術 培養書寫規範文件的技巧,養成一種良好的程式設計風格,鍛鍊編制相當規模的程式的...

資料結構和作業系統

資料結構 研究生入學考試學習大綱 作業系統 1 作業系統引論 1 1 作業系統的目標 作用和型別 1 2 作業系統的發展與分類 1 3 作業系統的功能與組成 1 4 市場上常用的作業系統的介紹 2 程序的描述與控制 2 1 程序的描述 2 1 1 程序的定義 2 1 2 程序的狀態 2 2 程序的控...

資料結構 線性表的鏈式表示和實現

數學與計算科學學院 實驗報告 實驗專案名稱線性表的鏈式表示和實現 所屬課程名稱資料結構 a 實驗型別驗證型 實驗日期 2011年4月21日 班級訊號二班 學號 200956110304 姓名劉謙 成績附錄1 源程式 附錄2 實驗報告填寫說明 1 實驗專案名稱 要求與實驗教學大綱一致。2 實驗目的 目...