Skip navigation.
Home
Online Pen & Paper World

History of OPnPW

Below is the unedited version of my history of OPnPW. If you have any corrections or suggestions, please let me know. Click the title or "Read More" to view it.

A History of Online Pen and Paper World (OPnPW)

As a freshman in high school I was introduced to the Dungeons and Dragons role playing game, then currently the 3.0 edition before it was errata’d, expanded, and updates numerous times. As my group would meet infrequently and accomplished very little I eventually discovered an online program where D&D folks met by the name of ”DnD Online”, it had a thriving community and an online chat system to play games. It would be the spiritual grandfather to OPnPW.

http://web.archive.org/web/20011130012032/http://bar-com.com/

The Tools
The prior year I had begun my hobby of programming in a multimedia form of basic, but soon transitioned to Visual Basic 6. Many will denigrate Visual Basic, and I’m sure they have some right to. But I’ll say this, while Visual Basic isn’t as powerful or as flexible as C/C++, or as fast as ASM it was a solid easy to learn programming language and environment that was easily expandable. With API calls, DLLs, and a willingness to try VB6 never held me back. I always found a solution and always worked out what had to be done. I still smile to this day, when I can spot an application that a huge company uses in its day to day operations that was crafted in VB6. It was fast, easy to develop in and probably the best ever Rapid Application Development (RAD) platform. Side Note: Best Buy a fortune 50’s point of sale software is believed by me to be written in VB as in certain instances it will catch an error and recover but it’ll tell you what it was. The error? A common one programming error of referencing an object that no longer exists or wasn’t imitated; VB displays this as “Object with block not set” and the software will display the exact verbiage VB uses. Not concrete proof, but good enough for me.

Anyway, I used VB6 to develop all the software for OPnPW. I used PHP and JavaScript for the website, along with SQL and some C DLLs at various points. Different incarnations utilized different technologies.

Origin

As I had picked up D&D, and programming an event occured that would merge my two hobbies and take me on journey that would last years. Sometime in early 2003 (If anyone can nail down the date for me, It could have been late 2002) DnD Online went down, the central server was not up so the clients would no connect. The client was hard coded to this server and with it down, nobody could play. The AIM channels and forums exploded with chatter, as it had been down before and revived relatively quickly.. but this time the work came from the admin that the server would not be coming back up in any reasonable amount of time.

I Google’d (yea, I was using Google way back when) how to use Winsock and quickly created a demo chat program. It was crude and very rudimentary, along the lines of any example “Intro to Internet Programming” tutorial would yield but it showed that I could create a program to host online representations of table top gaming. Admittedly, not that hard: just text, dice, and some collaboration abilities. The biggest piece of software I will probably ever write, and the longest project I’ve ever undertaken was born in the shadow of DnD Online. I borrowed heavily from its setup, but arguably I utilized various conventions and ideas that were basically standard. At the core of either product, they could be replaced by then running instant messaging services such as AIM or ICQ, you just wouldn’t have the convenience of easily changeable rooms, dice, actions, et al. Point being, my software was just a refinement of several ideas and conventions.

Server Software

Over the course of OPnPW, I have written 3 distinct server software branches, and coincidentally about 3 software branches. Arguably only two were relevant.

The first server software I wrote I find almost laughably funny now. Anyone familiar with computers has seen what is known as a “Tree View”. The most prolific example of this is Window’s Explorer, which has the hard drive at the top of the “tree” and subsequent folders expanding down through the file system. The server application featured the same thing, although the root of the tree was the server itself, and each branch was a different room/game that players could be in. Within the rooms would be each player. So it could be Lobby>Brad, and then also “Player’s Game” with several players, just as one would see the Hard Drive, several folders, and subdirectories within these folders.

As an admin on the server computer, this would be a very helpful display. Except it wasn’t a display, the actual server worked with this tree to establish what room each individual was in, and when an individual left a room it would search through the tree, delete the old entry, and then add them in their new location. Utilizing the existing members of the tree to notify the appropriate people of this change. I was so naive and new to programming that I hadn’t mastered data types, collections (arrays) or any number of far better methods. However, quaint naivety aside, it worked and it allowed a community of friends and players to move from a dysfunctional site to a budding new one. While I wish I had the knowledge I have now, to start the community on a much stronger platform, I don’t regret it in the slightest. It kept a group of friends in touch, and games running.

The Dreaded Apostrophe

The second incarnation of the server revolved around an SQL database which was much better suited for this type of work. It would be easy to determine who was where, what messages should be routed to what rooms & persons, and to make changes. However its start was filled wish crashes; when I first ran the newest incarnation it ran beautifully on my computer, and even when I would have people connect to my development server it seemed fine. Regardless of its performance for me, it was plagued by a crash when in use by players. My memory could be fooling me here, but if I’m not mistaken the player who initially caused the problem, and at no fault to him, would be Solace (I would come to know him as Avi and consider him a good friend). At the time though, I wasn’t thrilled with his choice of name, which I believe was “Sol’ace” or something to that effect. It’s possible it was the game name he chose which may have been “Solace’s...”. If you’re a computer buff, you can probably already see the error a mile away, the apostrophe doomed the SQL server. Apostrophes terminate conditions within SQL statements, and I ended up quickly adding in needed server and client code to protect the SQL statements the server would work with. Luckily Bobby Tables never joined my community.

http://xkcd.com/327/

