ID:121594
 
Keywords: byond, development, nifty
As I approach development of my first game outside of BYOND, it suddenly hit me that I was actually going to handle a lot of issues that BYOND naturally took care of for me. I'm not talking the obvious things like networking and graphics, I'm talking things like distribution, update handling, and user management.

Before I even started my project, my initials questions to myself were about distribution. How am I going to distribute my game? I'm obviously going to use my website, but are there other places I can advertise where I'll be able to net an exposure to at least 50 players? With BYOND, most people don't ask these questions. They should, but they don't. They already have the hub right in front of them, which automagically provides publicity through the listing (if it's in a state to be released) that will net them exposure to, let's say, at least 100 players a day.

I decided to fore-go completely answering my previous question for the time being as it wasn't absolutely essential, so I started thinking some more. How am I going to handle updates? Am I going to just post them on my website and mention that there's been a change in the places I used for distribution? But then, that's sort of inefficient, isn't it? Then it hit me: AHA! I can write a patch server to handle patching of all game files from version to version, then I can write a game launcher to poll the server and update! Like, y'know, a lot of games do. With BYOND, this isn't an issue. Updating your game is as simple as incrementing a version number in your code, the same version number on the website, and uploading the new files. Maybe posting a changelog somewhere, if you really want to. You don't actually have to worry about distributing updates because BYOND handles that for you.

The third issue I came up with was user management. BYOND already provides authentication services as well as identification services. If I want to do a propagating ban on someone, Dream Daemon's hostban tool is the best you're going to find. Someone may have ten or fifteen different keys that you're not even aware of and they're all tied together via the pager or BYOND's website for hostban to utilize. Additionally, you don't have to worry about user registration and integrating that with your software.

Long story short, BYOND provides some nifty services that a lot of us take for granted. Use them.
The problem is that while BYOND does provide you with these things, the features aren't always done the way you'd like them to be done. It's handy to have BYOND user accounts, but it's not ideal to tell people who aren't existing BYOND users, "before playing this game, go sign up for an account on this borderline legit gaming website."

The website (hub) and pager do a lot of handy things, but ultimately the game players will expect these things to be parts of the game, not parts of the software that was used to create the game.
True, these features aren't usually provided by the software used to produce the game. Off-hand, I can't think of an immediate way to circumvent that, but I imagine you can find a tricky DLL and dual .dmb setup that could manage it. Perhaps a separate world that you can package in with your game that 1.) Checks for a new version of the game with your own server, and if one exists it can 2.) Invoke a DLL to download the update and replace the old .dmb with the new one. then 3.) Start the game. This type of setup would really only be needed for single-player games, but then again that's also where the only problem with updating being wrapped in with the software that created it lies.

The BYOND user account thing isn't actually all that bad because you could just have them use the guest account and use your own authentication setup.
I'd just push the responsibility to the user. The game can have a link that opens the game's website. Players can check the website to see when a new version is posted. To make it a little more automated, you could grab the HTML from some web page, determine if a newer version is available, and alert the player if one is.

Having an old version isn't really a problem. Many of the problems that would come from users having different versions are avoided by having the program only run on the server - even if you and I had different versions of the same game we could still play together.
I'd also stress that the features provided by BYOND are only useful if you don't need to change them or if you can easily modify them.

Things you don't need to change:
The communication between client and server - there might be some things you'd like to change, but it's generally sufficient.
How the map control draws things - more display modes would be nice but the top-down and isometric displays are fine the way they are and don't need to be customized.

Things you can change:
The default movement system - it's split across many procs (Move, Enter, North, Entered, Exit, Exited, etc.) so you can easily change whatever parts you need to.

Things you can't change:
walk_to - it's nice to have built-in pathfinding but you can't change it. If you want to give each turf a cost and use the lowest cost paths, you'll have to write it all yourself.
hub scores - it's convenient to have scoreboards on a game's hub entry but there's no way to extend the features that we're given. If you want the scoreboard to work differently you have to make it yourself from scratch, even for very minor changes.

