Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее...

Preview:

DESCRIPTION

Вам заказали разработку инновационной 3d game на Flash? Требования более, чем высокие, а сроки поджимают? Нет времени отладить собственный 3D движок, и встала проблема выбора наиболее подходящего из уже существующих, предлагающим самый широкий инструментарий? Как узнать, какой из стандартных 3D движков лучше всего подходит для данного проекта? В своем докладе Михаил даст ответ на эти и многие другие вопросы. Он остановится на движках Away3D и Flare3D с Alternaiva3D в качестве почетного гостя конкурса. Будут рассмотрены важнейшие достоинства и недостатки обсуждаемых движков, чтобы сориентировать разработчиков в выборе подходящих инструментов и обеспечить успех выпускаемым 3D продуктам.

Citation preview

Stage3D Survival Guide:Руководство по выживанию:

 Choosing the fittest Flash 3D engine on earth for your AAA game.

By Michael Ivanov.

About Me.Немного обо мне.

• Ivanov Michael,31,Israel.

• Lead Programmer R&D,Neurotech Solutions LTD and Geek.

• The Author of ”Away3D 3.6 Cookbook” by Packt Publishing.

• Spare Time:Stage3D,Unity,UnrealEngine,OpenGL.

• Visit my tech blog:http://blog.alladvanced.net

About you.Немного о вас.

The problem.Суть проблемы.

Available Stage3D powered frameworks.Движки работающие на основе Stage3D.

3D Engines.

ü Alternativa3D-free,binary distribution.

ü Flare3D-commercial,binary distribution.

ü Away3D-free,open source.

ü Yogurt3D-free,open source.

ü Noob3D-commercial,binary distribution.

ü Proscenium-free,open source by Adobe.

ü Minko-free,open source.

ü ND3D-free,open source.

ü And some more…

2D Engines

ü ND2D-free,open source.

ü Starling Framework-free , open source.

ü M2D(Discontinued?)-free , open source.

Particle Engines

ü FLINT Particles-robust particle engine .Free, open source.

ü ND2D –basic particles system.Free,open source.

ü Starling-basic particles system.Free,open source.

Flint demo

3D Engines: Which is the best?Какой движок самый лучший?

None!Не один из них!

Each one wins or looses in one or more of these categories:

Каждый из них проигрывает в одной или более следующих категориях:

ü Performance.(Производительность.)

ü Features. (Функциональность)

ü Learning Curve.(Сложность изучения)

ü Productiveness.(Продуктивность)

ü Customization.(Специальные настройки)

ü Support. (Техническая поддержка)

ü Costs.(Затраты)

Performance.Производительность.

Away3D

Flare3D

Alternativa3D

Performance demo

907200 Triangles

Skin performance demo

Features.Функциональность.

Basic system modules in a typical 3D engine:

ü External assets handling.

ü Lightning system.

ü Rendering system.

ü Materials library & composing tools.

ü Primitives library.

ü Physics, AI, Particle engines.

ü Network.

ü GUI

Away3D Alternativa3D Flare3D

Geometry Formats

3DS Yes Yes No

Native AWD1,AWD2 A3D F3D

Collada No Yes Yes

Bones MD5.MD2 Collada F3D,Collada

Native plugin

Maya ,Blender 3Ds Max only 3Ds Max only

External assets handling

Lightning system

Away3D Alternativa3D Flare3D

Directional Yes Yes Yes

Point(Omni) Yes Yes Yes

Spot No Yes No

Ambient No Yes Yes

Material Library

Away3D Alternativa3D Flare3D

Wireframe Yes Yes No

Color Yes Yes Yes

Bitmap Yes Yes Yes

Environment Yes ? Yes

Video Yes Yes Yes

Animated Yes Yes Yes

Multi-material surfaces

? Yes Yes

Custom Shaders AGAL AGAL FLSL Filters

Geometry types

Away3D Alternativa3D Flare3D

Cube Yes Yes Yes

Sphere Yes Yes Yes

Plane Yes Yes Yes

Cone Yes No Yes

Cylinder Yes No Yes

Capsule Yes No No

Line Segments Yes Yes(via WireFrame) Yes (via Lines3D)

Sprite Yes Yes No

Animated Sprite Yes Yes No(via filter only)

Physics,AI,Particles

Away3D Alternativa3D Flare3D

Built-in Away Bullet (alchemy) Under dev Under dev

3td party JigLib JigLib JigLib

AI AwaySteer(OpenSteer) under dev

No No

Particles Native,FLINT FLINT,Native(underdev?)

Native,FLINT

Learning Curve.Сложность изучения.

ü The APIs follow the same basic 3D engine paradigm.

