How would you expect to ever make a professional looking RTS game if the selection box has to be tile-based? I honestly think it's ridiculous that we currently have to come up with tile-based workarounds for something as simple as a box.

I kind of like Tom's idea of there being a specific client-side notation for a mouse-drag triggered box. I assume that would be about as efficient as icons moving through frames or states. Perhaps this exception could be integrated as a kind of skin layout option for the map. Of course, this would probably be purely visual, so the actual detecting of mobs would be a whole other issue.

I think BYOND has put the cart before the horse by providing isometric view before draggable boxes even get properly implemented. So, BYOND developers have had to figure out workarounds to push the cart along, before they could even get started on a real RTS project, which is one of the reasons why so few exist.

BYOND practically hands you the RPG controls right from the start. All you do is create a mob, and boom, you can instantly move it around with the arrow keys. Things just aren't that easy when trying to make an RTS. You have to spend more than half of the development time just getting the interface to work, before you can even start testing the other functions with the controls. For RPGs, the arrow keys are the most basic interface function, but for RTSs, selection boxes are the most basic. That's why it would make sense to basically provide this function for developers right from the start.
In response to Multiverse7
Multiverse7 wrote:
How would you expect to ever make a professional looking RTS game if the selection box has to be tile-based?

Here's a professional looking RTS:



To make a game like that with BYOND, the part that concerns you most is how we'd create the selection boxes? Seriously?

