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 (coming soon): 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:
- 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
If you don’t have WithValidation set, then only an _Implementation will be generated.
- 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:
- 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+Entermenu as “Related UE4 functions”:
Again, if you don’t have
WithValidationset, then only
_Implementationwill 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
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