FiSSION

From WiiBrew
Jump to navigation Jump to search
FiSSION Game Engine Project
FissionLogo.png
General
AuthorPunMaster (Ryan)
TypeGame Engine / Demo
Versionv0.01
Links
Public Demo v0.01
PDF Readme
YouTube Video
HQ Video (XVID)
Peripherals
USB Mouse USB Keyboard Loads files from the Front SD slot Loads files from SDHC cards in the Front SD slot

FiSSION is a homebrew 3D game engine being developed for the Nintendo Wii. Its goal is to allow homebrew developers the opportunity to develop studio-quality games without the massive upfront investment of writing a game engine to support their content.

NOTE: I kindly ask that you do not vandalize this page. If you would like to make a productive contribution, please mention the idea on the discussion page FIRST. Because of the recent high traffic volume to this page, I cannot afford to have everyone making destructive modifications. Sorry for sounding mean, but I really do mean it. Thank you, and enjoy the project.

Background

FiSSION originally started out as “Hydra,” a project with similar goals but targeted at XNA on the Xbox 360, a little over a year ago. It was a two-person endeavor shared between myself and a like-minded friend, and we made a lot of progress in the first few months of development. Unfortunately, my friend eventually lost interest, and lack of any good project management system made it almost impossible for me to continue the project on my own. Then, after becoming interested in the Wii, and some encouragement from another friend, I decided to pick the idea back up, this time incarnated as project “FiSSION.” Although I am now coding it mainly on my own, I must give my friend some credit for keeping me motivated. It has since been only a few months, and, despite some trouble working with the Wii’s poorly documented software, the project is progressing at a surprisingly fast pace. With that said, I am proud to announce this first public demo release, which, if nothing else, at least proves that I have made my way into the Wii game development scene. All in all, I am really hoping for this project to turn into something relatively extraordinary, especially given that no console has really seen something like this before.

Some other developers have kindly asked me to mention that while I believe FiSSION is destined to be the first of its kind, there still are other projects out there for the Wii and other consoles with similar goals. Likewise, I excitedly encourage everyone in the Wii development scene to keep up the great work and share whatever you can to help others. If you have any questions about FiSSION, or anything you would like to share, I'd love to hear from you on the discussion page. Have fun. :)

Ongoing Progress

Update 12/19/2008

Winter break is here! That means more time for coding, yay. :) USB mice and keyboards now work to control the camera "noclip-style". Next accomplishment will be SD-card support (because simple hardcoded models are boring, :P). Once the graphics look presentable, I'll post screenshots.

Update 12/22/2008

I can now read models off of an SD card. As proof, I have a nice false-color (no textures yet) screenshot of the base from Bloodgulch (a Halo map) rendered on the Wii. Pardon the CRT TV artifacts. I took this quickly just to get something up for everyone to look at for a few days while I keep working on it. Eventually I'll hook it up to my capture card and get some better shots. In the mean time, here ya' go.

If anyone is feeling especially helpful, they might want to take a look at my post at TehSkeen regarding an issue I'm having with Libfat and USB. I'm not sure if it's the API's fault or if I'm doing something incorrectly, but maybe someone else has some better ideas. Fixed. See 'Update 12/27/2008'.

Also, if anyone has any experiences to share regarding the use of (heap allocated) indexed vertex arrays on the Wii, I'd love to hear them. My results are glitchy to say the least. I am getting a random mix of valid model and random triangles in my scene, and the amount of each changes each time I run the program (and sometimes even while the program is running, as my camera is moving). Obviously, if I manually de-index my array and feed the verts in directly, everything works. Fixed. See 'Update 1/3/2009'.

Update 12/27/2008

I fixed the SD card / USB conflict. For details and code, see my libFAT comment and/or my TehSkeen post. Because USB works again, I was able to "fly around" and get some better screenshots. Enjoy. I've decided to put using indexed vertices on hold for now because I'm still getting strange results. I'll revisit the issue if I get any ideas (or lag becomes a problem). I'm still open to any suggestions. Now on to textures (wish me luck).

