ReSharper C++ 2019.1 for Unreal Engine: Remote Procedure Calls

In this series of blog posts, we talk about some specific features for those who develop games with Unreal Engine:

  • Part I: Performance improvements: faster cold startup times, better memory utilization, and new settings to tweak ReSharper’s indexing behavior.
  • Part II (this post): Support for Remote Procedure Calls.
  • Part III: Support for the UE4 naming convention and completion for reflection specifiers.

So today we want to tell you about another Unreal-Engine-specific feature that was added in ReSharper C++ 2019.1 – support for RPCs.

If you are making games based on Unreal Engine, grab this free build and give it a try. We want to hear your feedback, be it good or bad!


RPC in Unreal Engine

As you know, RPCs (Remote Procedure Calls) are functions that are called locally, but executed remotely on another machine (separate from the calling machine). ReSharper C++ identifies UE4 RPCs by Client, Server or NetMulticast keywords in the UFUNCTION declaration statement. It also understands whether a Validation function should be generated. So if you get a WithValidation keyword in the UFUNCTION declaration statement, then:

  1. When generating the implementation for a function, both functions will be generated for you automatically (it also works when generating definitions for class members via Alt+Ins):
    Generate RPCs implementationIf you don’t have WithValidation set, then only an _Implementation will be generated.
  2. If you miss one of these two functions (either _Validate function, or _Implementation function), ReSharper C++ will notify you about the missing one and generate it for you:
    Generate missing implementation
  3. While you navigate to a definition, two options will be suggested for you: a corresponding _Validate function and a corresponding _Implementation function. These options are also available in the Alt+Enter menu as “Related UE4 functions”:
    RPC navigation
    Again, if you don’t have WithValidation set, then only _Implementation will be suggested there.

In future updates, we also plan to update the Rename and Change Signature refactorings (RSCPP-25661) to work with RPC functions correctly. We also expect to tweak our support for the UE4 naming conventions to suggest prepending RPC functions with the corresponding Client, Server, or Multicast prefixes.

By the way, the same works for BlueprintNativeEvent. When the corresponding specifiers is passed in UFUNCTION, ReSharper C++ will be able to generate an _Implementation function for you, as well as navigate to it from the declaration.


Your ReSharper C++ Team

This entry was posted in ReSharper C++ Tips & Tricks and tagged , , , . Bookmark the permalink.

6 Responses to ReSharper C++ 2019.1 for Unreal Engine: Remote Procedure Calls

  1. Angius says:

    I love it! Keep it up guys, I can’t wait for an alternative to Visual Assist!

    • Anastasia Kazakova says:

      Anything in particular you are missing now?

      • Angius says:

        Speed, mostly. Don’t get me wrong, ReSharper is better than ever, but VAX is almost instantaneous. Also, sometimes has some issues with getting predictions in the right context.

        • Anastasia Kazakova says:

          Please try the recent EAP, seems we’ve sped up ReSharper C++ a lot during this release iteration, so you might find a huge difference. We are very much interested in the feedback, if you decide to try.

        • Anastasia Kazakova says:

          Regarding the issue with predictions, would be nice if you can report the samples to us, so that we can improve.

Leave a Reply

Your email address will not be published. Required fields are marked *