The Wii Opera SDK is a collection of optimized Javascript files created to aid in the development of games and software for the Internet Channel, the Nintendo Wii's Opera-based Web browser. The original intent of the SDK was to aid in the development of HullBreach Online, a browser-based space MMO RPG. The components of the SDK provide assistance in several areas for creating homebrew Web applications using Wii Remotes, matrix math, graphical primitives, texture-mapping, raycasting, and multiuser communication.
Efforts have been made by the Wii Opera SDK to promote both products it supports, the Nintendo Wii and the Opera Internet browser; thus, no objects have been made by either companies to its naming. In fact, the 3D Mesh Demo widget, which showcased the SDK, won runner-up in the You Got Skills contest hosted by Opera.
Development of the Wii Opera SDK began in June 2007, soon after it became obvious that more could be done with the Internet Channel than the demonstrations shown by Sky Diver and Chatroom. Early demonstrations to become available included HullBreach Online and a Star Fox clone. In December 2007 came the public release, as announced on GoNintendo, Engadget, Joystiq, and other video game resource websites.
June 26, 2007
August 3, 2007
December 19, 2007
January 27, 2008
April 8, 2008
April 28, 2008
June 18, 2008
August 16, 2008
There is one three-dimensional math class in the second release version of the Wii Opera SDK. This class takes a much different approach to setting up 3D graphics than the class it replaces. Instead of just accepting an array of triangles to be manipulated and drawn, individual mesh objects can be manipulated then merged into one giant scene for final drawing. These mesh objects no longer have to be hard-coded; they can now be imported from an existing library or custom files. Generally, each mesh manipulation requires the passing of few or no variables because environmental values are set in the beginning and changed as needed. In addition to the previous abilities to move, scale, and rotate, objects, more advanced effects have joined the foray: real-time lighting, explosions, and shadows. Hidden surface removal, z-sorting, and auto-clipping, remain in this release as well.
This release also brought with it the Mesh Gallery and its entire infrastructure to allow gamers to import 3D objects into Internet Channel games.
All geometric shapes are drawn to an active canvas object. Shapes include lines, circles, rectangles, trapezoids, clip regions, and scenes. All shapes with a perimeter can be filled an RGB(A) color. Images from JPEG, GIF, PNG, and SVG, files or IMG objects can be placed onto a canvas with rotation and scaling. Any transparencies and alpha channels from the image files will be preserved. Both trapezoid and scene objects can be texture-mapped.
Trapezoids require rectangular textures to map with perspective-correction to either a vertical or a horizontal object. Scene objects consist of affine-mapped triangles with optional second-pass shading by transforming the canvas drawing matrix. The drawing class natively supports both flat-shading and texture-mapping and will determine which to use based on data in the object mesh.
Benchmarks have placed flat-shading to about 3000-5000 triangles/sec and textured-shading to about 200-300 triangles/sec, depending on conditions. For full-screen raycasting (800 pixel width), the scanlines need to be around 12 pixels wide or wider for playable framerates. These speed factors disallow complex artwork in games and, perhaps, limit games to the visual quality of 3D projects from the SuperNES (5th generation) console era.
In addition, JavaScript sound extensions are not supported by the Internet Channel, so developers wishing to add sound to their projects must add and invisible Flash module or do without sound at all, with the former slowing down projects even further.