Development Log #2 - 12/2/20


Head of Development
Jul 20, 2019

Development Log #2

Welcome to the second development log for CursedMC. In case you didn't see the last log or are new to the community, I'm Nyaruko and I'm the Head of Development here at CursedMC. It's been a bit of a while since the last log so let's jump straight into what's been happening over the last few months.

πŸŽ‰ Beta Coming πŸŽ‰
First of all, I'd just like to thank everyone for their patience over the last little bit of time. The winter period is often a difficult time for server projects and it makes me very happy to see that our community is still as enthusiastic as we are about the CursedMC project! We've recently reached the critical point in development where we can start making reasonable estimations about how much work is left to be done on the project. While we won't be releasing a set date yet (dev estimation is more like sorcery than science), I'd like to make it clear that we do have internal targets that we are aiming towards.

🎁 Pandora's Boxes Update 🎁
I'm very happy to say that the boxes system is now neatly implemented and ready for release at launch! We've built the animation system to be quite extensible as in the future we plan to have different animation cycles for different types of boxes. If anyone has any suggestions for these animations, please don't hesitate to drop a reply below or to dm me! Here's a little preview of unboxing in action:

πŸ™ Cursed Factions Info πŸ™
As we're now more set on how our factions variant will function, we'll be breaking down the mechanics of it in this section of the log. This section's a little less about the technical side of things for now for the sake of brevity, though I hope to get into some of the more clever bits of the implementation in future logs. You'll notice a huge amount of features not present in your run of the mill factions server, and we hope that these variations will be able to drive players to form huge groups and create gameplay that is enjoyable for far longer than standard factions.

πŸ—Ί Map πŸ—Ί
The world is a closed-border circular map that is being carefully tweaked and configured to provide lots of interesting regions and points of gameplay contention for groups to stake out. The map will be 12,000 blocks across and will contain, in addition to vanilla biomes, overworld nether biomes. We originally planned to create the map manually, by hand painting the overworld and sending in builders to manually clean up and create surface features. However, after sizing this style of map design we found that, on our current schedule and budget, we would have to have a significantly smaller map in order to meet this style of map creation, which would significantly shorten the lifespan of the map's resources. As such we will be finely configuring a world generator with a custom tool that gives us a birds-eye view of the full-scale map that would be generated from our configurations.

βš™ Mechanics βš™
Protecting what's yours πŸ›‘
In standard factions, borders are determined by the number of people who join your group and a few poorly timed deaths can spell the end of everything you've built. Cursed Factions, on the other hand, makes use of a metric based on reality - borders by power & politics. Essentially, the land is yours, if you can hold it. While this may seem to mean that anyone can claim some land is theirs, in practice if the claiming group lacks the manpower, economy, political ties, or battle tactics to effectively hold their land claims, a greater power will prevail.

This shift necessitates that chunk-based land claims be replaced with a finer-grained system. In order to still allow players to mitigate random griefing, Cursed Factions provides build protection on a block-by-block basis. When building, players will be able to use materials in their inventory to protect the blocks they place. When a block is protected, depending on what material was used to protect it (see table below), the number of times it will have to be broken by an attacker will be increased, slowing down the damage done in the attack.


Block spam grief will also be preventable through the use of a special block called a bastion. When placed and protected, bastion blocks will prevent attackers from building anywhere above the bastion block (y-axis starts above the placed block, see below) that is within an 11 block radius (represented below as the space inside the stone wall). They do however have some limitations, much like how a block's protection is worn down by break attempts, bastions are worn down as attempts to place blocks within in their radius are made. The amount of places (and breaks of the actual block) a Bastion can take depends on the protection material that it was reinforced with (see above). Bastion blocks are made in factories, a multi-block structure that is explained later.

Pearls βš–
Normally, attacks in factions, whether it’s build grief or political grief, are hard to punish outside of sieging the offenders base (if they even have one). This will be tackled in Cursed Factions with the introduction of pearls. Pearls will allow groups to police each other on perceived wrong-doings. When a player kills another with an end pearl in their hot-bar, the victim player will be teleported to the End, and the pearl will become a "prison pearl" tied directly to the defeated player.

