开源html3D/2D游戏引擎 Turbulenz USER GUIDE
2014-03-31 19:02
483 查看
Turbulenz开发团队宣布开源Turbulenz HTML5游戏引擎,该项目基于MIT许可证。目前项目托管在GitHub上,文档详细介绍了如何建立开发环境以及如何使用Turbulenz Engine API,欢迎查看。
近日,Turbulenz开发团队宣布开源Turbulenz HTML5游戏引擎,该项目基于MIT许可证。目前项目托管在GitHub,详细介绍了如何建立开发环境以及如何使用Turbulenz
Engine API(点击查看文档)。
Turbulenz允许所有构建基块的开发人员创建高质量和硬件加速的2D、3D游戏,该项目可适用于多个平台包括手机、平板及Web;提供给了易于安装的SDK,支持Windows、Mac OS X、GNU/Linux等系统。
未来的SDK版本基于MIT许可证下开源(早期的SDK版本使用的是半开放式的,如今已停用)。
Turbulenz包含所有可重用的游戏解决方案,包括,2D/3D图形,2D/3D效果、场景图形、用户输入、动画等等许多实用的应用。
Turbulenz在线文档:http://docs.turbulenz.com/
在他们的主页上试玩了几款游戏,感觉渲染的还不错值得一试。
首先安装SDK:http://docs.turbulenz.com/installing.html
这里要注意了因为sdk依赖python文件,因为一些路径设置的问题,所以最好把它和python都装在c盘。否则可能会有不能启动本地服务器的危险。
开始通过创建一个新文件。该文件的HTML文件扩展名为.htm。
在开始之前我们要知道整个引擎其实是一个js库,所以我们要调用引擎就要在我们的目录下面附带库文件,也就是jslib这个文件夹。
在该文件中添加如下基本HTML标签:
代码中<canvas>标签,Turbulenz将认为这是游戏窗口,在这种情况下我们绘制了640x480像素的窗口。开始使用核心turbulenz engine和其图形库,改变画布元素的背景颜色:
下一步我们初始化WebGL 引擎并且传递一个引用到<canvas>标签:
TurbulenzEngine允许你创建各种低级模块的对象,比如图形设备,声音设备,网络设备。比如我们可以创建一个图形设备:
有了它我们可以开始控制canvas内的颜色显示,我们先初始化一组颜色的列表:
在TurbulenzEngine里面颜色是有四个元素组成的,分别是RGB ALPHA,他们的值都在0-1之间。
接下来我们创建一个update()函数,作为我们整体游戏的循环。
这样我们就建立了一个60帧的刷新函数。所有的刷新的效果都来自这里。
在update里面再加入这段代码,每次进入update函数后会调用beginFrame函数,如果成功窗口就会被清除为黄色。
到目前为止你的代码看上去应该是这样的:
整个窗口是黄色的,看不到动画。让我么来做点变化:
刷新后你会发现颜色循环改变。下面我们要开始绘制一些2D图形,首先我们要包含图形包。
之前我们已经创建了图形对象GraphicsDevice,所以我们可以初始化2D模型:
建立一些点的坐标,颜色列表我们可以绘制一个正方行:
这里注意:在我们的窗口里面左上角是原点坐标(0,0)
把下面这段代码加到beginFrame和endFrame之间。
draw2D.draw函数是一个绘制2D图形的有效手段。但是还不够灵活可控,在我们的引擎里面用Draw2DSprite 函数绘制一个精灵会是更好的选择。
上面就是一个精灵的初始化操作,比较简单。下面调用方法将他绘制出来;
刷新后你会发现一个白色的棱形在屏幕的中央,精灵的属性可以通过属性或函数改变。
到目前位置你的代码看起来应该是这样的:
这时候我们打开127.0.0.1:8000 or localhost:8000的地址的时候我们发现会定位到当前目录,打开之前写的html代码,发现运行正常,现在我们可以加载图片作为精灵的皮肤纹理了。创建纹理:
这种方法可以创建png, jpg, dds or tga图片格式的纹理。
除了直接设置精灵的大小,我们还可以使用比例函数来整体缩放他的形状:
现在你的代码应该是这样的:
到目前位置你应该掌握了使用低级APIs来绘制元素的方法。要想了解更多可以参考下面的资料:
http://docs.turbulenz.com/jslibrary_api/low_level_api.html#low-level-api
http://docs.turbulenz.com/jslibrary_api/physics2d_api.html#physics2d-api
http://docs.turbulenz.com/jslibrary_api/physics3d_api.html#phys3d-api
http://docs.turbulenz.com/jslibrary_api/high_level_api.html#high-level-api
http://docs.turbulenz.com/turbulenz_services/index.html#turbulenz-services-api
http://docs.turbulenz.com/protolib/index.html#protolib-api
入门翻译到这里为止,看起来还蛮简单的,不是么。接下来会翻译一些实战教程和工具的使用教程,到底这个坑会有多深呢?让我先来一探究竟!
近日,Turbulenz开发团队宣布开源Turbulenz HTML5游戏引擎,该项目基于MIT许可证。目前项目托管在GitHub,详细介绍了如何建立开发环境以及如何使用Turbulenz
Engine API(点击查看文档)。
Turbulenz允许所有构建基块的开发人员创建高质量和硬件加速的2D、3D游戏,该项目可适用于多个平台包括手机、平板及Web;提供给了易于安装的SDK,支持Windows、Mac OS X、GNU/Linux等系统。
未来的SDK版本基于MIT许可证下开源(早期的SDK版本使用的是半开放式的,如今已停用)。
Turbulenz包含所有可重用的游戏解决方案,包括,2D/3D图形,2D/3D效果、场景图形、用户输入、动画等等许多实用的应用。
Turbulenz在线文档:http://docs.turbulenz.com/
在他们的主页上试玩了几款游戏,感觉渲染的还不错值得一试。
首先安装SDK:http://docs.turbulenz.com/installing.html
这里要注意了因为sdk依赖python文件,因为一些路径设置的问题,所以最好把它和python都装在c盘。否则可能会有不能启动本地服务器的危险。
开始使用Turbulenz的 APIs
尝试Turbulenz API只需要一个文本编辑器和浏览器,如Mozilla Firefox谷歌浏览器。开始通过创建一个新文件。该文件的HTML文件扩展名为.htm。
在开始之前我们要知道整个引擎其实是一个js库,所以我们要调用引擎就要在我们的目录下面附带库文件,也就是jslib这个文件夹。
在该文件中添加如下基本HTML标签:
<html> <head> <title>Turbulenz - Getting Started Guide - API Example</title> <!-- Script includes go here --> </head> <body> <canvas id="canvas" width="640px" height="480px"/> <script> /* Game code goes here */ </script> </body> </html>
代码中<canvas>标签,Turbulenz将认为这是游戏窗口,在这种情况下我们绘制了640x480像素的窗口。开始使用核心turbulenz engine和其图形库,改变画布元素的背景颜色:
<script src="jslib/debug.js"></script> <script src="jslib/webgl/turbulenzengine.js"></script> <script src="jslib/webgl/graphicsdevice.js"></script>
下一步我们初始化WebGL 引擎并且传递一个引用到<canvas>标签:
TurbulenzEngine = WebGLTurbulenzEngine.create({ canvas: document.getElementById("canvas") });
TurbulenzEngine允许你创建各种低级模块的对象,比如图形设备,声音设备,网络设备。比如我们可以创建一个图形设备:
var graphicsDevice = TurbulenzEngine.createGraphicsDevice({});
有了它我们可以开始控制canvas内的颜色显示,我们先初始化一组颜色的列表:
var r = 1.0, g = 1.0, b = 0.0, a = 1.0; var bgColor = [r, g, b, a];
在TurbulenzEngine里面颜色是有四个元素组成的,分别是RGB ALPHA,他们的值都在0-1之间。
接下来我们创建一个update()函数,作为我们整体游戏的循环。
function update() { /* Update code goes here */ } TurbulenzEngine.setInterval(update, 1000 / 60);
这样我们就建立了一个60帧的刷新函数。所有的刷新的效果都来自这里。
if (graphicsDevice.beginFrame()) { graphicsDevice.clear(bgColor, 1.0); /* Rendering code goes here */ graphicsDevice.endFrame(); }
在update里面再加入这段代码,每次进入update函数后会调用beginFrame函数,如果成功窗口就会被清除为黄色。
到目前为止你的代码看上去应该是这样的:
<html>
<head>
<title>Turbulenz - Getting Started Guide - API Example</title>
<!-- Script includes go here -->
<script src="jslib/debug.js"></script> <script src="jslib/webgl/turbulenzengine.js"></script> <script src="jslib/webgl/graphicsdevice.js"></script></head>
<body>
<canvas id="canvas" width="640px" height="480px"/>
<script>
/* Game code goes here */
TurbulenzEngine = WebGLTurbulenzEngine.create({ canvas: document.getElementById("canvas") });
var graphicsDevice = TurbulenzEngine.createGraphicsDevice({});
var r = 1.0, g = 1.0, b = 0.0, a = 1.0;
var bgColor = [r, g, b, a];
function update() {
/* Update code goes here */
if (graphicsDevice.beginFrame()) { graphicsDevice.clear(bgColor, 1.0); /* Rendering code goes here */ graphicsDevice.endFrame(); }}
TurbulenzEngine.setInterval(update, 1000 / 60);
</script>
</body>
</html>
整个窗口是黄色的,看不到动画。让我么来做点变化:
b += 0.01; bgColor[2] = b % 1; // Clamp color between 0-1
刷新后你会发现颜色循环改变。下面我们要开始绘制一些2D图形,首先我们要包含图形包。
<script src="jslib/draw2d.js"></script>
之前我们已经创建了图形对象GraphicsDevice,所以我们可以初始化2D模型:
var draw2D = Draw2D.create({ graphicsDevice: graphicsDevice });
建立一些点的坐标,颜色列表我们可以绘制一个正方行:
var x1 = 50; var y1 = 50; var x2 = graphicsDevice.width - 50; var y2 = graphicsDevice.height - 50; var rectangle = [x1, y1, x2, y2]; var drawObject = { color: [1.0, 0.0, 0.0, 1.0], destinationRectangle: rectangle };
这里注意:在我们的窗口里面左上角是原点坐标(0,0)
把下面这段代码加到beginFrame和endFrame之间。
draw2D.begin(); draw2D.draw(drawObject); draw2D.end();
draw2D.draw函数是一个绘制2D图形的有效手段。但是还不够灵活可控,在我们的引擎里面用Draw2DSprite 函数绘制一个精灵会是更好的选择。
绘制精灵
var sprite = Draw2DSprite.create({ width: 100, height: 100, x: graphicsDevice.width / 2, y: graphicsDevice.height / 2, color: [1.0, 1.0, 1.0, 1.0], rotation: Math.PI / 4 });
上面就是一个精灵的初始化操作,比较简单。下面调用方法将他绘制出来;
draw2D.drawSprite(sprite);
刷新后你会发现一个白色的棱形在屏幕的中央,精灵的属性可以通过属性或函数改变。
到目前位置你的代码看起来应该是这样的:
<html>
<head>
<title>Turbulenz - Getting Started Guide - API Example</title>
<!-- Script includes go here -->
<script src="jslib/debug.js"></script> <script src="jslib/webgl/turbulenzengine.js"></script> <script src="jslib/webgl/graphicsdevice.js"></script><script src="jslib/draw2d.js"></script></head>
<body>
<canvas id="canvas" width="640px" height="480px"/>
<script>
/* Game code goes here */
TurbulenzEngine = WebGLTurbulenzEngine.create({ canvas: document.getElementById("canvas") });
var graphicsDevice = TurbulenzEngine.createGraphicsDevice({});
var draw2D = Draw2D.create({ graphicsDevice: graphicsDevice });
var r = 1.0, g = 1.0, b = 0.0, a = 1.0;
var bgColor = [r, g, b, a];
var x1 = 50; var y1 = 50; var x2 = graphicsDevice.width - 50; var y2 = graphicsDevice.height - 50; var rectangle = [x1, y1, x2, y2]; var drawObject = { color: [1.0, 0.0, 0.0, 1.0], destinationRectangle: rectangle };
var sprite = Draw2DSprite.create({ width: 100, height: 100, x: graphicsDevice.width / 2, y: graphicsDevice.height / 2, color: [1.0, 1.0, 1.0, 1.0], rotation: Math.PI / 4 });
var PI2 = Math.PI * 2;
var rotateAngle = Math.PI / 32;
function update() {
/* Update code goes here */
b += 0.01; bgColor[2] = b % 1; // Clamp color between 0-1
sprite.rotation += rotateAngle;
sprite.rotation %= PI2; //Wrap rotation at PI * 2
if (graphicsDevice.beginFrame())
{
graphicsDevice.clear(bgColor, 1.0);
/* Rendering code goes here */
draw2D.begin();
draw2D.draw(drawObject);
draw2D.drawSprite(sprite);
draw2D.end();
graphicsDevice.endFrame();
}
}
TurbulenzEngine.setInterval(update, 1000 / 60);
</script>
</body>
</html>
导入纹理
下一步我们的工作是个精灵插入图片,让他看上去更有趣的一些。这里我们要用到web服务器,因为我们要存一些文件到上面。我们可以利用python来开启一个简单的httpserver:# For Python 2.7 use python -m SimpleHTTPServer
这时候我们打开127.0.0.1:8000 or localhost:8000的地址的时候我们发现会定位到当前目录,打开之前写的html代码,发现运行正常,现在我们可以加载图片作为精灵的皮肤纹理了。创建纹理:
var texture = graphicsDevice.createTexture({ src: "assets/textures/particle_spark.png", mipmaps: true, onload: function (texture) { if (texture) { sprite.setTexture(texture); sprite.setTextureRectangle([0, 0, texture.width, texture.height]); } } });
这种方法可以创建png, jpg, dds or tga图片格式的纹理。
除了直接设置精灵的大小,我们还可以使用比例函数来整体缩放他的形状:
scale[0] = scale[1] = Math.cos(sprite.rotation) + 2; sprite.setScale(scale);
现在你的代码应该是这样的:
<html>
<head>
<title>Turbulenz - Getting Started Guide - API Example</title>
<!-- Script includes go here -->
<script src="jslib/debug.js"></script> <script src="jslib/webgl/turbulenzengine.js"></script> <script src="jslib/webgl/graphicsdevice.js"></script><script src="jslib/draw2d.js"></script></head>
<body>
<canvas id="canvas" width="640px" height="480px"/>
<script>
/* Game code goes here */
TurbulenzEngine = WebGLTurbulenzEngine.create({ canvas: document.getElementById("canvas") });
var graphicsDevice = TurbulenzEngine.createGraphicsDevice({});
var draw2D = Draw2D.create({ graphicsDevice: graphicsDevice });
var r = 1.0, g = 1.0, b = 0.0, a = 1.0;
var bgColor = [r, g, b, a];
var x1 = 50; var y1 = 50; var x2 = graphicsDevice.width - 50; var y2 = graphicsDevice.height - 50; var rectangle = [x1, y1, x2, y2]; var drawObject = { color: [1.0, 0.0, 0.0, 1.0], destinationRectangle: rectangle };
var sprite = Draw2DSprite.create({ width: 100, height: 100, x: graphicsDevice.width / 2, y: graphicsDevice.height / 2, color: [1.0, 1.0, 1.0, 1.0], rotation: Math.PI / 4 });
var texture = graphicsDevice.createTexture({ src: "assets/textures/particle_spark.png", mipmaps: true, onload: function (texture) { if (texture) { sprite.setTexture(texture); sprite.setTextureRectangle([0, 0, texture.width, texture.height]); } } });
var PI2 = Math.PI * 2;
var rotateAngle = Math.PI / 32;
var scale = [1, 1];
function update() {
/* Update code goes here */
b += 0.01; bgColor[2] = b % 1; // Clamp color between 0-1
sprite.rotation += rotateAngle;
sprite.rotation %= PI2; //Wrap rotation at PI * 2
scale[0] = scale[1] = Math.cos(sprite.rotation) + 2; sprite.setScale(scale);
if (graphicsDevice.beginFrame())
{
graphicsDevice.clear(bgColor, 1.0);
/* Rendering code goes here */
draw2D.begin(); // Opaque
draw2D.draw(drawObject);
draw2D.end();
draw2D.begin('additive'); // Additive
draw2D.drawSprite(sprite);
draw2D.end();
graphicsDevice.endFrame();
}
}
TurbulenzEngine.setInterval(update, 1000 / 60);
</script>
</body>
</html>
到目前位置你应该掌握了使用低级APIs来绘制元素的方法。要想了解更多可以参考下面的资料:
http://docs.turbulenz.com/jslibrary_api/low_level_api.html#low-level-api
http://docs.turbulenz.com/jslibrary_api/physics2d_api.html#physics2d-api
http://docs.turbulenz.com/jslibrary_api/physics3d_api.html#phys3d-api
http://docs.turbulenz.com/jslibrary_api/high_level_api.html#high-level-api
http://docs.turbulenz.com/turbulenz_services/index.html#turbulenz-services-api
http://docs.turbulenz.com/protolib/index.html#protolib-api
入门翻译到这里为止,看起来还蛮简单的,不是么。接下来会翻译一些实战教程和工具的使用教程,到底这个坑会有多深呢?让我先来一探究竟!
相关文章推荐
- Phaser开源2d引擎 javascript/html5游戏框架
- 八款开源 Android 游戏引擎
- 八款开源 Android 游戏引擎
- 最常用的开源游戏引擎
- 记录一下八款开源 Android 游戏引擎
- 转牛人牛帖 《或许您还不知道的八款Android开源游戏引擎》
- 记录一下八款开源 Android 游戏引擎
- Android世界的15款开源的游戏开发引擎
- 八款开源Android游戏引擎
- 十大开源游戏引擎深入比较
- 山寨Unity3D?搜狐畅游的免费开源游戏引擎Genesis-3D
- 八款开源 Android 游戏引擎 (巨好的资源)
- 五大开源游戏引擎介绍
- 开源游戏引擎
- 八款开源 Android 游戏引擎
- 最先进的开源游戏引擎KlayGE 4.1发布
- Cocos2D-HTML5开源2D游戏引擎
- Android 8款开源游戏引擎
- 正式宣布开始开发开源游戏引擎FreeSky Game Engine.
- 记录一下八款开源 游戏引擎