BYOND games don't look professional and they don't need to. People will overlook these kinds of details to play a fun game. They play games with retro-looking graphics (and I don't just mean the BYOND games with retro graphics, there are lots of popular games) and they play BYOND games even though most only run at 10 frames per second. If you make an awesome RTS and the only bad thing about it is the tile-based selection boxes, I guarantee that people will still play it.

Things just aren't that easy when trying to make an RTS. You have to spend more than half of the development time just getting the interface to work, before you can even start testing the other functions with the controls.

BYOND provides what you're calling "RPG controls" because those are simple. BYOND doesn't provide controls for a platformer, board game, or racing game. You can easily create these features and provide them as a library. It'd be nice to be able to provide people with these features, but it doesn't have to be something that comes directly from the BYOND staff.
You are just giving excuses for why you shouldn't try and make a quality game in BYOND. Also, that picture is a bad example of what I call "professional". Just because a game has a classic retro look doesn't make it unprofessional at all. NEStalgia is a good example of this. It is a professional 8-bit game. Sure, the graphics may only be only 8-bits, but it is so well polished that it does exactly everything that an 8-bit RPG can do, and more. That is what makes it professional. It doesn't even matter if you have state-of-the-art 3D graphics; you could still be making a very unprofessional game, if it has a poorly designed interface, or lags a lot. Making a professional game is not about having fancy graphics, it's about having great gameplay, and complete interface designs.

What I'm trying to say is that the concept of "professional" is relative to the type and style of your game. If the interface of your style of game looks incomplete compared to eveything else about it, then it will be unprofessional. This is about how complete things are. You can make a complete sidescroller, or you can make a complete 3D racing game. It's all relative.

Now, to have a professional RTS, this requires that the interface look and feel complete when compared to other games of the genre, no matter the look or age. There should be no excuse for BYOND to not be capable of producing a globally professional game. People need to quit trying to just simply make BYOND games, and start making games that the world can recognize. BYOND should be able to make what people from outside of the BYOND community would be forced to call games in general. To say that you are making a "BYOND game" suggests that BYOND is a special or lesser platform when compared with normal or general games.

I'm saying that to have an RTS be recognized by those outside of BYOND as professional, it needs to stand up to the same level of quality as games made with other languages. To be professional, it needs to have a complete interface, and the selection box is the heart of that interface. Things won't go well for a game with a bad heart. To people outside BYOND, a tile-based selection box would be a glaring eyesore. In fact, as the popularity of such a game rose, it would actually have a detrimental effect on the popularity of the BYOND software. Potential developers would look at BYOND's inability to properly draw a simple selection box as a sign of weakness, and would be likely to avoid the language because of it.

Remember that I don't want to make a "BYOND game". I want to make a game with the BYOND software!
Multiverse7 wrote:
To people outside BYOND, a tile-based selection box would be a glaring eyesore.

You'd think it'd be an eyesore, but chances are people won't even notice - they'll be too busy playing the game. People overlook much bigger problems to play fun games. If you manage to make an awesome RTS and the tile-based selection boxes are the only problem, you're in pretty good shape.

In fact, as the popularity of such a game rose, it would actually have a detrimental effect on the popularity of the BYOND software. Potential developers would look at BYOND's inability to properly draw a simple selection box as a sign of weakness, and would be likely to avoid the language because of it.

The only reason this isn't ideal is because the drawing of the box has to be managed by the server. This isn't different from anything else - almost all actions are managed by the server. Potential developers will always look at BYOND's inability to process events on the client as a weakness because that's what it is - you're giving up that ability to simplify other things. Ideally you'd handle many things within the game client but that's not the model we're using.

If you're worried about BYOND's ability to draw a box on the screen, isn't it more frightening that things like movement and collisions aren't handled on the client? If the game lags while drawing the selection box it's not a big deal. If the game lags while you're fighting an enemy, you might fail to dodge an attack and take damage - that could affect the outcome of the battle.
Forum_account wrote:
If the game lags while drawing the selection box it's not a big deal.
You obviously don't have much experience playing RTS games. Try telling that to the massive army that's marching to crush your city, while all your troops are scattered here and there! If the selection box lags even a little each time you select, it could mean that by the time you gather your forces, the enemy will have demolished half of your city.

That's only part of the problem. In an RPG you have to worry about lag when attacking, but you don't have to worry about selecting anything. In an RTS however, you have to worry about lag from both the selecting part and the attacking part. You will want to spend most of the time giving move orders and attacking, often using more than one group at a time. You don't even have time to worry about the lag from the selecting part. You might still get lots of lag from ordering 20 mobs to attack at once. This would put the game underneath more than one layer of potential lag, which could be a really bad situation.

Basically, a selection box needs to take no time at all, and have no lag, because you already have to worry about lag from ordering around huge numbers of selected mobs. To make selection happen in no time, it needs to happen on the client's side. It's as simple as that.
Drawing the box on the client wouldn't make the selection happen any faster, it'd just eliminate lag in updating the graphical display of the box as you're dragging to select units. The time it takes to make a selection depends on how fast you can move your mouse and lag won't slow that down.
In response to Forum_account
Forum_account wrote:
You're still assuming the box needs to be pixel-based. It might look nicer but it's not necessary.

Yes, it is absolutely necessary. Please tell me how you intend to select just the red units, or do you think BYOND should only have RTS games where all units are 32x32?

Here's a professional looking RTS: [Screenshot of Starcraft 2]

Why did you even bother linking that? BYOND doesn't make 3D games, comparing it to a 3D RTS doesn't make any sense. If you wanted a more reasonable comparison you would have linked the first Starcraft which is within BYOND's technical capability to make and it's still used in professional tournaments.

As for the rest of your posts, you're just repeatedly saying we should be fine with making bad looking games which I think is a terrible mindset to have. I want to make great looking games which play well. I want BYOND to have more great looking games next to my own so people might think they're worth spending a little money on.
In response to SuperAntx
SuperAntx wrote:
Yes, it is absolutely necessary. Please tell me how you intend to select just the red units, or do you think BYOND should only have RTS games where all units are 32x32?

If the game has tile-based movement your grid is shown wrong. With a 16x16 grid, selecting the red mobs isn't an issue.

There will often be situations where a rectangle can't surround the exact set of mobs you want to select whether the selection box is tile-based or not. To select the units, you can:

1. Double click on any of the red units.
2. Press the number of the hotkey you've previously assigned the red units to.
3. Click and drag a box to select the red units and a blue unit, then shfit+click to remove the blue unit.
4. Click and drag a box around two of the red units then shift+click on the other red mob to add it to the selection.

As for the rest of your posts, you're just repeatedly saying we should be fine with making bad looking games which I think is a terrible mindset to have. I want to make great looking games which play well.

This is one small detail of a game. Tile-based selection boxes won't be the difference between making a "great looking game" and a "bad looking game".

BYOND's server-centric model greatly limits the types of visual effects you can create. If you're this unhappy about selection boxes, I'm not sure how you're okay with all the other lacking graphical features - it doesn't make sense. It sounds like you're just looking for an excuse to not make an RTS (kind of like how it's easier to give up on Decadence by saying that BYOND just can't handle it).
If you want to make a RTS game you can use the isometric mode to help with visual effects. I believe that is the closest way you would have a RTS'ish visual appeal.
Even if you could make it so that selection itself doesn't lag, that's no excuse for allowing the displayed box to lag behind while your mouse moves faster. If you try making pixel-based selections, then the lag will be even more noticeable. That would also often cause players to hesitate as the selection box appears to be "catching up" with their mouse. Another issue is that the messages sent to the server when drawing the graphical display, could cause a delay before the client gets a chance to send the actual selection information to the server.

If the selection box could be handled by the client, then it would solve 2 problems:
1. There would be no delay where the displayed box appears to "catch up" with the mouse.
2. There would be no need to have to use a tile-based box, as a pixel-based one would be just as fast.

I don't know why you want to argue against having the client handle drawing the box. If it's possible to allow the client to handle it, then I see no good reason why it shouldn't, because it would be the ideal method to use. I can't think of any other general function in BYOND that is more worthy of being handled by the client than this. The whole server should never need to know how your box display is getting processed. There are just too many reasons why the server shouldn't be processing how to display your box.

Anyway, this topic has been totally derailed from the original and it's obviously going nowhere, so I'm just going to wait until Tom decides on the best solution.
In response to Forum_account
Forum_account wrote:
With a 16x16 grid, selecting the red mobs isn't an issue.

That's kinda a terrible workaround as you're basically quadrupling the amount of tiles on screen just the handle smaller units.

As for your workarounds for drag selection, none of those are suitable. You're either doubling the number of inputs required or in the case of the first one selecting by group type rather than map location.


This is one small detail of a game.

It's one of the details the player is constantly interacting with. If 99% of an FPS game was great but the camera control on the right thumbstick was messed up, wouldn't that kinda ruin the whole game?


It sounds like you're just looking for an excuse to not make an RTS (kind of like how it's easier to give up on Decadence by saying that BYOND just can't handle it).

Oh, is that supposed to be a jab? I'm not working on Decadence right now because I'm making an even better, more professional-looking shooter.

PEW PEW
In response to Multiverse7
Multiverse7 wrote:
Even if you could make it so that selection itself doesn't lag, that's no excuse for allowing the displayed box to lag behind while your mouse moves faster.

That's just what latency is. When you click to issue a command to your units, there's the same lag before they carry out the action.

Many games show what units you've selected while you're dragging the box (so you know who'll be selected when you release the mouse button). With a client-side box there's no way to do this. This is probably more important than seeing the bounds of the box - how could you live without this?

Anyway, this topic has been totally derailed from the original and it's obviously going nowhere

Strangely, this thread contains both the idea that BYOND can make quality first-person shooters and the idea that BYOND can't handle drawing a rectangle on the screen. That's got to be a first!
LOL You just reiterated my point. That's very strange indeed. How is it that BYOND can do things insanely complex as this if you distort its reality enough, yet it can't even properly draw a pixel perfect selection box without lag? Has BYOND become the Twilight Zone?
In response to Forum_account
Forum_account wrote:
You should already be able to scale icons on the client with the icon.Scale() proc. The "problem" here is that the server has to tell the client where to draw the box.

No actually. The problem with using the icon functions for this is the risk of overflowing the resource cache, which would cause just about every connected dreamseeker to crash.
Sending the icon operations to the client rarely produces lag. Sending the icon itself, however, is a different and unrelated story.

The idea was to use client-side hardware to transform the quad displaying the atom's icon, which is why the discussion about this referenced to atom.transformation rather than icon.transformation.

Anyhow, with Gakumerasara's Vengeance 56, Gakumerasara found that his raycaster could not work with BYOND's standard client-server networking model. As a result, he set up his own networking via world.Topic(), but the big problem here is that world.Topic() tends to be unreliable.

So there are two bottlenecks that ruined performance with Vengeance 56 and future first-person-shooters on BYOND:
1. Poor client-side drawing capability. Based upon what was discussed, atom.transformation would resolve this and might make games like Vengeance 56 possible with BYOND's standard networking.
2. Poor world-world networking reliability. world.Topic() tends to be unreliable; I have never seen <200ms ping times with world.Topic() and the ping times frequently spike above 1000ms.
Page: 1 2 3