Oh well, I've been doing it lately, but I didn't write about it at all in my Blog.
A few months ago I started to get interested into Wii homebrew development. Homebrew means that you are running code that is not signed by Nintendo and not done with any help of them at all (as for example source code and documentations). The kickstart actually was made by the homebrew channel, which is just a really good piece of sofware I recommend to anyone who has a Wii. In fact, some of the developers even helped with some source code snippets, for wich I am really thankful.
So I've been getting into this whole scene, which was really fun. There was something magical involved to develop on a completely different platform. You had to learn lots of new stuff, most of which was undocumented and any kind of information was only barely available. So here I went, started to do stuff here and there, and as we know me, I started to work on a Tetris Attack clone. The basic went off pretty quickly, as I already had one done for my mobile phone, and in a very close timeline I made some blocks moving upward. I was quite proud of myself to do such feat, and I sat about 2 hours just designing the tiles.
I was happy until I saw what the rendering library had done to my images.
First you had to run it through the images some converting program to do your bidding, and then you had a stripped down version of it, with too-bright colors and such. This was maybe done to save some memory, but in my opinion the Wii has enough memory for some simple homebrew developer needs in 2D, so that decision was made irresponsibly and resulted, in fact, in lots of crappy games. There was a point in the homebrew scene where most of the best developers said just "no" to that rendering library and told everyone else to not use it. The main reason for this abandoning was, that it did not use the graphic processor of the Wii, but just one processor, which resulted in slower games than usual.
So there was I, with a half-assed start for Tetris Attack clone and no rendering library I could use anymore to successfully launch that game. Since I was still always thinking about Galaxy Stations, and just somehow liked the Java Mobile game rendering library, and thought I could even improve on it. So I found some guy who just finished a game with the rendering library now everyone learned to hate. So I was here with feesh, and we started somehow from scratch writing that rendering/game library. Since I love OOP more than my right foot, it was coded in C++, and the first version was done and released in about a week, if not less. We called it libwiisprite, since that was essentially what it was. Quality was the main thing we had in mind for the library, so we had an extensive documentation ready from the first day.
But that was not our main feature. Our library ran on the graphics processor for rendering actions. We had extensive options on how to display different images differently with zoom, rotation, and clipping. Our library featured even the ability to load any 32bit png if it was in the correct dimensions. That meant even the alpha layer got displayed correctly on the pngs. The object oriented design also allowed to develop games blazing fast, and our demo game was made in just a few hours. A video of the first version can be seen here:
(note that this version is really outdated)
Now libwiisprite supports lots of other features, for example transparency or special alpha blending for particles, stretching, and loads even loads 24bit and 16bit pngs. It has grown up, but it's still growing. A fun fact is, that it allowed for the first physics-based homebrew games on the Wii. As you may see, I'm quite proud of it. The last versions for example fixed a lot of bugs in memory handling, and is now considered memory-leak-free, which was accomplished with the help of a lot of people, to which I am really thankful.
You can check out the current version of libwiisprite (0.3.0b) on the wiibrew wiki. Please notice that libwiisprite is not even a release candidate yet, but simply some library to play with. Polish is very important to this library, so before the 1.0.0 release there will be many revisions. This is however a base which will probably stay the same throughout the life of libwiisprite. The documentation is still on feesh's page, even though he is not developing the library anymore. In fact, even I can't sit so much on the sources anymore, since I have a job now, and I'm studying software engineering at our university here in Vilnius. And I still somehow manage to find some time for my girlfriend and my friends... And some game development here and there.
Note that libwiisprite is not the only one rendering library available, but it's just a very good one. Libwiisprite actually spawned some kind of competition. The old library for example, which used to be really bad, had a version update, and now also uses the graphics processor. It is however, C based, and game development is only easy and easy to maintain if the game is really small. It is still an alternative, which shouldn't be avoided, it all should depend on the needs of the game.
So yep, that's what I was doing these few months. It was a really fun time, and I really learned a lot by doing this project. So to anyone who would like to have a specific program for anything: just program it. You learn a lot by even doing simple stuff. If you're working together in a team, you are also able to teach others your knowledge, as others are able to teach you. Working in teams is really nice for any kind of project, so let's that be my "hidden" message in this blog post.
Sep 5, 2008
libwiisprite
Posted by
Chaosteil
at
20:52
Labels: code, homebrew, libwiisprite, tetris attack, wii
Subscribe to:
Post Comments (Atom)

0 comments:
Post a Comment