Tips & Tricks

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.


UPD. Rider for Unreal Engine Public Preview is now launched. Rider is already well known in the worlds of .NET and Unity game development and we are now ready to take on the world of Unreal Engine development! First-class C++ support, no compromises on IDE performance, knowledgeable about Blueprints, assists with the Unreal Engine reflection mechanism, understands HLSL – it’s all about Rider for Unreal Engine. Join the Early Preview now!

Your ReSharper C++ Team

image description