OpenZDK makes it possible to build truly powerful applications for the Zune. However, with OpenZDK comes a major shift from C# and XNA to native C++. Moreover, developing 3D programs for the Zune HD requires programming in OpenGL ES 2.0, an industry-standard 3D graphics API that is as complicated as it is powerful.
The procedure to get started with OpenZDK can be summed up with three simple steps:
Programming against OpenZDK is dramatically different from coding with XNA. Until the development community gains momentum, no easy libraries exist that allow you to make a game with just a few lines of code. However if you have experience programming in C and C++, you may find it easier in its own respect. We strongly suggest looking at the index of samples to get an idea as to how programming for OpenZDK works.
OpenZDK applications can be debugged in the same manner as Windows and XNA applications via a newly released network debugging client. Note that OpenZDK debugging is currently available only for the Zune HD and requires access to a wireless network compatible with the Zune HD firmware.
Documentation for the OpenGL ES 2.0 3D API provided by the NVIDIA Tegra drivers can be found at the Khronos website. A good source of information on OpenGL ES 2.0 can be found in Addison Wesley's OpenGL ES 2.0 Programming Guide. Example programs can be found on that website; however, they must be modified to run on the Zune HD.
For general C++ documentation see cplusplus.com. Thanks to its popularity, documentation for C++ is widely available on the internet. For information on Windows CE 5.0, on which Zune models prior to the HD are based, see the Microsoft Developer Network and various other sites. Information on CE 6.0, which forms the foundation of the Zune HD, is also available on MSDN. The Windows CE API is closely modeled after the more prevalent Win32 API, so information on Win32 can often be adapted to the Zune.
OpenZDK specific documentation will be located on this website. At this time, the header files that come with OpenZDK are the best source for information on functions specific to the Zune. Also see the index of samples for examples of programs built on top of OpenZDK. A list of common Zune specific functionality can be found on the coding page. Documentation for the OpenZDK API can be found at the API page. The API page is currently under development.
There are two main places to search for past issues: the Development Help section on ZuneBoards, and the common issues section of the Dev Wiki. If you can't find the answer you were looking for, you can post a thread at ZuneBoards or visit #zbdf on freenode.
You found what you were looking for - congratulations! In order to make it easier for the next person who runs into the same question, please make sure to spread the word. Either make a thread at ZuneBoards or add an entry to our common issues page.
Developers! Developers! Developers! We need developers! If you have the interest in OpenZDK, we have a way you can help. Our top priority at the moment is programs built with OpenZDK. If you are looking for a more challenging project and have skills in ARM assembly language, we can use help deciphering the function export signatures of the myriad DLLs specific to the Zune. To get more information, check out our contribute page or jump on #zbdf on freenode to learn more.