Changing Function Defintions in BluePrints can harm you

Hello and good day to you!

Haveing just had the living hell scared out of me, i’m a little cranky, so with that put aside,

Background a new system to be released for the marketplace called IwTransit (not a shameless plug), as I have worked on this for over 4 weeks, I am not piddling around with it, ■■■■ near 18 hours a day, 7 days a week. Hence to me, this is very important.

This issue (don’t worry, I’m waiting till submission to start typing up the whole list of things Iv’e found, from compiler errors in graph flow, to copying a function (CTRL+W in the function list), and then watching temp variables start destroying each other, on down to “why in the hell can’t I …”)

When creating a function inside a blueprint, let us say with 15 parameters to the blueprint. You compile up the blueprint the compiler is all happy, giving the big ole thumbs up (good to go). I’m happy, just made this awesome debug function, that is going to increase my productivity orders of magnitude (the system I"m building does 99% of it’s work during construction phase, so I HAVE to have it, breakpoints don’t work)

Call your shiny brand spanking new blueprint a few times from other functions, BUT

  1. don’t fill in all the parameters
  2. make sure that the parameters your passing are all strings (I don’t know if this is important, but that’s what my function is expecting)
  3. Be sure to save the blueprint (very important, and the only way to recover from this issue, is to have NOT saved it)
  4. Close the Editor (not for sure if it’s important, BUT let’s do it to cover all the bases)
  5. Open the Editor (DUH, lol)
  6. Go back to the function we created, that has all those handy parameters coming in
  7. Change the first parameter to be "pass by reference. The change that is made, actually doesn’t matter, you could add a new parameter, Just make sure, that when you do, yhou move it up in the parameter list to not be the last one.
  8. Compile
  9. Watch the errors flow out of the compiler

It’s going to start complaining about all the pins not being wired in the call to the function from where ever you call it from. In my case, over 5000 error messages (yes, it’s a complex system internally, with over 40 functions in it, and they are all calling this one Debug Print function, so I can see what is exactly going on in the construction)

That first time, after creating the function, and not wiring in all the pins, you had no issue, and all was golden. Now that you have changed something about the saved parameters, life is not good, and we have a problem. Thankfully I had not “saved” the blueprint, so all I had to do, was close the editor, and re-open, so that I didn’t have to see a whole day shot to hell, in order to fix this.

This error can be re-created, simply by just adding a new Parameter, and moving it up the list, or changing anything, about the first set of parms. I have not tested under 4.9.0, or 4.9.1.

As the base of my code, was started with 4.8.3 and that’s where i’m continuing the primary development, because the backwards migration of blueprints, well to be frank, just doesn’t work. Yes your told the migration is done, BUT, because the data inside the blueprint, which is marking the highest level that the blueprint has been compiled with, is not being updated, the Content browser will not show that blueprint, so that you can open it. If you decided to futz around with it, such that, it can be seen, then when you try to open it, so start working on the blueprint, the Blueprint editor, complains about that internal ID, and refuses to go on.

Ok, that’s 2 complaints, but still, I have a very long list to put forward… lol

Thank you for your time, and have a great day!

I’m not a dev, but it might help if you attached the message log or a screenshot showing the error messages.

Can you replicate the same issue in an empty project with a simple blueprint?