 So you guys just gonna have to believe me, there's a really cool graphic here, but the projector settings, I think they're just horrid. I mean, I noticed it on your presentation as well. This is actually like a gray gradient and there's the logo for a way 3D there on the left-hand side, but just looks white. So, I'm sorry about that. And all my transitions are based on this thing moving around. So, well, there goes polishing my keynote presentation. But I guess you can see the text at least. So this presentation is called making a 3D flash game in 30 minutes and $0, by the way. Ah, you can see it move, but you don't know what it is. Okay, cool. So first, I'm Richard. I am a freelance flash developer or at least traditionally that's what I call myself, but looking back on the past year, I've just done maybe like 30% flash, 30% maybe C, C++ Python and stuff. So, I'm just gonna call myself a programmer period from now on moving forward. I'm one of the members of the away 3D core team. I don't know if anyone knows the name away 3D. Can I see a show of hands? Okay, so maybe some people know it. So, I'm gonna tell you a little bit about what that is soon. Long time blender user, of course, in this crowd, long time maybe doesn't mean the same to me as it does to you, but I've used it for maybe four years, five years, something like that, but I'm not a professional user in the sense that I don't use it eight hours a day to do most of my work. So, I'm a long time user, but sort of a sporadic user. There's my Twitter handle if you wanna find me or whatever. Okay, so this session in 30 minutes, and I did this session or a variation of this session at the Adobe Max conference about a couple of weeks ago, and I actually live coded a game in 30 minutes, but I don't think that you guys wanna see me write action script for 30 minutes. So, I'm gonna try to focus on the blender side of what I did during those 30 minutes instead. So, I'm gonna just introduce away 3D and the away 3D platform, and then I'm gonna show you how we use blender or how we allow the use of blender to create 3D games for the Flash platform. Wow, yeah. So, a brief history of 3D in Flash. Before Flash Player version 10, which was the previous version, the previous major version, there was no 3D support at all. I mean, really nothing that could even resemble 3D. So, we had to fake it. So, what we did was we basically drew triangle by triangle after having projected it into screen space. If you don't know what that means, don't worry. So, Flash Player 10 gave us some of it, but we could only really use like 4,000 on-screen triangles, which is nothing. The 4,000, oh, that's just a benchmark, essentially. I mean, on a sort of a baseline machine, everything's done in software in Flash Player. So, we got, I mean, in an acceptable production, you would use around like 4,000, 5,000 triangles. If you tried to push it more, most, because we're targeting the web. So, a lot of users would not be able to see it in an acceptable frame rate. So, it's just completely out of the blue, but it is based on experience. So, still though, people used it to do pretty cool things. So, this is Cafe World, like a multi-million user Flash game on Facebook. So, that's using OA3D, which is cool. But still, it was very limiting. You had to really work with the limitations. So, with Flash Player 11 released us a couple of weeks ago, we have hardware accelerated 3D, and which is really cool, and which should interest you guys as well, if you wanna push your stuff onto the web. So, now we have millions of triangles that we can display instead, and we have a full programmable pipeline, which means that we can use whatever shading stuff you wanna do, essentially. And it's similar to WebGL, which a lot of people are familiar with, which is sort of like a competing technology, but, or competing in the sense that an open technology like WebGL can be competing. But, the Flash Player is more sandboxed, which, on one hand, means that it's limited slightly more than WebGL. On the other hand, it means that it's more secure. And, as some of you may know, if you're into WebGL, Microsoft has said that they won't support it because it's not secure. Basically, we all know that's bullshit, but they cannot say the same about Flash. So, in the end of the day, if you wanna target a lot of users, Flash is what you're gonna have to use. I don't mind, I like Flash, but I know a lot of people don't like Flash. I'm a pragmatic guy. I like a lot of technology. But Flash is actually good, regardless of what Steve Jobs said. So, okay, so what is a way 3D? It is a real-time 3D engine, so you can use it for games or for whatever, really. And it's stage 3D accelerators. Stage 3D is the name of the hardware acceleration API in Flash Player. It is simple, flexible, this is the sales mumbo-yumbo. But, the important thing is that it's open source and there's a large community, not large in the sense that the blender community is large because the blender community is huge for an open source piece of software. And we were very niche software. But there are a lot of users and we have active forums and people go on there and answer people's questions, et cetera. And people do some really cool stuff with it now with the new version as well. So, this is just a screenshot. I'm gonna show the actual production as well, because it's really worth it. So, this is built using OA3D for Nissan by Digitas in France in Paris. It's pretty cool. You can open the doors and stuff. You can change the colors. I can't remember. Pretty cool. I mean, I don't take credit for this, except I rewrote the engine. But I mean, these are the guys that, Digitas are the guys that actually used it and polished it and it's really nice, look at this. So, we have these, the lights are really cool. Yeah, this is really cool. So, this is what people do with our technology now. So, but to help in games development, because as we entered a hard work-celerated realm, a lot of people are interested in actually creating games for the web. Before, with the 4,000 or so triangle limit, it was really hard. I mean, that's, Johnathan would say that's what you put in a character, in a single character. To build an entire world with 4,000 triangles, it's extremely limiting. So now we're trying to accommodate for this new interest from the game industry. So, okay, I'm sorry for the graphics, but this is actually a really nice rendered in Blender diagram of the OA3D platform. But you can see the text, so that's fine. So, OA3D is the rendering engine that we've been building for, we're maintaining for like five years. And you saw examples of a moment ago. We also have a file format called AWD and some tools like Blender to export for that file format. We have a new thing called OA physics and another new thing that kind of builds upon all of these called the game tools. So, OA physics is a separate library, but it's really tightly integrated. It's built or based on the bullet engine, so it's actually a port of the bullet engine, which is open source, as you know, and used in Blender, for instance, and it's also used in movies like 2012 and games like Grand Theft Auto. It's a really impressive physics engine. And it's alpha right now. It's actually, we're using the C code, which is cross-compiled. It's using Alchemy, which is something that Adobe, it's a technology that Adobe has. So it's cross-compiled and then wrapped in an nicer API that is more action script-like. Just gonna show a demo of what you, what some people are done with it. This is using OA physics. While you never know what the color of the car will be, it actually changes, I just noticed now. So this is using triangle mesh physics, which is actually the best that you can get if you want detail. The gallery program, this is not, I mean, the camera is extremely annoying. Why is it not falling? So camera type follow. Yeah, let's, I just wanna do the jump because that's very easy. As you can see, it's running in my browser, which is pretty cool. There we have the jump. Yeah, it's pretty cool. Another cool community thing that uses the OA physics library is this ragdoll thing, where they're using our skeletal animation system to animate him. But as soon as you hit him with a ball, he transfers into ragdoll mode. So this is a community, this is a French guy who doesn't post it on our forums. And I like to just shoot him for hours. I particularly love this one. Maybe I'll just do this for the rest of my time. I don't think I could entertain you more than I should have kept that for last, I guess. So that's the way physics and use went too far. There we go. So AWD is the file format. That is my little baby. I've designed it. It is, I mean, in Blender, we have the blend files. And blend, the format is actually very impressive. But on the web and to transfer stuff, there aren't any real good file formats. A lot of people like Colada. Colada is huge, so that's a huge problem. A lot of people use 3DS and stuff like that, but those are very limited in feature. So we decided to create our own. So it's called AWD, which stands for OA data. It's compact format, and it's free and open source. So all the tools are open source, and all the file format specification is open. And the important thing here for the rest of my talk is that it's user-expandable. It's also backwards and forwards compatible, like the blend files. And right now we are supporting Blender and Maya. We have exporters for both, and more are coming as well. And then finally, this thing called Awake Game Tools. So this is the recent addition. It's sort of like a general purpose suit of utilities for game development. So things like parsing game maps. That's something that all games want to do. Input context management, like how do you map keys to certain actions? That's something that all games want to do. So we're trying to simplify those common game tasks that you can build your own engine on top of this. So I'm just gonna show you a little game demo using this. This is the one that I built in 30 minutes using, obviously not artwork wasn't built in 30 minutes, but all code for it was. Ah, I broke it. Sorry, let's go with the unfinished one. Okay, so this is just my tiny little game demo with a polar bear working around. You can have him run. I'm gonna play it with both my hands. I'm just gonna put the mic down. So like I said, it's 30 minutes of code. So it's really, I mean, there are some bugs and stuff like that, but it's like him jumping straight up. I don't know what that's happening. But the basics are, well, you can see what it looks like. You know, it's gonna fall down. We have some nice things like if you move the camera towards the wall, it doesn't bounce, it bounces off instead of going through the wall, stuff like that. So how is this done? Or more importantly, how are we allowing people to do this? So we've started developing this away game tools package and my favorite 3D program is Blender, of course, so that's where I started. So I'm just gonna take a look at the blend file for this. So this is the entire game level. I don't know, I'm pretty short on time. I don't know if I can go over. I don't think anyone here knows. So basically this is the game level created in Blender. And there are a lot of things that you would do apart from just creating artwork when you want to design a game level. There are things like, well, you know this from the Blender game engine, but you want to put in physics objects and you want to put in spawn points and stuff like that. So that's what we're trying to do with this add-on for Blender and for a lot of other programs eventually as well. And the first thing that you'll notice is this tiny little panel over here. That will allow us to create physics objects. So I'm just gonna go and add a plane. Let's see where that ended up, there it is. So right now if I just have a plane somewhere, I'm just gonna remove that actually. And I export this. So that was the total export time for the entire level. This is the entire loading cycle. Well, the bear actually doesn't show up. That's expected. That's because I don't have a spawn point. So what I can do is I can just set my cursor. That's fine. Going to add menu, an AGTOA game tools object. Put a spawn point there, export it again. Okay, so now it shows up, but it falls through the floor. So that's the problem. We have to create some physics for this game. So what you do is you add any mesh really. I'm just gonna add a plane, move it down, scale it up a little bit like that. And I'm gonna make it into a mesh collider. So that puts it into wireframe mode just so I know what elements are physics objects and what are not. You could of course use the exact same mesh as the game level, but it's unnecessary to use that many polygons for the physics, especially when you're on a very limited platform like inside the browser. Gonna export this again and hope that it doesn't crash because it runs out of memory. I think my exporter has some memory leaks. Yeah, so exactly, the neat thing about the format is that it's user expandable, like I said, extendable, sir. So, okay, there we have him. It's actually standing on my invisible physics plane now. And of course, I'm not gonna go through and do all of it, but if we look at the finished one. So that's how you would sort of build your using physics objects. So it doesn't run through the spikes, et cetera. So yeah, so the file format itself can define a lot of things, like the polar bear was also done with this file format. It's fully scalely animated. Can you say scalatively? Is that an adverb? And it's user extendable, which means that we could put attributes on any object. So what I'm actually using here is a tiny add-on to add the buttons, but the actual file writing is completely vanilla. It's not specific to away game tools. It's just the AWD file format, which allows a lot of extra things. So if we take one of these physics objects right here and just go on to custom properties, we can see that it's added a bunch of custom properties and those get exported into the file and the engine then uses those to know that this is in fact a physics object and the friction of it and stuff like that. And then there's also this much nicer interface that the add-on adds to actually interact with that, with those properties. So you don't have to know what they're called and you don't have to use the really slow means of adding and then editing and whatever. So it's all right here. So that running this version, we're back to what you saw earlier. Can we use a shader system? Yeah, this doesn't really show that, but you could, I mean, the Polar Bear could be normal mapped. I didn't do that because I'm not really, I mean, I could do that, but it requires some more code. You have to load a normal map and apply it. And well, I created this in 30 minutes. So the point was to how quickly you can make it not to load all the eye candy. Just to display some examples of shading in a way 3D, this is something that I created as sort of a proof of, I guess, how does that look on the projector? It looks kind of okay, right? So that's running at 60 frames per second in the flash player. It could of course run it in the browser as well if I was able to open it in the browser, sorry. But yeah, so we have a lot of capabilities when it comes to shading and stuff like that as well. And here's just a tiny demo of the Polar Bear with normal maps and with some fog applied and things like that. So there you can see him normal mapped and specular mapped and everything. His fur kind of shines a bit and stuff like that. It's really cute. I think we're gonna make him our mascot. Yeah, so because I don't have time to go in to all the details of the tools in Blender, that's basically all I can show you guys, but if you have any questions, I would love to answer them about what I've just shown or about the flash 3D world in general or a way 3D in general or whatever. So the new HTML5. HTML5 is, this is of course an ongoing discussion, but HTML5 was supposed to kill flash. So it's not making things easier. I can tell you that much because clients don't want flash anymore. But the bottom line is that HTML5 does not on its own provide any 3D capabilities. WebGL does, but it's only supported in Chrome and Firefox. And it's a moving target as well because it's not really fully developed yet. And it won't be until, well, a couple of years from now. And then you have the adoption rate and Internet Explorer are not gonna support it at all. So you have all these issues if you wanna go the WebGL route and we don't really have them. Of course, we have the issue of graphics cards that are not supported and stuff like that. But to answer your question, HTML5 is not making things easier. They're also not doing exactly the same. And even when they try to, they reach different results. Sorry, what was that? How you can make an application with a way 3D? Yeah, so the flash platform is programmable using ActionScript. So what you do is you write ActionScript and OA3D is an ActionScript library. So it's sort of like Ogre 3D for C++ in that it's an open source rendering engine. So you write code using the rendering engine to render real-time graphics essentially. Sorry, what was? Or augmented reality. Yeah, so augmented reality is definitely something that you can do with a way 3D. A lot of people have done it already. A way 3D, I would guess, is actually the number one engine used for augmented reality in flash over the past couple of years since augmented reality became popular. But with the new hardware accelerated stuff, obviously that takes things to a new level. I haven't actually seen any augmented reality using the new 3D hardware accelerated stuff, but it was only released three weeks ago, so it kind of makes sense. Why do I use a way 3D and not pay for vision? I am one of the developers of a way 3D. So that is not a very good question to ask me. No, but seriously, obviously I have always used a way 3D because I am one of the developers, but if you would rephrase the question and ask why should you use, why should one use a way 3D and not pay for vision? The bottom line is that pay for vision doesn't exist anymore. Pay for vision, which was the first 3D engine for flash in which a way 3D was actually forked off of five years ago. A way, a pay for vision stopped being developed about two years ago, and officially declared dead about a year or almost two years ago. So all of the core developers of pay for vision have left the project for other endeavors, and they never had a Flash Player 10 version, which was their big promise, and now we're at Flash Player 11, so it just doesn't exist anymore. But unfortunately for us, pay for vision, the word pay for vision has become synonymous with 3D and flash, so we get that question a lot. So it's actually not a bad question, but it's, it is, well, I wish, I long for the day when people have forgotten pay for vision. And- It is to everybody, but I just wanted to ask this anyway, for the artist, I am correct in assuming that a way 3D only requires Flash, if the user has a Flash on his PC, it's not working, but you can unlock everything you have done. Yeah, so a way 3D runs on Flash, so you only need a Flash Player 11 for this version. Yeah, it is really cool. It is actually really cool. You also need supported hardware, obviously, because it's hardware acceleration. So that's one thing. And then to, I mean, what I have done now, I made a change in Blender and I reloaded an HTML page with Flash in it, and it's updated. Obviously I have written code behind that, that does that. It is like 100 lines of code that I wrote using these tools, because a way 3D is, at the end of the day, a programmers tool. So the idea that we're trying to do with this is to allow teams that consist of both programmers and artists to work together more closely. So the artist can define the level, it can model it, and can add the spawn points and the physics and all things, also things like checkpoints and all the game editing stuff, but the programmer has to glue it together. Yeah, yeah, exactly. So that's, I mean, again, it is a programmers tool. I would love to create maybe some simple viewer that's something that we're discussing. But I mean, something like this, which is a product display, this is like five lines of code, but we don't give that code to you because it is a programmers tool. We should probably just give you that code, but it is really simple. We just, that's not what we're targeting. We're trying to, but we could, we should. And I was here last year, standing in this exact same spot, and I said that we would before I came next time. We would have this viewer that you could just load up models in, and yet we lost the focus in that one. Yeah, I mean, yeah, it works. Actually, it's really poor that the anti-aliasing is horrid on this display. It actually isn't that bad. It is a resolution, something fucks it up, but it actually looks really good on my screen if you wanna come over and see it. No, so joystick input. That's something that's limited by the platform, obviously. And Adobe has said that they want to, well, they have even demoed it working, but it's not in the Flash Player that you download. So users, they have it in their labs, essentially. But it has all these security restrictions, like how could you, how can a programmer listen to the input of a joystick on a webpage and not maybe steal the credit card information? No, it's all this stupid, obviously it's not based on anything, but they're really, really cautious about it. So it doesn't work yet, but they have demoed it working and it will be coming at some point, yeah. So they have all three tools and using Blender to make game battles, put a small point and have this game drop case and all that. Do you think it would make sense to, or do you even see a very 3D event format and all that as something that's actually not even like Flash specific? And especially if you think of a Blender user interface, do you think it would make sense to make a common game engine interface add on to Blender that works from the engine side? Yeah, I mean, there are already a lot of Blender game engine properties and we saw yesterday the Tor, what was the name, Tor Studio, so whatever. Yeah, so they demoed obviously using the built-in game properties whereas we have chosen to have the separate UI elements. But to answer your first question, could a way 3D be used for anything? Not really, it is built for Flash. We have had some community ports to other languages like JavaScript and Haxi, which is a cross-platform language you can compile for anything really. And obviously, as do all technology, Flash is going away at some point and at that point I'm not gonna stop doing 3D programming. So at some point, we're probably gonna move to something else, but I mean, there's like five or 10 years away and we don't have, because it's an open source project, we're all doing it in a spare time, we don't have the resources to maintain several different game engines or on several different platforms. So our expertise and what pays our bills is Flash. So that's where we, that's where we, what we're doing, yeah. Anything else? For way 3D? No, a way 3D is ActionScript. A way 3D itself is not, it's not, I mean, it might be hard to grasp what it is and I just take that for granted, I'm very sorry, but a way 3D really is 500 or so ActionScript classes. It is an ActionScript library, just like you would use LibMV in Blender for the tracking. It is a library that you use in your software as part of your software to render 3D and it is written in ActionScript and it is for the Flash platform. So it doesn't really make sense to try to create an interface for any other language. Although if you're talking about things like Lua, which is really popular in the game industry, that is something that we might consider for a full game engine that we haven't announced but that we are working on top of everything. So there it might be interesting to have a really simple scripting language but on the other hand, ActionScript in itself is pretty simple, so it doesn't have, it's not, well, the motivation behind Lua in the C++ engine is that the designers shouldn't have to code C++ but in an ActionScript language that is not really, it doesn't really translate because it's not that hard to program ActionScript as it is to program C++. So we might not even do it there, but we could maybe, I don't know, if, yeah, more questions, oh, yeah. Yeah, I'm sure there's a hackset problem. Yeah. There's a hackset problem, is there a buggy problem? The Haxi port has not been, this is a nice backdrop, the Haxi port has not been translated or, there has not been a Haxi port of the newest version, the GPU accelerated version. But I'm sure that there will be because we have some community members which are really into Haxi and away 3D, so if they wanna use both, they have to do the ports themselves, so that's what happened last time and I'm sure it's gonna happen again. I don't, I've never written a line of Haxi, so I don't really, it's hard to say I don't care, but I mean, I don't really, I don't keep track of what's going on in that community so I'm not really sure. Yeah. Is it possible to use it in an Android device? The answer is soon. There is a technology by Adobe called Air that lets you use Flash to create Android and actually iOS applications. People think that Apple hate Flash, they don't actually do that. They have some political reasons to counter Flash, but Adobe has technology to cross-compile our applications that are written in Flash to iOS and Android and it works really well and you may have seen a game on the App Store, this is Adobe's standing example, but they have, there's this game called Machinarium, I don't know if you've seen it, it is a 2D game, adventure game, and it has been, it was pretty big before, but since it got on the App Store, it's been huge, it was like the number one paid app for a couple of weeks and they made a lot of money and people loved the game and it was actually built using Flash and it's on the iPad, so it's definitely possible to create Flash applications for the iPad and Android phones, but the thing is the Flash Player 11 hardware acceleration is not in there yet. It's not in Air 3.0, but there are 3.1 and 3.2 betas out already, none of them have support for it yet, but it might be coming in one of them, we don't know, or those who know don't get to tell, so it is definitely coming. Any other questions? Okay, thank you.