Jump to content

Our forums is currently a work in progress! Please check back later!

Sign in to follow this  
Nut

Dev Blog #10: Skill System Progress

Recommended Posts

Hello Again Guys,

This week's devblog is mostly focused on Skills. We have been working hard on fixing skills and getting them ready for you guys to test out, and we made some significant progress this week.

 

Progress on Skills

The skill system in Archeage is pretty complex, there are several different major types of skills, and a bunch of minor differences between them. In the skills table in the game's database, there are over 150 different variables that describe the behavior of any particular skill (such as max range, area of effect, maximum targets, etc.), and we are writing the server-side logic for all of them so that all 15k unique skills (including "skills" casted when using items, mining, and many variations of combat skills) in the game work properly. The work done this week was mostly focused on skill cooldowns and targeting. Some of you testers may remember, but on the test server you were able to spam triple slash to the point where you were doing 10 triple slashes at a time and neither the 2nd nor 3rd slash ever hit anything, and this week we fixed those issues. 

 

spacer.png

 

As you can see, the second and third strikes are now working properly. The charge at the beginning is missing the animation because we have yet to implement that "special effect", another aspect of skills that makes each one unique. Special effects can be anything from animations to projectiles or teleport effects (there are over 150 types in total). You may have also noticed that the timing seems a bit off between the animations and the damage of the triple slash, that is because we haven't implemented "skill modifiers" on the server yet (in this case, accounting for my character's lower GCD and higher attack speed) which make the animation happen faster than the server thinks the damage should occur. 

 

Targeting and Performance Optimizations

We also made some significant improvements to targeting and the skill framework in general.  We ran some performance tests comparing the old rudimentary targeting algorithm that was created by AAEmu to our new targeting algorithm, and our new algorithm consistently reduced the computation time needed by 20-50% on a low level (the performance boost was compounded on a higher level due to additional optimizations). One of our top priorities for this server is for the performance to be as optimized as possible, so events like Castle days and other huge events run buttery smooth and are no longer are a giant lag-fest. Note that these optimizations will help with networking performance only, our server running better will not improve your framerate.

 

Congratulations if you are still reading, this blog was a little bit more technical than normal, but I wanted to give you guys/girls a glimpse into what our development challenges are right now and to help you understand why we are taking so dang long to release the server 🙂 As always, feel free to leave any comments or questions you may have below.

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

This is definitely the kind of regular, if slightly more technical, update that will keep interest in the project growing.

Keep up the good work, bois. ❤️

  • Thanks 1

Share this post


Link to post
Share on other sites

I know you said the optimization mentioned in this blog is for networking but will there be any to improve game performance for FPS as well? Will it still be CPU driven?

Share this post


Link to post
Share on other sites
8 minutes ago, BiRB said:

I know you said the optimization mentioned in this blog is for networking but will there be any to improve game performance for FPS as well? Will it still be CPU driven?

Making client-side optimizations will be difficult, if even possible at all, however, we will do our best to make any changes we can to improve the performance. We should be able to isolate the causes of crashes and prevent those fairly easily, but the bigger performance issues that depend on the code deep within the client will likely be untouchable. This is because the game's executeable and DLL files are compiled in a way where we cannot un-compile them back into source code and make changes (this would make the development process significantly faster), but we can decompile them and look at what goes on within them and make small changes using some more advanced techniques, but those small changes will likely not make a difference FPS wise. 

Share this post


Link to post
Share on other sites

Awesome work guys, just keep at it, cant wait to play the new server 😄 

Share this post


Link to post
Share on other sites
On 6/23/2019 at 6:52 PM, Nut said:

Making client-side optimizations will be difficult, if even possible at all, however, we will do our best to make any changes we can to improve the performance. We should be able to isolate the causes of crashes and prevent those fairly easily, but the bigger performance issues that depend on the code deep within the client will likely be untouchable. This is because the game's executeable and DLL files are compiled in a way where we cannot un-compile them back into source code and make changes (this would make the development process significantly faster), but we can decompile them and look at what goes on within them and make small changes using some more advanced techniques, but those small changes will likely not make a difference FPS wise. 

That being said, from programmer to programmer, if you had the know how you could absolutely decompile the c++ client binaries and edit/add ASM in which you could possibly optimize client performance. 

 

