x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Crash on missing declarations in C parts

This may be a bit of an esoteric case but it is a legitimate bug that just cost me 4 or 5 hours to find. I will have to explain it verbally since I cant send any example code, but I do my best.

I have two separate UE projects that work together. Both are C++ projects. The purpose of them is basically in a Client Server scenario for a MMPG that uses our own network layer. One of them is the client that has the full scale of graphical experience, the other one is a spatial server that holds the world and some scaled down versions of objects on the server side.

The client is the graphic rich version, so we decided to edit the world levels on the client, then migrate the maps to the Spatial Server where they are used with a different code base. Needless to say we have to be careful not to use stuff in the Blueprints on the client that don't exist on the SS.

Recently what we did was to add an enum in a C++ BP function library on the client side like so:

 UENUM(BlueprintType)
 enum class FE_HOUSE_SPECIAL_USE_TYPE : uint8
 {
     NONE                        UMETA(DisplayName = "NONE"),
     SHOP                        UMETA(DisplayName = "SHOP"),
     BAR                            UMETA(DisplayName = "BAR"),
 
     E_MAX                        UMETA(DisplayName = "E_MAX")
 };

then one of our Actor Blueprints used this enum in a switch statement. Coincidentally it is an actor that implements a 3D widget, which is experimental still.

Now we migrate the main map to the server side, start the server UE project and load the map and it crashed deep in a C++ engine stack. The crash happens even when you simply right click on the widget that uses the enum in the object browser.

It took me a while to figure out that the enum, which did not exist on the target project, was the culprit.

I understand that the migrate operation can not transfer C++ code, but there should be a warning of the form "This Blueprint uses this and that data element which is defined in your C++ code and can not be transferred" Preferrably with a question like "Do you still want to migrate". Of course you dont want this error recognition to block a transfer when you are certain that you have manually transferred the C++ code/data that the Blueprint needs. But a good warning like this with an information what data element / which C++ function is problematic can safe others a sleepless night like I just had.

Product Version: UE 4.16
Tags:
more ▼

asked Aug 10 '17 at 02:53 PM in Bug Reports

avatar image

Wallenstein
627 35 46 76

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question