ID:132272
 
I just read the latest news, which seemed to somehow imply that BYOND will have pixel-based movement at some point.

Now, I have to say I actually like this. BYOND has so far been an engine only for people without much programming expertise, and the engine's limitations have made it a bad choice for any serious projects. Sure, it's easy to kickstart a project on BYOND, but once you get past a certain point, you'll regret it.

The more of these limitations are removed, the more viable BYOND will become as an engine to create more serious projects with. So pixel-based movement seems good, in theory anyway.

The thing is, I'd argue that it's rather useless without client-side scripting. When doing pixel-based movement, the grid becomes too fine-grained and having to wait 0.3 seconds to see if you positioned your character correctly, or one pixel too far to the left, will be an annoyance.

In other words, pixel-based movement requires the client to maintain a separate state from the server, and process player input immediately, before checking with the server later. This can only be done robustly with client-side scripting.

I guess my question here is: Is BYOND really trying to move into a direction where it can be used by professional game designers? Or is this just another of those features that can be used to do some basic stuff that looks fancy, but that will hit hard boundaries when trying to do anything advanced with it?
CIB wrote:
Is BYOND really trying to move into a direction where it can be used by professional game designers?

No, not really.

BYOND is for hobbyists and inexperienced developers. If you wanted to become a professional you would have to move on to something like C++.
In response to SuperAntx
SuperAntx wrote:
BYOND is for hobbyists and inexperienced developers. If you wanted to become a professional you would have to move on to something like C++.

I should be careful with my phrasings. When I say "professional", I don't mean "paid", I mean "taken seriously". There are a lot of awesome games on BYOND that are made by hobbyists and still suffer from its limitations.

There are quite a few people who would like to put their soul into a game and create something outstanding, but couldn't be bothered to program an engine of their own in C++. Currently, there is not a lot for these people, but BYOND could very well go in this direction.

Also, I don't want to argue that it *should* go in this direction. If it doesn't, that's fine by me. All I want to know is what I can expect of BYOND in the future.
In response to CIB
CIB wrote:
> There are quite a few people who would like to put their soul into a game and create something outstanding, but couldn't be bothered to program an engine of their own in C++.

You don't really need much time to get engine running which could draw 2D objects and have networking.

Edit:
Making interface probably would be hardest, but it can be skipped as it can be done with on-screen objects.
In response to Zaoshi
Zaoshi wrote:
You don't really need much time to get engine running which could draw 2D objects and have networking.

In my case, it took years to learn all these things(in my free time, as a hobby, mind you), from setting up a compiler and learning about pointers, to understanding how rendering works and how one can write a software renderer with acceptable CPU consumption.

People who make games aren't all freaks for the intrinsics of technology, or amateurs who don't know the first thing about programming exclusively. There's also an inbetween.
In response to CIB
> In my case, it took years to learn all these things(in my free time, as a hobby, mind you), from setting up a compiler

I guess it's hard to start with GNU compiler, however Microsoft's Visual Studio is mostly pre-set, you just write code, press compile and it's done.


> learning about pointers

A lot people in BYOND had to deal with references, it's quite similar to pointers in C++


> to understanding how rendering works

It's not so easy to start, but there are tutorials which explain everything


> and how one can write a software renderer with acceptable CPU consumption.

CPU fallback isn't necessary, CPU isn't made for rendering so it's going to be really slow (main reason why BYOND is slow)


> People who make games aren't all freaks for the intrinsics of technology, or amateurs who don't know the first thing about programming exclusively. There's also an inbetween.

I agree, but BYOND isn't full of noobs either. There are people who can help out with design or even code. There's also plenty of other forums to find help.




If I knew someone would really use it, possibly I'd bother with it. However most likely people will want it to be visible on hub, which isn't really possible. Not to mention it's so little code it's not even worth to be called engine.
CIB wrote:
I guess my question here is: Is BYOND really trying to move into a direction where it can be used by professional game designers? Or is this just another of those features that can be used to do some basic stuff that looks fancy, but that will hit hard boundaries when trying to do anything advanced with it?

