Jump to content
Live Updates

We are currently updating our website to the latest IPB version - please be patient whilst we update the A'therys theme to work with this.  Some areas of our website may look distorted, please don't panic, this will be rectified.

HaedHutner

The Boring Dev Log 3: Revenge Of The Code

Recommended Posts

Yikes. It's been a while. I never intended for these to be frequent, but I definitely didn't expect to forget about them for so long. At any rate, I'd like to discuss something I'm sure people are going to love to finally get some details on.

 

The RPG System!

 

As a reminder, anything noted in this thread is in-development and not necessarily final. It's also worth noting that I plan to go into great technical detail, as is the nature of these things. So, without further ado...

 

Let's start off with a quick summary of my analysis of the problem. As a developer, I need to be aware of the following things:

  • The nature of the problem I'm solving ( What problem am I solving? )
  • Already-existing solutions and philosophies on the matter ( Has somebody already solved this? What was their solution? )
  • Best practices when approaching it  ( What is most efficient when solving this problem? )
  • The final end-user(s) of my solution ( Who is going to be using it, and in what manner? )

 

Why RPGs?

To start with, I have to understand what I'm solving. There is obviously an issue that needs a solution, otherwise we wouldn't need to write any code. So, what's the problem? Why do we need RPG systems?

 

Well, historically, RPGs appeared as a single, unified way to play through multiple scenarios or games. In D&D, these are called campaigns. And our case is not really so different. Let's enumerate really quickly all of the different scenarios we expect players to face in A'therys Horizons:

 

  • PvP
    • Organized ( Battlepoints, Arenas, etc. )
    • World PvP ( Raids )
  • PvE
    • Dungeons
    • World PvE

 

So, we need a single system which can allow players to partake in all of these. We want players to be able to fight between each other, and the environment.

 

To skip ahead to the next question, we have to ask ourselves if anyone has come up with a solution to this problem before. And it turns out, yes, they have. Multiple times, in fact. And, in multiple different domains. Tabletops, singleplayer video games, multiplayer video games, MMORPGs, etc. etc. They've all gone for a similar solution, and that's to develop their own proprietary RPG system. So, that's what we're going to do as well.

 

Analysis of RPGs

 

Everyone's aware on some level or another of the meaning behind a "role-playing game", but when it comes to specifics it gets harder to pin down.

 

There's so many varieties of RPGs, that it's rather hard to combine them all into a single definition. From my personal analysis of board games, video games and other such, a system of gameplay can be said to be an RPG when it contains most of the following features:

 

  • Attributes ( Inherent properties of the player, such as Strength, Agility, Intelligence, etc. )
  • Resources ( Health Points, Mana Points, Action Points, anything which the player will use up and have to replenish over time )
  • Skills/Abilities ( An action which the player may take, which can consequently have any imaginable effect on the gameplay )
  • Progression Trees ( Rather than having access to all content at game start, the player must progress through a series of decisions, each of which may modify the player in any imaginable way )

 

These are the basic elements of an RPG system, as I understand them. Some have more than just these, others exclude some of them. That doesn't make one RPG necessarily better or more complete than another, it's just a different style and flavor.

 

So, has anyone developed an RPG system for Minecraft before? A few, yeah. Most notable are probably Heroes and mcMMO. And both of them have very interesting ideas, which are worth taking inspiration from. And so I have, but since very early on I decided I was not going to straight-up copy one plugin. I was going to investigate what made that one successful and/or loved, and take inspiration.

 

The A'therys RPG System

