Archive for the tag: WebTech

Design Progress

Potential RPG 6 Comments »

After making some progress implementing new game features, I found myself leafing through my design journals to extrapolate the final design decisions. To solidify the ideas, I’ve spent a few days codifying the design in a wiki (DokuWiki with Dokubook template). Now I have a more rigorously defined design. There are still gaps (the 20% of the unfinished design mentioned earlier), but they are more clearly exposed, so I can code around them.

The most fundamental design change is to the character attributes. From a gameplay standpoint, the character system should feel more “classic.” Simply put, raise your attributes to become better at things. Strategic decision involves which attributes to raise, and what equipment best compliments them. From a technical standpoint, this affects many of the core content objects (characters, creatures, and items).

The new attributes have been implemented, but not integrated with any logic that uses them. As soon as I can, I will release a new client, so Alpha playtesters can at least see the character changes.

Java Web Start: Antithesis of Usability

Developer's Cave No Comments »

Java Web Start should be a major benefit for Java application developers and, more importantly, end users. The JWS concept is simple: A configuration file (JNLP) sitting on a Web server defines how to install, update, and launch a Java application. At each launch, application resources are fetched, installed, and updated for the user as automatically as possible.

Great concept, but the reality of Sun’s JWS implementation is abysmal. End users are forced though a gauntlet of obstacles, in which any error tends to be catastrophic.

Assume JWS is installed and browser integration is configured correctly for all browsers (a MIME type must be set up to launch JWS when a JNLP file is clicked). When a JNLP is first launched, shortcuts are installed on the user’s desktop and in menus, as directed by the JNLP (barring some bugs). These shortcuts conveniently launch the application. However, there are several bugs against JWS in which these shortcuts become corrupted. The result is a cryptic error that implies the application is broken, which is enough to prevent most end users from using your application. The situation is not easily repaired (as discussed below).

One such case prompted this article (rant): Upgrading from Java 5 to Java 6 caused all JWS application shortcuts to become broken. To correct the situation, users must find the JWS Viewer application. I couldn’t find the shortcut in Windows, so had to run “javaws -viewer” on the command line. This could be a friendly viewer of installed Java applications, but is actually considered a sub-dialog of the hideous Java Control Panel, showing the JWS “application cache.” The applications had to be removed, then the original JNLP link clicked to initiate a new installation. If the user cannot perform these steps, and does not know the JNLP URL, the error is unrecoverable.

The same problem can occur in several other ways, such as renaming shortcuts, or making several JNLP changes. The end result is an error shown to the user, implying the application is broken. In all cases, JWS should be smart enough to detect the corrupted shortcut and reinstall the application. Instead, an exception and stack trace are shown to the user. This is a completely unacceptable scenario for the end user.

Another problem occurs if the user saves the actual JNLP file locally, then launches from that file. Even though the JNLP has the full URL information of the application resources, JWS does not go to the source when the JNLP is clicked locally. Thus, no updates are ever discovered, which breaks the basic contract of a so-called “online” JWS application: the user will always have the latest version.Overall, Java Web Start should be redesigned to provide a robust user experience. Otherwise, I don’t anticipate moving MMORPG out of alpha with JWS. An alternative is to simply create a launcher script (or Windows executable) that checks resources before launching the application. However, Java developers shouldn’t have to reinvent this wheel.

Resources:
This bug should never have been closed: Sun Bug 6446676
This bug appears to replace the previous: Sun Bug 6563938
Similar broken shortcut bug: Sun Bug 6549428

Wiki Wiki Guide

Potential RPG No Comments »

Now there is a Wiki engine installed for the MMORPG Guide. Befitting the name, DokuWiki was wiki wiki fast to install (about 2 minutes from upload to running). I’ll have to work on the theme later. As far as content, I hope to scribe a clean, comprehensive, and concise Player’s Guide (but don’t look for it anytime soon).

Now, how to include a cloth map…

Flyspray Bug Tracking

Developer's Cave, Potential RPG No Comments »

I’ve installed a new bug tracking tool: Flyspray. This supplants the previous BUGS (The Bug Genie) system, which I could never get into.

Rant: BUGS was supposed to be easy-to-use, but that seemed to translate to “pretty icons” rather than clean functionality. In fact, I found the UI interaction to be particularly clunky and confusing. There were too many redundant and conflicting ways to manage bug reports. I suspect the developers were more familiar with CSS than bug tracking. It did have pretty icons, though.

So far, I like Flyspray much better. In fact, the only reason I didn’t install it originally (last year) was that their latest version did not have an installer. No big deal, except that my previous Web host only had FTP access (yech), so I couldn’t do a manual install. That, and a test install of the previous version failed.

So it took them several months to finish the installer… who am I to complain about lengthy software development?

WordPress Integration

Developer's Cave, Potential RPG No Comments »

If you’re reading this on the Dev Cave Dlog page, then I’ve managed to integrate WordPress blog entries into a page outside the realm of the WordPress install. The primary resource was the WordPress Codex article on The Loop plus API reference for the query_posts() function. The following snippet could (should) certainly be made into a common parameterized function.

Soapbox: Note that I prefer to write code that is readable, rather than jumping in and out of php tags, interspersed with BASIC-esque syntax (endif… geesh).

<?php
if (file_exists("../../blog"))
{
    require_once("../../blog/wp-config.php");
    define('WP_USE_THEMES', false);
    query_posts('cat=4&showposts=5');
    if (have_posts())
    {
        while (have_posts())
        {
            the_post();
            echo "<div class='section'><h1>";
            the_title();
            echo "</h1><p>";
            the_time('F j, Y g:i a');
            echo "</p><p>";
            the_content();
            echo "</p></div>";
        }
    }
    else
    {
        echo "<p>No Dev Posts</p>";
    }
}
?>