+ Reply to Thread
Page 1 of 12 1 2 3 4 5 11 ... LastLast
Results 1 to 15 of 180
Like Tree145Likes

  Click here to go to the first Rift Team post in this thread.   Thread: Tech Talk: RIFT Performance in 2.2

  1.   Click here to go to the next Rift Team post in this thread.   #1
    Rift Team
    Join Date
    Oct 2010
    Posts
    927

    Default Tech Talk: RIFT Performance in 2.2

    Greetings, fellow Telarans!

    Most of the time I work on RIFT’s Addon system, but lately I’ve been co-opted for some performance improvements. We want your stay in the world of Telara to be as smooth and beautiful as possible, and making the client fast is an important part of that.

    In 2.2 we’ve got a few fixes that might boost your framerate by around 10%, and I thought I’d give a quick explanation on the major things we improved and what our next steps are. Be warned: this might get a bit technical!

    First, I’m sure you’re all aware of the cloak physics simulation code that is now in the game. Every frame we update a “collision skeleton” for the cloak to bump into. This is a simplified model of the player character – it looks kind of like a balloon animal - that’s easy to do physics calculations with, so the cloak doesn’t move through your body and legs. Before the launch of 2.0 we updated our collision skeleton in a simple manner that worked fine for a simple model, especially given that the cloak simulation itself was rather slow.

    Since then, our artists have improved the collision model quite a bit, we’ve added support for dynamic mount collisions, and we’ve multithreaded the cloak simulation so it can take advantage of recent high-end processors. This all means that the collision skeleton update was turning into a major speed bottleneck. We solved this through caching a lot of the internal data and updating it only when necessary, as well as moving more of the skeleton update system into the multithreaded section. This took some work to get right, considering that we had to deal with polymorphs and mounts and the like, but this alone gave us around a 3% improvement in busy environments like cities and raids.

    The second issue was in the addon system. Our addon system tracks a lot of data internally so it can hand our addon authors compact and detailed messages. Without this work, writing an addon would be many times more difficult than it is today. Unfortunately, it turned out the addon system was doing a good deal of redundant and unnecessary work with abilities, often processing a lot of data and then throwing it away after it was discovered to be un-needed. Many of these checks have been moved earlier in the process, so that instead of throwing away the data, we just never generate it in the first place. (The fastest code is, of course, code that never runs ) We’re also in the middle of a major rework of the addon framework event system – you won’t see any performance gains from this right now, but once the old system can be removed, there are further improvements we can make to addon performance.

    Finally, we found a small stable of small performance losses in the ability button code. I know, I know, “it’s an ability button, how complicated can it be? You just check to see if it’s on cooldown!” RIFT’s abilities are actually really complicated!

    Some abilities require specific item types to be equipped (Druid’s Fervent Strike, for example). Some abilities require that the player or target has a buff (Necromancer’s Desecrate), some need to keep track of a past event (Bladedancer’s Reprisal). Some even share cooldowns with other abilities (Paladin’s Shield Throw and Void Knight’s Spark). Many of these checks had performance problems, and while none of them individually were huge, together they added up fast, especially given how many abilities a RIFT player usually juggles.

    For a specific example: Years ago, Rift was a much simpler game, with a small number of roles available and a maximum of two dozen ability buttons on the screen at once. Every frame, for each ability on your bar, it would have to unpack a small data structure and figure out whether it represented a Role ability or not. With a small number of buttons and a small number of roles, this wasn’t a problem . . . but now that you can fit over 130 ability buttons on the screen at once, and each button has six roles to check, it became an issue Easy to fix in many ways, via a more efficient search method and a little caching – we just needed to realize it was a problem. That’s one of the things optimization is all about – making sure that the code best represents the game as it is today, not as it was two years ago.

    Keep in mind that these fixes are all CPU improvements. They’ll be most noticeable to people with slow CPUs and fast graphics cards, ideally running at low detail settings. If you have a fast CPU and a slow graphics card, the gains might be smaller.

    So, what’s coming up next?

    First, realize that these are all possibilities, not guarantees. Performance improvements are uncertain at best!

    The work I’ve been doing up until now has been idle optimization, with a character standing in the middle of town or an empty field, or, at most, standing in the middle of a flock of a hundred test bots. Obviously there’s a lot of benefit in catching universal performance issues without combat muddying up the data. Equally obviously, if there are performance problems in combat, idle optimization won’t find them My next step is to take this on to live servers, running performance tools while standing shoulder-to-shoulder with you fighting zone event bosses.

    Next, there are several hotspots in our rendering pipeline that don’t seem justified. We seem to be using too much CPU to render models; we seem to be using too much CPU to calculate shadowing; we seem to be using too much CPU, ironically, on one of our performance optimization passes. It’s possible that these will be dead-end leads, but they’re worth looking into. Again, I want to reiterate that there’s no way to know if these will work – if I knew, I’d already have fixed them – but they’re all possibilities.

    Finally, those of you with modern multi-core computers may have noticed RIFT does most of its work in a single thread. Modern computers are capable of calculating many things simultaneously, but RIFT, by and large, does all its calculations in a straight-line order, not taking advantage of multiple cores or processors. I think there are opportunities to split RIFT’s work into several threads and really exercise modern gaming computers. The programmers reading this are cringing in sympathy right now, as adding support for multiple cores is often a nightmare, but it’s worth trying for the framerate boost that might be achievable.

    With luck, you’ll see a few of these issues fixed in 2.3. I hope you’ve enjoyed this look behind the curtain of RIFT development!
    Last edited by ZorbaTHut; 02-22-2013 at 10:56 AM.

  2. #2
    RIFT Guide Writer TheGrinnz's Avatar
    Join Date
    Feb 2012
    Posts
    10,817

    Default

    This is awesome, after seeing all the tech stuff the devs at Eve Online talk about with their userbase, I've been hoping for something similar in Rift. I'm really looking forward especially to any multicore optimizations you can make, six cores don't do much for Rift currently ;) Thanks Zorba!

  3. #3
    Ascendant simpa1988's Avatar
    Join Date
    Jan 2011
    Posts
    1,904

    Default

    nice post and fixes on the way then
    thanks for the post!

  4. #4
    Champion of Telara Sargonnas_KoA's Avatar
    Join Date
    Dec 2010
    Posts
    1,297

    Default

    Great update. I think this is the most specific information Ive seen anyone at Trion post in a long while and we need more of this kind of thing.

  5. #5
    Rift Master Sonoko's Avatar
    Join Date
    Jan 2011
    Posts
    658

    Default

    Definitely glad to at least hear Trion acknowledging such issues, and I look forward to any possible improvements in the future. Honestly, at this point I had assumed performance was a topic that got swept under the rug never to be spoken of again, you know, like armor randomly changing color.
    (V)    (V)
    ミ(◕‿◕。)彡

  6. #6
    Ascendant Slipmat's Avatar
    Join Date
    Jan 2011
    Location
    Ireland
    Posts
    6,370

    Default

    Quote Originally Posted by ZorbaTHut View Post
    My next step is to take this on to live servers, running performance tools while standing shoulder-to-shoulder with you fighting zone event bosses
    I've noticed that since Hotfix #9 last week, here on Icewatch (EU) every Volan event has been very smooth and very playable, even ones that have popped 8-9pm server prime time

    If that was just the start of the tweaking, i look forward to 2.2 and beyond

  7. #7
    Official Rift Founding Fan Site Operator bctrainers's Avatar
    Join Date
    Apr 2010
    Location
    Kansas, USA
    Posts
    3,786

    Default

    My next step is to take this on to live servers, running performance tools while standing shoulder-to-shoulder with you fighting zone event bosses.
    The best stress test is those massive CQ zerg v zerg battles that go on for minutes at a time.

    I noticed some speed improvements / lower CPU i/o this afternoon on PTS, but that may have been due to no one else being online with me.
    --BC

  8. #8
    Champion of Telara Nnnxia's Avatar
    Join Date
    Mar 2011
    Posts
    1,303

    Default

    Hi Zorba

    Could you look into optimizing the 2h animations for attacks or increasing their speed to be on par with 1h attack animations?

    The lag in between gcds become pretty evident for a class like pyro harb when switching on or off the lightning blade effect.

    This issue may have arosed since 2h animations were originally designed for 1.5s gcds and are having some issues transitioning to 1s gcds?

    Thanks.

  9. #9
    Champion Lifeisdeath's Avatar
    Join Date
    Jan 2011
    Posts
    516

    Default

    Holy crap! This was a great post! We definitely need more of this. Give this man a raise!

  10. #10
    Shield of Telara
    Join Date
    Jan 2011
    Posts
    758

    Default

    I think I love this guy.

    Wow.

    This is worth much more than a +1, it is worth a +100.

    BC is correct, look at the long CQ fights as an example. Anything you can do to help reduce the condoms on screen.

    I would also look at the three phase Steppes event, that has the rain in it. Somehow rain tends to just beat the crap out of fps.

    If you are looking at raid instances, off the top of my head, Matriarch. Last week, we had quite a few times when interrupts didn't happen, but the chat spam showing from players stating they interrupted were within the timeframe of her cast.

  11. #11
    Prophet of Telara Frailaq's Avatar
    Join Date
    Jan 2012
    Posts
    1,181

    Default

    While I'm sure other devs were involved in this too, the fact that Zorba posted this information has instantly made him my favorite Trion developer. Finally! Details like this is what we were looking for every time we saw patch notes that said "Performance has been slightly improved" without actually telling us what was being done. Sometimes, transparency is not only the best way to keep customers happy and informed but you may also come across that player who can actually take the information you provide and offer good suggestions to further improve the product you offer which in turn brings in more paying subscribers.

    Much thanks for the work you've done on this!
    Avatar by Rotaken on deviantART.

  12. #12
    Soulwalker
    Join Date
    Dec 2011
    Posts
    3

    Default

    Would also be nice if the 20% of the CPU usage limitation gets removed, or increased.

  13. #13
    Plane Touched
    Join Date
    Nov 2011
    Posts
    276

    Default

    An outstanding post!

    This is the type of developer communication that gets players excited that the developers care about the game and understand it's strengths/weaknesses.

    You don't need to respond to every question that might arise in this thread, just a once a month update would keep 90%+ of us happy.

  14. #14
    Champion of Telara Alessar's Avatar
    Join Date
    Feb 2011
    Posts
    1,237

    Default

    This post was informative and interesting and I would like to subscribe to your newsletter. Also, as someone with an older video card but a newer CPU (quad core) I am thrilled to hear some efforts will be made on increasing the use of multithreading.

  15. #15
    RIFT Fan Site Operator Riane's Avatar
    Join Date
    Apr 2011
    Posts
    5,612

    Default

    Quote Originally Posted by ZorbaTHut View Post
    I think there are opportunities to split RIFT’s work into several threads and really exercise modern gaming computers. The programmers reading this are cringing in sympathy right now, as adding support for multiple cores is often a nightmare, but it’s worth trying for the framerate boost that might be achievable.
    That's probably the best part about this entire thread. Nightmare or night, I am so glad that you're at least considering this as an option in the future.

    Awesome update on everything, Zorba!

+ Reply to Thread
Page 1 of 12 1 2 3 4 5 11 ... LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts