青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 94, comments - 250, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Nebula3腳本系統(tǒng)

Posted on 2008-12-14 21:55 Condor 閱讀(692) 評論(0)  編輯 收藏 引用

Nebula2的腳本系統(tǒng)實現(xiàn)了一個面向C++的腳本接口, 它把腳本命令直接映射到了C++方法. 從技術角度來說, 這是一個簡捷的思路, 但是對于需要把游戲邏輯和行為腳本化的關卡設計師來說, Nebula2的腳本系統(tǒng)太底層和透明了.

關卡邏輯腳本一般來說構架于比C++接口更高級的層次上, 直接把腳本命令映射到C++方法會把腳本層次弄得錯綜復雜. Bug甚至會比同樣的C++代碼更多, 因為腳本語言一般缺少強類型檢查和”編譯時”的錯誤檢測, 所以在本應在C++編譯時發(fā)現(xiàn)的Bug會在腳本運行時才發(fā)現(xiàn)(這對于不同的腳本語言有所不同). 這是我們從Project Nomads中得出的經驗, 它就是用Nebula2的腳本系統(tǒng)驅動的.

所以教訓就是: 把你的腳本架構在一個正確的抽象層上, 并且: 把你的C++接口映射到一種腳本語言是沒有意義的, 因為那樣你不如從一開始直接用C++來做這些東西.

相應的, 新的Nebula3腳本哲學為關卡設計師提供一些在”正確的抽象層”的(大多是限于特定應用)積木. 當然, “正解的抽象層” 很難來定義, 因為這要在靈活性跟易用性之間找到一個平衡( 例如, 一個”Pickup” 命令是不是應該把角色移動到拾取范圍內呢? )

除了太底層以外, Nebula2的腳本系統(tǒng)也有一些其它的缺點:

  • C++方法必須遵循可以轉化為腳本的原則( 只有簡單數(shù)據(jù)類型才可以做為參數(shù) )
  • 給程序員帶來麻煩. 每個C++方法都需要額外的腳本接口代碼( 每個方法幾行 )
  • 只有派生自nRoot的類可以腳本化
  • 對象關聯(lián)到腳本系統(tǒng)( 思路簡單, 但是增加的依賴性會使重構非常困難 )

下面是Nebual3的底層腳本的大概:

  • 腳本系統(tǒng)的基礎是Script::Command類
  • Script::Command是一個完全腳本語言無關的, 它包含了一個命令名稱, 一些輸入?yún)?shù)的集合還有一些輸出參數(shù)的集合.
  • 一個新的腳本命令通過派生Script::Comand類來創(chuàng)建, 腳本的C++功能代碼可以寫入子類的OnExecute()方法
  • ScriptServer類是腳本系統(tǒng)中僅有一個腳本語言相關的類, 它會把Command對象注冊成新的腳本命令, 并且把命令參數(shù)在腳本語言和C-API之間做翻譯.

這個觀念比Nebula2更為簡單, 最重要的是, 它不會跟Nebula3的其它部分交織在一起. 甚至可以通過改變一個#define來編譯一個沒有腳本支持的Nebula3.

當然, 書寫腳本命令的C++代碼跟Nebula2一樣煩人, 這是NIDL的由來. NIDL的是全稱是”Nebula Interface Definition Language”. 基本思想是通過為腳本命令定義一個簡單的XML schema并把XML描述編譯成派生了Script::Command的C++代碼, 來盡量減少書寫腳本命令的重復性工作.

對于一個腳本命令必不可少的信息有:

  • 命令的名稱
  • 輸入?yún)?shù)的類型和名稱
  • 輸出參數(shù)的類型和名稱
  • 對應的C++代碼( 通常只有一行 )

還有一些非必須, 但是可以帶來便利性的信息:

  • 關于命令的作用和每個參數(shù)的意義的描述, 這可以作為運行時的幫助系統(tǒng)
  • 一個唯一的FourCC(四字符碼), 可以更快的通過二進制通道傳輸

大部分的腳本命令翻譯成了大約7行的XML-NIDL代碼. 這些XML文件再用”nidlc”NIDL編譯器工具編譯為C++代碼. 這個預處理是VisualStudio完全集成的, 所以使用NIDL文件不會為程序員代來任何困難.

為了減少亂七八糟的文件(編譯生成的), 相關的腳本命令被組織到一個叫作庫的集合中. 一個庫由一個單獨的NIDL-XML文件表示, 并且它只會被翻譯一個C++頭文件和一個C++源代碼文件. 腳本庫可以在程序啟動時注冊到ScriptServer, 所以如果你的應用程序不需要腳本訪問文件的話, 僅僅不注冊IO腳本庫就可以了. 這會減小可執(zhí)行文件的體積, 因為連接器會把沒有用到的腳本庫丟棄掉.