Screenshot 1
Screenshot 2

Update 1/3/2009

After a lot (more) trial-and-error with placing 'DCFlushRange' commands, I think I finally have indexed vertices working. No new screenshots (because it looks the same as it did before), but it's progress none the less. I read a little about textures but I don't have anything coded yet. Hope to have something soon.

Update 1/4/2009

Textures work! Yay. Feast your eyes on the wonderfully blurry screenshot. :) And with that, it's time for a capture card, some better shots, and maybe even a video, because I'm sure everyone's getting tired of my CRT TV pictures. I will even be creating a real page for this project soon and releasing a playable demo (its early January, isn't it?) like I promised, assuming you consider flying the camera around 'playable'. If I (and you?) get lucky, I should have all of this ready tonight or tomorrow.

Update 1/6/2009

I uploaded a video of it working. The 30 second load time was cut out for your convenience. :P Have fun.

Update 1/10/2009

2D graphics can now be overlaid onto the 3D scene. The uploaded screenshot shows the 'FiSSION Engine' logo running on top of the render. This screenshot is a little better (cheap USB capture card) but still painfully blurry. Sorry for not having a demo out yet. School is back on and finding time for this project is a little more difficult. Either way, I'll try to have something ready as soon as possible, so keep checking back for updates.

Update 1/18/2009

Well, after quite some time without saying anything, I'm back with quite a bit of progress.

I now have the following:

  • A main menu
    • Scans SD card for maps and skys
    • Lists both with thumbnails
    • User can select and load any combination of maps and skys
    • Has a loading progress bar
    • User can return back to the menu and choose another combination
    • Pretty graphics :)
  • Internal support for multithreaded scripts
    • Almost all functionality is provided internally by scripts (nothing in the graphics loop is hardcoded)
    • It's finally starting to feel more like a game and less like a hardcoded model viewer
  • Support for ZLIB compressed models, textures, and fonts
    • Load times dropped 6-fold
  • Much improved memory management
    • Can load and unload content without leaking memory (as far as I know)
    • Doesn't crash quite as often :P
  • User-friendly GUI dev tools (Windows)
    • Texture/font converter
    • ZLIB compressor
    • The (very) rough beginnings of a model converter
  • Beginning to work on a PC port for debugging/testing

All in all, I think I'm finally satisfied enough with my progress to release that demo I've been promising. Yay. I will definitely (at very least) have a new video up by tomorrow (off school for MLKJ day). I finally got a nice PCI capture card, so I should be able to upload something that looks better than pixelated polygon pudding. :P

Update 1/24/2009

Welcome to the "real" FiSSION Project page. Yay! :) It's a week later then I planned, but it's finally here. Links to the demo and the video are at the top of the page. Have fun!

Update 1/31/2009

After having my video capture card and my SATA controller inexplicably stop working on the same day (and spending all week and several OS re-installs getting everything working again), I FINALLY have the videos uploaded. The links above should work now. Sigh.

Update 4/11/2009

Hi. :) I'm back. FiSSION is not dead. I've been working on it regularly and making decent progress. But time has been hard to find lately and I haven't had the chance to talk about it much. I still don't have anything to interesting to release yet, but I thought I'd at least share a screenshot of the development app (dubbed "0xIDE") I'm working on. I'll hopefully have more soon. Check back in a few weeks.

Update 6/16/2009

Well, It's been almost exactly two months since I released something related to FiSSION, so here's another mouth-watering screenshot of 0xIDE, the game editor. This time it's complete with all-original content. Halo maps are finally gone for good. :) In the process of making the game editor, I have also developed a fairly robust system for game data management that should allow me to finally expand FiSSION from just a fancy model viewer to an actual game, with gravity, collision, weapons, and objectives. Just saying all that scares me a little, because it still sounds like such a daunting task. But I never thought I'd make it this far, so I'm confidant anything's possible.

Also, as you might suspect from the fairly developed-looking level open in the editor, there is also a real game for the FiSSION engine pretty far in development already. I've been completely silent about it up to this point, because I wasn't sure if it was really going anywhere. But it is starting to seem like a real possibility, so I thought I'd mention it. The game will be called "Sifer". It is a sci-fi shooter partially inspired by an anime called Denno Coil (if you have any interest in anime, I highly suggest looking into it). The game will be a single-player campaign with possible multiplayer support, depending on how things go. Because content creation is such a time consuming process, and it is unlikely I'd finish an entire game start-to-finish in a reasonable amount of time, I plan on releasing the game in a series of five episodes, each with about a half-hour of gameplay.

I won't give away much more than that right now, but as a little teaser, here are the titles for the five episodes I am planning.

Stage 1: Quantum Chaos Connection
Stage 2: The Neuron Exposition
Stage 3: Null and Void
Stage 4: Discontinuity
Stage 5: Guardians in Exile

Public Demo v0.01

This is a very early demonstration build of this project, which allows users to select and browse game levels, rendered real-time in 3D.

I’d like to start off by warning everyone that this is nothing more that a very early demo release of a work still very much in progress. Likewise, it is intended to do no more than illustrate a concept and show that this project has a lot of future potential. It is not by any means a playable game. Furthermore, as all projects are when in the very early stages of development, this release is very unpolished and under-tested, to say the least. In fact, there is no real guarantee that it will even work the way it is supposed to on any console other than my own, and you should consider yourself lucky if you don’t run into any unforeseen problems. With that said though, I am hoping that everything will work as it should in what is to be my engine’s first field-run.

See the top of the page for download links and videos.

Overview

The application starts with a main menu screen that allows the user to choose a map (game level) and a sky graphic to be displayed and rendered in 3D. Once the engine is loaded, the user can browse around the map from the in-game equivalent of a flying camera, controlled in a fashion similar to using the “noclip” cheat in an FPS game. The user may then return to the menu and choose another map and/or sky to load and browse.

Controls

The demo is currently controlled exclusively through a USB mouse and keyboard attached to the Wii’s rear USB ports. There is currently no support for the traditional Wii peripherals such as the Gamecube controller or Wii Remote. I had planned for rudimentary support for the Wiimote and Nunchuk to be available in this demo, but things were not working as they were supposed to and I decided not to delay this release trying to get them working at the moment. Ultimately, this means that you MUST have a USB mouse and keyboard available to be able to do anything at all with this demo. If you are not able to find one, I’m afraid you will either have to borrow one, or wait for a later release of the engine that implements support for standard Wii peripherals. The following mouse / keyboard controls are used in this demo:

- Arrow keys – Moves the cursor in the menu
- Enter – Selects an item in the menu
- W/A/S/D – Moves the flying camera around the map
- Mouse – Points / rotates the camera
- R – Resets the camera to its default position
- Esc – In map – Returns to the menu
      - In menu – Returns to the launcher

Additionally, the reset button on the console may be used to return to the loader at any time (even, in many cases, if the application has crashed).

Installing

To install and run this application, simply copy the “apps” and “data” directories from the downloaded archive to the root of an SD memory card formatted with the FAT file-system. All SD cards supported by the Homebrew Channel, including SDHC cards, should be suitable for running this application. Once the files are copied, simply launch the “FiSSION Game Engine Project” program from the Homebrew Channel menu. As stated earlier, the application can be exited at any time by pressing the reset button on the Wii console.

Known Issues / Troubleshooting

