Skip navigation.

exploreopera

| Help

Sign up | Help

The Wii Opera SDK

And Internet Channel Software that Uses It

Posts tagged with "sdk"

avatar

Wii Opera SDK - New Mesh Format

, , , ...

Most of the code migration to the new version 3.x of the Wii Opera SDK is complete. One of the big changes is the format for mesh arrays. The format is as follows:

  • Mesh[triangle][x1,y1,z1, x2,y2,z2, x3,y3,z3, r,g,b, texture, shading]
  • Mesh[triangle][x1,y1, x2,y2, x3,y3, r,g,b, texture, shading]


As you may notice, this new format opens the door to mesh arrays with mixed type triangles, meaning that both textured and flat-shaded triangles can inhabit the same mesh. Let me take a moment to explain what the two added values are:

Texture: This refers to the element number of a texture image array, which if defined elsewhere. By placing a negative value here, it flags the SDK to use the RGB colors instead of a texture. If a non-negative value is given but no texture array is passed to the SDK, the triangle will also be flat-shaded.

Shading: This is more of an internal value than anything, used by shading and fading. It contains a value in the interval [-1, 1]. This value can also be set manually to add brightness effects to the triangle.

I will be updating the documentation and further migrating code over the next few days. All example webpages are updated to make use of the new code already.
avatar

Wii Opera SDK FPS Engine Beta

, , , ...


The first demo of the Wii Opera SDK raycasting dungeon class is available for play at http://wiioperasdk.com/wall.html. Features in this beta are as follows:
» Axis-aligned grid-based raycasting
» Texture-mapped walls
» Second-pass wall effects (flashlight, gouraud, shadow)
» Variable ray resolution (for speed adjustment)
» Bounce generated by walking

I will be tweaking the engine and writing documentation for it throughout the day.
avatar

Triangle Texture-Mapping Now in the Wii Opera SDK

, , , ...


I’ve just finished adding triangle texture-mapping to the Draw class of the Wii Opera SDK and have placed a demo at http://wiioperasdk.com/texturemap.html. Since the canvas object lacks support for 3D at the moment, I had to use some trickery by rotating the coordinate system then drawing horizontal scanlines, but it works fairly well, aside from some minor glitches. Don’t expect any high-speed fully 3D games to be playable in the Internet Channel, but it will make for some nice demos and simple animations.

EDIT:
The texture-mapping has been accelerated an estimated 20-fold by replacing the scanline drawing with Tangent128's transformation algorithms used in the 3D Globe widget. Now the Internet Channel will be able to display an estimated 500 textured triangles per second, adding greatly to the graphical possibilities!
avatar

New Internet Channel Developers' Blog

, , , ...

I've set up a blog at http://blog.wiioperasdk.com to focus solely on making software for the Internet Channel on the Wii. The blog will consist of articles that benefit developers.
avatar

Wii Opera SDK Moved to Its Own Website

, , , ...

For the past year, the Wii Opera SDK has been hosted on a subdomain of http://hullbreachonline.com (since it was primarily created for HullBreach Online). Since the SDK has matured to the point of being used in several other projects, it has now been moved to its own website. On that website, I am going to set up a blog for news on Wii game development, both in the Internet Channel and through official means. (The blog will not cover hacks and modifications to the console.) The Wiki and the Forum will still be shared with http://hullbreachonline.com. The new website for the SDK is easy to remember: http://wiioperasdk.com.
avatar

Several Wii Opera SDK Demo Videos on YouTube

, , , ...


Many of the Wii Opera SDK demos have been captured to video and placed on YouTube for those who cannot get online with the Wii and who have a Web browser that can't handle HTML5 standards (ex. Internet Explorer). The videos are under http://www.youtube.com/breakdancecrew.
avatar

Realtime Shadows in the Wii Opera SDK

, , , ...


Realtime shadows are ready in the ThreeD::Shadow method. It reads the same lightsource position as ThreeD::Shade. For those wishing to implement the new method, be aware that it takes a lot of processing power with time exponentially increasing as the number of triangles in the scene increases (imagine raytracing one path for each triangle from each triangle). Thus, it's best to perform all backface culling before running this method. A quick demonstration can be found here. A painfully slow demonstration is here compared to its flat-shading cousin.

Here is an example of the simple syntax to add realtime shadows to a project:

...
ThreeDee.SetLight(-1000, 0, 1000);
ThreeDee.SetPoints(Cube1.concat(Cube2).concat(Cube3));
ThreeDee.Backface();
ThreeDee.Shade();
ThreeDee.Shadow();
Draw.drawScene(ThreeDee.GetTranslation(), 3);
...
avatar

Project updates...

, , , ...

Since I have not posted to this blog in a while, it may seem like my projects have sat dormant. Since that is far from the case, I felt that I should give an update on the status of a few projects:

HULLBREACH ONLINE
For the most part, HB has seen little more than bug fixes over the past two months. For what the game does, no technology supported by the Internet Channel will allow me to push the bounds further without considerably hurting the framerate. In the HB forums, several gamers have mentioned that they'd like to see a WiiWare version. Well, I'm already one step ahead of them. I've applied for developer status to Nintendo with a local software company. That was in late January, and warioworld.com says to expect a fee months to hear a response. I'm just playing the waiting game now.

WII OPERA SDK
For the past month, I've been dabbling in raytracing in both JavaScript and C++. Although raytracing itself is very slow (yet produces graphical results well beyond traditional rasterization methods), I am going to attempt to incorporate a hybrid engine into the SDK's flat shading functionality. I believe that I will be able to add realtime shadows to meshes. The possible speed is unknown but will obviously be slower than using just realtime flat shading. I have some other plans for the SDK in the pipeline as well. And of course I keep tweaking it for speed on a weekly basis.

Stay tuned for more upcoming news...
avatar

More Speed Boosts to Wii Opera SDK

, , , ...

I've made several updates to the SDK that further speed up the graphics. Since each individual update was probably too small to mention, I haven't posted about them in the past month, but as a group, they have probably added about another 15%-30% to the SDK. (I didn't keep track.) This updates 3D2.js, 3Dfps.js, and draw.js.

Also, to keep the Wii Opera SDK lean, I've dropped support for bezier curves and a few other primitives that have little to do with game creation. The documentation has been updated to reflect the changes. If anyone needs those added back in, let me know, and I'll send you a special version of the SDK drawing class.

http://hullbreachonline.com/sdk

One more thing as well: These updates have been incorporated into the 3D Mesh Demo Opera Widget at http://widgets.opera.com/widget/9101/ .
avatar

Wii Opera SDK v2.0: New Draw.drawScene and huge accelerations

, , , ...

I've just created a new function/method for the Draw class called "drawScene()". By using this instead of a loop of triangle draws, you can get about an extra 50% speed, depending on if you are using wireframe, fill, or both. Here is the setup for the method/function:

null = Draw.drawScene(2DPoly[][x1,y1,x2,y2,x3,y3,r,g,b], style);

"2DPoly[][x1,y1,x2,y2,x3,y3,r,g,b]" is the same argument structure as the return from Draw.getTranslation();

"style" can be a combination of Draw.WIREFRAME (1) or Draw.FILL (2). Those values can be added (+) or bitwise ORed (|) to combine the two values.

Here's an example of a frame drawn to a scene:

ThreeDee.LoadMesh(mesh);
ThreeDee.Backface();
ThreeDee.Shade();
ThreeDee.ZSort();
Draw.drawScene(ThreeDee.GetTranslation(), Draw.WIREFRAME | Draw.FILL);