Click me, I'm Clean!
That card is filthy, click us!

๐ŸŽฎ Pros & Cons of Blu-ray Java: For Decentralized 2D Gaming.


Did you know that Blu-ray is also capable of 2D video games? 

The technology used to create Blu-ray menus and games has been around since 2006. Blu-ray uses this interactive mode for its graphical user interface and programming environment called Blu-ray Java (BD-J), it's a lot more advanced than the primitive and basic DVD menus and runs on the Java Platform. 

All Blu-ray players run BD-J as part of the Blu-ray specification, which in turn means that PS3, PS4, PS5, XB1 and XBSX all run Java games simply because they all feature a Blu-ray player. The whole idea with BD-J was exactly to offer video games (among other things) on Blu-ray players. The BD-J homebrew community calls this Blu-Play. 

BD-J mini game for Disney's Ratatouille.

Strategy Game from Fantastic Four: Rise of the Silver Surfer

BD-J takes the best of both worlds of game consoles standards and the openness of PC. BD-J is based on Globally Executable MHP (GEM), an international standard providing Java-based interactivity via middleware to TVs and Set-top boxes.

Blu-ray also borrowed and learned the success and mistakes of the CD, DVD, and Laserdisc, and its variants and what made them successful (CD-ROM, CD-Text, DVD-Video, DVD-ROM) and what made its variants failed (CD-I, CD-Video, DVD-Audio).

To let you know, all pressed Blu-ray discs are officially called BD-ROMs, since it's an all-in-one format, regardless if it's for a movie, album, or BD-J software. All of those Blu-ray movies and albums you see in stores are BD-ROMs.

Blu-ray offers two interactive modes, BD-J mode and HDMV mode, HDMV mode is for simple but advanced DVD-like menus with pop-up menus, button sounds, browsable slideshows with background music, text subtitle display, and interactive graghics. This mode is not written in Java, but is coded in special binary programming commands and registers: General Purpose Registers and Player Status Registers. HDMV mode is not intented for complex games and applications, that's what BD-J mode is for. However, the only possible games to make in HDMV mode is Interactive Movies and Visual Novels.

But for this article we're going to talk about BD-J mode, and going to cover all the pros and cons of that mode, and why it's underrated.

Screenshots from Batman: Death in the Family Interactive "Choose your own Adventure" - Image: Blu-ray.com

Blu-ray Java based games and the BD-J platform itself are quite underrated and unique. But why? I can't really answer that because we don't really know; some say it was over the confusion of the HD format wars (movie equivalent to the console wars) or because it got overshadowed by graphically impressive Xbox 360, PS3, and PC games.

All of Don Bluth's FMV games were ported to Blu-ray - Image: Videogameobsession.com.

In this article, we'll be discussing the pros and cons of Blu-ray gaming and its advantages and disadvantages over console and PC gaming.


The Pros

Simplified standard

BD-J has a simplified standard, the platform has limitations yes, but those limitations can create creativity.

This standard is similar to fixed game console standards, unlike PC gaming there's little standards and all over the place as it's constantly evolving.

Here's an basic overview:

  • Video Codecs: AVC, VC-1, and MPEG-2
  • Audio Codecs: PCM, DTS, and Dolby Digital
  • Image Codecs: PNG, JPEG, and GIF
  • Subtitle Codecs: PGS (Presentation Graphic Stream)
  • Font Codec: OpenType (.OTF)
  • API: Java Me - Java Version 1.3 - Personal Basis Profile 1.0; GEM 1.0.2
  • Programmable Languages: Java (Mandatory) Other languages are optional
  • Max Resolution: 1920 x 1080p@30 FPS video. * 
  • Max Channels: 8 sound channels
  • Memory: 45 MB for graphics**, 32 MB for Java heap (Jar file size is 4 MB), 4 MB for text cache, and 8 MB for interactive sounds
  • Disc Storage: 25, 50, 100 GB.***
  • Local Storage: 256 MB (Profile 1.1) 1 GB (Profile 2.0)
  • Internet/LAN: Optional
  • Picture-in-Picture (PiP): Yes†
  • Blu-ray 3D: Optional (Requires a BD 3D player)

*Ultra HD Blu-ray offers HDR and 2160p 4K content @60 FPS, it has the same programmable standards but it's a different format and not compatible with normal BD players.

** On Ultra HD Blu-ray, graphics memory is 131 MB for it's upscalled 4K graphics

***50 GB discs can store up to 9 hours of HD video.

Picture-in-Picture Mode is not supported for Ultra HD Blu-ray.

Screenshot of The UFO Game for BDJ


Platform-independent

Just like normal Java, BD-J is platform-independent and portable, it follows the feature of WORA (Write Once Run Anywhere). Blu-ray runs on a Java Virtual Machine similar to ScummVM or DOS Box. The Java programs written in a system can be run on any other system that has Java in it, as well as does not require any special hardware to run. This makes BD-J literally compatible with almost every possible Blu-ray player. The compatibility of BD-J does not depend on the OS or hardware, this makes the BD-J platform-independent and super flexible. 

