torque脚本编程快速入门(ticle about the Torque Scirpt Basic)

原创 2006年06月16日 01:21:00

Torque游戏引擎QQ群成员文章:(←程晓☆晓→,QQ:154141370)感谢程晓☆晓不断给我们提供清晰明了得教程,向←程晓☆晓→致敬!!
Note: Article about the Torque Scirpt Basic


1)打开控制台(console)
运行torquedemo.exe进入主界面或游戏后,按 ~ 键(不用按shift,其实是`键)激活
控制台是一个调试程序的好地方

2)试一下最简单命令 echo()
在控制台键入echo("hello!");  (注意必须加; 就象c++一样)可以看到console窗口就立即显示 hello!

 另小看echo(),有时为了调试脚本程序,在适当的地方加入echo(),显示有关变量的值,
 可以监测程序是否正确。

 使用echo()时,如要输入多行语句,只须连续输入即可,torque会根据 ;来分行执行
 如:
 
 $a=1;echo($a);
 输出:
  1

3)torque的脚本script的特点:
 
 a)  无须预定义,即开即用。

 b) 变量类型灵活性,如 "12" 与12 是一样的

 c) 变理大小写不敏感, %a 与%A 是一样的

 d) 与c++类似,每个语名均须以 ; 作为结束标记

4)变量
   torque脚本中,$表示全局变量,%表示局部变量
   表示法: $a 为全局变量a (在网络中,全局变量只表示在本客户端的全局变量,并不是整个网络)
            %b 为局部变量b (一般用于function中)

变量类型:
 
   a)数字型
      1234  (整数interger)
      1.234  (浮点数floation point)
      1234e-3 (科学记数scientific notation)
      0xc001  (十六进制 hexadecimal)

   b)字符型
      "abcd"  (字符串string)
      'abcd'  (标记字符串 tagged string)

     你可以在控制台试试:

      echo("abcd");
      echo('abcd');  有什区别
    
     再试一下一个有意思的语句:
     echo("1"+"2");
     会输出:3  而不是把2个字符串连接,连接是用 @ 来操作,如:
     echo("1" @ "2");
     输出:12    
     这就是torque的script脚本的灵活之处,

    更多的字符连接符:
     @   连接两个字符串
     TAB  两个字符串间加入tab
     SPC  两个字符串间加入一个空格
     NL   两个字符串间加入一个加车(换行)

    注意:这些操作符的英文必须是大写。

   如:echo("abcd" NL "CDEF");
  会输出:
   abcd
   CDEF

  格式化字符操作:

            /n          (newline)  新行
            /r          (carriage return) 回车
            /t          (tab) 
            /c0.../c9   (colorize subsequent text)  字体色
            /cr         (reset to default color)  回到默认色
            /cp         (push current color on color stack)把当前色设进颜色堆栈  未知使用方法
            /co         (pop color from color stack)  从颜色堆栈中取色  未知使用方法
            /xhh        (two digit hex value ASCII code)  这个我还不懂。。
            //          (backslash)   注解
               
较常用的是字符的颜色处理:
原则上是对后面的字符产生影响,直到一个新的字体色操作符出现,但只对当前行字符产生影响,并不会影响默认字体色。
echo("/c2hello!/c0hello!");
前一个hello!会显示红色,后一个hello!会显示正常的黑色。

  C)逻辑型
    与其它语言一样,torque也只有两个值
    true (1)
    false (0)

  d)数组(arrays)表示法:

   $AA[n]  一维数组
   $AA[M,N] 多维数组
   $AA[M_N] 多维数组的另一种表示法

  变量与数组的名字可以相同,但值并不会产和影响:

  $a=2;
  $a[0]=3;
  你试下
  echo($a);
  echo($a[0]);
  输出的是各自代表的值。
 更有趣的是,torque脚本中,数组可以用如下方法指向:
 接着上例,你试试:
 echo($a0);
 输出的是$a[0]的值,同理,如果要输出$a[0,0],可以用如下方法:
 echo($a0_0);

 再次可见,torque的脚本是具有相当的灵活性

 d)矢量(vectors)

  格式如:"1.0 1.0 1.0 1.0"
   矢量是引擎中一个应用很广的变量类型,在3D坐标,动力,粒子,声效等等都有相应的应用。

 5)操作符
   这方面与C++很相似,所以不花篇幅陈述。可以参见script的编程指南
  如 a++  a-- 的用法都是与c++语言的用法一样的。

  字符串对比操作:
   $= 等于
   !$= 不等于

 如:echo("abc" $="abc");
  输出1
    echo("abc" !$="cde");
  输出1

6)控制语句
  与c++的基本相同

 a) if -then -else 判断语句

             if(表达式)
            {
                语句1;
            } else
            {
                语句2;
            }
                   
 b)switch 

              switch(表达式)
            {
            case 值1:
                语句1;
                break;
            case 值2:
                语句2;
                break;
            ...
            case 值N:
                语句N;
                break;
            default: 
                默认执行语句;
            };
  
注意 break; 必不可少


 c)while 循环语句

            while(表达式)
            {
                 语句;
            }

 7)功能模块 function             
   与c++也基本相同,定义方法
 
              function 功能模块名([参数0],...,[参数n])
            {
                语句;
                [return 返回值;]   可选
            }
  
 
8)物体定义 objects

 介绍了一些基本的知识,这里开始进入torque特有的语法了。

 在torque中,所有项目都是“物体”,并且所有游戏中的物体都可以访问,如人物,汽车,场景中的物体。
 且都可以用脚本进行访问,而物体的属性是在引擎中定义的。

我们看一个脚本中的代码(节选自server/scripts/player.cs )

datablock PlayerData(PlayerBody)
{
   renderFirstPerson = false;
   emap = true;
  
   className = Armor;
   shapeFile = "~/data/shapes/player/player.dts";
   cameraMaxDist = 3;
   computeCRC = true;
 
   canObserve = true;
   cmdCategory = "Clients";

   cameraDefaultFov = 90.0;
   cameraMinFov = 5.0;
   cameraMaxFov = 120.0;
  
   debrisShapeName = "~/data/shapes/player/debris_player.dts";
   debris = playerDebris;

  ...
};

datablock的作用是定义物体的有关属性。

这里就是定义了游戏人的人物的有关属性,包括视角定义,3D文件(dts),等等,

再在server/scripts/game.cs 中载入:
  ...
   exec("./crossbow.cs");
   exec("./player.cs");  //载入player.cs中定义的物体
   exec("./chimneyfire.cs");
   exec("./aiPlayer.cs"); 
  
   ...

载入只是预载入内存,并未真正创建,现在看一下在哪里创建了人物player

在game.cs中,可找到有关功能模块:

function GameConnection::createPlayer(%this, %spawnPoint)
{
   if (%this.player > 0)  {
      // The client should not have a player currently
      // assigned.  Assigning a new one could result in
      // a player ghost.
      error( "Attempting to create an angus ghost!" );
   }

   // Create the player object  就是这里创建了player这个物体,并返回名柄给%player
   %player = new Player() {
      dataBlock = PlayerBody;
      client = %this;
   };
   MissionCleanup.add(%player);  //在场景中加入

   // Player setup...
   %player.setTransform(%spawnPoint);   //设定随机出现的地点,地点在场景编辑器中定义,并在function pickSpawnPoint()功能中产生随机点
   %player.setShapeName(%this.name);
  
   // Starting equipment
   %player.setInventory(Crossbow,1);   //初始时的武器设置
   %player.setInventory(CrossbowAmmo,10);  //初始时的弹药设置
   %player.mountImage(CrossbowImage,0);  //设置武器在人物的装配点 0表示mount0,1表示装在mount1,由此类推。

   // Update the camera to start with the player
   %this.camera.setTransform(%player.getEyeTransform());  //设置视角方式

   // Give the client control of the player   //把控制交给player这个物体
   %this.player = %player;
   %this.setControlObject(%player);
}

总结一下,创建物体objcect的方法是:

%ver=new 物体类型(名称) %ver 是返回的句柄,是一个整数,是游戏中的客户端唯一值,相当于物体ID。
{
 datablock=datablock定义; //这是必须的,datablock可以是自定义的,或是torque已含有的,可参看torque的datablock附表。

 内置属性1=初始化值1; //可选,不选则取默认值
 内置属性2=初始化值2;

 ...

 自定义属性1=初始化值1; //可选,自定义属性只能在script中应用,并不影响引擎的内置属性
 自定义属性2=初始化值2;

 ...

};  //这个 ;不可少.

注:返回的句柄在客户端是唯一值,但网络下的ID又不同,所以一个物体存在2个ID,一个是本地ID,一个是网络ID,网络ID是
    整个游戏网络中唯一的ID号,进行网络游戏编程时应注意,关于网络ID的获得方法,以后再作说明。

作业提交系统Torque个人安装总结(PBS)

PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。 PBS的目前包括openPBS,PBS Pro和Torque三个主要分支。 其中OpenPBS是最早的PBS系统,目前已经没有太...
  • educast
  • educast
  • 2011年12月31日 08:55
  • 2832

Torque引擎系列之脚本入门

本人接触TGE引擎已差不多有两年时间,TGE是国外的一款相当不错游戏引擎。价格低廉(只需99 dollar)、支持脚本、并内建GUI编辑器、粒子编辑器、场景编辑器。最致命的缺陷是在网络部分,只能支持1...
  • yiweibin
  • yiweibin
  • 2009年01月04日 18:01
  • 2313

利用torque搭建分布式程序运行环境

利用torque搭建分布式程序运行环境 第一篇自己翻译英文资料以及自己总结的博客。 一、torque简介 Torque 提供批量作业和分布计算机资源的控制功能。它基于原始的PBS(Portable ...
  • cheng_xu_yuanlilin
  • cheng_xu_yuanlilin
  • 2016年09月11日 16:58
  • 535

Ubuntu安装Torque教程

1. 下载Torque源代码: http://www.adaptivecomputing.com/support/download-center/torque-download/ 我下载了:torq...
  • u011630575
  • u011630575
  • 2015年09月06日 20:23
  • 2541

torque---添加计算节点

torque怎么添加计算节点呢1 建用户2 复制 torque-package-mom-linux-x86_64.sh torque-package-clients-linux-x86_64.sh...
  • zhuimuzhuimu
  • zhuimuzhuimu
  • 2016年04月15日 15:42
  • 289

torque 简介

Torque简介Torque是一个开源的资源管理器,来自于Cluster Resources,是一个社区基于PBS项目努力的结晶。它提供对批处理作业和分散的计算节点(Compute nodes)的控制...
  • doomvsjing
  • doomvsjing
  • 2016年03月04日 00:43
  • 509

Torque PBS管理系统

PBS管理系统 (一)作业提交系统Torque个人安装总结(PBS) PBS是功能最为齐全,历史最悠久,支持最广泛的本地集群调度器之一。 PBS的目前包括openPBS,PBS Pro和T...
  • educast
  • educast
  • 2012年01月16日 10:58
  • 3906

Torque引擎初探

GarageGames公司一直致力于提供特性丰富而价格低廉的游戏开发工具以及丰富的庞大的资源为各个层次的游戏开发者打开游戏开发之门。不论你是初涉游戏开发还是经验丰富的老手,Torque 都有适合你的一...
  • zhuzhao
  • zhuzhao
  • 2008年03月06日 15:59
  • 3553

Linux下Torque安装部署方法

转载地址:http://blog.csdn.net/jiayanhui2877/article/details/8230441 总结: 1、安装系统 2、修改/etc/hosts文件将计算节...
  • houqingdong2012
  • houqingdong2012
  • 2013年03月19日 17:26
  • 2830

TORQUE安装笔记:

TORQUE安装笔记: Torque Resource Manager是一套OpenSource的软体,主要是用来控管丛集式电脑的工作排程,虽然是免费软体但功能还算蛮完整的,可以设定不同的工作类...
  • tengh
  • tengh
  • 2013年09月25日 09:19
  • 2153
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:torque脚本编程快速入门(ticle about the Torque Scirpt Basic)
举报原因:
原因补充:

(最多只允许输入30个字)