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.

Achievement Proposals

So I started working on an achievement plugin. It tracks what you do on the server and gives you different levels of achievement per category. We can have an unlimited number but it somehow has to be traceable of course. With some of them, one can of course cheat by artificially just executing commands without needing them, but I guess there is no perfect system. If we want to work on it to make it really nice, we can attach titles to the different achievement levels as well. Some of them then also can have additional rewards. This should be only for things that cannot be cheated of course. Of course the easy stuff would be in large quantities. Also, we should try to make people use all aspects of the server with those achievements. I am not 100% sure if we can have all of them, but we can at least try. Please add your ideas of what achievements you would like to see or are funny.

  • Vote numbers
  • Sales turnover in the shop
  • items bought in the shop (value)
  • /home use command
  • money in the bank
  • number of deaths
  • days played on the server
  • longest off-line time
  • hours played on the server
  • requests fulfilled
  • stories written and played (by someone else)
  • sales cancelled
  • deposit box usage (deposited blocks)
  • blocks broken (in the lots where we track that)
  • blocks placed (as above)
  • special blocks broken/placed (such as diamonds or so)
  • karma given ( negative/ positive separated)
  • karma received (all-in)
  • quizzes started
  • quizzes answered
  • quizzes won
  • promotions voted
  • mails written
  • mails sent
  • forum posts written
  • blog comments written

Next steps: Once we have the list, I will make an info-page on the website where the achievements and the limits for them will be visible. Then we can nail down what reasonable quantities for the initial launch. Then I would start the logic that tracks the individual achievements. Likely, some of them we will update only once a day and not instantly. At the same time I would start installing the first displays on user pages so the achievements can be tracked.

More details regarding the new kingdom lot system

So I have started working on the new kingdom lot system. This affects only main lots, not the street lots. Those would remain as they are, maybe become a bit more expensive. Here is how it would work:

Core Mechanics:

You get a lot by buying it. Once you are done with your build, and it satisfies some quality criteria, you can “give it back”. That means that you give it to me, it becomes a showcase like the builds in the city. Here are the details:

Getting a lot

Each kingdom lot would cost you progressively more. If I use the same formula as for the deposits and start at 10k Uncs, we get the following progression:

  • 1 lot(s): 10’000 UNCs
  • 2 lot(s): 80’000 UNCs
  • 3 lot(s): 270’000 UNCs
  • 4 lot(s): 640’000 UNCs
  • 5 lot(s): 1’250’000 UNCs
  • 6 lot(s): 2’160’000 UNCs
  • 7 lot(s): 3’430’000 UNCs
  • 8 lot(s): 5’120’000 UNCs
  • 9 lot(s): 7’290’000 UNCs
  • 10 lot(s): 10’000’000 UNCs

The formula is: (no. of lots)³ x 10’000. It’s the same as for the deposit boxes. This is of course quite steep. Another calculation option would be this one:

  • 1 lot(s): 10’000 UNCs
  • 2 lot(s): 40’000 UNCs
  • 3 lot(s): 90’000 UNCs
  • 4 lot(s): 160’000 UNCs
  • 5 lot(s): 250’000 UNCs
  • 6 lot(s): 360’000 UNCs
  • 7 lot(s): 490’000 UNCs
  • 8 lot(s): 640’000 UNCs
  • 9 lot(s): 810’000 UNCs
  • 10 lot(s): 1’000’000 UNCs

Here the formula is (no. of lots)² x 10’000. If find this almost too cheap. Essentially I want to make sure that the size of the build has a cost that is in proportion to the amount of work it would take to finish it – and the number of people it takes to do something like that. If you want to build a 4×4 build, you should not have 10 of those at the same time in the works, and a 9×9 build would rarely be a single person’s project.

It’s a draft and we have to see if we stick with that. However, there is another opportunity to get lots much cheaper: Join with others. If you anyhow plan to build with others something that is 4×4 lots, you can let other people buy 1 or more of the lots and let them pay for it. But the achievements/reward for finishing a lot would then also go to that person! I.e. we would not allow anymore to transfer lots to other people since there would be too much of an incentive to cheat the progression system by simply handing 10k to some settlers or secondary accounts and have them later give you the lot back once you gave back another of them to collect your reward.

Getting rid of a lot

There would be 3 ways of getting rid of a lot. Abandoning it, giving it to me or leaving the server. If you think you will never finish it, you can abandon it and it will be reset. If you think your lot is “done”, you can put it up for inspection. That means that Elders and myself would go to the lot and check it out. We would look if the lot is build well enough to be given to me. There would be a questionnaire that would ask questions along these lines:

  • Is the space well used (or is there just a lonely hut?)
  • Is it built along a theme (or is it just a clutter of random builds?)
  • does it line up well with the neighbor lots (or are there massive gaps in the landscape)
  • is it interesting to look at (or is it just a bunch of 1×1 noob towers)

Once this inspection is passed as successful, you would lose the lot and get rewards. This would be any possible yet to be decided reward, which could be physical (such as rare items (beacons, dragon eggs, whatever), perks (disguises) and achievement levels (badges on your user page etc) or donator status months etc.

The other way to get rid of a lot would be if you leave the server for good and the lot would be reset otherwise. That means that there would be no more resets due to people leaving. In that case the lot would go back into the pool of “free” lots and people could by them just like empty lots and decide if they want to finish the build or reset them.

What happens with the currently occupied lots?

Some people have a substantial number of main lots in the kingdom. Essentially, they would have the issue that they cannot buy any new lots since that has just become prohibitively expensive. Other lots, that are properly built, could be given back just like above.

New Kingdom 3D Render (as a test)

I have started a new render view for the kingdom from the opposite side. Currently, all maps are rendered from a South-East perspective. I added now for the Kingdom a North-West perspective as well. You can see that if you click on the grey cube (as opposed to the green one) in the map selection.

This is currently at a lower resolution than the SW-Perspective. I have to check what this does to our server performance since the render takes space (a lot, currently 6.4 GB for all maps) and processing power. There is an option to switch from PNG image format to JPG at different compression rates to scale this down, I will see how we optimize that going forward. On another option, I could limit map rendering to certain times during the day to make sure that we have the most processing power when the most people are online. The result would be that the map would only update once daily however.

Have a look and let me know if you find it helpful or not.