Due to its simple build, it's cheap and easy to develop and maintain as it can run on any machine regardless of the hardware of the system, this reduces the cost of development significantly without having port the games on specific machines using the "Write Once, Compile Anyware" philosophy like most programmers do with C and C++ language. One single Blu-ray game can run on a x86 PC, an Arm-based BD-player, or a CELL-based PS3, it will run on all 3 platforms with a BD player virtual machine regardless of their architecture.  



Open and free

Java is an easy to learn - high level language, since BD-J uses Java 1.3, it's free to use. Anyone can make their own Blu-ray video game without a license or face censorship similar to PC. *

*The disc itself and mechanisms is patented but the platform is open and non-restrictive. It's like making a CD-ROM game for DOS. A license from the BDA is required for replication of pressed BD-ROMs, not BD-Rs.


Gameplay of Ukko's Journey for BD-J


 

Decentralized

Though, Sony, did create the Blu-ray disc format, they don't own it. Blu-ray isn't owned by a single corporation but a consortium of companies that creates the standards of the technology, called the Blu-ray Disc Association (BDA). Also, there are MANY Blu-ray player manufactures that are licensed from the BDA; if you don't like this manufacturer's brand of players then you can choose a different one.

 

Decentralized online capabilities

Just like PC, BD does offer decentralized internet and LAN capabilities. Blu-ray likely borrowed influence from the CD-i's CD-Online feature and PC CD/DVD-ROM game online features. Anyone can make their own decentralized server for their game. Online capabilities require a BD-Live enabled player (Profile 2.0).


Mods

Yes, you heard me right, mods. You can allow your BD game to install community-made mods via Internet or LAN on your BD player's local storage just like PC. (Or the files of the BDMV folder can be modified for one's liking.)


DRM is optional and offline.

Blu-ray optionally supports offline DRM. You can make your BDJ game DRM-free and allow people to burn it the game's ISO on BD-R and play them on any BD player without a hassle. Just like burning PC games on CD-R or DVD-Rs. (Officially pressed BD-ROMs must at least have the AACS DRM according to BDA rules).


Already established Java games and community

Most of the major studios stopped making BDJ games and content, but there's already established Java games and a community. But most are unaware that Blu-ray Java even exists and never thought of creating games and homebrew for the platform. There are already open-source games programmed in Java that can be ported to BD-J with modifications. (BD-J games is based on Java Me and uses Java 1.3 only).

Java Phone games: Ghost Stories, Abracadaball, and Worms 2011 


Players are cheap

Blu-ray games can play on any Blu-ray player regardless if it's a cheap low-end potato player from LG or a $500 high-end player from Oppo. If you're on a budget, low-end players can perform just as well as an expensive one. And BD players are mostly cheaper than game consoles and PCs.

Image: Techdee.com


No GPU required

Some of you might gripe that there's no 3D card support, but it's not about the fancy graphics, it's about portability. All BD-J needs is a simple CPU that a potato machine can run it.** 2D games are timeless and future-proof and they can be just as good as a 3D game like Fallout, X-Com, and Donkey Kong Country. Pushing the limits, the closest thing to "3D graphics" is pre-rendered 3D graphics using PNG, JPG, or GIF images, which ages very well. Parallax scrolling and Isometric graphics are techniques that give it an 3D illusion.

**Blu-ray players often have video/sound hardware decoding and a 2D graphics accelerator that will take pressure off the CPU.

 

An example of a BD-J game with beautiful pre-rendered graphics that doesn't require a GPU to render.

This PC game, Sacred, uses complex pre-renderd and isometric graphics that give it an illusion of 3D that doesn't require a taxing GPU




The Cons

No GPU support

It might be silly that I just said no GPU required for Pros, but I just wanted to point out that Blu-ray players does not offer 3D hardware acceleration like OpenGL or Vulkan. If you wanted to make a true 3D game like Doom, then it will require software rendering, using only the CPU to render the 3D (graphics will be in PS1/DS quality). You could make your Blu-ray game have optional GPU support, but you must have a Blu-ray Player/Virtual Machine that supports stuff like that. And there is none! It's best not to worry about 3D and stick with 2D because 2D is awesome!


Performance

It's not as bad as people think but Java does consume more memory compared to native programming languages like C and C++. Java is slower compared to them; this is due to the additional work of the interpreter to convert the code into machine language. The JVM performs various backend functions that decrease the speed of the program. As Java supports automatic garbage collection, it runs in the backend continuously, hampering the performance.

Optionally, you can write your Blu-ray games in C using Cibyl MIPS-to-Java compiler to run C code on BD-J by transpiling it into Java. The Cibyl transpiler may aid in porting C games to Blu-ray, however the transpiled code is more slower that the same code written directly in Java.

