Blu-Play: An introduction to developers

Imagine being able to create a game that you can run on both the Playstation 3, Playstation 4 and Xbox One, using the exact same source and the exact same disc - without requiring your players to do any trickery such as jailbreaking or modifying their consoles. And also without having to go through a voting or approval process in order to publish your game. Sounds a little bit too far fetched, doesn’t it? Yes it does - but it’s actually true!

Wott?!?! How?! How is this possible???”, you might ask.

It’s very simple: Use JavaME!

All of those 3 gaming consoles features a Blu-ray player, and Blu-ray players has been able to run Java ever since the very first one was released back in April 2003. Being able to run Java is a requirement of the Blu-ray specification. It’s called “Blu-ray Disc Java” and is abbreviated “BD-J”. (https://en.wikipedia.org/wiki/BD-J)
While this technology is mostly used to code cool menu interfaces for Blu-ray movies, it was also designed to be used for games - and is therefor quite capable as a game-platform.
Unfortunately BD-J never really caught on as a game-platform though. Only two titles were ever created as pure BD-J games (as far as I know): “Dragon’s Lair” and “Space Ace”. (https://www.youtube.com/watch?v=ptztPSq4vyE)
The list of supplemental BD-J games for Blu-ray movies is also rather short. “Bolt” had “Bolt’s Be-Awesome Mission”. “Ratatouille” had “Gusteau’s Gourmet Game”. “Pirates of the Caribbean” had “Liar’s Game”. While those games are all great examples of what you can do with BD-J, it’s just a very short list, isn’t it?

There was a lot of developer interest in BD-J back in 2008-2010, but it seemed to die suddenly for unknown reasons. Forums got archived and a lot of the links you can find are dead now.

So I think it’s safe to say that BD-J never became a hit, neither with game-developers nor with the gamers. And having personally tried playing “Bolt’s Be-Awesome Mission”, I am convinced that the main reason for this failure has everything to do with the games being targeted movie-watchers rather than gamers. Because movie-watchers use a normal Blu-ray player, which means lousy remote controls instead of an actual gamepad, and that makes the games very difficult to play. It would probably have helped a bit if the controls in the games had been re-definable, so that a gamepad could have been used instead, but no such luck.

Since the PS3, PS4 and XB1 all feature a Blu-ray player, developers could easily choose to target these platforms instead of standard Blu-ray players, and thus eliminate the downside of the remote control. As a bonus, we also get a much faster CPU on these consoles. Adding those things up, we end up with a rather wide target group of gamers, fast platforms, good controls, plenty of features, in short; everything you need to create a good 2D homebrew game.

Considering how long these gaming-consoles has been on the market though, you must be wondering why then haven’t we ever heard of any homebrew BD-J games. And that is indeed a good question. I think it’s mainly because of two issues:

  1. The 1st problem is that there’s still a widely accepted misconception about BD-J that you can’t really do anything with it. During my research, I’ve stumbled across statements like: “You can’t use audio” and “You can only use 2 action buttons on the PS3 gamepad”, and “There’s no button-hold functionality”. But there’s just no truth to any of those statements. Also, when I mention BD-J on various forums and chatrooms, I’m often met with “Why would anyone wanna do BD-J dev? You can’t do anything with it!”. And I very much disagree with that.

  2. The 2nd problem is that BD-J games never had any branding of its own. Something to set apart BD-J games from the rest of the content on the Blu-ray disc. Or just something to emphasize that the disc contained a game for this platform. Instead, BD-J games were kind of hidden in plain sight. Nothing on the “Dragon’s Lair” disc or cover indicated anything about the technology used. It just said “Dragon’s Lair (Blu-ray) For PS3” - which kinda indirectly says “Nothing to see here folks, move along”.
    This “secrecy” also appears to have had another stupid consequence: A surprisingly big group of people today are convinced that BD-J is all about hacking and exploits - and any attempt at explaining real world facts to this group just fails. So the misconception about BD-J is somewhat of a multidimensional entanglement, all inevitably resulting in a complete lack of interest with both game-devs and gamers.

To address the 1st problem, I will release a simple proof-of-concept game soon called “Ukko’s Journey”, to demonstrate that it’s absolutely possible to create a decent homebrew game with BD-J with lots of various functionality, and run it on all three gaming consoles using the same ISO/disc. Xbox One owners can simply burn the ISO onto a DVD. PS3/PS4 owners need to use a BD-R though. (So a Blu-ray burner is required).
The game will demonstrate 50+ fps on all 3 consoles, ingame music + sound-effects, remembering settings between disc-ejects, 11 buttons on the gamepad usable, internet uploads/downloads of highscores to UkkosJourney.com, and finally; installing a JavaME MIDP version of the game onto your JavaME enabled phone directly from the console via Wi-Fi.
That ought to be a decent first demonstration.

To address the 2nd problem, I think it’s pretty clear, that if BD-J homebrew is to become interesting for both game-devs and gamers, then it needs a new label and logo. So I have gone ahead and invented a clever one (if I should say so myself): “Blu-Play”.
I trust I don’t have to explain it to anyone? This label should be described as “Small-scale homebrew games you can play on PS3+PS4+XB1 out-of-the-box” by news-writers.
“Ukko’s Journey” will be released as the first Blu-Play game to demonstrate Blu-Play to both gamers and game-devs, hopefully breathing new life into BD-J development and resulting in a lot more homebrew games for these gaming consoles.
www.blu-play.com

I have written this post because I’d love to see more interest in Java homebrew game-development targeting these consoles. (As a Java coder, I also think it’s kinda cool to “show off” Java in this way). BD-J is obviously limited compared to native stuff, but it should be plenty sufficient for 2D stuff. Most homebrew games I’ve seen (by selling music at IndieGameMusic.com) is abolutely possible to do with BD-J.

So what do you say? Any JavaME developers out there finding this intriguing?

If this is true… I’ll definitely look into this. I had no idea this technology existed–and for so long.
Thanks for posting this

I’m intrigued, but I’m no Java ME developer.

You’ve obviously put a lot of work into this. Now, this sounds lazy, but as an interested developer with no prior work on ME, I don’t want to walk all the low level steps myself. The first questions coming to my mind next to “this sounds cool, I wonder what kind of games one could pull off with that?” are:

  • What profile/extensions/API are available? Which Java language level is supported? And, in particular, what are the graphics capabilities?
  • Is there support by any modern/decent IDE, e.g. IntelliJ?
  • How easy or difficult is it to test the code on PC, e.g. does it “just work” or is there some kind of emulator? Basically, what does the typical development&test cycle look like?

Ideally there would be a nice little framework or demo, e.g. available on GitHub, demonstrating the basic game loop and some of the fun interfaces you mentioned, like how to access controllers on the different systems. By open-sourcing such a framework you’d not only lower the barrier for ME newbies like me, you also may incite people to contribute on different levels.

This is limited to Java2D? Any OpenGL/OpenAL?

The game is currently in betatest now.
Preview video: https://www.youtube.com/watch?v=1bC5FV-2AY4

EDIT: I should mention, that the pixelated graphics do not represent a limitation with BD-J. We were just too lazy to improve ALL the graphics, so only the fonts, background, foregrounds and title-logo has been “upgraded” to HD from “cellphone-resolution”.

Regarding available API’s; it’s JavaME, which means it’s limited. I’ll admit I’ve never really coded any other kind of Java than JavaME (began in 2006 with MIDP), so I don’t even know what you’ll be missing, as I have no clue what’s available for “full-blown Java”.

What I can tell you is that you’re stuck with Java 1.3, plus some Blu-ray specific API’s e.g. to catch input from remote controls and such. This is why I say 2D, BUT… on YouTube you can find a very fine example of what you can do within these limitations: The Funky Fresh BD-J demo: https://www.youtube.com/watch?v=M_E9VaXywG0
When something like that is possible, then I can’t imagine any skilled coder would miss anything in regards of homebrew games?

I’m not sure if you have to code with Java 1.3, or if you can just code in whatever you wish, and then use something like Retro-translator (http://retrotranslator.sourceforge.net/) to convert before compiling, or if a tool like Proguard can do some magic. Personally I code everything in Java 1.3.

How do you start developing for this? is there a library I need to download (I know I need JavaME)

This

If you can use OpenGL/AL with this, it’d be a godsend

Developing 3D games would be awesome on such a platform!
I’d very much like to know whether this is supported on any Blu-ray player: http://www.oracle.com/technetwork/systems/3dgraphics-155829.html
I don’t have any console or Blu-ray player at my disposal to check. However, if you find any possibilities, then JOML is ready for you. :wink:

Personally I got started by using a socalled “Minimal SDK” I found online, and the source code of a Snake game someone had made. Here are some useful files to get started:
https://mega.nz/#F!A4IFGYga!B6KAPlNBPBzGEN6j5OaDNQ

That 3D API is for JavaME MIDP (MIDlets).
For Blu-ray you are coding JavaME BD-J (Xlets).
So no, that API won’t work.
EDIT: Apparently someone has made a BD-J port of OpenGL according to this:
http://markmail.org/search/?q=[BD-J-DEV]+3D#query:[BD-J-DEV]%203D+page:1+mid:sgpk3iergyv7bymu+state:results

But looking at the Funky Fresh demo above, it’s clearly possible to do 3D in some form. I wouldn’t expect any impressive framerates though.

When playing Ukko’s Journey on a PS3, I’m getting about 80 fps most of the time. That’s pretty good in my book. I’ll expect the Xbox One to give the same results, and the PS4 to be even better. So maybe 3D games would work for PS4, who knows.
This is all unexplored territory. :wink:

Sorry for the late reply on this one.
As for an IDE I’ve been using NetBeans for Ukko’s journey. Just adding -source 1.3 -target 1.3 in my compiler options.
As for testing, if you’re on Windows you can get your hands on a software media player that supports BD-J, such as PowerDVD from Cyberlink.
Personally I’m using Linux, so I’ve been testing on a Dune HD Smart D1 media-device connected to my LAN. I’ve then added commands in my NetBeans script to copy the JAR to that device after each compile, so that it’s easy to just click Play on the device.
As for a few examples, check the link in my previous post. :slight_smile:

Another useful link:
http://markmail.org/search/?q=[BD-J-DEV]+APIs

About 3000 old messages about BD-J development. Answers many questions.
Keep the [BD-J-DEV] part in any search string.

I found this:
http://markmail.org/search/?q=[BD-J-DEV]+3D#query:[BD-J-DEV]%203D+page:1+mid:sgpk3iergyv7bymu+state:results

Apparently someone did make a port of OpenGL.
Requires a rather fast player though - but that’s fine since we’ll only be targeting the gaming-consoles.

Also: Check out the source-code in this production:
http://www.pouet.net/prod.php?which=59098

From what I can tell, they implemented a software OpenGL renderer over Java2D. That’s simply not even close to good enough for 3D games.

I wouldn’t aim for 3D either, which is why I posted this in the 2D section.

Still, PS4 should logically be a great deal faster than the PS3, so I wouldn’t rule out the possibility. In any case, it’s always bad practice to rule anything out before having tried. That’s the whole reason why no one here has ever heard of BD-J before - because everyone wrote it off, claiming it couldn’t do anything. But I’m proving everyone wrong now, when I release “Ukko’s Journey”.

(Not that Ukko’s Journey is a groundbreaking game in any way. It’s just a small retro-style game. But it’s running about 80 fps with 3 parallax layers on a PS3, and demonstrates a lot of other functionality too that was said to be impossible with BD-J. Never say never. ;)).

Since my engine is a software renderer I believe it can run on BD-J

That’s probably not true… The PS3 CPU was a really weird beast. It had 1 fast main 3.2GHz CPU core, and then 7 extremely specialized computing cores of which 1 was reserved for the OS, leaving 6 for games to utilize. However, the PS3’s GPU was extremely slow, so the SPUs were used to compensate for that. At the end of the PS3’s lifetime they even started doing shading and postprocessing on the CPU just to free the GPU from some work, but I digress. The PS4 has a 1.6GHz octa-core CPU, which uses GDDR5 memory (GPU memory) even for the CPU. This means that a single core on the PS4 cannot beat the beefy main core of the PS3, and in addition it has RAM that is worse for CPU computations. I doubt you’re gonna be able to do fancy threading on BD-J to utilize all the PS4’s cores, and when comparing single-threaded performance I’m afraid the PS3 is actually gonna be the fastest.

Now that would be really cool to see! =P

I have done a lot of research on how to get BD-J games running on the gaming consoles. People from psxhax.com and playstationhax.xyz has been testing for me.

Here are the results:

[tr][td][/td][td]BD-R[/td][td]BD-RE[/td][td]DVD[/td][td]CD[/td][td]HDD[/td][/tr]
[tr][td]PlayStation 3, stock[/td][td]YES![/td][td]YES![/td][td]NO[/td][td]NO[/td][td]NO[/td][/tr]
[tr][td]PlayStation 3, jailbroken[/td][td]YES![/td][td]YES![/td][td]NO[/td][td]NO[/td][td]YES![/td][/tr]
[tr][td]PlayStation 4, stock[/td][td]YES![/td][td]YES![/td][td]NO[/td][td]NO[/td][td]NO[/td][/tr]
[tr][td]Xbox One, stock[/td][td]YES![/td][td]YES![/td][td]YES![/td][td]NO[/td][td]NO[/td][/tr]

Basically, people with a jailbroken PS3 have it easy. They can simply copy the ISO to the harddisk, and run it by mounting the ISO with a utility called webMAN or multiMAN.
Xbox One owners also have it relatively easy, because the Xbox One accepts Blu-ray content on a DVD.
Stock PS3 and PS4 owners doesn’t have it that easy, because the stock PS3 and PS4 insists on having Blu-ray content on a Blu-ray disc (BD-R or BD-RE). And since not many people have a Blu-ray burner, the amount of interest from this group will probably be rather low.

Of course, you may not even wish your game to be freely downloadable. Maybe you only want to sell it, in which case you’ll be interested in providing a disc anyway.

Possible solutions to this:

  • You could choose to provide a service where you create your own copies and sell them online, e.g. at eBay.
  • Or you could use a company that offers a Disc on Demand service, such as EditHouse in London. (http://www.edithouse.co.uk)

A Blu-ray disc runs on all the consoles. The only question is; what will people be willing to pay for a disc with such a small-scale game?

I am currently in correspondence with EditHouse, curious to try out their Disc on Demand service. Trying to get them to lower the price for this first proof-of-concept Blu-Play game, in order to increase any potential interest from gamers. In exchange, I’ll put their logo on display as one of the sponsors.

If you decide to make a Blu-Play game, e.g. porting one of your existing games, then please let me know so I can post news at blu-play.com
I’m also planning on creating a developer section at blu-play.com, but it will take time to make.

If there was any way to get OpenGL working with it, I would be all over it :frowning:

Well, from what I can tell from old mail correspondence, there is a software OpenGL somewhere out there. I believe it’s possible, but you should expect a lower framerate than if using a wrapper-version.

Meanwhile, Blu-ray offers a different kind of 3D though, like seen in 3D movies.
The kind of 3D you see in 3D movies can also be coded with BD-J.
See this link: http://www.oracle.com/technetwork/articles/java/blurayhelloworld-364958.html

The downside is that it requires a 3D Blu-ray player + a 3D capable TV, and that excludes the game-consoles.
Still, it’s kind of interesting, and would probably be a first? :slight_smile:

EDIT: It would be interesting though, if any of these 3D API’s for 3D players could be used to calculate 3D stuff faster - but again: Because the game-consoles are excluded due to not being 3D players, the fun is lost again.

If you want to explore BD-J game-development, I think you should think more in terms of what the platform is great for, rather than expecting to run everything you can run elsewhere. For example, BD-J would be great for video-backgrounds. You’ll probably be playing music anyway, so why not include an animated video-background for your game that way? Would free up CPU power to more game-action and/or higher framerate. I see a lot of potential with the platform, if used right.

My Blu-Play game is out now!
http://www.blu-play.com/games

Anyone with a PlayStation 3 or PlayStation 4 or Xbox One is most welcome to try it out.

Small status update:

What has happened so far is a tremendous amount of publicity, I’m guessing due to the concept being new and different. If you Google for the game using keywords Ukko’s Journey Blu, you will find results from all over the world. As a result, the YouTube video has been viewed over 1000 times in just a few days. (The video for the mobile version of the same game hasn’t even had that many views during a time-span of 7 years).

So we have to acknowledge a certain amount of interest in this concept.

Interest isn’t equal to success though. More games needs to be created - some that are more spectacular than Ukko’s Journey.

For specific discussion about Ukko’s Journey, please go here:
http://www.java-gaming.org/topics/title/38050/msg/363963/view.html

Let’s keep this thread about Blu-Play in general.