[2010-02-19 22:55:34] 本文價值40
雖然ASRPG中採用時序式指令 但是 並不代表必須有個程式掛在那邊等待指令執行的瞬間 相反的 指令的執行大多採用預測式執行 當指令下達以後 便將從現時刻到這個指令結束後的所有預想步驟都計算出來 並且將這些"未來"的步驟存檔 同時將複本傳送到使用者端 套過客戶端解碼讓使用者看到該命令的完整執行過程 若指令時課結束後且使用者沒有再下達其他命令 等到再次有使用者連線時 系統會將這些過期的存檔步驟叫出 驗證其正確性後刪除 假使 當指令步驟只跑到一半 使用者便插入了其他指令或是下令打斷時 系統就必須透過呼叫步驟紀錄 計算出合乎現時刻的最新狀態 然後刪除舊的步驟紀錄 以新指令的步驟取代之 整個系統採用 "事前執行 事後確認" 的方法 先將步驟送出 然後等待時間點的到來時 確認其結果是否正確 這個方法在配合完善的戰鬥組語 可以滿足動態執行的所有要求 但是 大量的單位(UNITE)間的時序是不斷交錯執行的 因此在一個複雜的 複數腳色的同步執行時 選找哪個步驟該優先執行成為一個效率的重點 若將步驟佇列使用SQL MEMORY表建檔 以SQL命令出乎可以達到非常神速的排序整理 但是一開始未了減少SQL負擔 以及避免頻繁的連線讀寫 所以V3中所有動態命令的部分都是採用伺服器記憶體暫存運算 而不使用SQL 而且要如何讓已ms為單位的精細校時 在SQL與JAVA中準確配合也是的疑問 雖然說記憶體暫存擁有最快的存取效率 但是JAVA內建的命令不足以滿足工作需求 導致我必須用人工的方式執行排序 結果 現在到底該如何處理步驟佇列 還是個大問號....
|