The following is a list of problems that you may (but hopefully won’t) encounter when running this demo, and a list of steps that can be taken to work around these issues:

  1. The demo does not appear in the Homebrew Channel menu, crashes immediately, or crashes while loading a part of the content.
    1. Reboot the Wii and try loading the demo again.
    2. Make sure you are using the latest version of the Homebrew Channel. Older versions had known compatibility issues with certain SD cards.
    3. Back up your data if necessary, then fully format the SD card with the FAT file-system. Re-copy the application directories from the archive to the card, reboot the Wii, and try loading the demo again.
    4. Repeat step 3 using a different SD card.
    5. Re-download the archive and repeat step 3.
    6. Repeat step 3 on a different computer and/or under a different operating system.
  2. The demo does not respond to input from the mouse and/or keyboard.
    1. Unplug BOTH peripherals and fully shutdown the Wii. Turn the Wii on and load the Homebrew Channel without either peripheral connected. Then plug in both peripherals while still in the Homebrew Channel menu and launch the application. Be sure to plug the peripherals directly into the Wii; do not go through any extension cables or USB hubs.
    2. Repeat step 1 again, switching the respective ports the mouse and keyboard are plugged into.
    3. Repeat step 1 using a different mouse and/or keyboard.

If you believe that any problems you experience, whether or not listed above, are the result of a programming error in the software, feel free to contact me explaining the error so that I can fix it. Keep in mind though that it is unlikely that I will be able to solve any errors related to specific hardware, especially if I do not own the hardware in question, or it is non-standard.

License / Disclaimer

You are free to use this application and its included files in any manner you please as long as you abide by the following conditions:

  • Attribution: If you publicly distribute any part of this project in any form, you must clearly identify it as being my original work, and include an unmodified copy of this license / disclaimer.
  • Non-Commercial: You may not use any part of this project to make a profit, or associate it in any way with commercial activity.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Commercial Use

As you can see, the only thing I’m really not allowing people to do with FiSSION is make money off of it. Still, if you or your company is sincerely interested in commercial applications for FiSSION, I’d be more than happy to consider making specific business arrangements. The only requirement I have is that such arrangements must not restrict my ability to continue developing and distributing FiSSION on my own. I will NOT enter into any exclusive contracts. Otherwise, feel free to contact me with any offers. In all honesty, I’d take it as quite an honor to see FiSSION become part of a mass-marketed product.

Included Content

As stated above, the FiSSION project is strictly a game engine, not a game. Likewise, it currently contains no original creative content, only code. Still, because a game engine can only be demonstrated when it has content to work with, I have included two test maps, “Zanzibar” and “Blood Gulch,” taken from the “Halo” series of FPS video games by Microsoft / Bungie, and converted to work with the FiSSION engine. These maps are copyrighted property of Microsoft / Bungie, and I take no credit for them whatsoever. I believe that their use in demonstrating the abilities of the FiSSION game engine project qualifies as “fair use” on the following grounds:

  • The content is provided purely to display the functionality of the FiSSION project, and is provided in a format suitable for no other purpose.
  • The content is being used solely for non-commercial purposes. No profit is being made from the content or from the software with which it is being used.
  • The content is being used only because no other equally suitable, non-copyrighted material could be easily obtained.
  • The commercial interests of the content’s authors and/or copyright holders are not being violated or negatively affected in any way by the use of the content for this purpose.

Furthermore, the images used to create the sky graphics are the original work of Colin Lowndes (“cloudtop”) and Jockum Skoglund (“miramar” and “stormydays.”)

Source Code / Helping FiSSION

As you may have noticed, source code has not been included with this release. I ultimately plan on making this an open-source project, but I have decided that releasing the source code at this point would be counterproductive. The source is currently very messy, completely uncommented, and basically, anyone else would go crazy trying to read it. Furthermore, I simply don’t need nor want any other developers working on this project right now. I’m having a hard enough time keeping the code organized enough for myself. Still, if anyone is interested in knowing something specific about the internals of FiSSION, I’d be glad to explain it and provide the relevant code.

And finally, there is one big thing everyone can do to help FiSSION: tell your friends! If you thought the demo was interesting, or you think that this project has potential, spread the word and give your feedback. The most important thing I need right now is motivation and support from the game development community, so that, at very least, I know that my work is appreciated and that I’m not wasting my time. If you have anything to say, I’d love to hear from you on WiiBrew or by email (see PDF readme.) Thank you, everyone, for your interest.