Author Topic: SERVER MAINTENANCE  (Read 151445 times)


  • Administrator
  • Newbie
  • *****
  • Posts: 5
    • View Profile
« on: January 25, 2017, 10:07:25 AM »

What include:

First of all we trying to make the server machine full Protected , to do that we must change the Host Server machine!
Server lags will fixed also !
We are waiting for the approval of new partners so we want to show understanding to us we work to be better and also to have a great server to play your favorite game the Lineage II Interlude !
Also some characters pets like Dark Avanger will be fixed to hit the enemy, basically it's already fixed to the *Test server we are waiting to update it to the La2Enjoy as soon as.

 - setsex admincommand allows only etc, female and male states. There is no more toggle possibility. If you set nothing or a wrong Sex, it defines it as male by default. If the character sex is already setted to the given sex, then it doesn't edit it.
- Fun fact : etc state for player looks like female. For koreans, women are objects...
Sex-based collision implementation
 - Fix oversized weapons on females (notably visible for dwarves).
- Rework throne sit system to be stored on its own int, because it was using mount system int and was causing issues.
- Fix movement multiplier.
- You can't walk anymore if you're mounted (avoid moonwalk issue).
- Few animation based interactions use movement multiplier ; drop getAnimationTimer().
- Multiple uneccessary overidden methods are cleaned up.
- Fix player based water speed (not based on run speed, got its own value).
- Fix player based walking speed (not based on run speed, got its own value).
- Added messages for pet items equip/unequip.
- Fix the walking/running and food visual updates on pet window when autofeeding.
- Added distance check for player > pet items transfer.
- Fix a critical issue with pet > player inventory transfer on pet unsummon.
- Fix doesPetNameExist method to fit with L2OFF (also avoid String operations).
 - Fix the annoying issue with summons single attack (erm, my fault).
Geodata is now mandatory.
- merged geodata and pathfinding packages/classes, now we have only one Geoengine package and Geoengine class - better structure overview and removal of unnecessary calls between PathFinding and GeoData.
- Geoengine is now mandatory to start up server because of new upcoming features (doors, fences, new npc spawn manager) - cleaned up configs and related classes.
   - adding missing javadoc everywhere, adding comments to critical sections.
   - merged GeoData and PathNode admin handlers/commands.

Movement fix
   - Fix strange movement rollback on skill spam.
   - Fix stackoverflow issue.
   - Fix target status (little circle color becoming red on attack).
   - Reduce global aggro timer, from 2min to 1m30.
   - Edit chasing mob distance check. Passive and aggressive mobs leave fight if a 2000 distance is reached.
   - Drop attackRange from CharTemplate. Edit NPCs XMLs to reflect the change. Monsters use directly weapon range. Fix NPCs archers range (from 1100 to 500).
   Core side
      - The player now runs to the target when skill is under reuse and target out of range.
      - CPHEAL_PERCENT type is dropped (unused).
      - Toggle skills can't be desactivated anymore while in combat.
      - You can't stack anymore Fear, Sleep, Root && Stun effects. Ty xblx.
      - ExRegenMax packet implementation (temporary health gauge on HoT use). Ty svipben to catch it up, and RooT for writing style.
Old version :
Each object (item, npc, player, summon) had its own knownlist, aka a Map holding surrounding objects. Objects were added/removed according owner's region and a self radius (getDistanceToWatch)

Why it sucked :
   - You needed to update map every time you added/remove. Even if ConcurrentHashMap is performant, that could be painful on big operations (sieges, mass kills, etc).
   - The data was extremely redundant ; for 2000 NPCs, there was 2000 knownlist holding each 1999 entries (excluded himself).
   - The data could scale really, really fast according number of surrounding NPCs, leading to important RAM/CPU usage.
   - A task, called every second, was updating every single region (11260 regions) objects to forget objects.
   - Added to the data being extremely redundant between knownlists, the same info was hold into WorldRegion's object maps (as knownlist feed upon those maps).
   - The definitive list of possible targets was cutted first by getVisibleObjects(2000), getDistanceToWatch, then by radius, leading to compute multiple times the same thing.
New version :
   - We use WorldRegion maps as reference.
   - We use setRegion as an passive update system. Which means a single setRegion is needed to refresh every object included in surrounding regions.
      - Regions we leave (aka, old region neighborhood but not part of new region neighborhood) are updated with removeKnownObject.
      - Regions we enter (aka, new region neighborhood but not part of old region neighborhood) are updated with addKnownObject.
      - Leftover (shared regions between old and new neighborhood) isn't processed.
Benefits :
   - No more maps for every object = instant RAM save. No more dangerous RAM scaling when gathering important group of NPCs.
   - Cut a entire layer (before WorldRegion CHMap was updated, and WorldRegion's objects knownlists aswell. Now, only WorldRegion is updated).
   - Teleport system during siege is entirely redone and fixed. All ppl are moved to second closest town, no matter what.
   - Drop SiegeManager and split content between castle entity initialization, Config, CastleManager. getSieges() method is dropped, use getCastles() / getSiege on a for loop to get them.
   - When a Life Control or Flame Control Tower is destroyed, a little, not-attackable version of it spawns.
   - Add 2 SystemMessage related to sieges (when all life controls are destroyed, and when you try to use L2Doormen open/close doors function when castle is being sieged).
   - Add Ressurection siege conditions (can't ress if not participant to a siege, if attacker hasn't a flag or if defender hasn't anymore Life Crystals).

*Test Server: We have access to the same server as La2Enjoy but it's on test mode,there we can make changes without scare about what will happened if something goes wrong !
« Last Edit: January 25, 2017, 10:44:25 AM by admin »