Saturday, April 20, 2024

April Changelog

 [4/17/24]
- reboot mysql server and reload database from backups
- picked random spot and start fixing translation issues and variable names
- improve the -DWITH_ZLIB = system check
- MySql libraries up to 8.3

[4/18/24]
- fix issue with loading weekly quest strings
- refactor how rows in SQL are iterated through
- fix resources being allocated when not needed on KDA tracking
- spell window translations
- revert to earlier version of MySQL until FORWARD_ONLY ResultSets are fixed

[4/19/24]
- fix issue with fishing times being saved incorrectly

[4/20/24]
- fix training dummies not giving exp to players
- format several quest dialogues
- Loudspeakers can now be used at level 82
- add Bunny Shop Naflin to Giran
- add several items to Bunny Shop
- fix wand of conjure lightning
- add exception handling on server launch
- fix potential NullPointerException in V2MapReader
- remove double checking on mobskill use for skill 7023

[4/21/24]
- upgrade Eclipse IDE to 2024-03
- impossible to find furniture instances can now be found
- remove double checking for a sender on pledge mail
- as always, lots of translations
- double checking of spellbook 3000091
- add stackTracing to several places that needed it. This will make it easier to track down bugs
- improve random number quality for lottery tickets
- synchronized EventItemController to guarantee thread safety
- synchronized NpcChatTimeController to guarantee thread safety

[Performance]
- fix two instances of double boxing
- clean up resources after item loading
- remove excess garbage collection on server start
- remove unnecessary casting toString() in several places
- fix several instances where strings could be parsed directly to int, avoiding overhead of boxing/unboxing

[Security]
- one instances of potential SQL injection

[4/22/24]
- applied new techniques to prevent thread locking
- synchronised getLevel() to prevent race conditions

[Performance]
- Use nextInt method of Random rather than nextDouble to generate a faster random npc spawner
- fix 5 methods invoking inefficient new String, improving response time for buddy lists, party member names, etc
- fix 3 instances of toString on already String
- fix 11 instances of inefficient use of keySet iterator instead of entrySet iterator
- fix 21 instances of boxing/unboxing to parse a primitive

[4/23/24]
- fix Black Knight quest not rewarding the Scroll of Escape
- fix Combat Enhancement quest not rewarding scrolls
- increase Gunther teleport access to 82:small_red_triangle:
- fix Instructor Theon teleport locations, add new ones
- test run quests for 1-55, all working as intended

[4/24/24]
- database translations
- cleared badnames list
- add Primordial Jade Chain, B-teles to Bunny Shop

[4/26/24]
- translate the rest of the crafting NPC names in giran
- remove second Talas
- setup external access for people wanting to help translate documents
- fix teleporter Lupin error message
- new NPC **Mr Nostalgia** sells various nostalgic items/tools in Giran
- add .light for GM

[New Item]
- Scroll of Nostalgia 1f to 5f, teleports player to Tower of Insolence

[4/27/24]
- fix Elemental Battle Arrow prices
- fix Royal unable to learn spell Empire
- add new GM commands
- add Kratos memorabilia to Giran
- update intro npc in RKT
- add Helper NPC to RKT
- add Dolly Parton NPC to Giran, sells level 1 to 4 Magic Dolls
- remove duplicate Cassiopia spawns
- add option to skip to level 55
- lower Kurtz respawn time to allow people to finish quests

The First Week

 So far so good. My mental state has been really good. Every time I come across something I cant immediately fix, I write it down on a proper TODO list and leave it there.  It's no longer circling in my mind waiting for a solution to manifest itself.  I am more happy to work on the dream of running a server and not actually running it.  No one is breathing down my neck, there are no bug reports, no cheaters, no complaints, just me, my knight and a tiny bit of java code, haha.  I'm also really happy because I am no longer doing a 1 to 1 copy of Live in Korea.  I am going for a more custom/fun way of doing things.  I have a lot of great ideas pop in as I play.  I hope one day people will get to enjoy them.

It's nice to talk to everyone again. Those familiar names and jokes. I kinda forgot that some of these people are like friends to me and put into the server a lot of time and effort in their own way.  I am glad to see most of them are still around in some capacity.  I got a bug report today and that was exciting to deal with.  A simple fix but good practice.  When I am working solo, on no particular area, I can easily get distracted so this is a nice way to focus the mental energy for a few minutes.

