Discord chat updated

I made a small update to the discord chat. Previously messages sent to the global channel with the /g <text> command while someone was mainly in a different channel would not show up on Discord. This is fixed now.

Continuing the Kingdom Lots discussion, Part 2: Giving lots back

In order to give lots back, there is the general question about the mechanics of what can be given back and what that actually means.

Giving back a lot finally means that it should have a quality that justifies the lot to be preserved and never be reset. It’s therefore the same requirement as a winner in a building contest. I plan to enable some sort of a judging process as for the user promotion voting process. So we need to make a list of judgement criteria that allows people to vote on a build by answering the same questions for any possible submission. Possible ratings are:

  • Detail level
  • Good use of land/space
  • Originality/beauty/interesting
  • Theme (does it have one?)
  • Natural fit with surrounding/landscape
  • Others Options?

I would think that a minimum score in each category would be required. On top of that, a sum of all scores should be required as well, and that one should be higher than the combined minimum score of all together. Then we would ask for people to vote on it. But who?

  • Only people of a higher rank can vote
  • Anyone can vote, but give different influence to lower ranks
  • Other options?

Once a lot has been given back, the question comes what will be the reward for that. Again, different choices:

  • The right to get more kingdom lots (as written in the update to the previous post)
  • Simple rewards (a home, a deposit box etc)
  • A rank? While I think that the current ranking system is a bit more for behavior (i.e. being responsible enough to be able to ban others), we could introduce a new “virtual” rank that is mostly cosmetic with a point system. That rank would make someone am “Architect 3” or three star-architect for example. Each star rank would be incrementally more difficult to reach. So one lot given back would make you a 1-star, 5 a 3-star or something like that. It would show up as a prefix or suffix to the name. Essentially it would be like the achievements but it would be very very visible and carried across current ranks.
  • Anything else?

Continuing the Kingdom Lots discussion, Part 1: Price

What is a good price increment for kingdom lots?

This boils down to the question how many lots one can reasonably have as a project and how many people should be required from a certain size on to participate in the purchase of lots. If one ever only – by reasonable standards – to have one “private” lot and another 2×2 larger project lot, we have 5 lots that should be somewhat affordable for example. For larger projects one should either be really rich or have others support them in buying and building. The current 250k Uncs for 5 lots is a bit on the high side for that.

We can argue that larger builds need 3×3 as a size as well, so 10 lots would be the right number in that range. Specially when one needs to occupy land that is not along the lot borders such as a larger island, this becomes helpful. Beyond that 3×3 sice, I think that builds would become either unmanageable or ambitious beyond a reasonable level – as a single project to be done in a 1-man show.

Then there is the question how much one should pay for 10 lots – in the latter case.

[Update:]

Something completely different than just price limits:

One option that just came to my mind is to make a limit how many lots one can have by checking how many they gave back so far. This would mean that you cannot get 2 lots if you have not given one back so far. So with each lot that you give back, you can increase the limit of lots that you can own in the kingdom. Example:

Everyone is allowed to have x+1 (main) lots in kingdom. You start with 1+1=2. Once you give one back, you are back at 1, you can get 2 new ones (2+1=3). Give those 2 back, and you get 3 new ones (3+1=4) and so on. This way we avoid people starting mega-projects in 2×2 spaces that they can never finish because they cannot even finish a 1 lot build. We might still make incremental pricing, but the fact that someone has finished a lot of builds allows them to increase their size with the assurance that they actually do something with it.

[/Update]

Please comment below with your opinions on this matter.

Update on the lag issue

So I have been investigating on what is keeping the Villager chunks alive and got some replies there. It seems that there are some very old bugs in Spigot that they tried to fix to make it more work like the Vanilla server, which in turn caused the Villagers to become persistent despite no users being near. This has caused issues also for other servers.

The end result is that I tried to change a spigot setting that might fix the issue, but I need to observe this going forward. For this, I need to get more info from my lag-tracking plugin. There is an issue with it however. If you know basic Java, please stop by on GitHub and help me solve the issue. The issue has been resolved!

 

Achievement code, 1st step finalized!

I have now finalized the first step. This means:

  • The calculation of levels is working 100% now.
  • We have a super-easy way to add new achievements
  • We have 3 achievements in place already. I plan to add new ones step by step (like everyday one new one or so)
  • The display in the user profile is somewhat usable and informative.
  • Levels are updated daily. There is an option to manually update levels for individual users, not sure yet where/when to do that. One option would be when the user page is viewed.

First Achievement mechanics & displays done!