Unless we get massive growth and the finances to rewrite a large chunk of the software, the kind of client-side optimizations you want most likely wont happen. They are simply too difficult to mesh with the flexible server-side model. We may be able to do little things to improve performance, though.

That said, I do think that by moving to a tick of 20-40FPS (something we could even up by default), the pixel-based movement will look fine, or at a minimum be a big improvement over the current model (even moving to a resolution of 8 or 16 pixels on a 32x32 grid would improve things). You can see this already with the soft-coded libraries and we should be able to eek out performance gains over those.

Also, I'm not sure what you mean by "professional" game designers, but BYOND games are certainly capable of making money, even large amounts of money. The key there is to come up with an innovative concept and get some exposure. A game doesn't have to have fancy graphics or a complex interface to be financially successful. Puzzle games like Tetris and Bejeweled are timeless. A lot of modern games like Farmville and various Civ-clones can be done perfectly fine in BYOND. Even a game like Angry Birds, which relies on pixel-precision, could probably be done reasonably well.

Currently there is a void on the Internet for casual multiplayer games, and this is coincidentally what BYOND does best. I have no doubt that, given some creativity and marketing know-how, someone could produce a very lucrative hit using this system.
In response to Tom
Tom wrote:
You can see this already with the soft-coded libraries and we should be able to eek out performance gains over those.

I tried the softcode-library and I can see I've been in the wrong. With a 100ms ping it feels very natural. I suppose the problem here is not so much networking, as it is slow server reactions due to a heavy CPU load.

Also, I'm not sure what you mean by "professional" game designers, but BYOND games are certainly capable of making money, even large amounts of money. The key there is to come up with an innovative concept

I think this is where I'm a little disappointed with BYOND. I agree that there's a wide range of games that can be done easily with BYOND, but when it comes to innovation, the designer is very restricted.

Space Station 13 is one of those games that achieved popularity not through being graphically appealing, but by being innovative. At the same time, there are several restrictions with BYOND that make the implementation of the game rather messy. If someone were to start a project that goes into this direction of gameplay, they'd currently be better advised not to use BYOND.

Currently there is a void on the Internet for casual multiplayer games, and this is coincidentally what BYOND does best. I have no doubt that, given some creativity and marketing know-how, someone could produce a very lucrative hit using this system.

This may be true, and I didn't create this thread to argue about it. If the BYOND devs want to focus on making the engine suitable for creating casual games, I have no problem with that.
In response to CIB
CIB wrote:
I think this is where I'm a little disappointed with BYOND. I agree that there's a wide range of games that can be done easily with BYOND, but when it comes to innovation, the designer is very restricted.

Space Station 13 is one of those games that achieved popularity not through being graphically appealing, but by being innovative. At the same time, there are several restrictions with BYOND that make the implementation of the game rather messy. If someone were to start a project that goes into this direction of gameplay, they'd currently be better advised not to use BYOND.

What kind of restrictions and implementation issues are you referring to here?

If the BYOND devs want to focus on making the engine suitable for creating casual games, I have no problem with that.

I'm not necessarily talking about puzzle or board games here, but more-or-less games that don't rely on their graphics or the user's twitch response. Both of these things require real client-side processing and BYOND simply isn't designed that way.
In response to CIB
CIB wrote:
I think this is where I'm a little disappointed with BYOND. I agree that there's a wide range of games that can be done easily with BYOND, but when it comes to innovation, the designer is very restricted.

Woah there Hoss, slow down. I have no doubt that DM would be almost as powerful as C++ or other big languages like that if It were just more powerful and process efficient. Innovation doesn't come from the program itself, but the programmer. If you lack the innovation to make something new, then nothing new will be made. Innovation is the one thing that will never be drug down because of the software limitations.