However, even with those siege days & halcyona wars that are so laggy you literally can’t even play, attempting what I just mentioned is really not worth the unimaginably monumental amount of effort doing that would take. A lot of ArcheAge players (even the ones who have been playing for years and consider themselves veterans) don’t realize that the performance issues in ArcheAge lies more so in the engine they chose to use as opposed to “poor” development on XL’s side. 

 

My advice would be to supercharge networking (which I’m sure you’re already working on). So at a very minimum even if the client gets rendering lag, the networking is keeping up? Without a complete overhaul (requiring full source) I really think ArcheAge is lost cause performance wise. I do admire the work you guys are doing here though, keep up the good work. 

 

Anywho, to end this rant. You guys are doing a great job and I’m really stoked for this server. Nice to see a private server developed by people who understand the end game playstyle and are actually listening to the community.

Share this post


Link to post
Share on other sites
18 hours ago, Printz said:

That being said, from programmer to programmer, if you had the know how you could absolutely decompile the c++ client binaries and edit/add ASM in which you could possibly optimize client performance. 

 

However, even with those siege days & halcyona wars that are so laggy you literally can’t even play, attempting what I just mentioned is really not worth the unimaginably monumental amount of effort doing that would take. A lot of ArcheAge players (even the ones who have been playing for years and consider themselves veterans) don’t realize that the performance issues in ArcheAge lies more so in the engine they chose to use as opposed to “poor” development on XL’s side. 

 

My advice would be to supercharge networking (which I’m sure you’re already working on). So at a very minimum even if the client gets rendering lag, the networking is keeping up? Without a complete overhaul (requiring full source) I really think ArcheAge is lost cause performance wise. I do admire the work you guys are doing here though, keep up the good work. 

 

Anywho, to end this rant. You guys are doing a great job and I’m really stoked for this server. Nice to see a private server developed by people who understand the end game playstyle and are actually listening to the community.

The process of editing the binaries is not very difficult, but knowing exactly where and why performance issues are occurring is the hard part. Say people were having a performance hit once they enter the Freedich Island zone, there are a ton of possibilities as to why this is occurring, and the fact that we are extremely limited in terms of debugging and profiling the client would make any non-immediately obvious performance issue a monumental task to fix. Especially if the issue is a high level one (such as a particular cryengine method) that requires a significant amount of refactoring, I'd say we probably wouldn't even try to fix it in the assembly level and try to minimize it's impact another way (eg. reducing the number of times that method is called as much as possible). 

Not to mention, there are a multitude of other causes for performance hits such as poorly optimized models, cryengine rendering techniques, and just the sheer number of polygons being drawn when you have hundreds of players running around in Halcyona for example, that we can't do very much about. 

XL's development standards are "poor" at best. Their code is horrendous on all fronts, and all the systems work in possibly the least efficient and organized way possible (their servers are a prime example of this, cryengine cannot be blamed for their terrible performance).

I appreciate your insight and suggestions, and I hope this response doesn't sound too harsh, I just wanted to make sure any future readers (hopefully) understand why we can't just write some quick assembly patches and fix all the game's performance issues.

Share this post


Link to post
Share on other sites

Two questions:
 

First, in other implementations of AA, I have noticed severe issues with latencies. It has seemed to me, in the past, that attacks have been more client sided than server. A perfect example of this is trying to evade something like charge or BEL. 

Attacker with charge/BEL moves in to attack a target. Target teleports/mirror warps/back drops away, however to the attacker they are still in range.

The result of this is always that the target ends up snared mid gap creation or even post gap creation, giving great power to the attacker. 

Are there plans to address issues like this in the skill system?


Second:

Any use for a C# developer in the ranks? I've worked on projects like Zepheus Fiesta in the past, both from a client and from a server sided perspective, and I've always been interested in trying to code for AA, but have had a hard time locating official files. I have some RCE skill, but am definitely not experienced enough on that end to do much, outside of being pretty familiar with the PE structure and things like the SSDT, which I've programmed against in the past. I am familiar with packet sniffing tools, and am fairly performance obsessed with code. I do adhere to standards in coding, but have never done any team work, only solo stuff. Seems like it'd be a fun thing to work on, esp given my love for AA (except the darkrunners. broken)

Share this post


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.

Sign in to follow this  

×
×
  • Create New...