Notifications
Clear all

[Sticky] Support – Classic Survival Horror Framework

87 Posts
9 Users
37 Reactions
5,621 Views
6a4e33d4af3d92227b38e4c405c603f7c23390263df1a28434b0e82c76a7110d?s=80&d=mm&r=g
(@rdograndy)
Patreon Survivor
Joined: 1 month ago
Posts: 5
 

@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



   
ReplyQuote
6a4e33d4af3d92227b38e4c405c603f7c23390263df1a28434b0e82c76a7110d?s=80&d=mm&r=g
(@rdograndy)
Patreon Survivor
Joined: 1 month ago
Posts: 5
 

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!



   
Farshad reacted
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

@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.



   
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

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!


This post was modified 1 month ago 2 times by Auron

   
Farshad reacted
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

@auron

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.  


This post was modified 1 month ago 4 times by Farshad

   
Auron reacted
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

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 🙂.



   
Farshad reacted
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

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.



   
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

@auron

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 👍


This post was modified 1 month ago 4 times by Farshad

   
Auron reacted
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

@Farshad

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!



   
Farshad reacted
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

@Farshad

 

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.


This post was modified 4 weeks ago 5 times by Auron

   
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

@auron The "Load Game from Slot" function requires a SlotName in the widget. Test it and let me know the result

 

This post was modified 4 weeks ago 2 times by Farshad

   
Auron reacted
ReplyQuote
Auron
(@auron)
Patreon Survivor
Joined: 1 month ago
Posts: 24
 

@Farshad

It works! Thank you so much! Ah man, I had forgotten something again—sorry for the bother, but honestly, thank you so much 😺


This post was modified 4 weeks ago 2 times by Auron

   
Farshad reacted
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

Posted by: @auron

@Farshad

It works! Thank you so much! Ah man, I had forgotten something again—sorry for the bother, but honestly, thank you so much 😺

You are welcome 😀 happy it helped!

 



   
Auron reacted
ReplyQuote
96b96883beeb1c9e8db9325b4f7e08ae88d70b1ed4d9a139a3101938570c3b0d?s=80&d=mm&r=g
(@ben4886)
Patreon Survivor
Joined: 3 weeks ago
Posts: 8
 

@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.


This post was modified 3 weeks ago 3 times by Farshad

   
ReplyQuote
Farshad
(@farshad)
DEVELOPER Admin
Joined: 2 months ago
Posts: 98
Topic starter  

@ben4886

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.



   
Ben4886 reacted
ReplyQuote
Page 2 / 6
Share: