 Hello to everybody, I'm here today to present you Polymorph, Libre video game platform. So just to start, quite clear, to narrow a bit what we're doing in Polymorph, the idea is to produce video games, interactive experiments and live performance. So we are a group of people working on this. The crew, just to mention them because they are important, so Julien and I started the Polymorph project six months ago, Peter Herrmann and Baltaza, who is there, is two developers and Louise joined us and she's a choreographer and a blender artist. So the background of the project, just to explain you a bit what I have in mind when I say interactive experiments and live performance. This project is called Tanuki's and it's a performance in which I'm, the avatar is a puppet and I play with it real time and a friend of mine, Loïc, is doing the music and so we perform on stage and we, so it's mock-up played in real time and then I activate effects and this kind of thing, I'm just going to skip a bit of it, so there was a sound, this is a sound of Loïc, it's quite important. So when I'm talking about experimenting with video game technologies, it's to this kind of thing that I'm thinking, so in this project I've worked a lot on the animation part and I've recorded, I did a new motion system in Unity, so all the things that animate the avatar are custom animation engine. On the right you see that it's controlled via, sorry, so it's controlled by MIDI controller and apps, so via tablet. Another part of the project was to work on an interactive installation involving a dancer, so this time real time without any recording and this is a video of a residency that has been made in Imal, it's a center for digital art in Brussels and for this it's a research with, I started at Nume DR, it's a research lab linked to the University of Mons and the idea is to have a mock-up system made of Kinects, so we have four Kinects merged together and providing the animation data to the avatar, as you see it's not yet perfect, it's glitching a bit but it starts to work, yeah, not just a bit. It's still under development and just to skip a bit and show you that it's working also with several people in the room, so the idea of mixing several Kinects together enables us to do this kind of thing, so we have a bigger area covered by the Kinects and we are also able to see people from different angles. So working on this project is two or three years I'm working on it, the main thing I didn't do in this project is the game engine itself and I was using Unity and so because I had some problem with it, I start to think about it but I first have to present you the tools that I'm using before and that has influence the way I did the polymorph engine, so I'm coming from creative coding, I don't know if several of you know processing or open framework and this kind of stuff, so it's mainly text based frameworks, simplified, really easy to get into and so I started with processing, it's an IDE with Java, I use Blender a lot also, I made some experimentation with Qt and I worked a lot also with the open framework with C++ framework and it's a thin layer above OpenGL, so it's very good, it do a lot of things but when you come to 3D game or more complex scenes it doesn't do the job correctly, it's not powerful enough. So during two years I started a quest and the first thing I tried as you saw was Unity and I'm starting a bit of a comparison here, Unity looks a bit like the replicator in my point of view, it's very nice, the design, everything is perfect, you have nice buttons at the top, it's very easy to use and you can print nice stuff for that but you cannot open the box and I need to have access to the code especially for the animation or to plug different libraries, it was too close for me, so I tried another one, the Unreal Engine, it's open source, it's the license forbid you to do things but it was a good engine, the industrial one and related to the power of the engine, it's the complexity of the engine and I didn't want it to go, to start learning an engine for one year before doing something, I want to go a bit faster than that, so it forced me to re-evaluate my needs and what I expected and this is what I was searching for in fact, it was different libraries with a guide to put them together and the ability also to make it evolve with the time, so change piece, for instance the physical engine, I want to be able to plug another one if I need to, change the sound engine, put whatever I want and make Taylor made game engine depending on the project I'm working on, so choosing which piece I put together and so I made a bit of research and I end up by selecting these tools, so the pure data I was using it for two years, so it was quite directly in the pipe, it can do graphical interface, it can do real-time calculation and it can do sounds obviously also, so it was directly in the pot, auger has been a bit more difficult to find because it was in shortlisted with IRLICT, I don't know if some of you knows this engine, so it's an open source rendering engine also, but when I looked at the specs and the community behind, auger seems a better choice because there was much more things already prepared in auger and when one last in June last year, they were releasing the version 2 of the engine, so it was, it seems to me a good choice, I wanted a physical engine into it, so a shortlisted bullet also because it's very well documented and easy to use and several other tools, so on the top of the screen it's everything that I didn't do myself and in the lower part, in house it's everything that comes from the project that I did before, like this is the animation engine for the avatar that coming from Tanuki, the multikinect system that I talked about or so and the mental player with the mental editor is a non-linear timeline editor done by Yasinsepti, who is there, is working actively on it for several years and it allows you to really manage the timing of an interaction of whatever you want and to make transition between them, so I showed, I said to everybody that I was going to do the project in June, so in July I start coding and because I did open framework before and all kind of programming I was thinking yeah, ok, our org will not be a huge issue and yeah, that was not so easy, it took me about two months to really get into org, to get how it was working, all the layers and all the managers inside of it and the idea of the polymorph engine is to avoid you this state of mind and provide you something a bit more easy to use, so nowadays, ok, we are at version 0.1, I'm not taking too much risk here, it's really the first version, it's still really a pack of code, not everything is debugged, not everything is done to synchronize everything but at least when you download the engine you will get this, you will get auger, bullet linked to auger, you will get a warper for pure data, a link to SDL to send the sound to the graphical card, to the sound card, sorry, the gamepad things etc., it was not included into auger, you get open source OSC, open sound control, so it's a UDP warper that allows you to communicate between many applications, I don't know if some of you knows about it but it's quite common in creative coding and in live performance, this format, XML is there not because I can parse XML, it's quite straightforward to parse XML but because I provide with the package a way to describe scenes and project in XML, auger doesn't give you any kind of external scene description format so I will show you after that how it's done and several assets and the important thing about polymorph is that I try to make it simple, so here what I show you is the way to, I want to create a cube and to add physics to it and this is the kind of code you have to write in auger to get it ranking, so you got nodes, you got entities, you got to link them together, you have to load AABB so it's bounding box, you have to set the material on the cube etc., and after that here at the bottom it's everything to prepare the relation with bullet and get back the information from the physical engine to your object etc., so this is what is behind and here is what it gives when you're using polymorph engine, so you just create a P-node, so everything is prefixed by P, so you create a P-node, you say it's a cube and you can add the scene manager and its name and then you can declare it has the physics of a box, so I think it's quite straightforward to use and the line below the XML is the same thing but in XML format and you can load it into your application and directly have the object preconfigured for you. Do you have questions about it? So what's inside the package? So first of all a simplified API, I have an empty project, I think it's quite important to have an empty project, you can just copy paste and start coding into it and to discover and to test things, simple examples also showing you different features of Augur, of PD and how to make them communicate, Augur ready assets, so Augur came with a whole system of shader management and compositor management, this is also available in the examples, Blender files, documentation, et cetera, et cetera. About the OS, I'm working on Linux, so for the moment it's only, you can install quite easily if you have one script, the whole engine on Linux, Windows, a friend of mine is working on it. Oh yeah, that's my battery. So for OS 6, it will come a bit later. Augur is working on an OS 6 version, once they will be done, I will integrate it, but not before. Oh no. Sorry. About the license, the code is released under BSD and BSD license and all the assets are in Creative Commons, so you can go and pick what you want inside of it. Sorry. What I had after that, I just have to reboot. Something important also is that the engine will evolve with the project we do with it, so it's not like we're going to wait to have a full engine to start building application, it will be a mix between development of the engine and project development. So depending on the project we're taking, several features will appear. The first feature, the link with bullet, has been made for project that I will show you. Sorry. Yeah, it's starting. I'm going to go back here and directly show you the demo. So this is the first project we are working on with the engine. It's called Tuning Score and the idea here is to work with an American choreographer who is called Lisa Nelson and there is a publication about her work and this game will demonstrate, will give a 3D version of its theory. So it's a two player game. You see the position of the other played online. So you play with somebody you don't know about. You see what the other is doing and you can interact at the same time in the same physical environment and make the object moves, propose transformation on the objects and so on. So you can, the two players can pick the same objects and play with it real time. So for those who have made a bit of physical engine it's quite tricky to do because the two engine will desynchronize so it will have to be synchronized all the time via the web. So this is the first project. After that I wanted to show you the relation between pure data and polymorph. So I prepared to show you the integration. So what you see here is the cube rotating. The X position of the cube make the pan change and the distance made the volume change and this is send via OSC to pure data to allow real time editing. So what you see here is the data retrieved in pure data, the position of the cube retrieved in pure data. But you can also process information here and send it back to the engine. So what I'm doing here is I just make an envelope detection on the sound, scale the sphere and the second cube and copy the position of the cube and the rotation of the cube or the big cube on the small one. And I can modify this real time. This is the, yeah, this is the advent. The pen translation, yeah, no, it's going below. What I'm changing here, the ball is moving in a sinus with a sin. What I'm doing here is I'm putting more. When you have to screen it's a bit more clear what you're doing. You can also change the mapping of the data between what's all is sending you and what you're putting back in the engine. So this is the addition mode that allows you to really change the behavior of the sound and the behavior of the object via pure data. And by using custom object made for this, you can also just run the engine. Sorry, that's not this one. That's this one. You can run the engine with the patch loaded inside the engine without changing anything to the patch. So you can really use pure data to edit and then you just have to integrate it and launch it in release mode. After that I have, oh yeah, I have several little, yeah, I will just show this one. I'm going fast. This one is showing you that you can edit, you can edit skeletons. You can visualize the structure of the geometry of the skeleton and play with it real time. This is quite simple. And I have another demo about shaders mainly. You will see that I can move the object, change the background effect and then I control the evolution of a shader. I can enable another one, et cetera, et cetera. So it's a 3D game engine. I have many other things, but as the time goes by, do you have any questions? Yeah. I assume this is C++ only. Are you planning on adding any bindings to other languages? I think Lua is a nice scripting language. Maybe later, not for now because there is still a lot to do in C++, but yeah, definitely it would be cool. But I didn't do it yet. So if I do ogre, there is a binding for Java and Python for ogre, but it has to be integrated, the classes I did have to be integrated with that or so, so it's not ready yet. Other questions? Yeah? Yeah? First of all, I'm pretty interested in what you're talking about. Is that right? It's pretty interesting that you told us that building your own engine would be simpler than mastering one already created. And I already used ogre 3D. How did you manage to get good compilation time? Completion time. Completion time? Yeah. The thing I did... Repeat the question. Can you repeat the question? Yeah, yeah. So the first question was about how can be dumb enough to think that building my own engine will be faster than mastering Unity or Unreal? And the second one is about compilation time. So for the first question, I don't think I will do better than Unity or Unreal. Not for now or maybe...