But I'm sure talented developers will work something around; popular game emulators are also known to be slower than running the original hardware and developers managed to make them faster over the years.

Blu-ray player CPUs range from 300 Mhz to 1 Ghz, so it's best to optimized your BD-J game to run on low-end players for the best performance. Unoptimized BD-J games can lead to performance issues. For example, the homebrew version of Doom was ported using the Cibyl2Java compiler and was made to run on PS4, not standard players, so performance was sluggish and often crashed. If you wanted to port Doom to BD-J, it would have to be written in scratch using pure Java and heavily optimized to run on low-end players for better performance.


Most players support a remote control

The majority of Blu-ray players support a remote control, remote controls only let you press a clickable single button at a time, and they are holdable. Suitable game types for holding one button include simple arcade games like Arkanoid, or space shooters with auto-fire. Suitable game types for clickable single buttons include most puzzle games, like Tetris, Pinball, Bejeweled, and "auto-moving" arcade games, like Snake and Pacman and turned-based games like Chess and X-Com.*


Pinball mini-game from Surf's Up 2007 Blu-ray. This game is suitable for both a remote and controller. (It's fun.)


Visual novels are great examples of games that's suitable with a remote, like the BD-J version of Kanon

However, there are Blu-ray players and game consoles that have full controller support*, especially older ones from Sony. It is also "possible" to connect a game controller via USB-to-Ethernet cable to your Blu-ray player, but you must make your game to allow it, so it will recognize it. 

 

Verbose and complex code when written Java

Java may be one of the easiest programmable languages to learn, but it has many verbose and complex syntaxes. Sometimes, it becomes hard to remember those complex syntaxes.

For example:

A simple input would require us to write two lines of code:

  1. BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  2. int num = Integer.parseInt(br.readLine());

Whereas the same thing can be written in C using 1 line:

  1. scanf(“%d”,&num);

You can see how java codes can sometimes be a little too complicated due to this reason.


Only uses Java 1.3

Blu-ray Java is based on Java Micro Edition (Java Me), and it is restricted to Java 1.3 features. Only Java programs that are programmed using Java 1.3 or below can run BD-J games. So, the Java source code must be compiled to Version 1.3 of the JDK. The good news is that Java 1.3 is open and free to use, unlike newer versions. 


Low Device Storage Space to install Big Stuff.

Almost all Profile 1.1 "Bonus View" Blu-ray players have a mandatory 256 MB storage to install ANY content off the disc. You can install mods, updates, DLC, or the game itself without it depend too much on the disc or install the game and let the disc play music, video, or other things. (You must allow your game to do this, if you want to support those features.)

But there's a lot of Profile 2.0 "BD-Live" Blu-ray players that have 1 GB storage (sometimes more).

Additionally, depending on your player, you can install more storage space such as a USB or a Hard Drive on your player to expand space.



Well, that's the list of advantages and disadvantages to the Blu-ray platform when it comes to video games. The BD-J community is growing and in its infancy. In the coming years, we'll probably see more community-made BD-J games in the future (if the community grows). If you're developer and want inspiration for a 2D disc-based game, take a look at these CD-based systems like the failed CD-I, Sega CD, DOS, FM Town Marty, and PC Engine CD.

For more information about Blu-ray Java software development, check out these useful relevant links

BD-J - Wikipedia

Blu-play.com - BD-J Hombrew

HD Cookbook - The #1 source for BD-J programming

bdwiki.storyteller.pw

Blu-ray Official White Paper Tech Specs and 3D specs (PDF) Version 2.4 - 2010 (Recommended) - Details of the BD platform standards

BD-J Baseline Application and Logical Model Definition for BD-ROM (PDF) 2005 - Details of BDJ Application Software Standards on Figure 7.0

Blu-ray Official White Paper Tech Specs for Ultra HD BD (PDF) Version 3.2 - 2018

Physical Format Specifications for BD-ROM (PDF) - 2015

Blu-ray Official White Paper Tech Specs (PDF) Draft Version 0.2 - 2005

File System Specifications for BD-ROM (PDF) - 2004

Other Official General Tech Info

Blu Play Dev Wiki (playstationdev.wiki)

Blu-ray Format BD-J Application Definitions and Specs (PDF)

Blu-ray Disc Application Development with Java ME

Blu-ray Technical Specifications Detailed


Updated: 2/1/2024

Updated: 12/13/2022

Updated: 11/28/2022


Comments

    Leave Us External Links for Your Mother...

Indie Retro News

Worth it or Woke

Blu-ray.com - Blu-ray Disc news

Love us back, because we said so.

Version History    Mobile Version     Privacy Policy     Rules     Site Map     Help

™ & ©2024 Storyteller Studios. All Rights Reserved. Version 3.0.1 Blue Jay

Cool Blue Outer Glow Pointer