I have run into this problem sometimes. I try a unstable engine branch, make some changes and play around a bit and when I want to get back I can’t because my blueprints will become incompatible with previous engine version.
It would be cool to have a way to make them compatible again with older engine version …
I can see how this would be obviously useful but unfortunately the versioning system is there to explicitly prevent this kind of behavior. Allow me to provide an example why this is something that is very difficult to overcome.
if you create a blueprint in an unstable version then this version can easily contain classes that don’t exist in the last release version or potentially it could have newer revisions of objects that have different serialization patterns or post serialization procedures. Code changes such as these tend to be written as a one way process or a migration of data with little to no consideration given to reversing the process.
Effectively this would require a huge effort to support all iterative changes between releases and would be very error prone. In essence all of those changes would be present in the next release, I believe that although you may need to re-save the blueprints to remove some warnings it should load once the next release is available.
I’m sorry I can’t offer anything more constructive than that - but I hope this helps to explain the reasons why we don’t support this.
I am also in the process of back-porting a project built in 4.5.1 to version 4.4.3. You can’t copy the assets to the older version, but there is a workaround.
Open both your new project (earlier version) and your current one (later version), then open up a blueprint you want to copy, select all of the nodes and press CTRL+C. Create the new blueprint in the earlier version and then press CTRL+V to paste all of the nodes into your new BP.
For the most part this works perfectly. There will be an issue if you try to copy/paste a node that was not available in the earlier version, but aside from that you can do this for most BP’s.
Also note that if you copy nodes from a BP, you can paste into notepad/MS Word and it will paste all of the pseudo-code required to build a node network. This is a handy way to pass data between computers as a text file, or to share your code here on the forums.
Thanks DotCam, but it would be a huge huge task right now …
Could I do the same for the .map files? I mean, copy & paste all the things there? May be having two opened instances?
BTW. I have found an issue in the past copy&pasteing blueprint code. If you use the “Add Timeline” inside the graph, weird things will happen because those objects (I think) are not deeply copied. Subtle stuff like this makes me regret to take this approach
Would be infaesible to just have a “contract” for each engine version and whatever thing you use in a blueprint which does not respect the “contract” will be wipped on downgrading? (ie. this feature is not understand in this engine version, so show a special error node…)
DotCam makes an interesting point with regards to using clipboard data as a potential solution, I’ll speak with some of the other blueprints guys and probe feasibility of this and let you know what comes from that.
With regards to the timelines, that sounds like a bug to me so I’ll take a quick look and enter an issue if it isn’t something that is easy to fix.
FYI Timelines should deep copy - any local curves should be duplicated into a new unique instance and external curves should just propagate the reference to the duplicated timeline.
Update: Just checked this and the copy paste for timelines doesn’t seem to work as expected so I’ll add an issue for that.