@farshad No it happens on a fresh build where absolutely nothing is modified as well. Automatically goes into injured mode and interaction is broken. I think it's because of the heavy reliance on the blueprint function libraries. Maybe it's not grabbing valid world contexts or something
I added the ac_health logic directly to the player and re-programmed all the logic that used the blueprint function library to call to the health component and that took away the error, but then it just jumped to complaining about the next component with the same error so I'm going to have to basically reprogram the entire pack to not use function library at all becuase of the way android handles things. Good thing I love a challenge!
@rdograndy Thanks for the update and for digging into it! Blueprint Function Libraries rely on having a valid world context for many calls, and mobile builds may initialize things differently, which can lead to null context issues. As you know, the framework is officially supported on Windows, so I can’t provide a guaranteed solution for mobile.
That said, I really appreciate your effort and initiative! If you want to keep experimenting on mobile, using the Windows version as a reference is your best bet, and you may need to adjust or refactor some systems to make it stable on Android.
Good evening, sorry to bother you — I’m currently stuck and hitting a wall.
I’m still using the engine and that’s not going to change anytime soon; I’m actually really looking forward to the upcoming update.
I’m trying to create a puzzle in my game where the player has to read a document, and once that specific document has been read, an interaction becomes available to pick up a key.
I created my trigger and added variables to the document with an ID variable to focus on that specific document. I ran some tests and, after using a Print String, the execution reaches my Get Component by Class (AC_Interact), but nothing happens after that.
So I must have made a mistake somewhere. Of course, I connected the execution pins correctly and linked my FileRead variable to AsBP_File.
That’s basically where I’m stuck. If someone could help me, that would be great. I watched some tutorials, but since the engine has a lot of internal logic, I thought it would be better to ask directly here.
I hope I’m not bothering you.
Thank you very much!
Thanks for the detailed explanation. Have you made sure that "ItemToPickup" actually contains valid data?
If you take a look at the "BP_ObjectMaster" class as an example, you’ll see how the triggering is handled there and how the correct data is assigned to "ItemToPickup". You can use that as a reference and follow the same pattern in your own custom actor class. You can also open the "InterfaceGraph" inside the Character class and see how different interfaces can be used to communicate with various actors.
You need to make sure that your reference, whether you're using ItemToPickup or creating a new variable inside the AC_Interact component, actually contains valid data. You can set this up properly by following the patterns I mentioned earlier and using interfaces to pass and manage the data correctly. if you need more information, please let me know.
Thank you so much for your reply, I’ll take a look at it tomorrow 🙂. I followed your tutorial to teleport to another map, but I need to check again because my inventory isn’t teleporting 😅. Sorry for all my questions, but I just started with UE recently, so I’m trying to tinker as best as I can. Thanks again for your answers and your videos 🙂.
Hello, I’ve fixed the issue with teleporting to a map: I had forgotten to connect the false branch.
I’ve made all the changes, and everything is working perfectly =) !
However, I have a question regarding saving: when you save on, for example, map 2 and use WB_Load, it always loads the first map linked in “Open Level by Name.” How can we make it so that, no matter which map the player is on, loading places them in the correct location?
Thank you.
Glad to hear you managed to fix it, Auron! 🙂
Regarding your savings question:
In the "AC_SaveGame" component, inside the "SaveData" function, we already store several pieces of information. If you’re using multiple maps, you also need to store the name of the level where the save happened.
You can do this in "BP_SaveInteract". Since we already pass "SaveRoomName" You can additionally get the current level name using "GetCurrentLevelName" and send that to the widget as well. Then, store this level name in the "SaveGame" data just like the other saved variables we have done there.
After that, in "WB_LoadGame", look at the "Fetch Data For All Slots" section, get the correct slot, you can use the SelectedSlot variable as well, and check which level was stored for the selected save slot. Use the saved level name and open that level.
That way, no matter which map the player saved in, the game will load the correct one.
Hope that makes sense 👍
Thank you for your quick reply. I’ve started following what you suggested and I’m currently at the WB_Load part. I’ll continue tomorrow and run some tests. I’ll get back to you to let you know whether I managed to make it work or not, with screenshots if needed.
In any case, it’s really impressive everything that has been done in the blueprints. I’m probably repeating myself, but it’s a real gem 😁. See you soon!
Here I’m getting back to you to show what I’ve done. After testing, I tried saving and loading the game, but I ended up with a black screen.
To start, I created a variable in BP_ClassicSaveGame with SaveGame checked. In AC_SaveGame, after the Set Player Last Position, I used Get Current Level Name, connected it to the variable I just created, and linked that to Set Unlocked Safes (I’ll send screenshots below).
Then, I made changes in BP_SaveInteract, where I connected a Get Current Level Name to another variable called LevelNameSave (it’s possible the problem is here).
Once that was done, I went into WB_LoadGame and modified the Close Event at the end, where we have the Open Level. After Set in Main Menu, I connected a Load Game from Slot with the Selected Slot variable, cast to BP_ClassicSaveGame, and linked it to the Open Level using my BP_ClassicSaveGame as the target, connected to my Saved Level Name variable.
That’s it. I’m not sure if I’m on the right track or not.
@farshad I had a quick play, but am new to the Enhanced Input system (I've just switched from 4.27). I could only make them turn left, not right or move forward
------------
Admin Edit: This question has been moved from the Feature Requests topic to this topic. It is related to how to make the D-pad control character movement instead of the left joystick.
Open IMC_Default and make sure that IA_Move and IA_Turn are configured according to the reference images I sent.
Then go to the character class and, in the “Move Character” section marked with a blue comment, change the highlighted value to 0.9. After that, you’ll be able to control the character using the D-pad.
Note that in this state, using the left joystick for movement may feel slightly affected. To properly support both joystick and D-pad usage, you should create a boolean variable and set it so that whenever the player uses the D-pad, the value becomes 0.9, otherwise it should stay at the default value.
If you have any questions, feel free to ask.