The final server version utilized an object orientated approach where in a “Game” was defined and had its properties, each Game could have players who had their own properties. A player moved from game to game in memory, and memory management created and allocated memory for new games and deleted old ones. It wasn’t perfect from the start, and probably isn’t at this point anyway. It was however solid and well suited to its application. It is a testament to the experience and abilities I picked up as I learned as I went.

Client

The client was built incrementally, with two major version and a third version that was a complete re-write that never took off. The bulk of OPnPW’s development occurred during my Junior year in high school, and OPnPW’s website was registering over a million hits a month. I’m fully aware of how small potatoes that is in the internet world, but to a kid in high school it was amazing. And on a budget that could have been funded by a mall fountain’s coins it was quite the achievement.

Most of the development was driven by users, often late into the night (prime development was 11pm - 3 am). I was often going to bed when I would notice the headlights of the newspaper delivery van driving down the street. Changes and features would be implemented quickly and sent out over aim, or a quick release on the website to the core users. Testing would be hammered away, and then it’d be rolled into the current release. It was an exhilarating experience, to cultivate and be a part of such a vibrant community at that point and to create software for people and to experience them using it immediately. I can’t articulate to people how much fun it was, or why I did it. It never made money, it isn’t even on my resume, and it is barely around today. But at that time, it was a center of activity for me.

Website & Forums

OPnPW itself was initially run off a Win2k computer that sat idling in the back of a friend’s parent’s computer shop where I helped out. The site itself utilized a free DNS server and visitors were literally hitting a DSL fed computer for both web services and the software. To our credit, the internet wasn’t nearly as big of a phenomenon, and we were ahead of the curve enough that this minor issue went relatively unnoticed. However, as it grew, and as a practicality we eventually moved the web services to shared hosting by Midphase and server hosting by a generous benefactor that I was put in touch with by our community. I would ICQ him the server software and he would make the change, he put up with me annoying him quite a bit and the community and I owe him a debt of gratitude.

The original forums were run using the YaBB software, which I would later right my own script to import the database in phpBB. From their I wrote yet another transitional software piece to move the site onto TikiWiki but it never took hold. Finally I wrote another piece of glue software to move the site onto Drupal, but would ultimately settle on using an existing piece of technology to ease the move. Both TikiWiki and Drupal were intended to make the community apart of the site, not just the forums. Arguably it was too late as the core community of OPnPW had grown up, and the lack of a full featured site would hamper OPnPW’s proliferation to new members.

Community

The community of OPnPW was always what drove me, a collection of friends and enemies that I sought to provide a place for. There were people I absolutely detested, but I wanted them on my forums and in my software because they started topics and threads and galvanized people together. There are folks who just always made me laugh, and people I really just wanted to impress. But really, there was a great group of friends, groups that communicated over the forums and through the software that really made it worthwhile. I didn’t know everyone, and I only participated in a fraction of the content, so it wasn’t as though I was fostering a “hang out” for my personal friends. I felt there was a need for these folks, to collaborate and it wasn’t being met. Through practice, trial and error, and sheer luck I did my best to bring them all together. I think it was a success, for three years OPnPW was respectably busy, as I moved onto College development slowed and ceased but it still hummed along. 7 years of activity later and it may be dead, but it will still host a game every now and then and I now it was a success in its heyday.

Had I been older at the start, or wiser I may have been able to make it a commercial success. Or lay the ground work to continue the success it had. But truly that was never the goal, there were just some folks who played games and discussed a common hobby and life online, and they needed a venue and I did my best to provide it.

Open Source / Continuation

People have asked me for OPnPW’s source before, and if I’m working on it and if they could have it so they could. I even tried to re-launch the .Net implementation of OPnPW as such, choosing a creative commons license I would have used but never did. To answer what I will do with OPnPW I will answer but explaining where I started again. I had the source code to the DnD Online client when it went down, in hindsight I should have just written a server application for it and everyone would have been happier. however, I did not have that level of skill, and it is quite a bit more difficult than starting over. I did not utilize any of its code, and it ended up being a far better product when i was done re-creating it.

That doesn’t explain why I won’t give OPnPW for someone to carry on with, being that it was free and I never intend to profit from it. The reason I won’t is this, I learned with a couple books and trial and error and created OPnPW on my own. It is crufty and ridden with fixes, re-writes, and huge blocks of code commented out or redone or repurposed. It works, I loved how it worked and don’t regret any of it but it is not a code base to work from. A prospective replacement to OPnPW would be far better to start on their own base and improve. To say nothing of the existing open source projects and commercial ventures that do what OPnPW did but better (some of which coexisted with OPnPW during its heyday). I would rather someone have the same experience I did growing with the software, than for someone to struggle to adapt my product into something competitive today. They’d be better for it, and their product better for it too.

End Game

Eventually I will shut OPnPW down, I will replace it’s domain with just this write up and maybe some links and anecdotes. At some point, I will stop paying for the domain and hosting services and it will cease to be. I would ask that those folks running OPnPW servers please discontinue it, but I wouldn’t force them to or mandate it. That point hasn’t come yet, but it isn’t far.

I love the facts and figures I can derive from my work, 10,000 lines of code, etc etc. But it has become meaningless now, years later. What I remember are the campaigns I ran on OPnPW, the ones I played in, and the games I saw others run. The friendships forged over the nascent internet, and the impact it had on my life and others.

If you’ve used OPnPW at any point you can contact me on aim, or get my personal (non-opnpw) email address from any number of persons. I would love nothing more than to hear what’s new, and maybe your experience with OPnPW.

If anyone can flesh out dates better than my recollection please let me know. If you’d like to add your own personal history then please let me know.

Thanks for everything.