The following is (almost) copy-pasted verbatim from a previously undisclosed staff document. It contains an in-depth explanation of the basis of the RPG system, while not defining how it will deal with skills and skill trees ( the internal discussions we've had for these are still far from useful to anybody outside of staff anyway ).
 

Quote

 

Any role-playing game worth it’s salt has a solid ground upon which it builds it’s mechanics. Usually, this is presented as a set of attributes each player may choose to invest points in, whose values are later reflected on dice throws and calculations. This is the approach that the A’therys RPG plugin takes as well.

Damage

Minecraft models it’s damage not on attributes, but on base damage values which are simply assigned to any item and/or weapon. Anything you can use to deal damage to another entity in-game has a configured amount of base damage it is going to do to that entity.

 

On top of this, modifiers are applied. These are related to weapon enchantments and the armor value(s) of the entity being hit, among other things. Once this “final” damage amount has been calculated, a plugin can then modify it even further by adding more damage modifiers. Or, alternatively, a plugin or mod could also decide to throw away the old damage amount entirely, and swap it for something else.

 

The latter is what the A’therys RPG plugin does, whose job is to define and enforce the in-game A’therys RPG System.

 

There are three fundamental groups of damage in the RPG system.

 

Melee Damage

 

Melee ( also known as Direct ) damage is calculated when one entity goes within reaching distance of another entity, and hits it. Plain and simple.

 

The damage type of this group is based off of the weapon being carried by the attacking entity at the time of hitting the target.

 

Ranged Damage

 

Ranged ( also known as Indirect ) damage is calculated when a projectile ( like an arrow or snowball ) hits another entity.

 

The damage type of this group is based off of the type of the projectile ( whether it was an arrow, a snowball, etc. ).

 

Magic Damage

 

Magic damage is special in that there are no cases in vanilla minecraft where magic damage can or will be dealt directly or indirectly.

 

It is purely at the discretion of the plugin ( usually under the form of skills ) when magic damage is dealt, and how it is calculated.

 

Damage Types

 

As previously noted, damage types are grouped by when they are applied. However, damage type groups are not static, and it is fully possible to have a damage type normally belonging to one group to be applied in a situation which is associated with another group. Before we go further, let’s introduce all of the different damage types ( grouped ) which are currently available:

 

Melee Damage

  • Unarmed
  • Blunt
  • Slash
  • Stab

 

Ranged Damage

  • Pierce
  • Ballistic

 

Magic Damage

  • Fire
  • Ice
  • Arcane
  • Shock
  • Nature
  • Mental
  • Radiant
  • Necrotic
  • Blood

As was pointed out previously, melee damage is dealt directly, and is thus linked to item types. This means, in the configuration, there will be a direct mapping between an item type and a damage type for melee.

 

Ranged types are bound to the type of the projectile. Projectiles in minecraft are always presented as entities, thus the mapping there would be between an entity type and a damage type.

 

And lastly, there is no standard way to configure any mapping to a magic type.

 

Like previously mentioned, since all damage types are essentially the same thing underneath, you can mix them about. This means that yes, you can map a diamond sword to do Ice damage ( even though Ice isn’t in the melee group ). Or yes, you can map an arrow to do Unarmed damage ( even though Unarmed is Melee, not Ranged ). Those would be valid mappings, albeit nonsensical.

 

Ultimately what a damage type really is, is a different way to calculate damage. Each and every damage type represents a different equation for coming up with the final number of health points to take away from the target that was hit.


An example equation might look a little something like this:

CLAMP(SOURCE_STRENGTH - TARGET_DEFENSE, 1.0, 15.0)

This expression is defined using a custom language, which is dependent on the library we are using underneath. Without going into too much detail ( this is described later on in the document ), it does the following: Subtract the target's defense value from the source strength attributes ( the target is the entity being hit, the source is the entity doing the hitting ). If the result is less than 1.0, just deal 1.0. If the result is more than 15.0, deal 15.0 damage.

 

From a higher-level perspective, this means that the above expression will base the damage off of the defender's defense attribute, and the source's strength attribute. And it will always be between 1 and 15.

 

Attributes

 

An attribute is a property of an entity character ( this includes all players and mobs ). All entities which are capable of either dealing or receiving damage can hold attributes ( funnily enough, this also includes item frames and armor stands ). The currently available attributes are as follows:

  • Strength
  • Constitution
  • Defense
  • Agility
  • Charisma
  • Perception
  • Luck
  • Intelligence
  • Wisdom
  • Willpower

These have absolutely no side-effects outside of whatever calculations they are included in ( this isn’t necessarily limited to damage calculations either, as we’ll see later ). They are simply arbitrary numbers assigned to a character, and that’s all.

 

Some of these seem redundant, while other seem pointless. If we’re only thinking about damage calculations and nothing else, there might be a point to be made here. However, skill creators may want to have a greater variety of attributes to play around with for balancing and gameplay purposes.

 

The amount of these attributes that all entities start with is configurable, this will be explained later.

Experience

If all entities ( including players ) start off at 0.0 of every attribute, how is it they will go about increasing that amount? Well, the answer to that question in most RPGs is by “levelling up”. However, a level system is a gamification of what is, essentially, the gathering of experience and getting better at something.

 

A’therys RPG forgoes this and allows players direct access to their “experience points”. A player will be able to increase their stats ( read: attributes ) by directly investing experience points they have earned.

 

These experience points are different than vanilla exp, and they do not contribute to enchanting. They are, like the attributes, an arbitrary number which is stored on the player for future use.

 

Currently, the mechanism for awarding these points is not written, and nothing is planned for it. As such, it remains an open question.

 

 

  • Like 2
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Our picks

    • A'therys Evo Returns (Plugins and Player Data Included!)
      Hello everyone, new and old! 

      As you may or may not have heard, we have brought back a functional build of A'therys Evo onto the server. We've noticed that a lot of people have been wanting a taste of the A'therys experience and having a place in-game to relive some of your favourite memories will go a long way towards achieving that. 
        • Haha
        • Like
      • 11 replies
    • December 24, 2018

      So with the website returning to it's dark theme, we've made a bunch of improvements to the lorelanding!

      Added a MAP to the lorelanding!


      This map (see below for all 5 playable nations lit up) will light up a nation when you hover over it; and allow you to click into it to go to the nation's overview page!
       



       




      Original Map Artistic Render by @cicetil


      Overlay graphics and new HoriRule [the nifty divider in the lore sections] by @Xathas


      Coding by @Rynelf (HTML, CSS, and JavaScript!)
        • Like
    • December 22, 2018

      Small Governmental Update put in today!

      Added Government of the Gennaian Isles



      Governmental Concepts originally by @Xathas



      Very long-winded Isles Chat with @Foe, @Tristan_vr, @raxiam, @Dani, and @redninja685 . Fortunately there were no casualties. 🤯



      Compiled by Xathas; Edits and Revisions by @Foe
        • Thanks
        • Like
    • Wiki Entry Wednesday - January 10, 2018
      It's that time of week again!

      Today we explore the city risen from seafoam, Glasscastle.

      Added the cty of Glasscastle to Atvoria



      Original draft by @Xathas



      Critiques and edits by @RuddyF , @Rynelf , and @Kmartinator
        • Thanks
      • 0 replies
    • Wiki Entry Wednesday: January 3, 2018
      Happy New Year, and Wiki-Entry Wednesday!

      This week marks a return to new nation info, specifically: Dalkun-Tir

      Added Technology of Dalkun-Tir to the Wiki



      Original draft by @Dani



      Second draft by @Xathas


      Critiques and edits by @Dani , @Foe , and @Kmartinator

       






      Added Marao's Fall to the Wiki


      Original draft by @Xathas


      Critiques and edits by @RuddyF , @Foe , and @Kmartinator
      • 0 replies

About Us

A’therys Horizons is an upcoming Minecraft Modded RPG Server, a world truly unique with many experiences for Roleplayers, Pvpers, Builders & Merchants alike.

Our community will always be what makes A'therys.
×

Important Information

By using this site, you agree to our Terms of Use, Guidelines and Privacy Policy