The more I play with the new client, the more excited I get. Seeing all the things I struggled with for months, being already enabled and working as intended, is such a huge sigh of relief.  I ran the server through VisualVM and stability is way higher than what I had when I started with L1J for LoA.  However, there are lots of areas for improvement.  I am really wishing I had written those improvements down somewhere but alas I shall hopefully run into them naturally as I continue to poke and prod.

My new method for work, I am calling the ADHD method or the root method.  Basically instead of taking 30,000 lines of text and translating them one by one.  I am finding one specific spot and following its path through the game so for example: I made a level one character and the second quest requires me to use a Haste Potion but its labeled 초록 물약.  So I go into the database, translate the item in etcitem. Translate it in the desc-k.tbl file and check that is works as intended.  If the potion doesn't give me haste for 5 minutes, I branch out and fix the issue.  I'll then check all the other haste potion variants for proper logic and translate them as well.  This is obviously a very basic example but it should convey how my routine has turned more into a root system following a random yet logical path.

I've come across a few event items that'll make it really exciting to play with.  I hope to adopt these to LoA server in the mean time.  There are so many interesting items I have found so far and I have barely scratched the surface. I can't wait to see what I come across.

Friday, April 12, 2024

Vision

This is basically a who/what/when/where and why on the next and hopefully final iteration of L1J.

Why?

Why not? I am addicted to Lineage is one reason. Another is the fact I came across the latest server and client and connector. This package had everything up to the day before Remaster released.  It had most of the bugs I fixed already fixed, content I added already added, client patches I made were already in the client professionally and not jerry rigged into it.  The connector was actually a proper connect that could be properly edited and expanded upon. Not to mention the 100 other features I had been wanting, like Dark Horse for Illusionist was already designed and an actual part of the client it self.  I can't pass up all these features.

TLDR; because I have a new server and client and everything works as intended.

Why not?

Because of the massive list of bugs I would need to cross reference or the idea of having to force players to start fresh after their initial time and financial investment. I am still basically starting from scratch because even though all the new features and content are here, I need to cross reference and test everything. Look at what happened after LoA opened too soon.

TLDR; because of the players.

How?

I had several offers from trusted people and I blew them all off. I was obsessed with my baby and I wouldn't or couldn't risk anyone stealing it from me.  This attitude stretched me too thin and in my opinion hurt the server as a whole.  If I do this, I want a team, I want LinFan, Ohai, Server maybe Legless and a few others.  Everything will be shared with the team and we will work together as one stronger, more intelligent unit.  Not all of the people I have in mind can or will be willing to help, but if I can get at least two others on board, I think we can pull off the next big thing.

TLDR
; with help from friends.

What have I learned?

This is a loaded question and really needs its own post, one day, but for the sake of brevity, I will share a few points on what I learned from the player base.  1) Sieges are king. These should have been ready to go on day one.  2) Exploring base line content, like Claudia and new content, is generally not fun. Custom content is enjoyable but it needs to be rooted in that classic feel of Lineage.  3) Forcing players to play how I want them to play was the biggest mistake by far.  Almost every restriction I put in was met with some sort of back lash and the players were right. It didn't add anything to the game, it only took things away.  4) Tier tokens were generally okay but I feel they left some of the players in the dust. These need to be a one time, permanent, account upgrade. More options, that do not create a pay2win mechanic, need to be available for the ones willing to spend money.  More of that Token/RMT part in a later post.  5) I will not be playing.  This caused too much drama and way way too many accusations that were never true. I know how honest I am but that doesn't translate to people who have never met me so I will not be playing outside of a GM role.  I think we all know I prefer to grind code than to grind Goblins :D

TLDR; My version of fun and the average Lineage players version are not the same.

When?

 I have already put my feelers out and received a few responses from people. As soon as this post goes live, I will start getting my programs and tools in order. The first order of business will be to write up a plan of action.  I won't go in blindly and running to each and every corner this time.  I need proper documentation and I want it shared publicly.  I know most won't read it but for the few heroes out there, I appreciate your commitment and love for the grind.

TLDR; soon

Where?

An active test server will be left open where people can drop in and play to provide feedback. Player feedback is critical to success of the server. Thank you to all that do!

New AFK Zone

  I added a new AFK zone. This one, of course, is well more thought out and not overly complicated.  Click and Go!  I also made a copy of Lu...