Blu-ray BD-Java Reviews
Dragon's Lair Q&A with David Foster
Mr. Foster is the general manager at Digital Leisure and a 22-year veteran of the gaming industry who was responsible for developing Dragon's Lair (Blu-ray) using the Sonic Solutions Scenarist authoring tools. Dragon's Lair has now become what seems to be the official test disc for the Blu-ray player manufacturers, and Digital Leisure has been sending discs to a number of the large manufacturers. The title is available from the Digital Leisure website, and from Amazon.com. .
Question: What specific problems did you encounter in the making of this title?
We received the development system in mid July and it took us a month to determine that unlike the Standard Authoring package for HD DVD (and DVD for that matter), we weren't going to be able to code Dragon's Lair in the Blu-ray equivalent (HDMV) so we moved up to the BD-J authoring development package, which arrived late August.
I actually had never programmed in Java before so task number one was to get familar with that. I read a book and then converted our Dragon's Lair PC code to run under Java on the PC. I must say that I really like Java over C/C++. That was the easy part. I then spent a great deal of time on the internet reading about MHP. The www.interactivetvweb.org web site was a great help.
It was clear that most of the world didn't care yet about BD-J and it showed in the tools documentation. The "How to Setup up a BD-J" project was more like "Here are all the setting options" without any details on what they did or why you would want to set them up one way or another. The tools were based around Eclipse, which took a great deal of getting used to but once it was set up correctly, is really great to work with. It was mid-October before we received the "How to write a 'Hello World'" program in BD-J. That was really what we needed to get going and we then didn't look back.
There were really no BD-J specs with the development tools. There was some sample code which really helped. It also helped to be able to take a look at some of the calls in the BD-J libraries (which we could do in Eclipse) and then try to implement them and see what happened. I cross-referenced all that with the MHP documentation that I had accumulated and started coding.
The other major issue was the availability of a system to test on. We started working with Cyberlink (PowerDVD) in September and with Samsung who gave us authoring firmware for their first gen player. This allowed us to do significant testing on a PC without having to cut discs and then on BD-REs on the Samsung to test on a hardware player. We worked quite closely with Cyberlink (and continue to do so), helping them with debugging their player and them helping us by giving us a platform to develop and test on. I was pleasantly surprised that rewritable media was available so early in the Blu-ray product lifecycle and that it worked on the early hardware. We picked up a Panasonic player on the rumor that it would play unencrypted discs, which turned out to be the case. This gave us three test platforms. Unfortunately the PS3 that we bought upon its release sat idle until we received check discs from the replicator.
Our biggest challenge was to get accurate feedback from the player on what the current frame being displayed is. It would seem obvious (and was on the PC) but the various BD-J implementations all reacted differently so we needed to code about five different ways on how to read the time so if one didn't give the expected feedback, our code would fall back to another method and so on. It was very frustrating. I also spent a great deal trying to implement persistent storage (to save settings). Our code works fine on PowerDVD but not on the others. We decided to remove that code for fear it might hang in certain players but hope to implement it in the version 2 BD-J spec. We've also written all the internet connectivity code but later found out that it is only in the version 2 spec so we're ready to go once we have a player to test it on.
The last issue we had to resolve might seem like the simplest -- getting an audio beep to play while video/audio is playing. It took a great deal of time to figure out the file format that needs to be passed to the system and how to pass it. We then found it didn't work well on PowerDVD and didn't work at all on the Panasonic. That lead us to adding a "Visual Move Guide" so that the player could get some feedback on the moves they enter if their player didn't play the beeps.
Other challenges included figuring out how to sign JARs. We're still not sure we've got the permission file correct but it seems that all the features that relate to the permissions file are in the version 2 spec so we still have some time on that one. We also had challenges on the uneven implementation of displaying foreground images, or more accurately removing them. While playing the trailers on the Panasonic, it seems to leave one of our foreground icons on the screen no matter how hard to try to remove them.
We've also built in an (undocumented) method for a user to be able to key in a series of numbers on the remote keypad during the time our logo plays to be able to adjust some of the timing if it becomes necessary. It also allows us to get a snapshot on some of the feedback a player is giving to our code so that if something isn't working, we could at least have some information to work with.
All this leads up to the fact that we couldn't test our code on a PlayStation 3 before we went through the rather expensive mastering process so we wanted to make our code as robust as possible, given the uneven implementation that we had been testing on. So we sent the master tape away and held our breath. It turns out that the PS3 has a really solid BD-J implementation and plays Dragon's Lair really well (sigh of relief).
Question: What advise would you give to other Java developers who would like to start coding in BD-J?
I'm not sure what to recommend to those wanting to get into BD-J at this stage as the access to information and tools are very prohibitive. Certainly get a copy of PowerDVD, or speak with Cyberlink to become part of their development process (I'm not sure how receptive they will be to the smallest of developers though). Read the MHP documentation as I mentioned above.
The biggest challenge is not having access to the BD-J specifications. As I understand it, you have to be on the inner circle and make some large payments to receive a copy. I'm not sure what the plans are to allow access to the smaller developers but that is critical to move development along much faster. Sample code is also a great help. Once that starts becoming more available, it will be a great resource to help figuring out how to get things done in BD-J. The development tools that we purchased were very expensive and almost in beta state when we bought them. They are much more stable now but no less expensive. I suspect there will be some competition in this area as time moves on and this will help make for better and cheaper tools.
Question: Are you planning on attending JavaOne? There is a whole day track session on BD-J.
No current plans for JavaOne. We've sort of crossed the finish line for what we set out to accomplish. Maybe I should be a speaker :)
Question: What do you believe BD-J would need in order to make your life easier and more productive when creating such titles?
Cheaper tools, lots of sample code, full disclosure of the BD-J specifications.
NOTE: All images in this article are copyright to Digital Leisure Inc. They are not meant to correctly depict the actual representation of the movie in high-definition.