Stop, BYOND! Before we move forward, let's analyze one issue that truly defines why BYOND games tend to play terribly. This is not an issue for all games, but it's an issue for most. It's an issue that plagues BYOND. To me, it's the most important issue we could ever fix at this time.
First off, I will clarify that I am not belittling the fact that fixing bugs is very important. However, with every update comes a new feature or modification. Here's something that should really be looked into.
"BYOND is 100% free, and is excellent"
-- Richard Bartle, father of the MUD.
You still see this quote on the "Get Started" page on the BYOND site. I will admit, the first time I saw that quote it actually made me more interested. I actually had no idea what MUD was. The quote and how they called him the father of it made it sound good though. For those of you who don't know, MUD stands for Multi-User-Dungeon. MUD games generally come in games completely represented by text, however they can be graphical. Deadron's Step BYOND demo is a good example of a simple graphical MUD.
MUDs are fairly simple games. They can call for text commands, clicking commands, macro commands, but there usually isn't too much action involved in them. Most of the game would be going through the dungeon and trying to solve the problems that are before you in order to continue, which would be done using those simple commands. BYOND is great for MUDs, and that's a good reason as to why that quote is there. The problem though, is that most BYOND games aren't MUDs. In fact, MUDs are in such a minority that they're hardly even noticable anymore. The majority of BYOND games are action-oriented. This is why the problem with repeat is, in my opinion, the biggest problem right now. BYOND Action, BYOND Anime, and BYOND RPG all have games in them that require the use of a smooth and easy-to-use movement system, as well as the use of multiple macros at once in order to perform certain taskes e.g. jumping while running in a sidescroller.
So, you may now be asking what the problem is exactly. You might even be asking me what exactly I really mean by "repeat". If you open up a Dream Maker environment, you can make an Interface file. When you go into that interface file, you see a section at the top for macros. When you make a new macro, you get the choice of checking the repeat box or not. What checking the repeat box does is it allows for the key pressed to repeat as long as it's pressed. Sounds like a good idea, right? Well, the way BYOND does it is why it's such a failure and such an important issue.
DarkCampainger clarified in my last post that it's not actually BYOND's repeat system. They simply use Window's default key repeat system. This sounds like an easy work-around, but this is a work-around that has jeopardized the majority of BYOND games.
There are multiple problems caused in BYOND games due to the use of the default Windows key repeat system:
1. Movement starts and stops are not as smooth. The start is the most noticable in that you move once, then it pauses for a moment before you being moving again and fully repeat properly. Just hold down a letter on your keyboard into the comment box or something and see this occurance at work. Stops are a little less noticable, but when you use while() loops for movement instead of the default Windows repeat system, you notice that you actually stop where you intend to stop. There's less of a need to actually time out how many tiles you move by tapping the key that many times. That was a huge issue in my old Megaman game which used the default key repeat. You'd actually have to figure out how many spaces were in front of you and tap the key that many times to move there. If you tried to hold the key down and decide to let go at what you thought was the right time, you were usually wrong and fell into the spike pit below. In my more revised version of my Megaman game in which I used while() looped movement instead, both of these issues were non-existant.
2. If you're using the repeat for everything, you can't use two keys at once. This was another issue that was very evident in my old Megaman game. If you were running and had to jump, you couldn't keep moving forward after you hit the jump key. The movement's repeat would stop, and it would start the jump verb. The same happened with shooting. You couldn't shoot while moving. How we worked around jumping was by stopping first, then jumping, then moving again. For shooting you would either just have to stop and shoot like a maniac, or you could press the shoot and arrow keys simultaniously. You can see that this so-called Megaman game played nothing like a Megaman game. Reason being: I wasn't knowledgable enough to program loops into everything so I used the default key repeat. Again, with my revised Megaman game using loop movement, both of these problems were also non-existant.
There are many other problems and off-shoots of these problems that come about due to using the default windows key repeat system. Just as an example in order to show the seriousness of this issue, I've taken my original Zelda pixel movement demo and taken out all of the loops. It has the exact same movement, only the verbs now use the default key repeat instead of a loop. You'll notice how dramatic of a difference there is between them. The one with repeat is hardly tolerable enough to play, yet we at BYOND deal with it in most of the games we play more or less.
Original Zelda: Link's Awakening Demo
Zelda: Link's Awakening Demo Using Repeat
The movement is exactly the same in both of these besides the fact that I didn't use while() loops for movement in the repeat one, I used the default key repeat. You can see for yourself the results of the failure of using the Windows key repeat in a game for movement.
In conclusion, something desperately needs to be done about this problem. The Windows key repeat system is -not- meant to be used in a game. It's meant to be used for typing. When you type a letter, you wouldn't want it automatically repeating if you didn't take your finger off of it fast enough. That's why the pause is there. You'll also notice that when you type and hold down a letter, then switch to another letter while holding down the original, then let go of the second letter, the first one doesn't start typing again. You can't type two keys at once. If you press two keys at once, one goes after the other. You can't hold two keys at once either. I hope that this is seen, and I desperately hope that this problem is addressed. Not everybody can make everything into a loop in their games, and most don't. This is why BYOND games generally seem like trash to outsiders and even to some of us here. Fixing the repeat to be a repeat actually meant for games without all of the issues of the current one, one that acts as if you programmed all of the verbs with loops, would cause every single game on BYOND to increase in quality so dramatically that they wouldn't be labeled as BYOND games anymore, they'd simply be games - a lot of them then decent ones at that.
1
2
SuperAntx's Macro Move lib is an excellent example of the while() loop movement system I'm talking about. You just uncheck the repeat box, then use the while() loop in the movement verb with everything under it deciding what you do in the movement. Then you make a verb that causes that loop to break when you let go of the key. What he's doing is basically exactly what I did in my revised Megaman game and also my Zelda pixel movement.
|
Fugsnarf wrote:
SuperAntx's Macro Move lib is an excellent example of the while() loop movement system I'm talking about. You just uncheck the repeat box, then use the while() loop in the movement verb with everything under it deciding what you do in the movement. Then you make a verb that causes that loop to break when you let go of the key. What he's doing is basically exactly what I did in my revised Megaman game and also my Zelda pixel movement. Your version is much more smooth than that demo. Instead of taking a step do you shift the icon in the direction until it wraps to the next tile, and then you relocate the mob? |
It's the same concept. The only reason my Zelda demo is smoother is because it runs on a pixelized movement engine. Naturally it'll be smoother. Regardless, the difference between default repeating BYOND tile movement, and while() looped BYOND tile movement is still just as amazing when compared side by side.
|
Fugsnarf wrote:
Before we move forward, let's analyze one issue that truly defines why BYOND games tend to play terribly. No, the one issue that truly defines BYOND is the lack of people who know the first thing about coding/game design. The issue you bring up here is incredibly minor. Some people can't get it through their heads that BYOND is great for certain types of games, and not so great for others. BYOND is a tile-based game creation system. Expecting BYOND create flawless "pixel movement" games is just as pointless as expecting it to render 3D. |
I concur, SuperAntx introduced me to something that I would no longer consider going without in any of my attempts to create a game. It makes it much easier to move around without all the frantic button mashing.
|
Cody123100 wrote:
I concur, SuperAntx introduced me to something that I would no longer consider going without in any of my attempts to create a game. It makes it much easier to move around without all the frantic button mashing. This is a great point. That "frantic button mashing" is a part of any game using the default key repeat. Whether that game is a MUD or an FPS, it's all the same. |
Well, I dis-agree. I feel as-though the repeat system is good for certain games because I've actually added that one second delay to a pixel movement system that I scripted which didn't use the repeat system at all; just for more dynamic movement.
Also, the repeat system doesn't need to be changed because creating your own is a very simple thing and honestly if you can't do that then odds are you won't make a non-rip game worth playing to begin with. |
Judging from the nays I'm guessing this article hit a little too close to home for some lazy developers. It's a shame.
Back when BYOND's Wikipedia entry was up for deletion I was looking anywhere I could for notable references. I happened to send Richard Bartle an email about his quote, here's what he had to say. "I did say that, but I didn't JUST say that. What I said was: 'BYOND is 100% free, and is excellent - if you don't mind having a 2D world rather than a 3D one.' The quote on the BYOND home page is rather selective in that regard... Here's where I said it: http://terranova.blogs.com/terra_nova/2005/12/ make_your_own_v.html" I actually have a small update for Macro Move ready to go, I just need to get my hands on a properly animated player icon with diagonal movement states. I feel a blue ball is a little too abstract for the people who could actually learn something from the demo. Suicide Shifter, the Zelda movement demo is basically Macro Move + pixel movement. Fugsnarf has combined a front end (loop movement) with a back end (pixel movement) and possibly a lower tick_lag. It's a very neat effect which should be catching on soon once we get some awesome "next gen" BYOND games released with proper interfaces. |
I look at it like this: in one of the recent updates we tweaked the networking by disabling Nagle's algorithm, and it seems to have noticeably improved a lot of games. If we could do tweak the movement system in the manner outlined here (which I don't fully understand at this hour), it'd be similar. Not the most important thing on BYOND (that would be building and promoting good games), but certainly a win.
|
If you ask me, one of the biggest problems with BYOND is that it is only geared towards making specific types of games.
Mainly slower paced games, such as RPGs, puzzle games and so on. It's not that it cannot make fast paced action games. It is just that it is terrible at it, and any other program would be a better (and in most cases easier) alternative. Part of the issue is how BYOND handles key presses. But so is the low frame rate limit (which can be increased in single player games only) and how it queues commands (and probably other stuff I am not aware of). http://www.byond.com/members/TheMagicMan/files/gamegm.rar Here is an example of something I made in Game Maker, in a few hours. (Press F1 for controls) It was fairly easy to do. But the results are excellent, very smooth gameplay. Something BYOND could never achieve. (Given another few hours this could be multiplayer) For me this is one of the things I think is holding BYOND back. It is highly limited in the types of games it can make, and even the best work arounds do not produce good results. Then again, I just want to make a multiplayer beat'em up but don't want to use something like Game Maker. |
Honestly, it's not that big of a deal...
I could go into paragraphs and paragraphs as to why, but that would bore the reader to tears. It is most definitely not the be all and end all of the system like you make it out to be, and if all anyone has to whine about is "the movement is bad", then BYOND is having a good day... |
Fugsnarf wrote:
SilkWizard wrote: When I first came to BYOND I didn't play a game and think, "Wow, this movement system sucks." I thought, "Wow, this game play sucks." I never even noticed this until it was pointed out in your last post. I use the number pad to move, if I want to go diagonally I just hit one of the diagonal buttons. Then a small delay from after the first step is really nothing too major. If you have a good game, using BYOND's movement isn't going to turn people from it. If you have a crap game, using a while loop for movement isn't going to make people like it. Maybe we should focus on the actual game play itself, before we move on to features that just add a more polished effect. There are plenty of the older BYOND games that are kick ass and use the the old crappy interfaces, but I would rather play them than a newer crappy game with a good interface. It's all about game play, the other things are good to make your game look better, but you have to have an actual game to start with. |
MUDs are fairly simple games. They can call for text commands, clicking commands, macro commands, but there usually isn't too much action involved in them. Most of the game would be going through the dungeon and trying to solve the problems that are before you in order to continue, which would be done using those simple commands. I think you're confusing text MUDs with text adventures. And actually, there are a fair amount of text-adventures (and when I say text-adventures, I mean purely single-player, story/plot driven games) that are very actiony. Most MUDs you will find are very hack-and-slash games. Some are very complex, too. I remember one in particular that involved a very huge post-nuclear world where almost all of the content was player-driven, and the players were building cities and economies. But in general, you will see MUDs where the primary goal is to kill stuff, level up, get cool gear, do quests, team up and kill bosses, and then to kill stuff and level up again (kinda like most RPG hack-and-slash games). Give or take some systems that allow for some variation, like crafting or medicine or whatever. Please continue with the arguments though, and ignore this. edit: In fact, MUDs are in such a minority that they're hardly even noticable anymore. MUDs like Aardwolf and ZombieMUD average over 300 players daily. That's only 2 examples. Almost all of the MUDs developed by Iron Realms have over 100 at any given time. The MUD I'm currently playing, HellMOO (has a lot of very graphic and mature content executed in very immature ways. and half of the players have no problem griefing newbies. please avoid), has over 80 players a day. Just thought I'd point that out. |
SilkWizard wrote:
I haven't seen a single Anime game on BYOND that regulates movement, yet that community makes up 95% of the player base. Read his last post, or try and catch our next open test. |
Pmitch wrote:
Read his last post, or try and catch our next open test. I haven't followed DBOII but I admit that the hype has piqued my curiousity. I'll definitely check it out if I see it online. |
Tom wrote:
I look at it like this: in one of the recent updates we tweaked the networking by disabling Nagle's algorithm, and it seems to have noticeably improved a lot of games. If we could do tweak the movement system in the manner outlined here (which I don't fully understand at this hour), it'd be similar. Not the most important thing on BYOND (that would be building and promoting good games), but certainly a win. No, you're obviously supposed to conjure some good developers. So, get Lummox started on the rituals, set up some trading service with the devil for those willing to trade their soul for mad coder skillz. Just make sure you don't make any improvements to how the system works, that's idiotic! While Silk has a point about the community his talk about improving controls not being worthwhile makes me laugh. There isn't much more infuriating than messing up on or losing a game because the controls fail to do what you expect them to. I understand how Silk can hold this opinion, he neglects to create a fluid control scheme himself. One of the biggest issues with NEStalgia is its inconsistent control scheme--maybe they fixed it up a bit since I last played though. |
I agree with Fugsnarf on this one. BYOND would definitely benefit from this. Hopefully something can be changed in the near future.
Off Topic: Was I the only one to stop reading after comment #5? |
I must say I'm with Fugsnarf on this one. I've personally noticed this myself in a few projects I've done, but haven't been able to think up of a feasible way to work around it until you mentioned a while() loop. I guess until BYOND hits this nail on the head I'll just have to make do, eh?
PS. Great story guys! I read all 57 comments before posting this! When's the sequel coming out? |
1
2
We've made many attempts to improve the key response, but it is a little bit tricky since the actions take place client-side but the movement handling is all-server side. Sometimes there is a delay so we have to do some buffering. There may be an obvious solution that we simply haven't considered.