锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 銆銆鍦ㄥぇ閮ㄥ垎鐨凪MOG涓紝娓告垙瀵硅薄鐨勭被鍨嬮兘澶у悓灝忓紓錛屼富瑕佹湁鐗╁搧銆佺敓鐗┿佺帺瀹剁瓑銆傛瘮濡傚湪wow涓紝閫氳繃鏈嶅姟鍣ㄥ彂涓嬫潵鐨凣UID鎴戜滑鍙互浜嗚В鍒幫紝娓告垙涓湁9澶х被瀵硅薄錛屽寘鎷墿鍝?Item)銆佽儗鍖?Container)銆佺敓鐗?Unit)銆佺帺瀹?Player)銆佹父鎴忓璞?GameObject)銆佸姩鎬佸璞?DynamicObject)銆佸案浣?Corpse)絳夈?/p>
銆銆鍦╩angos鐨勫疄鐜頒腑錛屽璞′嬌鐢ㄧ被緇ф壙鐨勬柟寮忥紝鐢監bject鍩虹被瀹氫箟娓告垙瀵硅薄鐨勫叕鏈夋帴鍙e強灞炴э紝鍖呮嫭GUID鐨勭敓鎴愬強綆$悊銆佹瀯閫犲強鏇存柊UpdateData鏁版嵁鐨勮櫄鎺ュ彛銆佽緗強鑾峰彇瀵硅薄灞炴ч泦鐨勬柟娉曠瓑銆傜劧鍚庡垎鍑轟簡涓ょ被媧劇敓瀵硅薄錛屼竴鏄疘tem錛屽彟涓鏄疻orldObject銆侷tem鍗崇墿鍝佸璞★紝WorldObject欏懼悕鎬濅箟錛屼負涓栫晫瀵硅薄錛屽嵆鍙坊鍔犲埌娓告垙涓栫晫鍦烘櫙涓殑瀵硅薄錛岃瀵硅薄綾誨瀷瀹氫箟浜嗙函铏氭帴鍙o紝涔熷氨鏄笉鍙瀹炰緥鍖栵紝涓昏鏄湪Object瀵硅薄鐨勫熀紜涓婂張娣誨姞浜嗗潗鏍囪緗垨鑾峰彇鐨勭浉鍏蟲帴鍙c?/p>
銆銆Item綾誨瀷鍙堟淳鍏靛嚭浜嗕竴綾籅ag瀵硅薄錛岃繖鏄竴縐嶇壒孌婄殑鐗╁搧瀵硅薄錛屽叾鏈韓鍏鋒湁鐗╁搧鐨勬墍鏈夊睘鎬у強鏂規硶錛屼絾鍙堝彲浣滀負鏂扮殑瀹瑰櫒綾誨瀷錛屽茍鍏鋒湁鑷繁鐗規湁鐨勫睘鎬у拰鏂規硶錛屾墍浠ュ疄鐜頒笂閲囩敤浜嗘淳鐢熴俶angos鍦ㄥ疄鐜版椂瀵笲ag鐨勭被鍨嬪畾涔夊仛浜嗙偣灝忔妧宸э紝Item鐨勭被鍨嬩負2錛孊ag鐨勭被鍨嬩負6錛岃繖鏍峰湪閫氳繃浣嶇殑鏂瑰紡鏉ヨ〃紺虹被鍨嬫椂錛孊ag綾誨瀷涔熷氨鍚屾椂灞炰簬Item綾誨瀷浜嗐傝櫧鐒跺彧鏄緢灝忕殑涓涓妧宸э紝浣嗗湪寰堝鍦版柟鍗村甫鏉ヤ簡鏋佸ぇ鐨勪究鍒┿?/p>
銆銆浠嶹orldObject媧劇敓鍑虹殑綾誨瀷灝辨湁濂藉嚑縐嶄簡錛孶nit銆丟ameObject銆丏ynamicObject鍜孋orpse銆俇nit涓烘墍鏈夌敓鐗╃被鍨嬬殑鍩虹被錛屽悓WorldObject涓鏍鳳紝涔熶笉鍙瀹炰緥鍖栥傚畠瀹氫箟浜嗙敓鐗╃被鍨嬬殑鍏湁灞炴э紝濡傜鏃忋佽亴涓氥佹у埆銆佺敓鍛姐侀瓟娉曠瓑錛屽彟澶栬繕鎻愪緵浜嗙浉鍏崇殑涓浜涙搷浣滄帴鍙c傛父鎴忎腑瀹為檯鐨勭敓鐗╁璞$被鍨嬩負Creature錛屼粠Unit媧劇敓錛屽彟澶栬繕鏈変竴綾繪淳鐢熷璞layer涓虹帺瀹跺璞°侾layer涓嶤reature鍦ㄥ疄鐜頒笂鏈澶х殑鍖哄埆鏄帺瀹剁殑鎿嶄綔鐢卞鎴風鍙戞潵鐨勬秷鎭┍鍔紝鑰孋reature鐨勬帶鍒舵槸鐢辮嚜宸卞畾涔夌殑AI瀵硅薄鏉ラ┍鍔紝鍙﹀Player鍐呴儴榪樺寘鎷簡寰堝鐨勯昏緫緋葷粺瀹炵幇銆?/p>
銆銆鍙﹀榪樻湁涓ょ被鐗規畩鐨凜reature錛孭et鍜孴otem錛屽叾瀵硅薄綾誨瀷浠嶇劧榪樻槸鐢熺墿綾伙紝鍙槸瀹炵幇涓婁笌浼氭湁浜涚壒孌婄殑涓滆タ闇瑕佸鐞嗭紝鎵浠ュ湪mangos涓皢鍏朵綔涓虹嫭绔嬬殑媧劇敓綾伙紝鍙槸瀹炵幇涓婄殑涓鐐瑰鐞嗐傚彟澶栧湪GameObject涓篃瀹炵幇鏈夋淳鐢熷璞★紝鏈緇堢殑緇ф壙鍏崇郴鍥炬瘮杈冪畝鍗曪紝灝變笉楹葷儲鍦板幓鐢誨浘浜嗐?/p>
銆銆浠庢垜鎵浜嗚В鐨勬棭鏈熸父鎴忓疄鐜版潵鐪嬶紝澶ч儴鍒嗙殑娓告垙瀵硅薄緇撴瀯閮芥槸閲囩敤鐨勭被浼艱繖縐嶆柟寮忋傚彲鑳戒笌鏃╂湡瀵歸潰鍚戝璞$殑鐞嗚В鏈夊叧錛屽綋闈㈠悜瀵硅薄鐨勬蹇靛垰鍑烘潵鏃訛紝澶у璁や負緇ф壙灝辨槸闈㈠悜瀵硅薄鐨勫叏閮紝鎵浠ュ澶勭殕瀵硅薄錛屽澶勭殕緇ф壙銆?/p>
銆銆綾誨疄鐜扮殑鏄竴縐嶅皝瑁咃紝铏界劧浠庝簯椋庨偅閲屽嚭鏉ョ殑寮僀++鑰岃漿鎶旵鐨勫0闊沖彲鑳戒細褰卞搷涓閮ㄥ垎浜猴紝浣嗘槸錛屼嬌鐢ㄤ粈涔堣璦鏈韓灝辨槸涓漢鍠滃ソ鍙婂洟闃熸暣浣撴儏鍐靛喅瀹氱殑銆傛垜浠墍瑕佺殑涔熸槸鏈緇堢殑瀹炵幇緇撴灉錛岃嚦浜庝腑闂寸殑姝ラ錛屽畬鍏ㄧ湅涓漢銆傝繕鏄敤浜戦鐨勮瘽璇達紝榪欏彧鏄竴縐嶄俊浠伴棶棰橈紝鎴戜緷鐒墮噰鐢ㄦ垜鎵鐔熸倝鐨凜++錛屼笅闈㈢殑鎻忚堪涔熸槸濡傛銆?/p>
銆銆闅忕潃闈㈠悜瀵硅薄鎶鏈殑娣卞叆錛屼互鍙婃硾鍨嬬瓑姒傚康鐨勭浉緇ф彁鍑猴紝杞歡紼嬪簭緇撴瀯鏂歸潰鐨勮秼鍔夸篃鏈変簡寰堝ぇ鏀瑰彉銆侰++澶у笀浠父璇寸殑璇濅腑鏈変竴鍙ユ槸榪欐牱璇寸殑錛屽敖鏄噰鐢ㄧ粍鍚堣屼笉鏄戶鎵褲傛父鎴忓璞$殑瀹炵幇涔熸湁綾諱技鐨勮漿鍙橈紝瓚嬪悜浜庝互緇勫悎鐨勬柟寮忔潵瀹炵幇娓告垙瀵硅薄綾誨瀷錛屼篃灝辨槸瀹炵幇涓涓氱敤鐨別ntity綾誨瀷錛岀劧鍚庝互鑴氭湰瀹氫箟鐨勬柟寮忕粍鍚堝嚭涓嶅悓鐨勫疄闄呮父鎴忓璞$被鍨嬨?/p>
銆銆鎻忚堪鐨勬湁浜涙娊璞★紝鍏蜂綋瀹炵幇涓嬩竴綃囨潵浠旂粏鎺㈣涓嬨?br> 銆銆鍏充簬瀹炰綋娑堟伅鐨勫唴瀹逛箣鍓嶈璁轟簨浠舵満鍒剁殑鏃跺欏仛榪囦竴鐐硅鏄庯紝鍏跺疄榪欎篃灝辨槸鎸夋帴鍙h皟鐢ㄥ拰鎸夋秷鎭┍鍔ㄧ殑鍖哄埆錛岀幇鍦╩angos鐨勫仛娉曟槸瀹屽叏鐨勬帴鍙h皟鐢紝鎵浠ュ紩鎿庡唴閮ㄥ氨娌℃湁浠諱綍鐨勫疄浣撴秷鎭傚疄浣撲唬鐮佸疄鐜板拰瀹炰綋綆$悊鍣ㄦ槸鎴戜滑閲嶇偣瑕佽璁虹殑鍐呭銆?/p>
銆銆鍙︽湁涓綃囨枃绔犱篃鎻愬埌浜嗕嬌鐢ㄧ被緇х畫鐨勬柟寮忓疄鐜版父鎴忓璞$殑涓ゅぇ闂錛屼竴鏄畠瑕佹眰緋葷粺涓殑鎵鏈夊璞¢兘蹇呴』浠庝竴涓搗鐐硅鐢熻屾垚錛屼篃灝辨槸璇存墍鏈夊璞$被鍦ㄧ紪璇戠殑鏃跺欏凡緇忕‘瀹氾紝榪欏彲鑳芥槸涓涓笉鍙楁榪庣殑闄愬埗錛屽鏋滃紑鍙戣呭喅瀹氭坊鍔犳柊鐨勫璞$被錛屽垯蹇呴』瑕佸鍩虹被鏈夋墍浜嗚В錛屾柟鑳芥敮鎸佹柊綾匯傚彟涓涓棶棰樺湪浜庢墍鏈夌殑瀵硅薄綾婚兘蹇呴』瀹炵幇鍚屾牱鐨勪竴浜涘簳灞傚嚱鏁般?/p>
銆銆瀵逛簬絎簩涓棶棰橈紝鍙互閫氳繃鎺ュ彛緇ф壙鐨勬柟寮忔潵閬垮厤鍩虹被鐨勬柟娉曞お澶氥傚湪mangos鐨勫疄鐜頒腑灝遍噰鐢ㄤ簡綾諱技鐨勬柟娉曪紝浠嶰bject铏氬熀綾繪淳鐢熺殑Unit鍜學orldObject浠嶇劧榪樻槸涓嶅彲瀹炰緥鍖栫殑綾伙紝榪欎袱縐嶅璞″畾涔変簡涓嶅悓鐨勫睘鎬у拰鏂規硶錛屽垎鏉ュ疄鐜頒笉鍚岀被鍨嬬殑瀵硅薄銆傚湪娓告垙鍐呴儴鍙互鏍規嵁瀵硅薄鐨勫疄闄呯被鍨嬫潵Object鎸囬拡鍚戜笅杞瀷涓篣nit鎴朩orldObject錛屼互璋冪敤闇瑕佺殑鎺ュ彛銆傛柟娉曡櫧鐒朵笉澶烵O錛屼篃榪樿兘瑙e喅闂銆備絾鏄涓涓棶棰樻槸濮嬬粓鏃犳硶閬垮厤鐨勩?/p>
銆銆鎵浠ユ垜浠究鏈変簡閫氱敤瀹炰綋榪欎箞涓涓蹇碉紝鍏朵富瑕佹柟娉曟槸灝嗗師鏉ュ熀綾葷殑鎺ュ彛榪涜鍒嗙被錛屽垎鍒頒竴涓釜涓嶅悓鐨勫瓙綾諱腑錛岀劧鍚庝互瀵硅薄緇勫悎鐨勬柟寮忔潵鐢熸垚鎴戜滑鎵闇瑕佺殑瀹為檯娓告垙瀵硅薄綾誨瀷銆傝繖涓粍鍚堢殑榪囩▼鍙互閫氳繃鑴氭湰瀹氫箟鐨勬柟寮忥紝榪欐牱渚垮彲浠ュ湪榪愯鏃剁敓鎴愪負鍚岀殑瀵硅薄綾誨瀷錛屼篃灝辮В鍐充簡涓婇潰鎻愬埌鐨勭涓涓棶棰樸?/p>
銆銆閫氱敤瀹炰綋鐨勫疄鐜版柟娉曞湪鐩墠鐨勬父鎴忓紩鎿庡強寮婧愪唬鐮佷腑涔熷彲浠ョ湅鍒板獎瀛愩備竴涓槸BigWorld錛屼粠鎻愪緵鐨勮祫鏂欐潵鐪嬶紝鍏跺紩鎿庡彧鎻愪緵浜嗕竴涓猠ntity娓告垙瀵硅薄錛岀劧鍚庣敱娓告垙鍐呭瀹炵幇鑰呴氳繃xml鍜宲ython鑴氭湰鏉ヨ嚜鐢卞畾涔変笉鍚岀被鍨嬬殑entity綾誨瀷錛屾瘡縐嶇被鍨嬪彲鏈変笉鍚岀殑property鍜屼笉鍚岀殑鏂規硶銆傝繖鏍峰師鏉ョ敱鍩虹被瀹氫箟鐨勬帴鍙e畬鍏ㄨ漿縐誨埌鑴氭湰瀹氫箟錛屽叿鏈夐潪甯稿己鐨勭伒媧繪с?/p>
銆銆鍙﹀榪樻湁涓涓槸CEL涓殑entity瀹炵幇銆傛寜鐓EL鐨勬弿榪幫紝entity鍙互鏄父鎴忎腑鐨勪換鎰忓璞★紝鍖呮嫭鐜╁鍙氦浜掔殑瀵硅薄錛屽閽ュ寵銆佹鍣ㄧ瓑錛屼篃鍙互鍖呮嫭涓嶈兘鐩存帴浜や簰鐨勫璞★紝濡傛父鎴忎笘鐣岋紝鐢氳嚦浠誨姟閾句腑鐨勪竴閮ㄥ垎絳夈俥ntity鏈韓騫舵病鏈変換浣曠壒鎬э紝鍏蜂綋鐨勫姛鑳藉疄鐜伴渶瑕侀潬闄勫姞property鏉ュ畬鎴愩傜畝鍗曟潵璇達紝property鎵嶅畾涔変簡entity鍙互鍋氫粈涔堬紝鑷充簬璇ユ庝箞鍋氾紝閭e張鏄緷闈燽ehavior鏉ュ畾涔夈傛墍浠ワ紝鏈緇堝湪CEL涓竴涓父鎴忓璞″叾瀹炴槸鐢眅ntity緇勫悎浜嗗涓猵roperty鍙婂涓猙ehavior鑰岀敓鎴愮殑銆?/p>
銆銆浣嗘槸CEL涓殑property涓嶣igWorld涓殑property鎰忎箟涓嶅ぇ涓鏍鳳紝鍦–EL涓彲瀹氫箟鐨刾roperty鍏跺疄鏄紩鎿庡唴閮ㄨ鍏堟彁渚涚殑錛屾瘮濡傚叾紺轟緥涓墍涓劇殑pcobject.mesh銆乸cmove.linear銆乸ctools.inventory絳夛紝鑰孊igWorld涓殑property鏄畬鍏ㄧ殑鑷敱瀹氬埗銆備粠榪欎釜瑙掑害鏉ヨ錛屽叾瀹炲彲浠ユ妸CEL涓殑property鐪嬩綔鏄父鎴忕殑閫昏緫緋葷粺錛屼篃灝辨槸鎴戜滑涓婇潰鎵鎻忚堪鐨勶紝鎺ュ彛鍒嗙被鍚庢墍瀹氫箟鐨勫瓙綾匯?/p>
銆銆鐢卞紩鎿庡唴閮ㄦ彁渚涘彲閫夋嫨鐨刾roperty涓嶣igWorld鎵閲囩敤鐨勫畬鍏ㄨ嚜鐢卞畾鍒秔roperty鍏跺疄鏈川涓婃槸鐩稿悓鐨勩傚湪鐢˙igWorld瀹炵幇鐨勬父鎴忎腑錛屼篃涓嶅彲鑳戒負姣忕娓告垙瀵硅薄綾誨瀷閮藉畬鍏ㄤ粠澶村畾涔塸roperty錛屽熀浜庝唬鐮佸埄鐢ㄧ殑鍘熷垯錛屼篃浼氬厛瀹氫箟涓浜涘皬綾伙紝鐒跺悗鍦╡ntity綾誨瀷瀹氫箟鏃朵互鑷畾涔塸roperty鐨勬柟寮忔潵鍖呭惈榪欎簺灝忕被銆傚綋鐒訛紝鎴戞病鏈変嬌鐢ㄨ繃BigWorld錛屼笂闈㈢殑鎻忚堪涔熷彧鏄熀浜庢父鎴忓疄鐜扮殑澶у師鍒欐墍鍋氬嚭鏉ョ殑銆?/p>
銆銆鎻忚堪鐨勪緷鐒舵湁浜涙娊璞★紝鎴戜滑鍙互鐢╳ow鍙妋angos浠g爜鏉ヨ鏄庝竴涓嬨俶angos涓負object瀹氫箟浜嗕竴涓睘鎬ч泦鍚堬紝鏍規嵁瀵硅薄綾誨瀷鐨勪笉鍚岋紝榪欎釜灞炴ч泦鐨勫ぇ灝忓強淇濆瓨鏁版嵁涔熶細鏈夊樊寮傦紝鍙﹀娓告垙瀵硅薄鍐呴儴鍚湁澶勭悊涓嶅悓娓告垙閫昏緫鐨勭郴緇燂紝濡俁estSystem銆丗loodFilterSystem銆乂ariousSystem絳夌瓑錛屽湪player.h涓互鎺ュ彛緇勭殑鏂瑰紡榪涜瀹氫箟銆?/p>
銆銆濡傛灉瑕佸皢榪欑緇撴瀯鏀逛負鎴戜滑鎻忚堪鐨勯氱敤entity緋葷粺錛屽彲浠ヨobject鍙彁渚沺roperty娉ㄥ唽鍜屽垹闄ょ殑鎺ュ彛錛岃繖閲岀殑property瀹氫箟涓嶤EL涓殑鐩稿悓錛屾斁鍦╩angos涓篃灝辨槸涓婇潰璇寸殑RestSystem銆丗loodFilterSystem銆乂ariousSystem榪欎簺銆傜劧鍚庝篃閫氳繃xml鏂囦歡鐨勬柟寮忓畾涔夋垜浠墍闇瑕佺殑娓告垙瀵硅薄綾誨瀷錛屽player,creature,item絳夛紝涓嶅悓鐨勫璞$被鍨嬪彲浠ラ夋嫨鍔犺澆涓嶅悓鐨刾roperty錛屽姞杞界殑鍘熷垯鏄渶瑕佸摢浜涘姛鑳藉氨鍔犺澆鍝簺property銆?/p>
銆銆瀵硅薄鐨勫畾涔夋寜涓婇潰鐨勬柟娉曞畬鎴愬悗錛屽璞$殑瀹炵幇涔熼渶瑕佸仛涓浜涗慨鏀廣備互鍓嶅鎴風鐨勬秷鎭槸鐩存帴浜ょ敱player鏉ュ鐞嗭紝AI涔熸槸鐩存帴璋冪敤creature鐨勬帴鍙f潵瀹屾垚涓浜涘姛鑳斤紝鐜板湪閫氱敤鐨別ntity鍐呴儴宸茬粡娌℃湁浠諱綍鍙敤鐨勬柟娉曪紝鎵鏈夌殑瀹炵幇閮借漿鍒頒簡property涓紝鎵浠ラ渶瑕佺敱鍚勪釜property瀹炵幇鑷繁鏉ユ敞鍐屾劅鍏磋叮鐨勪簨浠跺強娑堟伅錛宔ntity瀹炵幇涓涓秷鎭殑杞彂錛岃漿緇欏姝ゆ劅鍏磋叮鐨刾roperty鏉ュ鐞嗐傚叾浣欑殑瀹炵幇灝辨病鏈変粈涔堜笉鍚屼簡銆?/p>
銆銆褰撶劧錛屾垜浠啀鍋氫竴鐐規墿灞曪紝璁﹑roperty涓嶅厜鐢卞紩鎿庢潵鎻愪緵錛岀敤鑴氭湰鏈韓涔熻兘瀹氫箟property錛屽茍涓斿彲浠ラ氳繃xml鏉ユ敞鍐岃繖浜沺roperty錛岃繖鏍蜂究瀹炵幇浜嗕笌BigWorld涓鏍風殑瀹屽叏鑷敱鐗規с傝繖鍏跺疄涔熷氨鏄皢寰堝鐢–++瀹炵幇鐨勫姛鑳借漿縐誨埌浜唒ython涓紝榪欑鍋氭硶鍙綔涓哄弬鑰冿紝浣嗕笉涓瀹氬鎵鏈変漢鍚堥傦紝鑷沖皯鍦ㄦ垜鐪嬫潵錛岃繖鏍風殑瀹炵幇涔熷熀鏈彧鑳界敱紼嬪簭鍛樻潵鍋氾紝鎵浠ヨ紼嬪簭鍛橀夋嫨鑷繁鏈鎿呴暱鐨勮璦鍙兘浼氭洿鏄撲簬寮鍙戝拰璋冭瘯銆?/p>
鏈夊叧娓告垙瀵硅薄瀹炵幇鐨勬弿榪幫紝鍓嶉潰涓ょ瘒鏂囩珷涓鐨勪笉鐢氭竻妤氾紝涓昏鏄竴鐩撮兘瑕佸紩鐢ㄧ綉涓婅兘澶熸壘鍒扮殑璧勬枡鏉ヨ繘琛屾弿榪幫紝浠ラ伩鍏嶄笌鍏徃寮曡搗涓嶅繀瑕佺殑楹葷儲銆傛墍浠ヨ璦鏈変簺鎷煎噾鐨勬劅瑙夛紝涓劇殑渚嬪瓙涔熷緢涓嶆伆褰擄紝浠婂ぉ姝eソ鐪嬪埌浜嗘父鎴忕紪紼嬬簿綺逛簲鍜屽叚涓婄殑涓ょ瘒鏂囩珷錛屽唴瀹歸兘宸笉澶氾紝<<鍩轟簬緇勪歡鐨勫璞$鐞?gt;>鍜?lt;<鍩轟簬緇勪歡鐨勬父鎴忓璞$郴緇?gt;>錛岃鐨勪篃鏄垜涓婁袱綃囨枃绔犳兂瑕佹弿榪扮殑鍐呭錛屾墍浠ュ啀琛ヤ竴綃囷紝寮曠敤鍏朵腑鐨勯儴鍒嗘枃瀛楄繘琛屾槑紜殑璇存槑銆?/p>
銆銆浼犵粺鐨勬父鎴忓璞$鐞嗙郴緇熼噰鐢ㄧ戶鎵跨殑鏂瑰紡鏉ュ疄鐜幫紝渚嬪錛屾墍鏈夌殑瀛愮被閮戒粠CObject媧劇敓銆傚ぇ澶氭暟鎯呭喌涓嬶紝鐩存帴媧劇敓鐨勪篃鏄娊璞$被錛屽叾涓甫涓浜涘姛鑳借屽彟涓浜涘瓙綾誨垯涓嶅甫榪欎簺鍔熻兘錛屾瘮濡傚彲鎺у埗/涓嶅彲鎺у埗錛屽彲鍔ㄧ敾/涓嶅彲鍔ㄧ敾絳夈俶angos鐨勫疄鐜頒腑鍩烘湰灝辨槸榪欑鎯呭喌錛屼粠Object鐩存帴媧劇敓鐨刄nit鍜學orldObject閮芥槸涓嶅彲鐩存帴瀹炰緥鍖栫殑綾匯?/p>
銆銆浼犵粺鏂規硶鐨勯棶棰樺湪浜庢棤娉曞簲瀵歸渶姹傜殑鍙樺寲錛屽瑕佹眰姝﹀櫒涔熸湁鍔ㄧ敾鏁堟灉鏃跺氨鏃犳硶澶勭悊浜嗐傚鏋滅‖瑕佹槸榪欐牱鍋氾紝閭i殢鐫闇姹傜殑鍟紝寰堝鐨勬柟娉曚細琚斁鍒板熀綾諱腑錛屾渶緇堢殑緇撴灉鏄戶鎵挎爲鍙樺緱瓚婃潵瓚婂ご閲嶈剼杞伙紝榪欐牱鐨勭被浼氫撫澶卞畠鐨勫唴鑱氭э紝鍥犱負瀹冧滑璇曞浘涓烘墍鏈夊璞″畬鎴愭墍鏈夌殑浜嬨?/p>
銆銆灝辨槸璇村埌鏈鍚庯紝鍩虹被浼氭湁涓涓緢闀跨殑鎺ュ彛鍒楄〃錛岃屽緢澶氱殑娓告垙瀵硅薄綾誨瀷鏍規湰涓嶉渶瑕佸疄鐜板叾涓殑涓浜涚敋鑷沖ぇ閮ㄥ垎鎺ュ彛錛屼絾鏄寜鐓ц繖縐嶇粨鏋勫嵈鍙堝繀欏誨幓瀹炵幇銆備互鑷充簬浜庡疄鐜頒竴涓潪甯稿簽澶х殑瀵硅薄錛岃屼笖鎯寵淇敼涓鐐瑰姛鑳戒細瀵艱嚧緋葷粺鐨勫ぇ璋冩暣銆?/p>
銆銆鎴戜滑甯屾湜鐨勭郴緇熸槸鍙互灝嗙幇鏈夌殑鍔熻兘緇勫悎鍒版柊鐨勫璞′腑錛屽茍涓斿湪灝嗘柊鐨勫姛鑳芥坊鍔犲埌鐜版湁鐨勫璞′腑鏃朵笉闇瑕侀噸鏋勫ぇ閲忕殑浠g爜鍜岃皟鏁寸戶鎵挎爲鐨勭粨鏋勩?/p>
銆銆瀹炵幇鐨勬柟娉曞氨鏄粠緇勪歡鏉ュ垱寤轟竴涓璞°傜粍浠舵槸涓涓寘鍚墍鏈夌浉鍏蟲暟鎹垚鍛樺拰鏂規硶鐨勭被錛屽畠瀹屾垚鏌愪釜鐗瑰畾鐨勪換鍔°傛妸鍑犱釜緇勪歡緇勫悎鍦ㄤ竴璧峰氨鍙互鍒涘緩涓涓柊鐨勫璞°傚鎶奅ntity緇勪歡銆丷ender緇勪歡鍜孋ollectable緇勪歡緇勫悎鍦ㄤ竴璧風敓鎴愪簡涓涓猄poon瀵硅薄銆侲ntity緇勪歡璁╂垜浠彲浠ユ妸瀵硅薄鏀懼埌娓告垙涓栫晫涓紝Render緇勪歡璁╂垜浠彲浠ヤ負瀵硅薄鎸囧畾涓涓ā鍨嬭繘琛屾覆鏌擄紝鑰孋ollectable緇勪歡璁╂垜浠彲浠ユ嬀鍙栬繖涓璞°?/p>
銆銆鍏充簬緇勪歡鐨勫疄鐜幫紝鎵鏈夌殑緇勪歡閮戒粠涓涓熀紜緇勪歡鎺ュ彛媧劇敓錛屽彲縐板叾涓篒Component銆傛瘡涓粍浠朵篃鏈夎嚜宸辯殑鎺ュ彛瀹氫箟錛屽茍涓旇繖涓帴鍙d篃闇瑕佷粠IComponent媧劇敓錛岀被浼間簬榪欐牱錛欼Component -- ICmpRender -- CCmpRender 銆銆榪欓噷鐨勬瘡涓粍浠朵篃灝辨槸鎴戝湪涓婁竴綃囦腑鎵璇寸殑鐢卞紩鎿庢彁渚涚殑灞炴э紝鎴栬呰鍦˙igWorld涓嚜宸卞疄鐜扮劧鍚庡畾涔夌殑灞炴э紝鎴栬呬嬌鐢╩angos涓殑瀹氫箟錛屽氨鏄竴涓釜鐨凷ystem錛岃櫧鐒秏angos騫舵病鏈夊皢鍏跺畬鍏ㄥ仛鎴愮粍浠訛紝浣嗘槸閫氳繃鍏朵唬鐮佹敞閲婂彲浠ョ湅鍒幫紝鎺ュ彛涔熸槸鎸夊姛鑳界粍榪涜浜嗗垎綾伙紝濡傛灉瑕佹媶鍒嗘垚緇勪歡涔熸槸姣旇緝鏂逛究鐨勩?/p>
銆銆緇勪歡涔嬮棿鐨勯氫俊鏈変袱縐嶆柟娉曪紝涓鏄敤緇勪歡ID鏌ヨ鍒扮粍浠舵帴鍙f寚閽堬紝鐒跺悗璋冪敤鎺ュ彛鏂規硶錛涗簩鏄嬌鐢ㄦ秷鎭殑鏂瑰紡錛屽悜瀵硅薄涓墍鏈夌粍浠跺彂娑堟伅銆傚湪鍒濆鍖栫殑鏃跺欙紝姣忎竴涓粍浠剁被鍨嬮兘浼氬憡璇夊璞$鐞嗗櫒搴旇鎺ユ敹浠涔堟牱鐨勬秷鎭?/p>
銆銆鏌ヨ鎺ュ彛鐨勬柟娉曚篃灝辨槸鐩存帴鐨勬柟娉曡皟鐢紝鍙笉榪囨帴鍙d笉鏄叏閮ㄥ湪鍩虹被涓紝鎵浠ュ繀欏誨厛鏌ヨ鍒版寚瀹氱殑緇勪歡鐒跺悗鎵嶈兘璋冪敤鍏舵帴鍙c傛秷鎭殑浣跨敤鍓嶉潰宸茬粡璇磋繃澶氭錛屽叾瀹炵幇鏂規涔熸湁榪囪鏄庛?/p>
銆銆鏈鍚庢槸鍏充簬娓告垙瀵硅薄鍔熻兘鐨勬墿灞曞拰娓告垙瀵硅薄鐨勫畾涔夈傞渶瑕佹墿灞曞姛鑳戒篃灝辨槸闇瑕佸疄鐜頒竴涓柊鐨勭粍浠訛紝鎴栬呬慨鏀圭幇鍦ㄧ粍浠躲傚湪澶у鏁版儏鍐典笅錛屾墿灞曢兘涓嶄細寮曡搗緇撴瀯鐨勫緢澶ц皟鏁達紝鍙楀獎鍝嶇殑鏈澶氬彧鏄嬌鐢ㄥ埌璇ョ粍浠剁殑閮ㄥ垎浠g爜銆?/p>
銆銆娓告垙瀵硅薄瀹氫箟鍙噰鐢ㄥ畬鍏ㄦ暟鎹┍鍔ㄧ殑鏂瑰紡錛屼嬌鐢▁ml鎴栬呰剼鏈璦鏉ュ畾涔夊璞$被鍨嬶紝浠ュ強姣忎釜綾誨瀷闇瑕佸姞杞界殑緇勪歡銆傚璞$被鍨嬫敞鍐屽埌瀵硅薄綆$悊鍣ㄥ悗錛岀敱綆$悊鍣ㄦ彁渚涘垱寤烘寚瀹氱被鍨嬬殑瀵硅薄鐨勬柟娉曘傛暟鎹┍鍔ㄧ殑鏂瑰紡鑳藉璁╃瓥鍒掕嚜鐢卞畾涔夋父鎴忓璞$被鍨嬶紝騫朵笖闅忔椂鍙嚜鐢卞垱寤烘柊鐨勫璞$被鍨嬨?/p>
涓銆佹湇鍔″櫒緇勬ā鍨嬬殑閫夊瀷 浜屻丮MORPG鏈嶅姟鍣ㄧ郴緇熸灦鏋?/p>
MMORPG澶у瀷緗戞父鏈嶅姟鍣ㄦ槸浣跨敤楂樻ц兘緗戠粶I/O妯″瀷閰嶅悎娑堟伅闃熷垪榪炴帴鍚勬湇鍔$嚎紼嬬殑涓涓潪甯哥ǔ瀹氱殑楂樻ц兘緗戞父緋葷粺銆傚叾涓秷鎭槦鍒楃郴鍩轟簬鍏變韓鍐呭瓨鑷寮鍙戝畬鎴愩傚湪鍗曟湇鍔″櫒鏍囧噯宸ヤ綔鐜涓嬭繘琛屾祴璇曪紝涓鍙板弻 XEON 鏈嶅姟鍣ㄥ彲浠ラ潪甯歌交鏉懼湴杈懼埌涓?,500鐢ㄦ埛姣忕澶勭悊5,000璇鋒眰錛屾瘡縐掑鐞嗚姹傛暟鍙秴榪?25,000銆?/p>
涓夈丮MORPG鐨勫疄鐜?/p>
棣栧厛錛屽湪鍩虹寤鴻鏂歸潰錛屼笌瑙勫垝鐜板疄涓殑鍩庡競涓鏍鳳紝寰楀厛鎼緩璧蜂竴緋誨垪鐨勬埧灞嬨侀亾璺強鍑哄彛銆佺綰垮拰璇稿NPC浜虹墿絳夋瀯鎴愮殑鍩烘湰瑕佺礌鍜屾椿鍔ㄧ┖闂達紝閫氳繃鍦ㄦ湇鍔″櫒绔?Server side)鍙栧緱棰勫厛璁捐濂界殑緇煎悎鍦扮悊銆丯PC浜虹墿銆佹妧鑳界瓑涓緋誨垪鐨勫垵濮嬪寲鏁板瓧鏁版嵁(鍏蜂綋鏂囨。鐗囨璇瘋闄勪歡A.鍦板浘鏁版嵁鏂囦歡紺轟緥鍜岄檮浠禕.鍙告満 NPC 鏁版嵁鏂囦歡紺轟緥)錛岀劧鍚庝緷闈犵▼搴忓皢鏁板瓧鏁版嵁鍜屾父鎴忛昏緫鏈夋満鍦板崗璋冭搗鏉ワ紝鏈緇堝艦鎴愪竴濂楀畬鏁寸殑铏氭嫙娓告垙鍩虹絀洪棿銆?/p>
鍦ㄧ‘瀹氫簡鍦板浘鏁版嵁鐢熸垚瑙勫垯鍚庯紝灝卞彲浠ヤ嬌鐢ㄧ紪杈戝櫒浠繪剰緙栬緫娓告垙鍦烘櫙銆備緷璧栦簬榪欐牱鑹ソ鐨勫熀紜璁炬柦錛屾墠鑳藉湪鍏朵粬娓告垙閫昏緫鐨勯厤鍚堜笅瀹炵幇瀹屾暣鐨勬晠浜嬫儏鑺傘傚悓鏃舵湇鍔″櫒绔礋璐e皢灞炰簬鐢ㄦ埛鍚勮嚜鐨勬父鎴忛昏緫鏁版嵁閫氳繃楠岃瘉鍚庡彂閫佸埌鍚堟硶鐨勭敤鎴峰鎴風鏈哄櫒閲岋紝瀹屾垚瀹㈡埛绔父鎴忛昏緫鐨勫緩绔嬪拰鏁版嵁鍚屾銆傛媴璐熸湇鍔″櫒涓庡鎴風閫氳鐨勬槸鑷畾涔夋牸寮忕殑鏁版嵁閫氳灝佸寘錛屽畠灝卞儚鏁板瓧紲炵粡鑸瘡絀跨潃鏁翠釜娓告垙鐨勫緇堛傛暟鎹皝鍖呬笌濡備笅4閮ㄥ垎娑堟伅鏈夊叧錛屽畠浠垎鍒負鍦烘櫙娑堟伅, 鍚屾娑堟伅錛屼富瑙掓秷鎭拰鐣岄潰娑堟伅銆?/p>
A.涓昏娑堟伅鍖呮嫭瀹㈡埛绔墍鎺у埗鐨勮鑹茬殑鎵鏈夊姩浣滐紝鍖呮嫭璧拌礬錛岃亰澶┿佷氦鏄撱佹垬鏂楃瓑銆?br> B.鍦烘櫙娑堟伅鍖呮嫭鏄煎鍏存浛銆佹皵鍊欏彉鍖栵紝涓瀹氱殑鏃墮棿鍦ㄥ満鏅噷鍑虹幇鏌愪簺涓滆タ絳夛紝榪欑被娑堟伅鍏鋒湁鐨勭壒鐐規槸鎵鏈夋秷鎭殑鍙戣搗鑰呴兘鏄湇鍔″櫒錛屽箍鎾璞″垯鏄満鏅噷鐨勬墍鏈夌帺瀹躲?br> C.鍚屾娑堟伅鏄拡瀵瑰彂璧峰璞℃槸鏌愪釜鐜╁錛岀粡榪囨湇鍔″櫒騫挎挱緇欐墍鏈夌湅寰楄浠栫殑鐜╁錛岃娑堟伅涔熷寘鎷墍鏈夌殑鍔ㄤ綔錛岃縐嶆秷鎭槸鏈嶅姟鍣ㄥ箍鎾粰瀹㈡埛绔殑錛屼富瑙掓秷鎭垯涓鑸槸瀹㈡埛绔富鍔ㄥ彂緇欐湇鍔″櫒绔?br> D.鐣岄潰娑堟伅鏄湇鍔″櫒鍙戠粰瀹㈡埛绔殑鑱婂ぉ娑堟伅鍜屽悇縐嶅睘鎬у強鐘舵佸彉鍖栫殑淇℃伅銆?/p>
鍊煎緱涓璋堢殑榪樻湁澶勪簬緗戠粶娓告垙涓瘮杈冮噸瑕佺殑鏈嶅姟鍣ㄥ悓瀹㈡埛绔秷鎭箍鎾拰鍚屾闂銆傚叾涓竴縐嶆柟娉曟槸閲囧彇鍦ㄥ浗闄呬笂琚О涓?Mutual synchronization錛堢浉浜掑悓姝ワ級錛屾槸涓縐嶅鏈潵緗戠粶鐨勫墠鏅殑鑹ソ棰勬祴鍑烘潵鐨勮В鍐蟲柟妗堟潵瑙e喅紜繚姣忎釜鐜╁鍦ㄥ悇鑷鎴風涓婄湅鍒扮殑涓滆タ澶т綋鏄竴鏍風殑鍚屾闂銆?/p>
棣栧厛瀹㈡埛绔渶瑕佸湪鐧誨綍娓告垙鐨勬椂鍊欏緩绔嬪緢澶氬紶騫挎挱鍒楄〃錛岃繖浜涘垪琛ㄥ湪瀹㈡埛绔悗鍙板拰鏈嶅姟鍣ㄧ瑕佷繚鎸佷笉瀹氭椂鍚屾銆傚叾涓寤虹珛澶氬紶鍒楄〃錛屾槸鍥犱負瑕佸箍鎾殑綾誨瀷鍖呮嫭鍏ㄥ眬淇℃伅銆佹湰鍦頒俊鎭拰榪滅▼淇℃伅絳夌瓑錛岃繖浜涘垪琛ㄩ兘鏄湪瀹㈡埛绔櫥闄嗙殑鏃跺欐牴鎹湇鍔″櫒鍙戣繃鏉ョ殑娑堟伅寤虹珛濂界殑銆傚湪寤虹珛鍒楄〃鐨勫悓鏃訛紝榪橀渶瑕佽幏寰楁瘡涓垪琛ㄤ腑騫挎挱瀵硅薄鐨勪紶杈撴椂闂達紝騫朵笖瑕佺淮鎶や竴寮犲畬鏁寸殑鐢ㄦ埛鐘舵佸垪琛ㄥ湪鍚庡彴錛屼篃鏄繘琛屼笉瀹氭椂鐨勫拰鏈嶅姟鍣ㄨ繘琛屽悓姝ワ紝鏍規嵁鏈湴鐨勭敤鎴風姸鎬佽〃錛屽彲浠ヤ嬌涓閮ㄥ垎鍐崇瓥鐢卞鎴風鏉ュ喅瀹氾紝褰撳鎴風鍙戦佽繖閮ㄥ垎鍐崇瓥鐨勬椂鍊欙紝鍒欑洿鎺ュ皢鏈緇堝喅絳栧彂閫佸埌鍚勪釜騫挎挱鍒楄〃閲岄潰鐨勫鎴風錛屽茍瀵瑰叾鏃墮棿榪涜鏍″錛屼互淇濊瘉姣忎釜瀹㈡埛绔湪鏀跺埌鐨勬秷鎭殑鏃墮棿鏄拰鏈湴鏃墮棿榪涜鏍″榪囩殑錛屽啀閲囩敤棰勬祴琛ュ伩璁$畻鎻愬墠閲忕殑鏂規硶錛岃綆楀嚭鎻愬墠閲忥紝鏍規嵁璁$畻閲忕‘瀹氬疄闄呰璧伴熷害錛屽皢浼氫嬌鍚屾鍙樺緱闈炲父鐨勫鉤婊戙?/p>
鍏朵腑錛屽箍鎾殑閲嶇偣灝卞湪浜庡浣曡綆楀嚭騫挎挱鐨勫璞★紝棣栧厛鍦ㄦ湇鍔″櫒绔殑榪炴帴緇撴瀯閲岄潰澧炲姞涓涓箍鎾璞$殑闃熷垪錛岃闃熷垪鍦ㄥ鎴風鐧婚檰鏈嶅姟鍣ㄧ殑鏃跺欑敱鏈嶅姟鍣ㄤ紶杈撶粰鍚堟硶鐨勫鎴風錛岀劧鍚庣敱瀹㈡埛绔嚜宸辨潵緇存姢榪欎釜闃熷垪錛屽綋鏈変漢璧板嚭瀹㈡埛绔閲庣殑鏃跺欙紝鐢卞鎴風涓誨姩瑕佹眰鏈嶅姟鍣ㄧ粰閭d釜瀵硅薄鍙戦佹秷澶辯殑娑堟伅銆?/p>
褰撴湁浜鴻蛋榪涜閲庣殑鎯呭喌錛屽垯鍏堥渶瑕佸鎴風鍦ㄦ瘡嬈$粰鏈嶅姟鍣ㄥ彂閫佹洿鏂頒綅緗殑娑堟伅鐨勬椂鍊欙紝鏈嶅姟鍣ㄩ兘緇欒榪炴帴綆楀嚭涓涓閲庤寖鍥達紝鐒跺悗鍦ㄩ渶瑕佸箍鎾殑鏃跺欙紝寰幆鏁村紶鍦板浘涓婄殑鐜╁錛屾壘鍒板潗鏍囧湪鍏惰閲庤寖鍥村唴鐨勭帺瀹朵粠鑰屽畬鎴愬箍鎾殑鍏ㄨ繃紼嬨?/p>
鍏舵鏄櫄鎷熷璞$郴緇熴傚叾涓富瑕佷細娑夊強鍒癗PC鐨勬蹇碉紝灝ゅ叾鏄箍娉涘簲鐢ㄧ殑A Star綆楁硶絳夊湪鎻愪緵NPC鐨勪漢宸ユ櫤鑳藉喅絳栨柟闈㈡湁鐫閲嶈鐨勪綔鐢ㄣ侼PC鏅鴻兘浣跨敤涓縐嶆槸琚姩瑙﹀彂浜嬩歡鍜屾槸涓誨姩瑙﹀彂浜嬩歡鐨勬柟寮忕敱璁$畻鏈烘潵瀹炵幇瀵筃PC鍋氫綍縐嶅喅絳栥侫 Star綆楁硶灝辨槸鍏稿瀷鐨勫惎鍙戝紡鎼滅儲鐨勫簲鐢紝鍏舵櫘閫氬師鐞嗘槸鍏堣璁′竴涓猂ule() 鍑芥暟錛屾潵鑾瘋繖涓涓偣鐨勪唬浠鳳紝鐒跺悗姣忔鎼滅儲鐨勬椂鍊欐妸涓嬩竴姝ュ彲鑳藉埌杈劇殑鎵鏈夌偣閮界粡榪嘡ule() 鍑芥暟璇勪環涓涓嬶紝鑾峰彇涓ゅ埌涓変釜浠d環姣旇緝灝忕殑鐐癸紝緇х畫鎼滅儲錛岀洿鑷沖緱鍒頒唬浠鋒渶灝忕殑涓涓偣銆傛渶鏄庢樉鐨勫簲鐢ㄦ槸NPC鍦ㄥ疄鐜拌嚜鍔ㄩ夋嫨鏀誨嚮鐩爣鍜岄冭窇鏃剁殑瀹炵幇銆傚疄鐜拌嚜鍔ㄩ夋嫨鏀誨嚮鐩爣鏃訛紝棣栧厛鑾峰緱鍦板浘涓婅窛紱昏NPC闄勮繎鐨勬晫浜哄垪琛紝璁捐鐩稿簲Rule() 鍑芥暟錛屾牴鎹晫浜虹殑寮哄急銆佽繙榪戯紝鍒ゆ柇鍑哄嚑涓瘎浼版暟鎹紝鐒跺悗閫夋嫨浠d環鏈灝忕殑鏁屼漢榪涜涓誨姩鏀誨嚮銆傞冭窇鍒欐槸鍦ㄤ富鍔ㄤ簨浠墮噷闈㈡鏌ヨ嚜宸辯殑HP錛屽鏋淗P浣庝簬鏌愪釜鍊鹼紝鑰屾晫浜烘榪戞垬鏀誨嚮鐨勬椂鍊欙紝鍒欒Е鍙戦冭窇鍑芥暟錛屽湪閫冭窇鍑芥暟閲岄潰涔熸槸瀵瑰懆鍥寸殑鎵鏈夌殑鏁屼漢緇勭粐鎴愬垪琛紝鐒跺悗璁捐Rule() 鍑芥暟錛屽厛鍒嗘瀽閫夋嫨鍑哄浣犳瀯鎴愬▉鑳佹渶澶х殑鏁屼漢錛岃鍑芥暟榪橀渶瑕佸垽鏂晫浜虹殑榪愬姩閫熷害錛屾垬鏂楀姏寮哄急錛屾渶鍚庡緱鍑轟竴涓富瑕佹晫浜猴紝鐒跺悗閽堝璇ヤ富瑕佹晫浜鴻繘琛岃礬寰勭殑Rule() 鐨勫嚱鏁扮殑璁捐錛屾悳绱㈢殑鑼冨洿鍙彲鑳芥槸鍜屼富瑕佹晫浜虹浉鍙嶇殑鏂瑰悜錛岀劧鍚庡啀鏍規嵁璇ュ嚑涓柟鍚戜笂鐨勬晫浜虹殑寮哄急鏉ヨ綆椾唬浠鳳紝鍋氬嚭鏈鍚庣殑閫夋嫨錛屽鏋滃垢榪愮殑璇濓紝鍙互鏈?0%鐨勬満鐜囬冨線娌℃湁 NPC 闃繪尅鐨勯偦榪戝湴鍥句腑鍘匯?/p>
鏈鍚庯紝鐢變簬鑴氭湰鏄疪PG娓告垙鐨勭伒欖傦紝鑷劧鑴氭湰緙栬瘧鍣ㄥ氨鎵紨浜嗗崄鍒嗛噸瑕佺殑鍦頒綅銆傚湪鍩轟簬緙栬瘧鐨勬湇鍔″櫒绔▼搴忎腑錛屾槸鏃犳硶鍦ㄧ▼搴忕殑榪愯榪囩▼涓瀯寤轟竴浜涗笢瑗跨殑錛屾墍浠ュ繀欏婚氳繃鑴氭湰緙栬瘧鍣ㄦ彁渚涗竴浜涚畝鍗曠殑璇硶鍜屾枃娉曡В鏋愮殑鍔熻兘錛岃繘琛屼竴緋誨垪鐨勯昏緫鍒ゆ柇鍜屽驚鐜紝浠ユ彁楂樻湇鍔″櫒绔殑鐏墊椿紼嬪害銆傚彲浣跨敤綾諱技姹囩紪璇█鐨勯偅縐嶇粨鏋勬潵瀹炵幇鑴氭湰緙栬瘧鍣紝璁劇疆涓浜涙潯浠惰煩杞拰寰幆鏉ュ疄鐜伴昏緫鍒ゆ柇鍜屽驚鐜傛彁渚涗竴浜涢氱敤鎸囦護錛屽鍒ゆ柇銆佸驚鐜佸洓鍒欒繍綆椼佸鍧絳夌瓑錛岄拡瀵逛笉鍚岀殑鑴氭湰閲囩敤涓嶅悓鐨勮В鏋愭柟娉曪紝瀵筃PC灝辯敤NPC鍥哄畾鐨勮剼鏈紝瀵笽tem灝辯敤Item鍥哄畾鐨勮剼鏈紝瑙f瀽瀹屼互鍚庡氨鎶婄粨鏋滅敓鎴愬簳灞傝瀵硅薄鐨勭粨鏋勪究浜庝嬌鐢ㄣ?/p>
緇忚繃浠ヤ笂鐨勫緩璁炬楠わ紝涓涓畬鏁寸殑MMORPG緗戠粶娓告垙緋葷粺灝辮閫愭寤虹珛璧鋒潵浜嗐?/p>
鍦ㄦ父鎴忕紪紼嬬簿綺瑰洓鏈変笁綃囨枃绔犺鍒頒簡瀹炰綋浠ュ強瀹炰綋綆$悊鐨勫疄鐜版柟妗堬紝鍏朵腑涓綃囨枃绔犺鍒頒簡瀹炰綋綆$悊緋葷粺鐨勫洓澶ц绱狅細瀹氫箟瀹炰綋鎬庢牱娌熼氱殑瀹炰綋娑堟伅錛屽疄鐜頒竴瀹炰綋綾諱唬鐮佸拰鏁版嵁鐨勫疄浣撲唬鐮侊紝緇存姢宸茬粡娉ㄥ唽鍦ㄦ鐨勫疄浣撶被鍒楄〃錛屽拰鐢ㄦ潵鍒涘緩銆佺鐞嗐佸彂閫佹秷鎭殑瀹炰綋綆$悊鍣ㄣ?/p>
]]>
鐧誨綍鍒嗛厤鏈嶅姟鍣細娓告垙鍖哄敮涓鍏ュ彛鐐癸紝鏍規嵁鐧誨綍鏈嶅姟鍣ㄨ礋杞藉拰鎺掗槦鎯呭喌錛屽垎閰嶇櫥褰曠帺瀹跺埌鎸囧畾鐧誨綍鏈嶅姟鍣ㄤ腑榪涜鐧誨綍錛?br>鐧誨綍鏈嶅姟鍣細澶勭悊鐜╁楠岃瘉韜喚鍚堟硶鎬э紝鍙婃父鎴忛夋父鎴忎笘鐣屾搷浣滐紝鎺у埗鏈嶅姟鍣ㄤ漢鏁幫紱
鏁版嵁鏈嶅姟鍣細澶勭悊鐜╁鏁版嵁璇誨彇錛屼繚瀛樺拰緙撳瓨鐨勫湴鏂癸紱
涓栫晫鏈嶅姟鍣細鏁翠釜娓告垙鏃墮棿鐨勪腑蹇冪鐞嗘暟鎹殑鏈嶅姟鍣紱
娓告垙鏈嶅姟鍣細澶勭悊鐜╁涓婚昏緫鐨勬湇鍔″櫒錛?
閬撳叿鏈嶅姟鍣細澶勭悊鎵鏈夌洿鎺ラ亾鍏風浉鍏抽昏緫鐨勬湇鍔″櫒錛岀鐞嗛亾鍏風殑浜х敓娑堜骸錛屼氦鏄擄紝鍚堟垚錛屽崌綰э紝絳夋搷浣滐紱
緗戝叧鏈嶅姟鍣細鎻愪緵緇欑帺瀹朵笌娓告垙鏈嶅姟鍣ㄧ殑涓漿鏈嶅姟鍣紝鐜╁涓鏃︾櫥褰曟父鎴忥紝濮嬬粓澶勪簬涓涓綉鍏蟲湇鍔″櫒錛?br>鑱婂ぉ鏈嶅姟鍣細鎻愪緵鏇翠赴瀵岀殑鑱婂ぉ褰㈠紡錛屾秷鎭紭鍖栵紝杞彂銆?br>涓績楠岃瘉鏈嶅姟鍣細涓庣櫥褰曟湇鍔″櫒閫氫俊錛屼富瑕佽繘琛岀帺瀹惰韓浠介獙璇侊紝鍙婂弽棣堢敤鎴蜂俊鎭?br>涓績璁¤垂鏈嶅姟鍣細鍏呭鹼紝鎵h垂錛屼氦鏄撴搷浣滅殑澶勭悊銆?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/olncy/archive/2008/12/15/3520572.aspx
鑰冭檻鍒拌繎騫存潵璁$畻鏈虹‖浠舵妧鏈殑椋為熷彂灞曪紝鐗╃悊鏈嶅姟鍣ㄧ殑鎬т環姣斿緱鍒頒簡寰堝ぇ鐨勬彁楂橈紝緇撳悎欏圭洰闇瑕侀氳繃鏈嶅姟鍣ㄧ粍緇欐暟涓囩帺瀹舵彁渚涢珮璐ㄩ噺鏈嶅姟鐨勫晢涓氳姹傦紝緇忚繃鐮旂┒瀵規瘮鏁扮鏈嶅姟鍣ㄦā鍨嬪悗錛屽喅瀹氶噰鍙栦簡涓婂浘鎵紺虹殑鏈嶅姟鍣ㄧ粍妯″瀷銆?/p>
from: http://bbs.luaer.cn/read-Lua-tid-233.html
鐜錛歭ua for windows (lfW)
涓婚〉錛?a >http://luaforwindows.luaforge.net/
lua for windows鍏跺疄鏄竴鏁村Lua鐨勫紑鍙戠幆澧冿紝瀹冨寘鎷細
Lua Interpreter錛圠ua瑙i噴鍣級
Lua Reference Manual錛圠ua鍙傝冩墜鍐岋級
Quick Lua Tour 錛圠ua蹇熷叆闂級
Examples 錛圠ua鑼冧緥錛?br>Libraries with documentation 錛堜竴浜汱ua搴撳拰鏂囨。錛?br>SciTE 錛堜竴涓緢媯掔殑澶氱敤閫旂紪杈戝櫒錛屽凡緇忓Lua鍋氫簡鐗規畩璁劇疆錛?/p>
鍏跺畠璇︾粏鐨勫唴瀹硅鍒發uaforge鐨勪富欏典笂鏌ョ湅銆?/p>
涔嬫墍浠ユ帹鑽愯繖濂楃幆澧冩槸鍥犱負瀹冩暣鍚堜簡鍦╳indows瀛︿範鍜屽紑鍙慙ua鎵闇瑕佺殑鎵鏈変笢瑗?/p>
錛屽浜庢柊鎵嬫潵璇存槸闈炲父浣撹創鐨勶紝闄勫甫鐨凷ciTE鍙緇忚繃綆鍗曢厤緗氨鑳藉寰堟柟渚跨殑緙?/p>
鍐橪ua紼嬪簭錛岀紪璇戯紝榪愯錛岃皟璇曘傚畠榪樻槸闄勫甫鑷姩鎻愮ず鍜屼唬鐮佽嚜鍔ㄨˉ鍏ㄥ姛鑳界殑鍝︼紝
瀵逛簬鐢ㄦ儻VC + VA鐨勫紑鍙戜漢鍛樻潵璇達紝瀹炲湪鏄お浜插垏浜嗐?/p>
涓嬮潰浠嬬粛涓涓嬫暣涓猯fW錛?br>涓嬭澆lfw錛屾渶鏂扮殑鐗堟湰鏄?.1.3.13錛岀洿鎺ュ畨瑁咃紝娉ㄦ剰鏈鍚庝竴姝ヤ細璇㈤棶SciTE緙栬緫鍣?/p>
鏄惁浣跨敤“榛戣壊”椋庢牸錛屾垜姣旇緝鍠滄榛戣壊搴曡壊錛屾墍浠ュ湪榪欓噷鎵撻挬錛屼箣鍚庣戶緇?br>瀹夎瀹屾垚鍚庯紝瀛︿範Lua鎵闇瑕佺殑涓鍒囩幆澧冨氨鍏ㄩ儴瀹夎瀹屾瘯錛屽崄鍒嗙畝鍗曘?/p>
涓嬮潰鍙互嫻嬭瘯鏄惁瀹夎鎴愬姛
鎵撳紑SciTE錛屾柊寤轟竴涓枃浠訛紝杈撳叆涓琛宭ua浠g爜錛?/p>
print("hello,lua")
鐒跺悗淇濆瓨涓篽ello.lua錛屾敞鎰忎繚瀛樻枃浠舵椂瑕佸姞鏂囦歡鍚嶅悗緙.lua錛屽惁鍒欏彲鑳戒笉鑳芥紜?/p>
鐨勮繍琛屻?br>鎸塅5錛屽鏋淪ciTE鐨勮緭鍑虹獥鍙e嚭鐜?br>>lua -e "io.stdout:setvbuf 'no'" "hello.lua"
hello,lua
>Exit code: 0
瀛楁牱鍒欎唬琛ㄦ暣涓猯ua寮鍙戠幆澧冨畨瑁呮垚鍔熴?/p>
濡傛灉瀵筍ciTE榛樿鐨勯厤鑹叉柟妗堟垨鑰呭瓧浣撲笉婊℃剰錛岀偣鍑匯怬ptions銆戣彍鍗曚腑鐨勩怬pen
Global Options File銆戯紝鍒欏彲浠ョ湅鍒癝ciTE鐜鐨勫叏灞閰嶇疆鏂囦歡銆傞噷闈㈠彲浠ヤ慨鏀?/p>
鐨勫寘鎷瓧浣擄紝棰滆壊錛岀獥鍙e竷灞絳夌瓑錛屼慨鏀圭浉搴旂殑鍊煎嵆鍙傚鏋滄壘涓嶅埌鑷繁鎯寵淇?/p>
鏀圭殑欏圭洰錛屽彲浠ュ啀鍒般怬ptions銆戠殑銆怬pen black.properties銆戯紙濡傛灉浣跨敤鐨勬槸
鐧借壊鑳屾櫙錛岃繖閲屽垯鏄痺hite.properties錛夋枃浠朵腑鏌ユ壘錛岃繖閲屽瓨鍌ㄧ殑鏄洿鍔犵粏鑷寸殑
灞炴ч厤緗備慨鏀硅繖涓や釜鏂囦歡錛屽熀鏈笂灝辮兘澶熸弧瓚沖ぇ閮ㄥ垎瀛︿範鎴栨槸寮鍙戣呯殑涓漢鍠?/p>
濂姐傝繕鏈変竴鐐癸紝鍦℅lobal Options File涓紝鏌ユ壘command.help.*.lua錛屽悗闈㈠搴?/p>
鐨勬槸鍦ㄧ紪杈戝櫒涓寜涓婩1閿脊鍑虹殑chm鏍煎紡鐨刲ua鎵嬪唽鏂囦歡璺緞錛岃繖閲岄渶瑕佷慨鏀逛竴涓?/p>
錛屾妸鏂囦歡璺緞鏀規紜氨鍙互浜嗭紙5.1.3鐗堟湰浼間箮娌¤繖涓棶棰樹簡錛夈?/p>
鏁翠釜鐜榪橀檮甯︿竴涓猀uickLuaTour錛屾槸涓涓敤Lua鍐欑殑涓涓熀浜庢帶鍒跺彴鐨勫皬鏁欑▼錛?/p>
寰堟槗浜庣悊瑙c?/p>
鍩烘湰涓婃暣涓幆澧冨氨鏄繖鏍鳳紝涔嬪悗灝卞彲浠ュ紑濮嬪涔燣ua浜嗐?/p>
鍦ㄤ笂涓綃囨枃绔犱腑錛屼粙緇嶄簡涓縐嶅熀浜庣粍浠舵柟寮忕殑娓告垙UI鏋舵瀯璁捐鏂規錛屽湪榪欓噷錛岀瑪鑰呭皢浠嬬粛濡備綍鍒╃敤CEGUI鍜孡ua鏉ュ疄鐜拌繖縐嶇伒媧葷殑妗嗘灦銆?/p>
鎺у埗璇彞 | 鏍煎紡 | 紺轟緥 |
If | if 鏉′歡 then ... elseif 鏉′歡 then ... else ... end |
if 1+1=2 then print("true")
elseif 1+2~=3 then print("true") else print("false") end |
While | while 鏉′歡 do ... end |
while 1+1~=2 do print("true") end
|
Repeat | repeat ... until 鏉′歡 |
repeat print("Hello") until 1+1~=2
|
For | for 鍙橀噺=鍒濆? 緇堢偣鍊? 姝ヨ繘 do ... end |
for i = 1, 10, 2 do print(i) end
|
For | for 鍙橀噺1, 鍙橀噺2, ... 鍙橀噺n in 琛ㄦ垨鏋氫婦鍑芥暟 do ... end |
for a,b in mylist do print(a, b) end
|
姣旇緝絎﹀彿 | < | > | <= | >= | == | ~= |
鍚箟 | 灝忎簬 | 澶т簬 | 灝忎簬鎴栫瓑浜?/td> | 澶т簬鎴栫瓑浜?/td> | 鐩哥瓑 | 涓嶇浉絳?/td> |
or and < > <= >= ~= == .. (瀛楃涓茶繛鎺? + - * / % not #(lua5.1 鍙栭暱搴﹁繍綆?/span>) - (涓鍏冭繍綆? ^ |
and | break | do | else | elseif | |
end | false | for | function | if | |
in | local | nil | not | or | |
repeat | return | then | true | until | while |
Nil | 絀哄鹼紝鎵鏈夋病鏈変嬌鐢ㄨ繃鐨勫彉閲忥紝閮芥槸nil銆俷il鏃㈡槸鍊鹼紝鍙堟槸綾誨瀷銆?/td> |
Boolean | 甯冨皵鍊鹼紝鍙湁涓や釜鏈夋晥鍊鹼細true鍜宖alse |
Number | 鏁板鹼紝鍦↙ua閲岋紝鏁板肩浉褰撲簬C璇█鐨刣ouble |
String | 瀛楃涓詫紝濡傛灉浣犳効鎰忕殑璇濓紝瀛楃涓叉槸鍙互鍖呭惈"\0"瀛楃鐨勶紙榪欏拰C璇█鎬繪槸浠?\0"緇撳熬鏄笉涓鏍風殑錛?/td> |
Table | 鍏崇郴琛ㄧ被鍨嬶紝榪欎釜綾誨瀷鍔熻兘姣旇緝寮哄ぇ錛岃鍙傝冨悗闈㈢殑鍐呭銆?/td> |
Function | 鍑芥暟綾誨瀷錛屼笉瑕佹鐤戯紝鍑芥暟涔熸槸涓縐嶇被鍨嬶紝涔熷氨鏄錛屾墍鏈夌殑鍑芥暟錛屽畠鏈韓灝辨槸涓涓彉閲忋?/td> |
Userdata | 鍡紝榪欎釜綾誨瀷涓撻棬鐢ㄦ潵鍜孡ua鐨勫涓繪墦浜ら亾鐨勩傚涓婚氬父鏄敤C鍜孋++鏉ョ紪鍐欑殑錛屽湪榪欑鎯呭喌涓嬶紝Userdata鍙互鏄涓葷殑浠繪剰鏁版嵁綾誨瀷錛屽父鐢ㄧ殑鏈塖truct鍜屾寚閽堛?/td> |
Thread | 綰跨▼綾誨瀷錛屽湪Lua涓病鏈夌湡姝g殑綰跨▼銆侺ua涓彲浠ュ皢涓涓嚱鏁板垎鎴愬嚑閮ㄤ喚榪愯銆?/span>濡傛灉鎰熷叴瓚g殑璇濓紝鍙互鍘葷湅鐪婰ua鐨勬枃妗c?br>鐜板湪鍥炶繃澶存潵鐪嬬湅錛屽掕寰椾笉鏄嚎紼嬬被鍨嬨傚弽鑰岃薄鏄敤鏉ュ仛閬嶅巻鐨勶紝璞℃槸Iterator鍑芥暟銆?br>濡傦細 function range(n)
鍙儨鐨勬槸瑕佺戶緇繍琛岋紝闇瑕乧oroutine.resume鍑芥暟錛屾湁鐐歸浮鑲嬨傝鎸囨暀銆?br>local i = 0 while(i < n) do coroutine.yield( i ) i = i + 1 end end |
杞澆錛?http://www.d2-life.com/LBS/blogview.asp?logID=41
銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br>
浣滆咃細 娌愭灚 錛堢浜屼漢鐢熸垚鍛橈級
鐗堟潈鎵鏈夎漿杞借娉ㄦ槑鍘熷嚭澶?br>涓婚〉錛氱浜屼漢鐢?http://www.d2-life.com
銆銆銆http://www.d2-life.com/LBS/blogview.asp?logID=41
涓轟粈涔堣鐢↙ua浣滆剼鏈紵
銆銆浣跨敤Lua浣滆剼鏈紝涓昏鏄洜涓哄畠灝忓閥鐜茬彂錛堜綋縐皬錛岃繍琛屽揩錛夛紝鑰屼笖瀹冪殑璇硶鍙堟瘮杈冪畝鍗曟槑浜嗐備笉榪囷紝浣跨敤LuaAPI灝哃ua寮曟搸闆嗘垚鍒扮▼搴忎腑錛岀‘瀹炴湁涓浜涗笉鏂逛究鈥斺旂敤钀芥湪闅忛緗戝弸鐨勮瘽鏉ヨ錛屽氨鏄?灝辮薄鐢ㄦ眹緙?銆傚綋鐒訛紝鐜板湪浣犱笉鐢ㄥ啀榪欎箞杈涜嫤浜嗭紝鍥犱負浣犲彲浠ヤ嬌鐢↙uaWrapper For C++銆備嬌鐢ㄨ繖涓伐鍏鳳紝鍦–++涓泦鎴怢ua鑴氭湰灝辨槸杞昏屾槗涓劇殑浜嬨備綘鍘熸湁鐨凜++鍑芥暟鍜岀被錛屽嚑涔庝笉闇瑕佷換浣曟敼鍙橈紝灝卞彲浠ヤ笌Lua鑴氭湰鍏變韓銆?br>銆銆鎴戜滑鎺ヤ笅鏉ワ紝鐢ㄥ疄渚嬫潵璇存槑錛屽浣曠敤LuaWrapper鏉ラ泦鎴怢ua鑴氭湰鍒頒綘鐨勭▼搴忎腑鍘匯?br>
1. 鍒涘緩Lua寮曟搸
銆銆LuaWrap lua; 鎴栬?LuaWrap* lua = new LuaWrap;
銆銆鍒涘緩涓涓狶uaWrap瀵硅薄錛屽氨鏄垱寤轟竴涓狶ua鑴氭湰寮曟搸銆傚茍涓旀牴鎹甃ua鐨勭壒鎬э紝浣犲彲浠ュ垱寤轟換鎰忓涓狶ua寮曟搸錛岀敋鑷沖彲浠ュ垎甯冨湪涓嶅悓鐨勭嚎紼嬪綋涓?br>
2. 瑁呰澆騫舵墽琛岃剼鏈▼搴?br>銆銆浣犲彲浠ヤ粠緙撳啿鍖轟腑瑁呰澆Lua鑴氭湰錛?br>銆銆lua.LoadString(
銆銆銆銆"print('Hello World')"
銆銆);
銆銆褰撶劧錛屼綘涔熷彲浠ヤ粠鏂囦歡涓鍏ワ紝騫舵墽琛孡ua鑴氭湰錛?br>銆銆Lua.LoadFile("./test.lua");
銆銆Lua鐨勮剼鏈紝鍙互鏄簮浠g爜錛屼篃鍙互緇忚繃緙栬瘧鍚庣殑涓棿浠g爜銆備篃璁鎬綘瀵圭紪璇戝悗鐨勪腑闂翠唬鐮佹洿鎰熷叴瓚b斺斿鏋滀綘涓嶅笇鏈涜婧愪唬鐮佽丹瑁歌8鐨勮闇插湪澶у鐨勭溂鍓嶃?br>
3. 鑾峰彇鍜岃緗甃ua鍙橀噺
銆銆鑳藉鑾峰彇鍜岃緗剼鏈彉閲忕殑鍐呭錛屾槸涓涓渶鍩烘湰鐨勫姛鑳姐備綘鍙互浣跨敤GetGlobal鍜孲etGlobal鍑芥暟鏉ュ仛鍒拌繖涓鐐癸細
銆銆(1) 鑾峰彇鍙橀噺錛?br>銆銆銆銆int a = lua.GetGlobal<int>("a");
銆銆銆銆LuaTable table = lua.GetGlobal<LuaTable>("t");
銆銆銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬶紝灝辨槸鎯寵鐨勫彉閲忕殑綾誨瀷銆?br>銆銆(2) 璁劇疆鍙橀噺錛?br>銆銆銆銆lua.SetGlobal("a", a);
銆銆銆銆lua.SetGlobal("t", table);
4. 璋冪敤Lua鍑芥暟
銆銆浣跨敤Call鍑芥暟錛屽氨鍙互寰堢畝鍗曠殑浠庝綘鐨勭▼搴忎腑璋冪敤Lua鍑芥暟錛?br>銆銆lua.Call<void>("print", "Hello World");
銆銆int sum = lua.Call<int>("add", 2, 3);
銆銆榪欓噷錛?lt;> 閲屽ご鐨勭被鍨嬫槸榪斿洖鍊肩殑綾誨瀷銆?br>
5. 濡備綍璁㎜ua涔熻兘璋冪敤C++鐨勫嚱鏁?br>銆銆綺鵑噰鐨勫湴鏂規潵浜嗐傚亣濡傛湁涓嬮潰榪欐牱鐨勪竴涓嚱鏁幫細
銆銆int add(int a, int b)
銆銆{
銆銆銆銆return a + b;
銆銆}
銆銆濡傛灉鎯寵瀹冭兘澶熻Lua浣跨敤錛屽彧闇灝嗗畠娉ㄥ唽鍒癓ua寮曟搸褰撲腑灝卞彲浠ヤ簡錛?br>銆銆lua.RegisterFunc("add", int(int,int), add);
銆銆榪欐牱錛孡ua涓氨鍙互鐢ㄧ洿鎺ヤ嬌鐢ㄤ簡錛?br>銆銆錛圠ua鑴氭湰錛塻um = add(1, 3)
銆銆(*) RegisterFunc鐨勫姛鑳斤紝灝辨槸璁╀綘鎶奀++鐨勫嚱鏁版敞鍐屽埌Lua涓紝渚汱ua鑴氭湰浣跨敤銆?br>銆銆銆銆絎竴涓弬鏁幫紝鏄兂瑕佸湪Lua涓敤鐨勫嚱鏁板悕銆?br>銆銆銆銆絎簩涓弬鏁幫紝鏄疌++涓嚱鏁扮殑鍘熷瀷錛?C++鍏佽鍑芥暟閲嶈澆鐨勶紝浣犲彲浠ヤ嬌鐢ㄥ嚱鏁板師鍨嬶紝鏉ラ夋嫨闇瑕佹敞鍐屽埌Lua寮曟搸涓殑閭d釜鍑芥暟銆?br>銆銆銆銆絎笁涓弬鏁幫紝灝辨槸C++涓嚱鏁扮殑鎸囬拡浜嗐?br>
6. 濡備綍鑳借C++鐨勭被鍦↙ua涓嬌鐢?br>銆銆鎴戜滑鍏堢湅鐪嬩笅闈㈣繖涓狢++綾伙細
class MyArray
{
std::vector<double> array;
public:
void setvalue(int index, double value);
double getvalue(int index);
int size();
const char* ToString();
};
銆銆浣犲噯澶囪璁㎜ua鑳藉鑷敱璁塊棶騫舵搷浣滆繖涓被銆傚緢綆鍗曪紝浣犲彧闇澧炲姞鍑犱釜瀹忓畾涔夊氨鍙互浜嗭細
class MyArray
{
std::vector<double> array;
public:
void setvalue(int index, double value);
double getvalue(int index);
int size();
const char* ToString();
// 灝嗕竴涓?class 浣滀負涓涓?Lua 瀵硅薄鏄緢瀹規槗鐨勶紝鍙渶瑕佸鍔犱互涓嬪畯瀹氫箟銆?br> DEFINE_TYPENAME("My.array");
BEGIN_REGLUALIB("array")
LUALIB_ITEM_CREATE("new", MyArray ) // 鍒涘緩MyArray
LUALIB_ITEM_DESTROY("del", MyArray ) // 娑堥櫎MyArray銆?br> END_REGLUALIB()
BEGIN_REGLUALIB_MEMBER()
LUALIB_ITEM_FUNC("size", int (MyArray*), &MyArray::size)
LUALIB_ITEM_FUNC("__getindex", double(MyArray*, int), &MyArray::getvalue)
LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
LUALIB_ITEM_FUNC("__tostring", const char* (MyArray*), &MyArray::ToString)
LUALIB_ITEM_DESTROY("__gc", MyArray ) // 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br> END_REGLUALIB_MEMBER()
};
銆銆鍙鏈変簡榪欎簺瀹忓畾涔夛紝榪欎釜綾誨氨鏄彲浠ュ湪Lua涓嬌鐢ㄧ殑綾諱簡錛屾垜浠氨鍙互鍦↙ua涓敞鍐岃繖涓被浜嗭細
銆銆lua.Register<MyArray>()
銆銆榪欐牱娉ㄥ唽浠ュ悗錛屾垜浠湪Lua涓氨鍙互浣跨敤榪欎釜綾諱簡錛?br>銆銆a = array.new() -- 鍒涘緩瀵硅薄錛岀浉褰撲簬 a = new Myarray
銆銆a[1] = 10 -- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(1, 10)
銆銆a[2] = 20 -- 璋冪敤__newindex錛屼篃灝辨槸C++涓殑 a->setvalue(2, 20)
銆銆print(
銆銆銆銆a, -- 璋冪敤 __tostring錛屼篃灝辨槸C++涓殑 a->ToString()
銆銆銆銆a:size(), -- 鐩稿綋浜嶤++涓殑 a->size()
銆銆銆銆a[1], -- 璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(1)
銆銆銆銆a[2]) --璋冪敤__getindex錛屼篃灝辨槸C++涓殑a->getvalue(2)
銆銆array.del(a) -- 娓呴櫎瀵硅薄錛岀浉褰撲簬 delete a
銆銆a = nil -- 娓呯┖ a錛屽緢璞++涓殑 a = NULL
銆銆褰撶劧錛屼綘涔熷彲浠ヤ笉鐢╠el榪欎釜瀵硅薄錛岃屾槸絳夊緟Lua甯綘鑷姩榪涜鍨冨溇鍥炴敹銆傚湪Lua榪涜鍨冨溇鍥炴敹鏃訛紝瀹冧細鑷姩璋冪敤榪欎釜瀵硅薄鐨?__gc 錛岀浉褰撲簬 delete銆?br>
銆銆閭d箞錛屽湪C++涓鍒涘緩MyArray瀵硅薄錛屽茍涓斾紶閫掔粰Lua鍏ㄥ眬鍙橀噺鎬庝箞鍔烇紵灝辮薄鍓嶉潰璁茶繃鐨勪竴鏍鳳紝浣跨敤SetGlobal錛?br>銆銆MyArray* a = new MyArray;
銆銆lua.SetGlobal("a", a);
銆銆瑕佽幏鍙栬瀵硅薄錛屽悓鏍風殑錛屽簲璇ヤ嬌鐢℅etGlobal錛?br>銆銆MyArray* a = lua.GetGlobal<MyArray>("a");
銆銆
銆銆瀵逛簬浼犻掔粰Lua鐨勫璞★紝灝辮Lua鏉ョ鐞嗚瀵硅薄鐨勭敓瀛樺懆鏈熷ソ浜嗐傚鏋滀綘闈炶鍒犻櫎瀹冪殑璇濓紝浣犲彲浠ヤ嬌鐢―elGlobalObject錛?br>銆銆lua.DelGlobalObject<MyArray>("a");
銆銆涓嶈繃榪欎箞鍋氱殑璇濓紝浣犲簲褰撴槑鐧戒綘鍦ㄥ仛浠涔堬紝鍥犱負鍦↙ua鐨勮剼鏈腑錛屽彲鑳藉凡緇忓湪澶氬寮曠敤浜嗚繖涓璞′簡銆傚垹闄や簡鍏朵腑涓涓紝灝嗗鑷村叾瀹冨紩鐢ㄥ璞″け鏁堬紝浠庤屽彲鑳藉紩鑷寸郴緇熷穿婧冦?br>
銆銆(1) DEFINE_TYPENAME("My.array");
銆銆銆銆瀹氫箟綾誨瀷鐨勫悕縐般傚湪Lua涓紝榪欎釜綾誨瀷鍚嶇О鏄敮涓鐢ㄦ潵璇嗗埆C++綾誨瀷鐨勶紝浣犲繀欏諱負涓嶅悓鐨勫璞$粰浜堜笉鍚岀殑鍚嶇О銆?br>
銆銆(2) BEGIN_REGLUALIB("array") ... END_REGLUALIB()
銆銆銆銆浣犲彲浠ヤ負涓涓璞″畾涔変竴涓▼搴忓簱錛?array"灝辨槸紼嬪簭搴撶殑鍚嶅瓧銆傚湪紼嬪簭搴撲腑瀹氫箟鐨勫嚱鏁版槸鍏ㄥ眬鍑芥暟錛屽湪Lua涓紝浣跨敤璇ュ嚱鏁幫紝闇瑕佸湪鍑芥暟鍓嶅姞涓婂簱鐨勫悕瀛楋紝濡傦細array.new錛堬級銆傞氬父錛岀▼搴忓簱浼氬寘鍚垱寤哄璞$殑鏂規硶銆傚錛?br>銆銆銆銆LUALIB_ITEM_CREATE("new", MyArray ) // 鍒涘緩MyArray
銆銆銆銆榪欐牱瀛愶紝浣犳墠鑳藉湪Lua涓垱寤篗yArray錛?br>銆銆銆銆a = array.new()
銆銆
銆銆銆銆浣犱篃鍙互閫夋嫨澧炲姞涓涓垹闄ゅ璞℃搷浣滐細
銆銆銆銆LUALIB_ITEM_DESTROY("del", MyArray ) // 鍒犻櫎MyArray
銆銆銆銆榪欐牱錛屼綘灝卞彲浠ョ洿鎺ュ垹闄や竴涓璞′簡錛?br>銆銆銆銆array.del(a)
銆銆(3) BEGIN_REGLUALIB_MEMBER() ...END_REGLUALIB_MEMBER()
銆銆銆銆鍦ㄦ澶勶紝浣犲彲浠ュ畾涔夊璞$殑鎴愬憳鍑芥暟錛屼篃鍙互閲嶈澆瀵硅薄鐨勬搷浣滅鈥斺旀槸鐨勶紝灝辮薄C++鐨刼perator閲嶈澆銆備緥濡傦細
銆銆銆銆LUALIB_ITEM_FUNC("__newindex", void (MyArray*, int, double), &MyArray::setvalue)
銆銆銆銆灝辨槸閲嶈澆 operator[] 鎿嶄綔絎︺侺ua涓彲閲嶈澆鐨勬搷浣滅榪樻湁璁稿錛屽錛?br>
銆銆銆銆__getindex錛氭搷浣滅[]錛屾敮鎸佽鍙栬闂紝濡?v = a[10]
銆銆銆銆__newindex錛氭搷浣滅[]錛屾敮鎸佽祴鍊艱闂紝濡?a[10] = 1.22
銆銆銆銆__tostring錛氬皢鍙橀噺杞崲鎴愬瓧涓瞋_add錛氱瓑鍚屼簬operator +
銆銆銆銆__add錛氭搷浣滅 錛?br>銆銆銆銆__sub錛氭搷浣滅 -
銆銆銆銆__mul錛氭搷浣滅 ×
銆銆銆銆__div錛氭搷浣滅 ÷
銆銆銆銆__pow錛氭搷浣滅 ^ (涔樻柟)
銆銆銆銆__unm錛氫竴鍏冩搷浣滅 -
銆銆銆銆__concat錛氭搷浣滅 .. (瀛楃涓茶繛鎺?
銆銆銆銆__eq錛氭搷浣滅 == (a ~= b絳変環浜?not a == b)
銆銆銆銆__lt錛氭搷浣滅 < (a > b 絳変環浜?b < a)
銆銆銆銆__le錛氭搷浣滅 <= (a >= b 絳変環浜?b <= a錛岃娉ㄦ剰鐨勬槸錛屽鏋滄病鏈夊畾涔?__le"錛屽垯Lua灝嗕細灝濊瘯灝哸<=b 杞崲鎴?not (b < a) )
銆銆銆銆__gc錛氬湪鍨冨溇鍥炴敹鏃惰皟鐢ㄦ鍑芥暟錛岀浉褰撲簬C++鐨勬瀽鏋勫嚱鏁般傚己鐑堝緩璁畾涔夋鎿嶄綔絎︼紝浠ュ厤閫犳垚鍐呭瓨娉勬紡絳夋儏鍐點傛瘮濡傦細
銆銆銆銆LUALIB_ITEM_DESTROY("__gc", MyArray ) // 鍨冨溇鏀墮泦鏃舵秷闄ゅ璞$敤銆?br>
銆銆銆銆(娉? 榪欓噷瑕佽鏄庝竴涓嬶紝鍦╨ua涓紝璁塊棶绱㈠紩鎿嶄綔絎︽槸__index錛屼笉鏄痏_getindex錛屽湪luaWrapper搴撲腑錛屼負浜嗘柟渚夸嬌鐢紝灝嗗叾鏄犲皠涓篲_getindex錛屽悓鏃訛紝瀵筥_index鐨勫畾涔夊皢浼氳蹇界暐銆?br>
銆銆銆銆灝辮繖涔堢畝鍗曘傚亣濡備綘宸茬粡鏈夌幇鎴愮殑綾伙紝鑰屼綘娌℃湁淇敼璇ョ被鐨勬潈鍔涳紝濡備綍灝嗗叾鍔犲叆鍒癓ua涓憿錛熺瓟妗堝氨鏄紝緇ф壙瀹冿紝灝嗘妸媧劇敓綾誨姞鍏ュ埌Lua涓?br>
緇撴潫璇?br>銆銆LuaWrapper 闇瑕佺敤鍒癰oost搴撶殑鏀寔錛歜oost/type_traits.hpp, boost/function.hpp, boost/bind.hpp錛屽畠浣跨敤浜咰++鐨勬ā鏉塊儴浠界壒鍖栵紝鍥犳錛孋++緙栬瘧鍣ㄥ鏋滀笉鏀寔姝ょ壒鎬э紝灝嗘棤娉曠紪璇戙傜洰鍓嶆敮鎸佹鐗規х殑緙栬瘧鍣ㄥ凡緇忔湁寰堝銆傚湪VisualStudo浜у搧緋誨垪涓紝鍙湁VC7.1鑳芥敮鎸佹鐗規э紝鍥犳錛屾偍濡傛灉姝e湪浣跨敤VisualStudio錛岃紜浣犵敤鐨勬槸VisualStudio2003銆?br>銆銆濡傛灉浣犺寰?LuaWrapper For C++ 鑳藉甯姪浣狅紝鎴戜細鎰熻寰堣崳騫搞傛垜寰堟効鎰忓皢榪欎釜紼嬪簭搴撳垎浜粰澶у銆傞『渚夸竴鎻愮殑鏄紝濡傛灉浣犲湪浣跨敤榪囩▼涓彂鐜癇UG錛屾垨鏄湁濂界殑寤鴻錛屽笇鏈涙偍鑳戒笌鎴戣仈緋匯備綘鍦ㄤ嬌鐢ㄨ繃紼嬩腑錛岃涓嶈鍒犻櫎鏂囦歡涓殑緗插悕淇℃伅錛涘鏋滀綘淇敼浜嗙▼搴忓簱錛岃鎮ㄥ湪淇敼鐨勬枃浠朵腑鍔犲叆鎮ㄧ殑淇敼璇存槑銆傚綋鐒訛紝鎴戜細闈炲父嬈㈣繋鎮ㄨ兘灝嗕慨鏀瑰悗鐨勭▼搴忓洖棣堢粰鎴戙傛垜浼氱戶緇紭鍖栧茍瀹屽杽瀹冦?br>
Lua 鎻愪緵浜嗛珮綰ф娊璞★紝鍗村張娌″け鍘諱笌紜歡鐨勫叧鑱?/p>
![]() |
綰у埆: 鍒濈駭 Martin Streicher (martin.streicher@linux-mag.com), 棣栧腑緙栬緫, Linux Magazine 2006 騫?6 鏈?12 鏃?/p> 铏界劧緙栬瘧鎬х紪紼嬭璦鍜岃剼鏈璦鍚勮嚜鍏鋒湁鑷繁鐙壒鐨勪紭鐐癸紝浣嗘槸濡傛灉鎴戜滑浣跨敤榪欎袱縐嶇被鍨嬬殑璇█鏉ョ紪鍐欏ぇ鍨嬬殑搴旂敤紼嬪簭浼氭槸浠涔堟牱瀛愬憿錛烲ua 鏄竴縐嶅祵鍏ュ紡鑴氭湰璇█錛屽畠闈炲父灝忥紝閫熷害寰堝揩錛屽姛鑳藉嵈闈炲父寮哄ぇ銆傚湪鍒涘緩鍏朵粬閰嶇疆鏂囦歡鎴栬祫婧愭牸寮忥紙浠ュ強涓庝箣瀵瑰簲鐨勮В鏋愬櫒錛変箣鍓嶏紝璇峰皾璇曚竴涓?Lua銆?/blockquote> |