When a player is captured, their captor can seek reparations for the imprisoned player's crimes by either posting a claims thread on the forums/discord with a bail cost or by having the player do work for them. The player can work for them by gathering materials such as pearls, endstone (which can only be acquired in the end), and obsidian to pay off any debts that they may have incurred from their crimes, or they may be summoned to the overworld to do work there.

If a pearl is dropped, thrown, or the holder logs out, the captured player is released back into the overworld (either at their bed or a random spawn). In order to hold a player for an extended period of time, the pearl must be stored in a chest containing storage fuel (specific fuel will be balanced against final crafting systems) which will be depleted over time.

Groups 🏁
The group system is our equivalent to /f. Members of a group (with the right group permissions) will be able to protect and access protections for blocks owned by the groups they are in.

Snitches 🀫
Part of groups being able to enforce their own laws in their regions involves them being able to know what happened when nobody was around. Snitches are jukeboxes or note blocks that have been reinforced by a group. When a player performs actions like passing by, breaking blocks, or opening chests within an 11 block radius of a snitch, the group owners of that snitch are alerted to it. Jukebox snitches have the added benefit of keeping a log of these actions that can be accessed by command or directly via the snitch. When strategically placed, snitches can offer early warning of raids, and evidence from which to create pearl bounties.

Factories πŸ—
One of the goals of Cursed Factions is to encourage large groups of players to band together. However, the standard crafting recipes in Minecraft allow players to easily gain access to top tier gear in a relatively short playtime. To address this, we are implementing a new crafting system known as Factories. Factories are a crafting bench, chest, and furnace that are placed together in a row and activated with a certain recipe of items placed into the chest. Once a factory is created it cannot be moved so it is important to choose wisely the location in which you create them. This we hope will encourage less nomadic basing tactics and more direct engagement with border play.

Not every item will require factories to be made in order to craft them, and some recipes will simply have factories be a more efficient crafting option. For example, a smelting factory would take a certain amount of iron ore and produce more iron than standard smelting otherwise would have. Enchanting factories and repair factories will replace the enchanting tables and anvils/repair recipes' functions but will be significantly more costly to encourage grouping up.

Climate & Agriculture 🚜
The environment is important! No wait hear me out, almost all food in Minecraft comes from farming or fishing. In Cursed Factions, the areas in which certain crops and animals can be raised will be impacted by several factors, including temperature, light level, and pollution. As different biomes will be better suited to certain crops, the land in which groups stake their claim will be important in determining where they stand in the world economy, meaning areas with lush conditions will have a great advantage in agriculture. However, this won't mean that areas that struggle to grow crops will be totally undesirable as other factors may be useful. Some factors include differing ore distributions and certain fish species being limited to these regions. In order to make the game less AFK-centric, crops will continue to grow even when chunks are unloaded.

Communication ☎
In order to further incentivise the clustering of players, the necessity of battle tactics, and the importance of borders, we have implemented a Massivechat style chat system. Chat will have a limited range, with various distance ranges based on how far you are from other players. The exact distances are currently subject to change and we hope to nail down the ideal distances as the project is tested.


Statistics πŸ“Š
Throughout the runtime of Cursed Factions, we plan to be collecting all kinds of statistics to improve gameplay (as well as to create some shiny infographics). It is not currently clear if an 'f top' equivalent will be possible to apply, but should we find a way to do so, it will most likely be based on the stats we collect.

🏹 Colony Wars 🏹
Thanks to everyone in the community who voted in the community for the third game! For anyone who missed it, we held a vote to allow our community to choose which game they wanted to play the most, and it looks like Colony Wars really wooed the crowd. Colony Wars is a battle epic in which you gather resources with your team and use them to build support buildings, create magical weapons, and fight to destroy the town halls of the opposing 3 teams whilst you defend your own.

