Archive for the 'Developer's Cave' Category

Ripple Effect Subsides, Massive SLOC Drop

Developer's Cave, Potential RPG No Comments »

In software development, less is more. Clean, lean code is easier to debug and maintain. Designing the simplest solution is the trick. Whenever I design a software component, I tend to over-engineer it the first time through. This produces a solid, well-designed, hand-crafted unit of code, which is usually terribly complicated for its intended purpose. It’ll work well, but trying to explain it to someone else would be difficult. Some call that job security, but I’d prefer to find a more elegant design.

Read the rest of this entry »

Ripple Effect

Developer's Cave, Potential RPG No Comments »

It has been some time since my last post, but I have been far from idle. There have been no new (Alpha) releases lately, either. Despite seasonal distractions, all of my efforts have been focused on a renovation of the core content system. The software design is significantly better; but what does that mean to you, the player? Absolutely nothing! The next release should play exactly the same as the last one, albeit with a sleek new content model.

Read the rest of this entry »

Java Logging Abandoned

Developer's Cave, Potential RPG 8 Comments »

This article provides a use case that chronicles my experience with the Java Logging API, as used for my MMORPG platform. Software developers can take this article as a cautionary tale against code reuse zealotry. It is often advantageous to follow your own software design goals rather than force your design around an existing system.

Read the rest of this entry »

Java 6 Update 10: No Longer Just for Developers

Developer's Cave, Potential RPG No Comments »

Sun has released Java 6 Update 10, with the primary goal of improving end-user experience. Java is a wonderful programming language and runtime platform for developing many types of applications. Unfortunately, running a Java application can be a stumbling block for end users, which, in my opinion, has been holding Java back from reaching its full potential. This update promises many welcome improvements to the platform.

Attention Alpha Playtesters: I’ll be testing the new Java version soon, with the goal of officially updating the game’s base Java requirements to this version. Playtesters are encouraged to try the new update and report any issues/improvements.

In the rest of this article, I give my two cents on Sun’s approach to Java thus far, and examine a couple improvements I’ve been eagerly anticipating.

Read the rest of this entry »

MMORPG Security: Secret Chat Exploits

Developer's Cave 6 Comments »

Forgive the somewhat sensationalized title. This article does not describe any actual attacks on MMORPG chat systems (e.g., no World of Warcraft exploits). Nonetheless, there is good reason to believe that undisclosed chat exploits exist. This article explores the potential for exploiting MMORPG chat engines, based on related security vulnerabilities that are known to exist, which occur due to common software development practices. Anyone with experience in this matter is encouraged to comment, as there is a lack of community discussion on this subject.

Read the rest of this entry »

Login Security: Password Hashing Techniques

Developer's Cave 1 Comment »

In support of Cyber Security Awareness Month, this article is written as a tutorial on basic login security, including techniques to defend against potential vulnerabilities. I encourage anyone with a software security background to comment on this article. Although I have some years of software security experience, peer review is essential for building secure systems.

TIP: Any and all security techniques (including these) should be considered experimental until thoroughly reviewed by the security community.

Read the rest of this entry »

Static: The Dark Side of Design

Developer's Cave 3 Comments »

Students of software must be taught early the benefits of object oriented design, lest they succumb to the dark side of static programming. When designing a software component, the temptation can be to write globally accessible public static methods in lieu of instantiable objects. Even experienced developers must remain diligent to avoid being turned to this quicker, more seductive, approach. Read the rest of this entry »

Serialized Data Survivability

Developer's Cave, Potential RPG 1 Comment »

Serialized object data is inherently fragile. A change in one class effectively renders any serialized data that includes the class (even deep within the object graph) unusable. This article describes how I have (potentially) addressed this problem in my MMORPG platform. Read the rest of this entry »

Concealed Controller Pattern

Developer's Cave No Comments »

This article describes an interesting design pattern that I utilized in my Potential RPG code. The following describes the pattern in general and how I’ve used it in my code. Has anyone seen this pattern in the wild? Does it have any other common forms or names? Read the rest of this entry »

Software Versioning

Developer's Cave, Potential RPG 2 Comments »

I’m trying to settle on a sensible software versioning scheme for Potential RPG. The most familiar structure is X.Y.Z, which I’m calling Generation.Feature.Incremental.

The generation is the major version of the software. A feature release indicates the completion of a set of available features. Incremental releases may include bug fixes and enhancements, as well as new features that might not be fully integrated or ready for a feature release.

Incremental version numbers are treated as steps toward the next feature release. The test environment (including Alpha testing) should see all incremental releases. However, the production environment (when there is one) may skip some incremental releases, but should see all feature releases.

In practice, this versioning plan may be too linear. For example, a bug that affects the production environment may need to be fixed before any next release is ready. What is more, the latest incremental release may include features not ready for the production environment. Branching is the revision control mechanism that deals with this, which must be accounted for in the software development process and release management scheme. For Potential RPG, I will probably resort to a fourth patch level version, indicating something was fixed outside the mainline of development.

In addition to the software version number, I also include an edition (“Alpha3″), which is a marketing version name, the repository revision whence the product was built, and the build date/time.

Here’s a handy article on retrieving the Subversion revision from within your Ant build script. Anyone with further advice/insight into the exciting world of version management is encouraged to comment.