Jump to content

Wii Opera SDK

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Geekrecon (talk | contribs) at 20:55, 23 August 2008 (company info). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Wii Opera SDK
Company typePrivate
IndustryVideo Games (Open Source)
Founded2007
Key people
Daniel Gump: Founder & Programmer
Websitewiioperasdk.com

General Information

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.[1] 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.

History

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[2], Engadget[3], Joystiq[4], and other video game resource websites.

Releases

June 14, 2007

  • Support for 1 Wii Remote
  • Flat-shaded triangles

June 26, 2007

  • Support for 4 Wii Remotes and Nunchuks

August 3, 2007

  • Wall and floor perspective texture-mapping

December 19, 2007

  • Public release

January 27, 2008[5]

  • v2.0 release
  • 3D Mesh Gallery and mesh generator

April 8, 2008

  • Realtime shadows

April 28, 2008

  • Triangle texture-mapping

June 18, 2008

  • Raycasting engine[6]

August 16, 2008

  • v3.0 release

Upcoming Releases

  • Dungeon/level editor for the raycasting class that posts the creations to a gallery[7]
  • Texture gallery for use in raycasting creations
  • Faster texture-mapping based on the Opera 9.5+ builds of the Internet Channel.

Specific Functionality

Wii Remote Interaction (v2.x)

All buttons on all four Wii Remotes can be detected except for Power and Home. In addition, the 1 button on the primary Wii Remote cannot be detected due to system uses. The C and Z buttons on all Nunchuk attachments except for that of the primary Wii Remote are detectable as well. In addition, the SDK detects and calculates cursor position, distance from the Sensor Bar in meters, and angle of roll, from all four Wii Remotes. It also automatically determines if the Wii Remote is being used as a pointer or a two-handed controller.

3D Math (v2.x)

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.

Raycasting (v1.x)

This class supercedes the old 3DFPS class, which used axis-aligned texture-mapping to generate scenes. The current release uses raycasting of axis-aligned verticale grid regions. It also supports various second-pass lighting effects and graphical hyperlinking.

Drawing (v2.x)

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.[8]

Multiuser Communication (v1.x)

Each game developed to use the multiplayer functionality gets assigned a unique ID that allows it to pass data through the server between clients. Potentially unlimited variables can be passed as a query string, adding to great versatility.

Criticisms

The Internet Channel has been plagued by slow execution of both JavaScript and Adobe Flash code, causing homebrew projects in these formats to suffer from slowdowns and lag when compared to their desktop counterparts. Thus, features must either be dropped, or code must be optimized into obfuscation in some cases.

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.

See also

References

External links