As of writing this post, I can say that the game is reasonably deep into development. We've gone for some quite interesting lobby menus that we'll be trialling in beta and are currently looking into ways to distribute the building sequences so that lots of buildings can be placed at once without impacting system performance. The general game loop is implemented, as well as resource collection, building destruction, and some support building functions. Going forward, the combat classes need fleshing out with custom weapons, and content needs to be added to a lot of the support buildings' stores. We'll be launching the beta with at least 3 maps for the game.

🌐 Translations Update 🌐
Since our original development log, we've had several members of the community express interest in translating the network to languages they know. We are currently setting up a base English-phrases-set for CursedMC and will be contacting those who expressed interest as soon as this is complete. This has taken longer than expected due to it being a lower priority task but I do want to express that it is underway and that we are keeping note of volunteers for when the time comes. I'd also like to reiterate that we are open to anyone who wishes to help make the CursedMC network accessible to more people around the world.

While I'm on the topic, I may as well touch on how the translation system works (this is a development log after all!). When we write plugins for Marble-based networks that display text to players, we don't actually define the text the players end up seeing in the plugin itself but instead use a unique placeholder. This placeholder (known as a phrase ID) is then looked up in the database in conjunction with the player's current language, and the result returned from the database is what gets shown to the player. This system works well by itself for static phrases, such as announcements (e.g. "Visit the store at"), but is less effective when information that can be variable needs to be included in the message (e.g. "You gained 100 tokens!"). To allow for variable information to be included in a phrase we would include what we call a "tag" in the translated message. The tokens example given earlier, with a tag included, would look like this "You gained @[email protected] tokens!". Our message translation plugin looks through the retrieved messages for strings surrounded by '@' symbols and replaces them automatically with the appropriate value as intuited from other plugins that register an interest in the tag's ID (the text between the @'s). The resulting messages are what you end up seeing as you play on the network.

Scoreboards have the added functionality of using event-based tags. Plugins that register an interest in these event-based tag IDs can push updates through to the value that should be displayed. Scoreboards listen for these updates and update their rows to reflect them accordingly.

🐞 Bug Bounty System 🐞
Bug bounties offer the community the opportunity to help improve the quality of the network and get recognised/rewarded for doing so. Bug bounties normally apply specifically to in-game bugs, but some exceptions may be made for any serious issues with our social platforms. Bug reports are submitted via a form on the CursedMC forums, and should not be posted in/as a normal public forum thread. If the form is unavailable, please DM your report to a Team Lead or higher.

⏱ Must report the bug without delay
πŸ—’ Must provide steps to reproduce the bug (how you cause it)
πŸ™Š Must not publish details about the bug without permission (usually until after it is patched)
🚫 Must not exploit the bug

πŸ’° Bounties πŸ’°
We have classified bugs in three different tiers. When a bug is reported, we will determine what tier the bug was following an investigation. Rewards for each tier of bug are defined below and are awarded to the first person to report the bug in a reproducible way.
Safe bugs - bugs with little impact πŸ›πŸ”ͺ
- Bug finder hat cosmetic
- Shoutout in the next development log

Euclid Bugs - bugs that impact gameplay in a temporary way πŸ”«πŸ›
- Bug finder pet cosmetic
- 3x Pandora's boxes
- Discord role
- Bug finder hat cosmetic
- Shoutout in the next development log

Keter Bugs - bugs that threaten network stability/security or affect gameplay long-term πŸ›πŸ’£
- A custom cosmetic hat (must conform to network rules)
- Bug finder pet cosmetic
- 5x Pandora's boxes
- A network booster of your choice
- Discord role
- Bug finder hat cosmetic
- Shoutout in the next development log

❀ Acknowledgements ❀
As we're reaching the end of this log, I'd like to take a moment to thank everyone who has helped with the edition of this post (Invaderr, Japanese Squid, Puddle, Wolfii), with the development efforts that have taken place over the last few months (Netx, Occultatum, Teken, Wolfii), and the community for their patience and faith in the CursedMC project and team ❀

This log has turned out to be quite a long one, so I think here is a good point to end off. I expect we'll have a lot to talk about in another log after the beta is completed, but until then, thank you all so much for reading!
Last edited: