jwadlib WAD Library
A WAD file manipulation library for
the Java™ programming language.

by Samuel Horwitz

Valid XHTML 1.1 Valid CSS 2 SourceForge.net Logo

jwadlib Version: 1.0 Alpha 1


Return To The Top Of This Page


All of the Javadoc APIs listed are here for the benefit of those interested in using, or who are using jwadlib. It should be noted that all of the documentation is written into the source code itself and thus is available in any good Java™ IDE whenever a call to the library, jwadlib, is made. These generated API pages are redundant in that way, but may also be useful to people who wish to browse the properties of jwadlib, or look through the changes.

There are four different Javadocs. The "Regular Developer Version" is for developers creating tools for WAD files who want to implement the library. The "Library Developer Version" is for developers who wish to extend jwadlib itself. The main difference between the two is that all of the private methods and variables are visible and documented in the library developer version. Finally there are the two changes Javadocs. These are change reports generated by the JDiff doclet. Each one documents the API changes for between versions for their respected APIs (either library or regular developer).

jwadlib WAD Library

Return To The Top Of This Page


What is jwadlib WAD Library?

jwadlib WAD Library is a library for WAD files in Java™. A WAD file is a file made popular by the video game Doom™. While this library is generally targeted to Doomers (or gamers who play other Doom™-derived games or source ports) the very basics of a WAD file are supported at such a low level that the library should be able to work with WAD files from any game as long as they conform to a few basic standards. What does all this mean? Well, simply put, if you are a developer who is looking to work with WAD files, then this library should be very useful for you. If you are an end user who is looking to work with WAD files, then you are in the wrong place and should check out some of these programs. jwadlib does not directly do anything on its own; it simply gives developers a framework for the WAD file structure.

Is jwadlib WAD Library free?

Yes, jwadlib is released under the GNU Lesser Public License version 2.1 and the GNU Public License version 2. This means that it is free to use with your software under the terms of the license.Your projects, proprietary and free, can use this library.

What if I don't use Java™?

There are two other SourceForge.net WAD libraries. One is OMGIFOL for Python and the other is libdoomwad for C++. Also, located off Sourceforge, is clsWAD for Visual Basic. I am not affiliated with any of these projects. Alternatively, you could learn the Java™ programming language.

How exactly does jwadlib work?

When a program using jwadlib creates a new Wad object, the given WAD file is parsed and loaded into memory in separate parts. A WAD is made up of a header, a directory of lumps and then lumps themselves. A lump is just a raw file; every piece of game data in Doom™ is technically a lump. On jwadlib's most basic level, this raw data is loaded and stored in Lump objects that are linked to a Wad object. However, jwadlib is extensible and new libraries can extend its basic functionality. The Doom™ library that is to be included is an example of this. It is a library that extends jwadlib but with specific classes to hold specific lump types in Doom™. Essentially, anyone can make these add-on libraries, for any type of WAD file.

Okay, wait. If jwadlib isn't specifically tailored for Doom™ games, then what's the point? What defines a general WAD file?

The point is so that this library can be extended for dealing with WADs from any location, as long as they hold true to these following standards. Technical jargon ahead:

Another good place to read about the structure of a WAD file is at the Doom™ Wiki .

Why is jwadlib released under the LGPL as opposed to the GPL? Do you hate free software?

No. I love free software. To be fair, there is a good argument on the GNU.org website against the LGPL and you can read it at http://www.gnu.org/licenses/why-not-lgpl.html. (Ironically, they are also the creators of the LGPL.) However, I believe that freedom should allow my library to be used in any program, even ones that cost money. Is this view static? No. I may have different thoughtsfor future projects I release. Is this the only way? No. It's my choice. It may not be yours, but I can't please everyone. Finally, I will admit that my doubt as to this library ever actually being used in proprietary software may have somewhat influenced my choice.

Why is jwadlib released under GPL version 2 and not 3? Do you hate free software?

Once again, no. I just chose to release my program under the old GPL as opposed to the new one, which I feel is somewhat more restrictive. I do not have a complete stance yet, nor do I have a personal issue with GPL version 3, but I decided that I would rather stick with the tried and true GPL version 2 for this library.

Why is jwadlib developed with Java™ 5.0 instead of Java™ 6.0?

I do my development on Mac OS X® and unfortuantly, Apple® has not released a Java™ platform for Java™ 6.0, although it is in development. I plan to upgrade once the official platform is released, however if need be, I will use a third party Java™ 6.0 platform for releases. If it doesn't prove to be a problem, however, I will continue developing jwadlib as a 5.0 library until Apple® comes out with 6.0.

What does jwadlib mean?

The name of this project, jwadlib WAD Library, is a recursive, redundant, abbreviated, runon backronym. The "j" in "jwadlib" stands for "jwadlib" (recursive!), the "wad" stands for "WAD" and the "lib" stands for "Library" (abbreviation!). jwadlib is a long runon word. Thus, the complete name is "jwadlib Wad Library," which is quite redundant. Finally, the name is a backronym because the "j" was originally going to stand for "Java™," and the full name would have been "Java™ WAD Library" but Sun® Microsystems doesn't allow Java™ to be used in the title of software for trademark reasons so I had to rework the meaning of "jwadlib" in typical open source project name fashion.

Return To The Top Of This Page