Upload
devgamm-conference
View
939
Download
0
Tags:
Embed Size (px)
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!Спасибо большое!