We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback
00:00

Formal Metadata

Title
Polymorph
Subtitle
libre videogame platform
Alternative Title
A libre game engine based on Ogre3D and Puredata
Title of Series
Number of Parts
611
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language
Production Year2017

Content Metadata

Subject Area
Genre
Abstract
Polymorph, a libre videogame platform. We produce art installation and video games using a tailor-made libre gameengine based on Ogre3D (visuals) and Puredata (sounds). Polymorph has been started in July 2016. The first projects we are working is Tuning Game, in collaboration withContredanse asbl, and PEEL, a 3d puzzle game. It is open to visual artists, designers, academics, musicians, developers etenthusiasts focused on experimental video games, programming and interactiveapplications. It is a place dedicated to exploration of video game medium, aesthetically,theorically, artistically and technically. We are also careful about the influence of the tools on the work we do.Therefore, we choosed to work with a libre software suite, including blender,gimp and inkscape for content creation and Ogre3D, Puredata, Bullet and otherlibraries for the game engine. Other libre engines are welcomed. We are providing the game engine as a complete package, ready to install withinstallation procedure and examples.
17
Thumbnail
24:59
109
Thumbnail
48:51
117
Thumbnail
18:37
128
146
Thumbnail
22:32
162
Thumbnail
23:18
163
Thumbnail
25:09
164
Thumbnail
25:09
166
Thumbnail
24:48
171
177
181
Thumbnail
26:28
184
Thumbnail
30:09
191
Thumbnail
25:08
232
Thumbnail
39:45
287
292
Thumbnail
25:14
302
Thumbnail
26:55
304
Thumbnail
46:54
305
314
317
321
Thumbnail
18:50
330
Thumbnail
21:06
333
Thumbnail
22:18
336
Thumbnail
24:31
339
Thumbnail
49:21
340
Thumbnail
28:02
348
Thumbnail
41:47
354
Thumbnail
26:01
362
Thumbnail
18:56
371
Thumbnail
13:12
384
385
Thumbnail
25:08
386
Thumbnail
30:08
394
Thumbnail
15:09
395
411
Thumbnail
15:10
420
459
473
Thumbnail
13:48
483
501
Thumbnail
32:59
502
Thumbnail
14:48
511
518
575
Thumbnail
25:39
590
Thumbnail
25:00
592
Thumbnail
23:32
Polymorphism (materials science)Game theoryInteractive televisionVideoconferencingMereologyPhysical system1 (number)Projective planeSoftware developerVideo gameInteractive televisionAvatar (2009 film)Right angleGame controllerTablet computerVideo gameBitComputing platformData miningLevel (video gaming)Sound effectReal-time operating systemGroup actionVideoconferencingPolymorphism (materials science)
Installation artMereologyReal-time operating systemRow (database)VideoconferencingMultiplication signProjective planeDigitizingHypermedia
Universe (mathematics)Physical systemProjective planeAngleAreaSoftware developerAvatar (2009 film)Bit1 (number)Game theoryMusical ensembleDifferent (Kate Ryan album)Computer animation
Revision control1 (number)Process (computing)Pairwise comparisonBitGame theoryOpen setFile formatCodePoint (geometry)Replication (computing)Complex (psychology)Power (physics)Library (computing)View (database)CuboidOpen sourceProjective planeGraphics processing unitRevision controlEngineering physicsGraphical user interfaceMultiplication signElectronic program guideMathematicsTouchscreenAxiom of choiceText editorPhysical systemCalculationPolymorphism (materials science)Link (knot theory)CodeGame controllerData managementSoftware frameworkState of matterJava appletCartesian coordinate systemIntegrated development environmentOrder (biology)SineMusical ensembleData storage deviceNonlinear systemGroup actionInteractive televisionDemoscenePlastikkarteSpecial unitary groupTime zoneMultiplicationAvatar (2009 film)MereologyArtistic renderingComputer programmingProgram flowchart
Polymorphism (materials science)Content (media)Installation artScripting languageSoftware testingObject (grammar)RadiusDifferent (Kate Ryan album)Cartesian coordinate systemEngineering physicsProjective planeMoment (mathematics)Revision controlPhysical systemGame theoryData managementMultilaterationParsingBitMusical ensembleCodeFile formatData miningWindowPolymorphism (materials science)Mixed realitySoftware developerTheoryMultiplication signPosition operatorCuboidLink (knot theory)Order (biology)Greatest elementNP-hardCubeDemo (music)PhysicalismDescriptive statisticsDemosceneIntegrated development environmentInformationTheory of relativityScripting languageLine (geometry)TunisTransformation (genetics)
Maxima and minimaExecution unitGamma functionHill differential equationAnnulus (mathematics)Vulnerability (computing)VacuumWindowInclusion mapEmailMotion blurMathematicsVolume (thermodynamics)Multiplication signCubePosition operatorMusical ensembleSocial classDistanceComplete metric spaceTrailFerry CorstenJava appletShader <Informatik>Real-time operating systemScripting languageProjective planeEngineering physicsInformation1 (number)Translation (relic)Pattern languageRotationScaling (geometry)Envelope (mathematics)Patch (Unix)Object (grammar)Game theoryAsynchronous Transfer ModeAdditionVariable (mathematics)BitMappingTransformation (genetics)EvoluteTheory of relativitySound effectINTEGRALSkeleton (computer programming)Natural numberWeb 2.0Data structureCompilation albumSphereVideo gameDemo (music)Keyboard shortcutPolymorphism (materials science)PhysicalismGoodness of fitComputer animation
Core dumpComputer animation
Transcript: English(auto-generated)
Hello to everybody, I'm here today to present you Polymorph, Libre video game platform. Just to start, to narrow a bit what we're doing in Polymorph, the idea is to produce video games, interactive experiments, and live performance.
We are a group of people working on this. The crew, just to mention them, because they are important, Julien and I started the Polymorph project six months ago.
Peter Ehrman and Balthazar are 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 Tanooki's, and it's a performance in which the avatar is a puppet and I play with it in real time.
A friend of mine, Loic, is doing the music, and so we perform on stage. So it's mocap 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 are sounds, this is the sound of Loic, 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 a custom animation engine. On the right you see that it's controlled via...
So it's controlled by a MIDI controller and apps, so via a 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 I started at NuméDR, it's a research lab linked to the University of Mons. And the idea is to have a mocap 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 started to think about it. But I first have to present you the tools that I'm using before, and that has influenced 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. 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 open framework, with C++ framework, and it's a thin layer above OpenGL.
So it's very good. It does a lot of things. But when you come to 3D games 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 with it. 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 closed for me. So I tried another one, the Unreal Engine. It's open source. The license forbids you to do things.
But it was a good engine, an industrial one. And related to the power of the engine is the complexity of the engine. And I didn't want to start learning an engine for one year before doing something.
I wanted 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 tailor-made game engine, depending on the project I'm working on.
So choosing which piece I put together. So I made a bit of research. And I ended up by selecting these tools. So the PureData, 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. Augur has been a bit more difficult to find. Because it was shortlisted with Erlicht.
I don't know if some of you know this engine. So it's an open source rendering engine, also. But when I looked at the specs and the community behind, Augur seems a better choice. Because there was much more things already prepared in Augur.
And 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 I shortlisted the bullet, also. Because it's very well documented and easy to use.
And several other tools. So on the top of the screen is 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's coming from Tanuki. The multi-connect system that I talked about, also. And the mental player with the mental editor. It's a non-linear timeline editor. Done by Yasin Septi, who is there. He's 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 started coding.
And because I did open framework before, and with kind of programming, I was thinking, yeah, okay, 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, now, nowadays, 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 Org. Bullet linked to Org.
You will get a workbook 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 Org. 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 projects in XML. Org 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. But the important thing about Polymorph is that I try to make it simple. So, here what I'll 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 Org to get it ranking. So, you get nodes, you get entities, you get 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 perfect 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 the 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. You have questions about it? No. 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, etc.
About the OS, I'm working on Linux. So, for the moment, you can install quite easily via one script, the whole engine on Linux. Windows, a friend of mine is working on it.
Oh yeah, that's my battery. For OS 6, it will come a bit later. Augur is working on an OS 6 version.
Once that will be done, I will integrate it, but not before. Oh no. Sorry. About the license, the code is released in the 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'll just have to reboot.
The thing... 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 applications.
It will be a mix between development of the engine and project developments. So, depending on the project we're taking, several features will appear. The first feature, the link with bullets, has been made for a 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 move, propose transformation on the object, and so on.
So you can, the two players can pick the same object and play with it in real time. So for those who have made a bit of a physical engine, it's quite tricky to do because the two engines 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 exposition of the cube makes the pan change and the distance makes the volume change. And this is sent 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, of the big cube on the small one.
And I can modify this real-time. This is the advent. The pattern, 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 two screens, it's a bit more clear what you're doing. You can also change the mapping of the data between what's org is sending you and what you're putting back in the engine.
So this is the addition mode. It allows you to really change the behavior of the sound and the behavior of the object via Pure Data.
And by using custom objects 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 several little.
I will just show this one. I'm going fast. This one shows you that you can edit skeletons. You can visualize the structure of the skeleton and play with it in real time.
This is quite simple. I have another demo about shaders mainly.
You will see that I can move the objects, change the background effects, and then I control the evolution of the 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++. Definitely it would be cool, but I didn't do it yet. If I do Augur, there is a binding for Java and Python for Augur, but it has to be integrated.
The classes I did have to be integrated with that also, so it's not ready yet. Other questions? First of all, it's pretty incredible that you told us that building your own engine would be simpler than mastering one already created.
And I already used Augur 3D. How did you manage to get good compilation time for file?
Compilation time? Compilation time. Yeah. The thing I did... Repeat the question. Can you repeat the question? Yeah, yeah. So the first question was about how it 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 later.