As with your entire argument however, everyone would love to see BYOND's capabilities soar even higher, but as Tom said, they don't really have the resources to rewrite the program right now. Maybe one day in the future, it will be possible, but for now, I'm fully content with it's abilities as is. Maybe when I get a job, I'll start becoming a benefactor for a more powerful and advanced BYOND Engine.
I'm still on my first BYOND project, but I believe that BYOND has all the tools that I need to do it. The one thing that bothers me is the inability to do some heavy duty icon processing client side (although I still haven't looked into that issue deeply), but in the worst case, I have ideas to work around that limitation.

I considered several options for implementing this project, and although I know C++ well, I lack the knowledge to do network processing and I lack the resources (time and energy) to learn. Simply put, BYOND seemed to be ideal, for what I am trying to do.

If BYOND could be written to have the flexibility of C++, it requires more advanced skill to use those features. At some point, you might as well be using C++.
In response to Tom
Tom wrote:
What kind of restrictions and implementation issues are you referring to here?

The biggest issue is probably the speed of the language. I can't be sure, but I think DM is a relatively slow high-level language even compared to e.g. python. Furthermore, it is very difficult to write an extension in C. Yes, it's possible, but since the object API isn't exposed you end up converting all your data to strings and back(and since these strings have to be assembled and disassembled in DM, you are stuck with a lot of extra overhead).

Thinking about it, it may be that if one of the former issues were resolved, there wouldn't be many problems anymore. The game is very unresponsive when it comes to the interface, which I liked to blame on BYOND, but if the CPU load weren't as heavy, this may be a lot better.

I'm not necessarily talking about puzzle or board games here, but more-or-less games that don't rely on their graphics or the user's twitch response. Both of these things require real client-side processing and BYOND simply isn't designed that way.

Curious, that sounds about the direction that I'm interested in. Though I believe that BYOND isn't exactly incapable of these two things, either.


I think BYOND's solution to real-time games is pretty good. Yes, a lot of online games depend on extrapolation to make things seem more responsive, but as long as the image the player sees isn't in sync with other players, he still won't be able to make the right decision in a PvP environment.

That said, I'm still somewhat baffled at the responsiveness I witnessed when testing the pixel-movement softcode. I have some experience with key-based menus that were implemented on the map screen. They usually were so slow to respond that if you knew what you were doing, you could make your selection without the cursor updating even once. With an input-delay like that, PvP play would very quickly turn into guess-work.


In regards to graphics and client-side processing.. I think as long as the ping is decent, there's no real scripting required here. For most cases, a selection of visual tools like flick() or missile() would be enough, though an ability to queqe these actions with a possible delay would be very helpful. For instance, one might want to define "display this number icon, after 1 second flick the green icon state, after 2 seconds flick the blue one". Would this be very hard to do with the current server model?
Two issues I see in this thread:

1. C++ isn't the only other game development option. I'm not sure why people are so quick to mention it, but there are more logical options for comparing BYOND. Flash is probably the best choice for comparisons.

2. BYOND games may never wow audiences with their awesome graphics, but some amount of glitz is necessary even if it doesn't affect the gameplay. Since all visual effects have to be handled by the server you are severely limited in what can be done. I wouldn't call Terraria a glitzy game by modern standards but it has a lot of visual effects that'd be tough for BYOND to handle.

In other words, pixel-based movement requires the client to maintain a separate state from the server, and process player input immediately, before checking with the server later. This can only be done robustly with client-side scripting.

Client-side processing isn't an "all or nothing" thing. Even aside from the obvious/mandatory things like graphics output and keyboard input, BYOND has a bit of client-side processing (opacity, the flick proc, some interface events, etc.). It seems like a safe bet that things like player movement will always have to run things by the server first, but that doesn't mean we can't expand on the support for client-side processing in meaningful ways.
In response to Forum_account
Forum_account wrote:
> Flash is probably the best choice for comparisons.

Flash is slow on it's own too. Yes there are some semi-3D games which run lag-free, but there's also very simple 2D games which lag badly.