The first two categories are the features you should be thankful for, the last category is the "thanks, but no thanks" features. I'm not sure where all features would lie, but my hunch is that a few big ones are in the first category, very few are in the second category, and lots are in the last one.
Another issue that's been brought up recently that sort of goes along the lines of the software used to produce the game controlling the update issue is the community being so strongly tied to the BYOND software. What's your opinion on this matter?

Personally, I feel like the strong community ties to the software has both positives and negatives.

The negatives that I've identified are mainly distribution and marketing issues. The distribution issues generally aren't issues as it's been noted that Dream Maker has the Make EXE functionality that works pretty well for distributing your game independently of BYOND. As far as marketing is concerned, the influence of the community on the general opinion (that we've been able to observe) of the software has many people biased against BYOND because of its shady history.

As it is, the reputation of the community reflects on people's opinions of what the software can/can't do or what its primary purpose is because it consists of at least the majority (all?) of BYOND programmers and the community isn't well known to produce absolutely amazing products too frequently. With weaker/no ties to the community (separate pager?), the software still has to find a reputation but it isn't incredibly reliant on one community but instead a variety of them, so the productivity or lack there-of of any given community isn't as likely to affect the overall image of the software. Sort of like mutual funds, I suppose.

As for positives, I feel like there's more potential positives right now than observable positives. The observable positives are, for the most part, obvious.

This site is THE site for BYOND. As such, it contains the greatest concentration of knowledge relevant to DM. If the software didn't emphasize this connection with byond.com so much, this concentration of knowledge would be more broken up all over the internet in (probably) unequal distributions. With the concentrated mass of knowledge, it's easier for someone new to find help than it would be if there were a few hundred sites with groups of people that know DM.

Another observable positive for most people is the built-in user authentication and distribution systems. For a small time application/game that doesn't plan on expanding past BYOND's community, these features generally work well for them. While the audience that they're useful for isn't as wide as it could be if their functionality was more ideal (as noted before), they still serve as a positive for much of the current community.

The potential positives are more dependent upon the community itself. With a more expansive community, the software will benefit in at least two ways. The first way it would benefit is through the extra funding for the project available from a larger community. The second way is through direct community input to features/flaws of the software. With the size of community that we have, a fair amount of features/flaws are already conceived of or found. What if the community was twice as big? Three times as big? At some point the reported amount of features/flaws would level out, but it would appear to be overall beneficial.
It'd be important to be able to show people your game before they see anything BYOND-related. With the current distribution mechanisms it's possible to distribute an .exe that people can play without having to first install BYOND, visit byond.com, or even know what BYOND is. BYOND's website doesn't look that legit. A lot of stuff was put in place before there were many other sites, programs, or services like BYOND, but it just looks like a scam now. If someone had to go to byond.com and create a key just to play your game, it'd certainly have a negative effect on the game.

I haven't done any testing, but I have a feeling that many features would require the user to have BYOND installed. I'm not sure how well byond:// links are supported if you don't have BYOND installed. I figure they'd work if you click the byond:// link from inside DS (or use it in the link() proc), but not from a web browser, IM program, or something else. Also, I figure only IP/port links would work - I'd be surprised if byond://author.game##local worked without having BYOND installed because you wouldn't have a local hub to know what .dmb file "author.game" corresponds to.

Still, it's possible to distribute the game in a way that people can play it before visiting BYOND's website. If they play the game and enjoy it they'd be more willing to create an account so their high scores can be saved, or willing to install a program so they can play the game with others. As long as people can see your game first I'd expect they'd overlook some obvious problems with the rest of the BYOND community.

The second way is through direct community input to features/flaws of the software. With the size of community that we have, a fair amount of features/flaws are already conceived of or found. What if the community was twice as big? Three times as big? At some point the reported amount of features/flaws would level out, but it would appear to be overall beneficial.

The staff can't keep up with bugs reports and feature requests right now. Maybe with the extra funding they'd have extra time and would be able to keep up, but I wouldn't count on it. I do think it'd be beneficial to have a larger community whose distribution better reflects the world's gamer population (ex: less 12 year olds). The average BYOND user loves the pager because it lets them spam other people about becoming a GM in their rip. With a better community, the average BYOND user would hate the pager because it's awkward, redundant, and their firewall doesn't like it. It's not just that the BYOND staff would be getting more feedback, but that it'd be better too.