45
Stage3D Survival Guide: Руководство по выживанию: Choosing the fittest Flash 3D engine on earth for your AAA game. By Michael Ivanov.

Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

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

By Michael Ivanov.

Page 2: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 3: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

• 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

Page 4: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 5: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 6: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры
Page 7: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 8: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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…

Page 9: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

2D Engines

ü ND2D-free,open source.

ü Starling Framework-free , open source.

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

Page 10: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 11: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 12: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 13: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

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

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

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

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

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

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

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

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

Page 14: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 15: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Away3D

Flare3D

Alternativa3D

Performance demo

Page 16: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

907200 Triangles

Skin performance demo

Page 17: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 18: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 19: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 20: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Lightning system

Away3D Alternativa3D Flare3D

Directional Yes Yes Yes

Point(Omni) Yes Yes Yes

Spot No Yes No

Ambient No Yes Yes

Page 21: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 22: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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)

Page 23: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 24: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 25: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

ü 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 движок.

Page 26: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 27: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Flare3D.

ü “Flare3D Studio” (World editor IDE).

ü FLSL –GLSL like shader coding,AGAL free.

ü “For Dummies” like API.

Page 28: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Flare3D Studio IDE

Character model by courtesy of Roman Zinchenko

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

Flare Studio demo

Page 29: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

ü FLSL =AGAL Abstraction.

ü GLSL/CG look.

Flare3D Shading Language

Page 30: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

#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

Page 31: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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();}

Page 32: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Away3D.

ü Compact API ,but not like Flare3D.

ü Prefab3D- Visual IDE V2 .still under development.

ü Away3D 3x users benefit from smooth portability.

Page 33: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 34: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

ü Open Source is the winner!

ü Flare3D loans engine’s source code for payment.

ü Alternativa3D -?

Kinect demo

Page 35: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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:

Page 36: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 37: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

ü 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.

Page 38: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

Costs.Затраты.

Page 39: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 40: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры
Page 41: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 42: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

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

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

Page 43: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 44: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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

Page 45: Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего Flash 3D движка для Вашей {первой} AAA игры

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