ID:92391
 
Redundant
Applies to:DM Language
Status: Redundant

This feature has already been implemented, or is already achievable with existing methods.
Say if I had five kills shown on a hub's scoreboard. In-game I score another kill, totaling six kills.

Couldn't there be a way to just add the one kill to the five already on the scoreboard rather than downloading the score, altering it, then uploading the new score?

It would not only cut down on bandwidth usage, it would also make stat tracking in general much easier.
I strongly agree.
Back when I was working on my game, I had a scoreboard for kills per player (it's still there), and every time I wanted to update the scores (and, since I liked live stats, I updated them every few kills), I had to pull info down, and re-up it. On top of that, when using the example in the reference, sometimes when I would pull the score down, it'd end up null, so I effectively just reset the score on accident. Whoops.
The scoreboards could use a lot of improvements. I included some suggestions in a blog post a while back.

It would be nice to be able to define the score on the hub entry as being a "count", "minimum", or "maximum". Then when you set the score to "3", it will either: add 3 to the current value, set the value to 3 if the current score is higher, or set the score to 3 if the current score is lower. This way you could easily have scores like "total kills" and a record for "kills per round" and the logic is all handled by the server.

Scoreboards could definitely use the staff's attention.
Somewhat similar to what DT mentioned, suppose a player is on two servers at once. If there's any period of time between pulling down the score and uploading a new one, it's possible to have conflicting results with each server overriding the other rather than calculating the cumulative score.

Forum_account, I like what you suggested but I think it can be expanded a little. When editing the hub page, for each score we should be able to set a minimum and maximum like you said. Rather than flagging each score as "count" we should instead send information on how to calculate the new score along with the score itself.

ie: Sending "3" and "+" will add 3 to the current score. Sending "2" and "*" will multiply the current score by 2.
I'm not sure what the best general solution is. Are there really that many cases where you'd want to multiply the current score by the new number?

What I meant about maximum and minimum is not that you'd set a max or min but that the score would be a max or min. The "most kills in a single round" score would be a "maximum". If the current value is 10 and you try to write "7" to that score it will remain 10 - the scoreboard only keeps the maximum value you've written to it. Having the score be a "count" type would behave like what you describe by sending "3" and "+" except the "+" is assumed.

Having some slightly configurable server-side logic (where the server is the hub, not the game's server) would help with the case you and DT are talking about. If you tell the server "add this to the current score" it doesn't matter if you're in two games at once.
It may seem like there isn't much use for having multiplication, division, and so on, but if the scoreboard is to be updated it should be done so in a way which provides future developers with the tools they need to pull off whatever we aren't able imagine right now.

Sending scores along with a mathematical symbol meets the requirements for both of our ideas of what hub-side score calculations should do. If only a score is sent without a method of calculation it should revert to the current action of just replacing the score.

The main difference between the two methods is having the game determine how the score should be calculated is more flexible. Having more methods of calculation gives developers more options.
I don't expect that a nice interface for handling scores will ever be created. The best possible option is a user-created library to handle the messy details. We'd still need some form of server-side support to nicely handle situations where one player is in multiple games. Either way (passing an operator or not) is better than what we currently have.

The staff changed the status to 'needs discussion', but what needs to be discussed?
I agree, I really don't care if it's added to the hub end or the game-side but generally it should probably be added game side because really then you can control what needs to be done without going to the website constantly to update everything.

Plus there maybe times when you want to over-ride scores regardless, such as single player game & you detect cheating for example, you can reset their scores & such, with the hub method it wouldn't allow the change because of the settings in the way.

---So ya thats my opinion, implement it on the code end to show how it should be handled so it can be more flexible instead of that action always being forced for those certain scores.

This would stop you from needing to manually change it just to do another action once, like you want to reset a cheaters score or reset a score of someone who abused an in-game bug.
The hub-side stuff I suggested wouldn't remove control from the game's server. It would would mostly be for handling different data types, but would also allow the game to say (to the hub) "increment this score for this player" instead of asking the hub for the player's score, incrementing in on the game's server, then sending another message to the hub to update that same score.

Any improvement would be nice. The current feature is barely sufficient, but doesn't at all take into account how people would use it.
Forum_account wrote:
Any improvement would be nice. The current feature is barely sufficient, but doesn't at all take into account how people would use it.

IMO, that goes for practically every feature BYOND offers; which is why:
- [They] need to hire at least one team of official developers to make a game, or multiple games, to show what the engine is capable of. [...] there should be a dedicated team, that works in close relation with the developers of the software (or even a team comprised of the software developers themselves), to create what are basically tech demos, showing off the best of everything that the engine is capable of. Reporting back bugs, and requesting features that should take priority.

I think its somewhat ridiculous how they blatantly decide which features are important for us, since I doubt they ever even touch the software from a user's standpoint.

As a general comment on this request: Scores and medals are both barely supported by BYOND itself, if you want any type of advanced functionality from them, then you need to store and handle all that information yourself inside the games, and just use the hub as a basic public display medium.
I like the idea of having maximum or minimum like forum_account said, but I don't think having the settings on the actual scoreboard would be flexible enough. Perhaps it can be merged with what I said earlier about sending a number along with a method of calculation.

Examples:
"3","ADD" // Add 3 to the current score.
"7","SUB" // Subtract 7 from the current score.
"5","MAX" // Set to 5 if the current score is lower than 5.
"6","MIN" // Set to 6 if the current score is higher than 6.
I don't like specifying "add" as a string. Maybe it'd look nicer to have a world.IncrementScore proc.

I've wanted to make a library for a while now to make a better interface for managing scores, but I always hope that the staff will beat me to it and such a library wouldn't be necessary. It'd be nice to hear their ideas about this.
It doesn't have to be a string but, I think you understand what I was getting at. Though, you're probably right about requiring a new, unique proc to calculate scores. I doubt SetScores() can be modified in a way which supports this without completely breaking previous functionality.
Actually it's already possible for them to make it so you can optionally pass other values in so really they just have to make it so no value=current default behavior otherwise do the action noted by the string/number or what not value passed in 2nd, it hardly matter what it is, they coud make it both if they wanted as locate() already takes lots of different things like a object reference, text reference, coordinates....it could be as flexible as they want it to be.
I've often wanted a way to increment/decrement scores as well. I'd like to allow multiple servers to access the same data without causing rollbacks. The option for microtransaction business models would be nice and I have cancelled massively single-player projects due to the lack of this feature.
I would like to put my name down on this too, it would be very helpful for both users and the website to only access once rather than twice.
I think sending symbols would be easiest.

5 - If greater than 5, set to 5
< 5 - If less than 5 set to 5
+ 5 - add 5
- 5 - subtract 5
* 5 - multiply by 5
/ 5 - devide by 5
5 - set score to 5 (current behavior)

I think it would also be nice to calculate fields.
Shooting game, 5 win 4 loss would be a 56% win percentage.
[win]/([win]+[loss])
I would like this very much as well.
Maybe I'm retarded, but why are we using the scoreboard as a database?
Stevenw9 wrote:
Maybe I'm retarded, but why are we using the scoreboard as a database?

Because it...is a database? A database holding scores in a board-like formation.
Page: 1 2