最后, Nebula3放棄了TCL作為標準的腳本語言, 而采用了運行時代碼更加小巧的LUA. LUA已經成為游戲腳本的準規(guī)范, 這也使得尋找熟練的LUA關卡設計師更加容易.


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            狠狠综合久久| 一本色道久久综合一区| 欧美在线网站| 欧美一区二区三区视频在线观看 | 亚洲精品久久嫩草网站秘色| 狼狼综合久久久久综合网| 原创国产精品91| 最新成人av在线| 欧美日韩一区二区三| 欧美亚洲尤物久久| 久久久久久久综合日本| 亚洲国产一区二区a毛片| 亚洲毛片在线免费观看| 国产精品亚洲精品| 蜜臀久久99精品久久久画质超高清 | 久久久最新网址| 蜜桃av一区| 亚洲一区二区三区欧美| 亚洲欧美综合| 最新69国产成人精品视频免费| 亚洲精品国精品久久99热一| 国产精品久久久久久久久久久久久久 | 欧美日韩精品一区二区三区| 欧美一区二区大片| 欧美国产综合一区二区| 欧美一区二区三区在线看| 美女国内精品自产拍在线播放| 99国产精品国产精品毛片| 午夜精品国产精品大乳美女| 亚洲激情在线| 欧美一区二区观看视频| 一区二区三区不卡视频在线观看 | 欧美成人69| 国产精品视频免费观看www| 亚洲电影免费观看高清| 国产欧美精品xxxx另类| 亚洲人成在线观看网站高清| 国产在线观看一区| 99精品热视频| 亚洲看片网站| 久久三级福利| 久久精品国产视频| 国产精品成av人在线视午夜片| 欧美成人一区二区在线| 国产精品一区免费观看| 亚洲麻豆av| 亚洲精品乱码久久久久久蜜桃91 | 蜜桃av久久久亚洲精品| 久久不见久久见免费视频1| 欧美日韩亚洲一区二区三区四区| 久久综合影音| 国产一区二区三区不卡在线观看| 亚洲美女性视频| 亚洲精品视频免费| 久久综合图片| 美女爽到呻吟久久久久| 国产有码一区二区| 亚洲综合国产| 午夜久久资源| 国产精品久久久久久久久久尿 | 羞羞答答国产精品www一本| 欧美视频免费在线| 宅男噜噜噜66一区二区| 中文av一区特黄| 欧美四级电影网站| 日韩天堂在线观看| 亚洲一区二区三区视频| 欧美日韩一卡二卡| 亚洲图片激情小说| 午夜影视日本亚洲欧洲精品| 国产精品青草久久| 欧美一乱一性一交一视频| 久久久久久久激情视频| 国产综合色一区二区三区| 欧美与欧洲交xxxx免费观看| 久久先锋影音| 亚洲精品系列| 国产精品白丝av嫩草影院 | 欧美成人综合网站| 亚洲人成免费| 国产精品成人一区二区| 亚洲主播在线播放| 麻豆成人小视频| 亚洲区在线播放| 欧美视频在线观看 亚洲欧| 亚洲无线视频| 久久久久在线| 日韩小视频在线观看专区| 欧美日韩亚洲一区二区三区| 亚洲午夜免费视频| 免费欧美在线| 亚洲午夜视频| 国户精品久久久久久久久久久不卡| 久久精品伊人| 亚洲久久在线| 久久亚洲美女| 亚洲神马久久| 国内成人精品一区| 欧美—级a级欧美特级ar全黄| 一区二区三区日韩欧美精品| 久久久久国产一区二区| 日韩西西人体444www| 国产欧美精品一区二区三区介绍| 久久狠狠久久综合桃花| 99国产精品| 麻豆国产精品一区二区三区| 一区二区免费看| 国产一区在线播放| 欧美日韩精品在线播放| 久久福利视频导航| 一区二区久久久久久| 麻豆av一区二区三区| 亚洲一区久久久| 亚洲欧洲日本国产| 国产欧美激情| 国产精品chinese| 两个人的视频www国产精品| 在线视频一区观看| 亚洲精品1234| 鲁大师成人一区二区三区| 亚洲综合视频一区| 一道本一区二区| 亚洲国产综合在线看不卡| 国产午夜精品一区二区三区视频| 欧美精品一区二区三区四区| 欧美在线视频导航| 午夜精品美女久久久久av福利| 亚洲人成绝费网站色www| 免费视频一区| 看片网站欧美日韩| 久久精品成人欧美大片古装| 亚洲在线日韩| 亚洲欧美成人一区二区在线电影| 亚洲免费久久| 亚洲伦理在线| 日韩性生活视频| 亚洲精选一区二区| 91久久综合亚洲鲁鲁五月天| 尤物yw午夜国产精品视频明星| 国产农村妇女精品一区二区| 国产精品视频免费| 国产精品久久久久久久久久久久久 | 欧美日韩精品一区| 欧美日韩99| 欧美日韩在线一区二区| 欧美精品在线观看播放| 欧美另类在线播放| 欧美精品一区二区视频| 欧美日韩国产成人在线免费| 欧美日韩大陆在线| 欧美色图首页| 国产精品久久夜| 国产丝袜一区二区三区| 精品va天堂亚洲国产| 亚洲高清资源综合久久精品| 亚洲国产日韩欧美| 99国产精品国产精品毛片| 一区二区三区 在线观看视频| 亚洲视频一区在线| 欧美一区二区免费观在线| 久久大综合网| 欧美va亚洲va日韩∨a综合色| 欧美不卡一卡二卡免费版| 亚洲国产精品久久久久婷婷老年| 亚洲黄一区二区三区| 一区二区三区四区五区精品| 亚洲综合日韩在线| 美女亚洲精品| 欧美日韩国产成人精品| 国产美女精品免费电影| 在线播放亚洲| 亚洲午夜视频| 久久婷婷影院| 日韩亚洲欧美高清| 久久福利毛片| 欧美日韩一卡| 一区二区在线免费观看| 一本色道久久综合亚洲精品不卡 | 亚洲第一页在线| 亚洲午夜精品福利| 久久综合999| 国产精品久久久免费| 亚洲第一色中文字幕| 一本大道久久a久久精品综合| 欧美一区二区视频在线| 亚洲福利视频三区| 午夜精品久久久久久久久久久久久 | 久久性色av| 国产精品日韩| 亚洲人成在线观看| 久久国产精品72免费观看| 欧美成人一区在线| 亚洲欧美综合国产精品一区| 欧美激情四色 | 欧美午夜精品久久久久久浪潮| 韩日精品视频| 欧美亚洲三区| 99在线热播精品免费| 美女网站在线免费欧美精品| 国产日韩精品一区二区三区|