Jul 25
It’s old news that Java’s Swing GUI toolkit follows a deficient Model-View-Controller (MVC) architecture. In most cases, Swing fuses together the notion of the View and Controller, but offers a separate Model. At least, that’s what the naming convention implies. For example, JComboBox should be a View-Controller to a ComboBoxModel.
This particular case failed me today. Read the rest of this entry »
Jun 01
It has been nearly 2 entire weeks with no updates for the BetaAlpha playtesters, giving you plenty of time to ramp up your characters… before I dash them to the aether once again.
To let you know where I stand, I’m currently knee deep in (what is scheduled to be) the last major wave of gameplay integration. (This is a promising position, as I was neck deep about a week ago.)
More specifically, the items and inventory are [redacted] … on second thought, just wait and see. A BetaAlpha update is planned for later this week.
“Now… bring me that horizon.” — Jack Sparrow
Apr 22
Here’s a helpful method for returning the maximum of two Comparable objects.
Do the Java APIs provide this somewhere?
/**
* Return the <i>maximum</i> of the two arguments. If the arguments
* are <i>equal</i> (as defined by the Comparable contract), the
* <i>left-hand-side</i> argument is returned.
*/
public static <T extends Comparable> T max(T lhs, T rhs)
{
return rhs.compareTo(lhs) > 0 ? rhs : lhs;
}
Apr 08
Although my overarching guideline during this phase of development is to focus on gameplay and features, I decided it was necessary to revamp the network layer of the client-server platform. This was primarily a consolidation and cleanup effort, motivated by nagging session management issues, resulting from overly-complex code.
I have not yet seen the SLOC drop, but I’m expecting it to be significant.
The end result is a cleaner, simpler, more robust network layer. As a happy side effect, the streamlined threading model and byte management should theoretically improve overall efficiency. Alas, having not yet performed any detailed measurements on the previous network code, I will not know how much better the new routines are.
Although technically significant, Playtesters shouldn’t notice a thing (except for not being locked out of the server due to broken session logic). Then again, I could have introduced a whole host of new issues… Have at it!
Update: The SLOC drop is in. Roughly a couple thousand lines of code less, and all the better for it.
“Fortune favors the bold.” -Terence
Apr 02
Development has been steady (furious, actually). The latest updates have focused on graphical improvements. Avatars, creatures, terrain, and scenery elements have all been visually improved. Most of the terrain elements have been replaced with improved tiles. All creatures have been replaced and are now fully animated.
In addition, new capabilities have been added to the world rendering and avatar animation drivers. A new edge masking technique allows terrain tile interfaces to be dynamically rendered. Creatures now support a full death animation sequence.
A few significant bugs have also been fixed, and Playtesters will find it faster to progress (bigger rewards).
By they way, FaceBook fans of Potential Games have already seen a recent screenshot (albeit rather tiny). Also consider following Potential Games on Twitter for quick progress and status updates.
Mar 20
Potential RPG BetaAlpha edition (now at v0.8.2.3 and climbing) brings several improvements, including:
- Avatar animation overhaul
- Creature behavior enhancements
- Fog of War improvements
- Viewport drag control
- Avatar keyboard navigation
- Desktop system tray integration
- Several bug fixes and gameplay tweaks
Playtesters are encouraged to use the Playtesting forum to discuss the latest changes.
Mar 12
A peek at my commit log reveals a flurry of development regarding character avatar animations. I am in the process of improving the system to support fully animated sequences, which have only been partially handled in prior Alpha releases.
Read on for more details… Read the rest of this entry »
Feb 09
The cleanest way to close a Java GUI application is to dispose of all top-level resources (JFrame instances, for example) and allow the AWT/Swing thread to close itself. Calling System.exit(0) or Runtime.getRuntime().halt(0) is often prescribed, but not recommended, as it could preempt proper shutdown procedures in your application.
If your Java GUI application uses DISPOSE_ON_CLOSE mode, check that your process is exiting cleanly. If it is not, the most likely culprit is that the AWT Event Dispatch Thread is still active. This is well-known AWT/Swing behavior, but there is a scenario in which Java will refuse to shut down this thread, even with all resources closed and disposed.
Read the rest of this entry »
Feb 05
Potential Games is excited to announce the (not yet public) next major milestone release of our (name yet to be announced) Potential RPG. Development of the Potential Platform, our MMORPG client-server, database, and user interface engine, dominated the Alpha phase.
Potential RPG BetaAlpha, destined to become Beta, is the first (alpha) gameplay release directly targeting the final game design. BetaAlpha shall focus on gameplay enhancements, as well as any necessary improvements to the Potential Platform.
At this stage, Potential RPG remains a closed alpha game, for approved Alpha Playtesters only. The prospective roadmap:
Alpha (closed playtesting)
- BetaAlpha (closed playtesting)
- BetaBeta (controlled invitation playtesting)
- Beta (invitation/open playtesting)
- Public Release!
Jan 30
I updated my development platform to Java 1.6.0_18 and noticed a disturbing font alteration in all Java applications. I’m developing in Ubuntu 9.10, which currently bundles Java 1.6.0_15 (in the sun-java6-jdk package), so I manually installed the latest for testing.
I have yet (since yesterday) to investigate whether this is Ubuntu specific. Font configuration changes were noted in the Java 1.6.0_18 Release Notes, associated with a particular bug.
Preliminary investigation implies that Java’s attitude toward font consistency has changed over time. Early Java 1.3 Physical Fonts documentation makes clear that:
The SDK’s physical fonts offer … Consistent Look and Feel: Your applications will look the same on all platforms because they will be using the same fonts. This makes testing, deployment, and support easier in a cross-platform environment.
In contrast, a more recent bug submission was thoroughly thrashed for suggesting that fonts should remain consistent across platforms and versions. This seems to contradict one of the primary tenets of the Java platform: “Write once, run anywhere”
In the future, I’ll be looking into explicitly loading a specific font set, possibly by embedding custom fonts within my application.