Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  Praxis - InterMedia System  (Read 2388 times)
0 Members and 1 Guest are viewing this topic.
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« on: 2010-12-15 06:57:34 »

Well, I've finally got around to putting a binary build of my project Praxis up at http://code.google.com/p/praxis/  Whether the project as a whole is of interest may depend on quite how wide your definition of games is  Smiley , but as this forum has been a great help I thought I'd at least post it here.

So, what is it??? Praxis is a framework for playing with a range of media (video/image, audio, MIDI, etc).  I use it for creating interactive things in real physical spaces, as well as occasionally for audio(-visual) performances.  You can get a rough sense of what I mean from this video (http://video.google.com/videoplay?docid=-1631892283027158552) - an interactive space using webcam movement detection to control audio and image (this was actually created with Praxis's predecessor), or this performance (http://www.youtube.com/user/richardbolam#p/u/1/1zZfSWjcWAI - second one in).

At its heart, Praxis satisfies two needs I had.  Firstly, it's a framework based around a loose mix of dataflow / actor model, allowing proper communication back and forth between various media threads (synchronized really is evil in this scenario!).  Secondly, it's completely configurable at runtime - it has it's own simple scripting language which hides all the complexity of passing messages back and forth, and also uses Janino to allow embedded fragments of Java code.

As a whole it's GPLv3 (to satisfy various dependencies).  However, I'm trying to release various modules from it under more liberal licences where possible (either GPL w/CPE or LGPL).  At the moment, there's various audio server and audio processing stuff under more liberal licences, as well as a binding for the JACK audio library using JNA.  There should be more to come - the audio routing library could probably be with CPE too.  Although everything's built as a NetBeans module, as Praxis uses the NetBeans runtime container, only the player module depends on NetBeans API's so the library JARs should just work.

It's still got a way to go.  Next on the list is a hardware accelerated video pipeline (using Slick most likely), better live coding API and a graphical patcher environment.  Oh, and better documentation  Smiley

Feedback is appreciated, but feel free to ignore if it's not your thing!  Tongue

Best wishes,

Neil

Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #1 on: 2011-06-25 06:25:23 »

Well, due to the overwhelming interest this provoked last time!  Tongue

Just a quick note to say that I've put up a first release of the graphical patcher-style environment for Praxis at http://code.google.com/p/praxis/  The live-coding API has had some improvement too.

I realise that the project as a whole may only have limited interest to people on here, but some of the libraries that make it up (thinking particularly the low latency JavaSound stuff) might - the project is highly modular, so it's possible to just drag these JARs out, but I'll aim to get some separate downloads and docs up in the near(ish) future.

Praxis is developed and tested on Linux - most things should be cross-platform, but YMMV with the GStreamer and JACK support.

Best wishes,  Neil

Offline ra4king

JGO Kernel
*****

Posts: 3160
Medals: 196


I'm the King!


« Reply #2 on: 2011-06-25 08:47:44 »

Looks really neat! Great job Smiley

Games published by our own members! Go get 'em!
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #3 on: 2011-12-02 06:40:37 »

A third early-access build of Praxis LIVE is now available for download from http://code.google.com/p/praxis/  This release includes the start of OpenGL support (based on LWJGL, with a bit of code “borrowed” from libGDX), a new Settings API, and improvements to the Projects system, as well as a range of smaller improvements and bug fixes.

A first beta release is planned for (hopefully!) the end of the year, bringing graphical editing of control panels (GUIs) and MIDI bindings, improved OpenGL support, a range of new audio, video & control components, and improved documentation.  Features planned that may not make it into the first beta, though work has started, include support for live-coding GLSL video effects, and the ability to export Praxis LIVE projects as standalone applications.

Read the full release notes - http://code.google.com/p/praxis/wiki/ReleaseNotes



The most exciting bit for me is finally getting into implementing the OpenGL renderer. Above you can see a live webcam image of yours truly disintegrating into over 10,000 particles using the OpenGL pipeline. The particle code is live-compiled Java inside a code component, all editable on the fly and using a subset of the Processing API. Once more ops are hardware accelerated, what's there is more optimised, and it’s possible to get live-compiled GLSL shaders in there too, this could get fun!  Grin

Also interesting is that even though the OpenGL pipeline falls back to the software renderer for a lot of Ops, when doing things where nothing is accelerated apart from the blit to screen it still seems better than the software pipeline using BufferStrategy.

Offline gouessej

JGO Kernel
*****

Posts: 3560
Medals: 30


TUER


« Reply #4 on: 2011-12-02 07:09:18 »

The most exciting bit for me is finally getting into implementing the OpenGL renderer.
It is rather a LWJGL renderer.......

Julien Gouesse
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #5 on: 2011-12-02 07:24:23 »

The most exciting bit for me is finally getting into implementing the OpenGL renderer.
It is rather a LWJGL renderer.......

I'm beginning to think you're just a bot that pops up in any thread that mentions LWJGL.  Kiss You could have just as accurately said it's a Java renderer or a (heavily hacked) libGDX renderer.  What exactly is your point???  That JOGL exists - I KNOW!!!!  I had to make a decision one way or the other, and after weighing up the options I plumped with LWJGL (which of course you disapprove of).  The Praxis renderer could be refactored to use JOGL or any other binding very easily - direct references are only in a few classes - but until I have a compelling reason it's staying as it is.

Praxis also uses JNA for other things, which I know you also have some irrational fear of ...  Wink

Offline gouessej

JGO Kernel
*****

Posts: 3560
Medals: 30


TUER


« Reply #6 on: 2011-12-02 07:58:04 »

I'm beginning to think you're just a bot that pops up in any thread that mentions LWJGL.  Kiss You could have just as accurately said it's a Java renderer or a (heavily hacked) libGDX renderer.  What exactly is your point???  That JOGL exists - I KNOW!!!!  I had to make a decision one way or the other, and after weighing up the options I plumped with LWJGL (which of course you disapprove of).  The Praxis renderer could be refactored to use JOGL or any other binding very easily - direct references are only in a few classes - but until I have a compelling reason it's staying as it is.
According to someone else, I'm Stallman's bot. According to you, I'm a JOGL bot. I only pointed out some inaccurate words about your renderer and I'm coherent, I have never written that I use any OpenGL renderer because there is a difference between using OpenGL and using a Java binding of OpenGL as a Java binding contains some features about windowing system (as far as I know neither LWJGL nor JOGL contains a complete binding of GLUT). I'm not a bot, I'm a human being, I may disagree with some JGO members, it does not mean that I'm a silly bot, I may have some real reasons to disagree with them.

Praxis also uses JNA for other things, which I know you also have some irrational fear of ...  Wink
It is not irrational, you have just forgotten my rational objections especially about less good performances than JNI, I spoke about the mechanism used by JNA on Microsoft Windows... I don't fear JNA, I just don't use it, I prefer using GlueGen.

Julien Gouesse
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #7 on: 2011-12-02 08:38:07 »

I'm beginning to think you're just a bot that pops up in any thread that mentions LWJGL.  Kiss You could have just as accurately said it's a Java renderer or a (heavily hacked) libGDX renderer.  What exactly is your point???  That JOGL exists - I KNOW!!!!  I had to make a decision one way or the other, and after weighing up the options I plumped with LWJGL (which of course you disapprove of).  The Praxis renderer could be refactored to use JOGL or any other binding very easily - direct references are only in a few classes - but until I have a compelling reason it's staying as it is.
According to someone else, I'm Stallman's bot. According to you, I'm a JOGL bot. I only pointed out some inaccurate words about your renderer and I'm coherent, I have never written that I use any OpenGL renderer because there is a difference between using OpenGL and using a Java binding of OpenGL as a Java binding contains some features about windowing system (as far as I know neither LWJGL nor JOGL contains a complete binding of GLUT). I'm not a bot, I'm a human being, I may disagree with some JGO members, it does not mean that I'm a silly bot, I may have some real reasons to disagree with them.

Actually, I find your wording inaccurate because you're mixing up renderer and windowing system.  

Praxis also uses JNA for other things, which I know you also have some irrational fear of ...  Wink
It is not irrational, you have just forgotten my rational objections especially about less good performances than JNI, I spoke about the mechanism used by JNA on Microsoft Windows... I don't fear JNA, I just don't use it, I prefer using GlueGen.

JNA is slightly slower than raw JNI, but performance is never the only consideration - if it was we wouldn't be using Java!  Wink  Bear in mind we're talking about call overhead, which should be swamped by code that actually does something in any real world use.  Not using yourself is one thing - explicitly refusing to use anything that uses it whether it works or not is irrational.

If I remember what you said correctly, your comments about JNA on Windows were completely inaccurate anyway!

Offline gouessej

JGO Kernel
*****

Posts: 3560
Medals: 30


TUER


« Reply #8 on: 2011-12-02 18:11:40 »

Actually, I find your wording inaccurate because you're mixing up renderer and windowing system.  
I don't mix up anything as JOGL and LWJGL have their own windowing system and they can still interoperate with AWT and Swing. My wording was intentionally accurate. Actually, when using a renderer relying on these bindings, you mainly have the choice between using the windowing systems or toolkits provided by Java itself or using their windowing system... except if you really want to create a binding of GLUT or if you prefer using directly the windowing system of a given platform. What's wrong with that?

If I remember what you said correctly, your comments about JNA on Windows were completely inaccurate anyway!
I remind you that I had spoken about Microsoft Platform Invoke (which is used by JNA on Microsoft Windows) and its bad impact on performances in the C# binding of OpenGL in OpenTk (previously in Tao Framework). Sorry for the off topic.

Julien Gouesse
Offline SimonH

JGO Strike Force
***

Posts: 896
Medals: 14



« Reply #9 on: 2011-12-03 00:53:21 »

<humour>
So there's these three blokes sat in a pub when suddenly one of them jumps up and starts shouting abuse at the other two. He becomes more and more enraged til he finally takes off his hat and chews at it in frustration before throwing into the face of one of the other two.
"Well, that's out of order!" says the bloke who was hit, and the third one says: "Don't mind him, he's just got a bad hat he chewed!"
</humour>

Stickmen Wars 2 is in development.
Meanwhile try Bloodridge
Games published by our own members! Go get 'em!
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #10 on: 2011-12-03 05:08:57 »

@gouessej

Thanks for derailing my thread!  Cranky  I understand, and am already aware, of the points you're making.  However, I still intend to use the term "OpenGL renderer".  Even if the term "LWJGL renderer" might be more accurate at this particular time, and I still disagree that it is, I don't think it's in any way more understandable to people here or the project's wider audience.  It's not like I'm hiding the fact that it's implemented with LWJGL.  Other projects in the same space (Field / Processing) using JOGL also use the term OpenGL renderer, though interestingly Field is currently converting to LWJGL.

In regards to JNA, it has nothing to do with Platform Invoke, which AFAIK is a CLR technology anyway.  JNA is implemented using libffi.  Still, I know you've already been told this ...  Roll Eyes

@SimonH

Thanks for lightening the mood around here!  Grin  Perhaps a case of mercury poisoning?!

Offline gouessej

JGO Kernel
*****

Posts: 3560
Medals: 30


TUER


« Reply #11 on: 2011-12-03 07:39:42 »

Libffi has been removed from Mono for performance reasons (see r724) as far as I know and it uses the same underlying mechanism that Microsoft P/Invoke which is used in OpenTk.

Julien Gouesse
Offline nsigma

Sr. Member
**

Posts: 342
Medals: 18



« Reply #12 on: 2011-12-03 08:35:53 »

Libffi has been removed from Mono for performance reasons (see r724) as far as I know and it uses the same underlying mechanism that Microsoft P/Invoke which is used in OpenTk.

The only thing I can find on that suggests it was removed in 2001!  Are we really taking over 10 year old performance as accurate of today, because ... gee ... this Java thing ain't half slow!  Wink

If you really want to argue the merits either way of all this, please start a new thread.  I only mentioned JNA in the first place because I knew it was the other choice you'd disapprove of!  Personally, I'll use what works best for me - which means easy to develop and deploy as well as good performance.  Unless or until I or anyone else has a specific performance issue with Praxis or the various libs being released from it, then I have no interest in changing.  And I'd rather help contribute to making JNA faster, which (in a minor way) I've just done!

Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.101 seconds with 20 queries.