See UDN thread for details.

Essentially we need to ensure that class variables are created for SCS components even if the template isn't loaded as a result of a NeedsLoadForServer() API override. Otherwise we can end up with a compiler error on load due to missing variables for existing 'Get' nodes.

Steps to Reproduce
  1. Launch QAGame editor.
  2. Create a new BP class based on Actor (e.g. - BP_Test) and open it in the Blueprint class editor.
  3. Add a TextRender component in the components tree view.
  4. Add a variable get node to the event graph for the TextRender component and hook it up to a PrintString node attached to the BeginPlay event.
  5. Compile and save the Blueprint class and close the Blueprint editor window.
  6. Add a new instance of the Blueprint class to the level and save it as a new map (e.g. MyTestMap).
  7. Close the editor and relaunch as an uncooked dedicated server (command line example: 'QAGame MyTestMap -log -server -nomcp').
  8. The BP class should warn about missing the var during compile-on-load:
    [2016.08.17-21.44.59:373][ 0]LogBlueprint:Warning: [BP_Test] CreatePinForVariable: 'TextRender' variable not found. Base class was probably changed.

Expected result: The Blueprint compiles without warning when launching as an uncooked dedicated server.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-31667 in the post.

Login to Vote

Fix Commit3137800
Main Commit3152997
Release Commit3159180
CreatedJun 6, 2016
ResolvedSep 29, 2016
UpdatedApr 27, 2018