views:

223

answers:

7

I create fullscreen interactive demos in Flash and have recently been looking to migrate to a new language. My Flash demos are basically software prototypes and operate in a projector EXE, outside of the browser. I want to leave Flash for a variety of reasons, including:

  • Poor quality control in the Flash player
  • Hardware acceleration issues on both nVidia and ATI resulting in repeateable BSODs
  • Not enough low-level access to file-system, network

In finding a new platform, I need the ability to develop for the following requirements:

  • Cross-platform (just Mac and PC)
  • 100% graphics (32-bit transparent PNG) based UI
  • Fullscreen exclusive mode (if possible, ability to adjust user's screen resolution)
  • High-quality media playback
    • H.264/AAC MPEG-4 video up to 1920x1080
    • WAV & MP3 audio
  • Basic UI components - ScrollBar, TextField, etc (preferably skinnable/extensible)
  • 3D capabilities

I would appreciate any recommendations you could make on languages, frameworks, books, websites, etc. I am more knowledgable in Java than in C/C++, so it would be nice to see more recommendations there.

+1  A: 
  • 100% graphics (32-bit transparent PNG) based UI - I'm not sure what you mean by PNG when you mix in the the UI? Do you mean they have to have PNG quality? PNG's an image format, not a rendering layer.
  • Fullscreen exclusive mode (if possible, ability to adjust user's screen resolution)

By these requirements, you're pretty much stuck with compiled executables of some language variety.

altCognito
What I mean to say is that I would not use any components or system chrome to create the UI. A graphic artist creates a set of PNG images which are placed together to compose of the UI.
Jeremy White
Ah yeah, I'm thinking Silverlight is probably the next best thing. I +1's Blindy's, but you I'd be really surprised if you got screen resolution control or more importantly file system control out of Silverlight through the browser. You may be stuck with compiled executables (.NET/Delphi and so on and so forth) Naturally, Java would work to a certain extent as well, but you're not going to get screen resolution changing for free (you'll have to create native interface functions if they aren't already out there)
altCognito
None of my current Flash applications run through the browser. They are all published to an EXE projector. I would like to stick with that method.
Jeremy White
+2  A: 

The traditional competitor to Flash is Silverlight.

Blindy
I wouldn't say "traditional" as it is only a few years old.
Chris Johnston
Going away from Adobe to Microsoft... Talk about vendor lock-ins.
LiraNuna
Few years?!! The final non beta version was just released last month ( jul 09 )
OscarRyz
I'm hesitant to use another browser-based programming language for create media-intense desktop applications.
Jeremy White
Silverlight 3 can be run outside the browser: http://www.silverlightshow.net/items/Silverlight-3-as-a-Desktop-Application-Out-of-Browser-Applications.aspx If you want to avoid these high-level frameworks then why not go for a C#/.Net app?
James Fassett
Ah! I forgot to mention -- needs to be cross-platform. Will edit my posting...
Jeremy White
A: 

I would have to say you either need to look at Silverlight (and I have no idea if it will meet your needs as I don't think it can do 3D yet) or some form of OpenGL graphics engine.

Chris Johnston
Silverlight can handle 3D just fine, even at a control level.
Blindy
+1  A: 

You could use plain Java with an OpenGL binding like JOGL/LWJGL but you're going to have trouble with media playback. I think JavaFX provides much of this media playback support as well as the OpenGL acceleration, all wrapped up in a nice Java framework. If you need cross platform support, you'll be in a world of hurt trying to get proper libraries for every platform flavor. If you just need windows, JavaFX may be very viable.

basszero
+3  A: 

Processing

I think your best answer is Processing given your familiarity with Java. Processing is used to create many demos and cutting edge graphics applications. Processing is built in Java but has a proprietary language that is very easy to use, and you can use straight Java as well. I don't know if it has a specific widget library, but certainly it is easy enough to build yourself. Check out some of the Processing exhibitions for a look at its power and flexibility.

The Simple Directmedia Layer

For true cross platform speed and hardware access you could look at something like the Simple DirectMedia Layer. The SDL is a cross platform library used for demos and games. It has 2d and 3d support as well as device access. It will run on Windows, Linux, Mac and countless other variations of hardware and software. It is written in C to make it easily cross platform, but you can code C++ or use the bindings for Python, Java, or Ruby if you are looking for something different. The SDL doesn't come with a built-in widget library, I don't believe, but there are many listed on their site under the SDL Interface category of libraries.

Qt

Another option is Qt which is a cross platform widget library recently purchased by Nokia. Nokia is an odd owner, but the library is licensed under LGPL and it offers everything you would need. I am not familiar with building graphically intense demos under Qt, but their documentation makes it sound feasible.

openFrameworks

openFrameworks is also used to for demos and cutting edge graphics and hardware applications. openFrameworks is written in C++ and is not so easy for less experienced developers. It does not have a specific widget library, and it is still in an alpha release state. I have not dug deeply into openFrameworks yet but it is much more advanced and tailored for advanced applications such as the ones tagged openFrameworks on Vimeo.

Jonathan Branam
I've been messing around with Processing for the last 20 minutes. It looks really easy!! I'll let you know how it works out.
Jeremy White
A: 

WPF sounds perfect for your needs.

I would definitely recommend using WPF. I am a big fan of Flash, but it does sounds like at the moment you are not using the right tool for the right job!

WPF is like Silverlight's (stronger, smarter, better-looking) big brother. If you want to create EXEs running on Windows, why not use a Microsoft platform to create it. Seems smart to me.

Where as Silverlight is targeting the web and confines you to a sandbox, WPF lets you free to do what you want. You can basically do anything inside .net, but Silverlight only uses a subset of the .net framework.

WPF is also fully hardware accelerated, and works well with large videos. Of course you must make sure your video are encoded properly, because there some videos that are far to big to play on most PCs out there.

Only problem is that it Windows only. But I am not sure if there is a way around this or not.

TandemAdam
Unfortunately, I need to support Mac users.
Jeremy White
A: 

Maybe Zinc is a solution where you can still use/apply your Flash/Actionscript skills and create dedicated executables for Windows & OSX that do not have the same restrictions that normal Flash projectors have.

Luke