ü Experience with the previous versions helps a lot.

ü Previous game development and Math experience

contribute to the learning process.

Mastering a Flash 3D engine.Осваиваем 3D движок.

Productiveness.Продуктивность.

Flare3D.

ü “Flare3D Studio” (World editor IDE).

ü FLSL –GLSL like shader coding,AGAL free.

ü “For Dummies” like API.

Flare3D Studio IDE

Character model by courtesy of Roman Zinchenko

http://www.wix.com/zinche/zra

Flare Studio demo

ü FLSL =AGAL Abstraction.

ü GLSL/CG look.

Flare3D Shading Language

#version 330

layout(location = 0) in vec4 position;layout(location = 1) in vec4 color;smooth out vec4 theColor;uniform vec3 offset;uniform mat4 perspectiveMatrix;

void main(){vec4 cameraPos = position + vec4(offset.x, offset.y, offset.z, 0.0);gl_Position = perspectiveMatrix * cameraPos;theColor = color;}

< namespace:"flare", name:"TextureFilter" > public texture "texture";public float1 alpha = 1;input UV0 uv0;interpolated float4 iUV;

private void vertex0(){iUV = uv0;}

private float4 fragmentTexture0(){return sample( "texture", iUV.xy, "2d,repeat,linear,miplinear" ) * alpha;}

technique “main"{

vertex vertex0();fragment fragmentTexture0();

}

#version 330

smooth in vec4 theColor;

out vec4 outputColor;

void main(){ outputColor = theColor;}

OpenGL 3.3 GLSL Flare3D V2 FLSL

FLSL Demos

Code Modularity.Компактный код .

Alternativa3D vs Flare3D Skin Animation set up code samples

private function loadModel():void{ var loaderCollada:URLLoader = new URLLoader(); loaderCollada.dataFormat = URLLoaderDataFormat.TEXT; loaderCollada.load(new URLRequest("assets/SpyAnimCollada.DAE")); loaderCollada.addEventListener(Event.COMPLETE, onColladaLoad);}private function onColladaLoad(e:Event):void { var parser:ParserCollada = new ParserCollada(); parser.parse(XML((e.target as URLLoader).data), "assets/"); var mesh:Skin = parser.getObjectByName("spy") as Skin; mesh.y =0; container.addChild(mesh); var animSwtich:AnimationSwitcher=new AnimationSwitcher(); var animClip:AnimationClip=parser.animations[0]; var animAll:AnimationClip=animClip.slice(0,870/30); animContr=new AnimationController(); animContr.root=animSwtich; for each (var resource:Resource in scene.getResources(true)) { resource.upload(stage3D.context3D); }}

private function loadModel():void{model = scene.addChildFromFile( "assets/spyAnim.f3d“,scene);scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent );}private function completeEvent(e:Event):void { scene.resume(); model.play();}

Away3D.

ü Compact API ,but not like Flare3D.

ü Prefab3D- Visual IDE V2 .still under development.

ü Away3D 3x users benefit from smooth portability.

Customization.Специальные настройки.

ü Open Source is the winner!

ü Flare3D loans engine’s source code for payment.

ü Alternativa3D -?

Kinect demo

Away3D core adjustments example

Vector3D to screen fix:

Adding code to lens:public function projectToScreenSpace(point3d:Vector3D,screenW:Number,screenH:Number):Point{ var p:Point=new Point(); var v:Vector3D=matrix.transformVector(point3d); p.x=((v.x*screenW)/(2*v.w))+screenW*0.5; p.y=(-(v.y*screenH)/(2*v.w))+screenH*0.5; return p;}

public function projectToScreen(point3d : Vector3D,screenW:Number,screenH:Number) : Point{return lens.projectToScreenSpace(inverseSceneTransform.transformVector(point3d),screenW,screenH);}

Adding code to Camera3D:

var screenPoint:Point=_view.camera.projectToScreen(sp.position,_view.width,_view.height);

Using:

Technical Support.Техническая поддержка.

ü Away3D has much larger community and learning

materials like books and tutorials , than others.

ü Four books dedicated to Away3D development.

ü Away3D and Flare3D-both supply professional

support for payment.

Costs.Затраты.

Some “out-of-the-Flash” thoughts.Размышление о других направлениях.

Conclusion.Подведем итоги.

Away3D = Features .(Функциональность)

Alternativa3D = Industrial Quality.(Высокое качество)

Flare3D = Ease of Use.( Удобство эксплуатации)

But what really matters …Но самое главное - это...

Determination to make a great game!Желание создать лучшую игру!

Thank you!Спасибо большое!

Recommended