I have finished just now the first work on achievements. What’s done?

  • Basic registrations for new achievements. They have a name, a level (i.e. a quantitative measure), titles for each rank.
  • Achievements are updated so far once a day. Currently it’s possible to be downgraded as well (if money in the bank is one, it can be reduced). Not sure if I want to keep it like that.
  • Achievements are currently visible on the users pages.
  • We have 2 so far, Money (how much is in your account) and voting (how often have you voted in your lifetime.

ToDo:

  • Add many more achievements with fun titles
  • Make nicer achievement badges (can I get some help from anyone with either graphical or CSS skills?)
  • Make a page that lists & explains all possible achievements (done!)
  • Hide zero-level achievements from the users page (done!)
  • Make a reward logic for achievements where possible
  • Make an overall achievement completion statistic per user
  • Integrate achievements into the in-game /who command

More progress against lag

I now also added a feature to the plugin I wrote that unloads all chunks on the server. This is player-safe, i.e. it won’t unload chunks that are in view of players. The server will run this now automatically once heavy lag is detected, after it updated the lag map.

So I will stop working on this now until we have some more lag data or indications that lag is still an issue. If you feel that lag is severe then please check the TPS and let me know if the TPS does not go back up again soon after.

More Lag map refinement

Please read the previous post first.

So I made more refinement to the lag map display:

  • Chunks that are permanently loaded, are now colored in blue. If you have a blue chunk on your lot, please check what could cause this. Mostly it’s villagers breeding. If you can restrict villagers breeding to a smaller space (one chunk for example) it would be good for the server.
  • Chunks that are not always loaded but appear in the data, will be yellow.
  • Chunks that are not always loaded, but were loaded during the worst lag so far, will be in red. Since we have few data points yet, most of the non-blue are red so far. This will hopefully improve over time.

Progress on lag detection

Preparation

So I made some nice progress on the lag detection. What did I do?

  • I wrote a plugin that can, on request, record a list of all loaded chunks together with the current TPS into a database.
  • I setup a lagg monitor that launches the above plugin everytime when the TPS is low and then again when it recovers.
  • I made a modified version of our 2D map that displays chunks instead of lots. It takes the chunks from the database and weighs them according to how frequently they appear in the database (i.e. how often they were loaded by the server) and weighs the gap to ideal TPS (20) with the frequency of the presence of that chunk. So if a chunk was loaded once only during many low TPS events, it has less weight than a chunk which was more frequently loaded when TPS was low.

Result

The result is this new 2D map. It shows only chunks that have a weighted TPS below 19. What you will see on all maps is that the chunks around spawn always remain loaded:

The kingdom spawn

On the other hand, it seems that places where villagers are, also seem to be over-proportionally represented. While it seems that there are places with villagers that are not showing up in the map, some chunks are permanently loaded, no matter what, even lots that are far away from active users, even on empty lots:

king_l20, a village on an empty lot

Obviously, the data is not 100% conclusive, there are so far only about 15 recorded instances. We have to wait until we get more data to take concrete conclusions. However, there seems to be an issue with villagers preventing chunks to be unloaded. This should not happen. That does not mean they cause massive lag. This map finally does not show where lag happens but which chunks are loaded when there is lag. There is of cause the issue that unloaded chunks cannot cause lag, but that does not mean that villagers are the cause of the lag. My hope is that once we have some more serious lag (so far we only went down to 18.11 TPS), there are some chunks that stand out. For this I will have to adjust the map display a bit more.

Further, this map looks only at places that we have actually mapped. I.e. darklands, nether and the_end are not represented here. I will make a report for those and warp around to see if I can identify locations with issues in those worlds.

Lag detection progress

In order to solve our current lag problem, I have made some considerable progress. The main issue is that Minecraft as such is not able to tell me where on the server the lag is being caused, I have to infer that myself by walking around and looking at things. Not really effective.

In the past I had a system that would record the position of users whenever lag was high and I tried to get an image from people’s positions. Also not ideal since people warp around and parts of the map might be loaded and where there are no people and those can still generate lag.

So my new strategy was to somehow get a list of all loaded chunks whenever the lag is high. In order to do that, I need to write my own Minecraft plugin however. And I am really bad at that.

However, with the help of Seanboyy and LukeCreative and some folks at the spigot IRC chat I managed to out something together that seems to do what I want. It’s not 100% operational yet but we are on the right track.

Once that is done I can create a heatmap as an overlay for the 2D map and then, hopefully pinpoint the areas where the map is generating lag. I would hope I have the first data to display by today, a working display by tomorrow and then the first results the day after that. Maybe even sooner.

There is a certain risk that there are so many chunks loaded permanently that it’s hard to pinpoint lag sources but with proper subtraction of those chunks during lag-free time we should get somewhere.

Let’s hope that we get something done here and a good tool to combat lag for the years to come.