Hiraeth Digital - Hiraeth Terminal System

New: Integrate the Hiraeth Terminal System with AI Models using Llama-Unreal

Hiraeth Terminal System is a comprehensive command-line interface toolkit for Unreal Engine, designed to enhance gameplay with interactive terminal operations. A versatile system that can be integrated as both an in-world actor and a UMG widget. Balancing functionality and realism, it provides developers with the flexibility to create immersive and responsive environments.

💾 Download demo

📘 Documentation (v.1.2)

📺 Watch video

 

Key features:

  • Widget & World Actor Integration

    Use Hiraeth Terminal System as a widget within the UI or as an actor within the game world.

  • Default Terminal Commands & Responses

    Set unique default commands, help messages and error responses to each instance of the terminal.

  • Multiple Terminal Instances

    The system supports the use of multiple terminals within the same widget or scene, each with its own set of variables and directory.

  • Terminal Interaction Mechanics

    Characters can easily interact with terminal actors, with the system managing the focus and re-possession process.

  • Command & Response Customization

    The DT_commands datatable enables the addition of new commands and customization of responses, with placeholders like {command} and {name} available, and a function to override default responses on a per-actor basis.

  • Terminal-Actor Interaction

    Terminals can interact with any world actor that shares the same directory, facilitating diverse in-game actions through terminal commands. Actors can be associated with multiple directories, enhancing gameplay possibilities.

  • Directory & File actors

    Any actor can become a directory to navigate to or a file to download by implementing the HiraethTerminal interface and setting up the default variables. Both examples are included with the system.

  • Themes

    Customize the terminal’s appearance through predefined themes.

  • ... and more!

Hi Hiraeth Team

Why is it that when i activate Boot Sequence, all my SkeletalMesh Nanite gets messed up, after booting is finished it works again (nanite on skeletal mesh on characters), is there a translucent material which is used during Boot Up?

i changed all the materials to opaque and nanite works and everything, but as soon booting up is running nanite doesnt work anymore. I want to change the boot up material but i assume its in the c++ code. is there a way to access the c++ so i can customize it for my requirements?

nice would be also to have an option that in stead of creating material instances i could use predefined one.

But overall very great system, but this nanite i cant fix somehow, there is something during boot up which messes up nanite (like translucent or masked material or texture sequencer/streaming)

Can you elaborate more on the Boot sequence and possible fix?

Thanks very much and kind regards,

Eiven

1 Like

Hi Eiven,
Thank you very much, I’m very glad you like the system!

I tried to replicate the issue using a new 5.6 project and a Nanite skeletal mesh in the scene but everything looked normal. Could you please provide more details to help me replicate the issue on my side? What engine version are you using? Are you using the Llama-unreal integration or the default Terminal system? what happens exactly to Nanite skeletal meshes when the boot sequence is running? A video of the issue would be great.

The only thing I could think of is the SceneCaptureComponent found here: “Hiraeth/TerminalSystem/System/BP/BP_MasterTerminal” which has Capture Every Frame set to True when the Terminal is booting, and then set to False by default when the boot sequence is completed. Otherwise everything related to the boot sequence is done within UMG and no material instances that could cause such a bug are used.

To customize the boot sequence please drag and drop either BP_Terminal_01 or BP_Terminal_02 (instances of BP_MasterTerminal) to the scene, then at the default variables section set UseBootSequence to True, and add as many items to the Sequence array as needed, each item is a structure of the following data:

  • Text (text)
  • ShowLoadingBar (boolean)
  • LoadingMaxDelay (float)
  • ShowResultText (boolean)
  • SuccessText (text)
  • FailedText (text)
  • ShouldFail (boolean)

I hope this helps and I look forward to hearing from you!

Hello Hiraeth Digital

You can easily replicate it, just make a default UE 5.6 Project, activate nanite on SKM_Quinn_Simple, put BP_Terminal_02 into the level and activate boot sequence. Now when playing the Character will be in T-Pose while the Terminal boots.

Nanite Mesh goes into T-Post while Terminal Boots

Mesh has enabled Nanite

nanite mesh when terminal doesnt boot

hope this helps to fix this issue.

There should be also a minimal Terminal without Camera, the Screen Capture is regarding the Camera right? maybe the ScreenCapture shouldnt capture Nanite Skeletal Mesh (filtered out), maybe this could solve the issue

I also encounter anoter issue, first time when i boot up unreal and start the game, the monitor display is not ready, only after second run. i assume its due to material creation within BP but all the resources should be ready at runtime, meaning all is already created or similiar

Kind regards

Hello Eiven,

Thank you very much for the extra details and photos. I was able to replicate the issue: it is an engine bug, so it is not specific to the Hiraeth Terminal System.

I couldn’t find any reports here https://issues.unrealengine.com - I will submit a bug report as soon as possible.

To replicate the bug:

1- Create a new 5.6 project
2- Create a new Actor Blueprint.
3- Add a SceneCaptureComponent2D to the Actor Blueprint.
4- At the Construction Script: add a “Create Render Target 2D” node.
5- Set the “Texture Target” reference of the “SceneCaptureComponent2D” using the output of the “Create Render Target 2D

Now when adding a Nanite Skeletal Mesh to the scene that has an animation sequence assigned, the mesh will not play the animation sequence and will go into the default pose instead.

For the animation sequence to work, CaptureEveryFrame should be set to False at the SceneCaptureComponent2D.

Regarding the minimal Terminal, there is a “UI Only” example that doesn’t use a camera or a SceneCaptureComponent, it is found here: “Content/Hiraeth/TerminalSystem/Demo/BP/BP_UIOnly

Regarding the monitor material on editor start, I believe this is related to shaders being compiled. The material instance of the monitor is created at the Construction Script, the monitor also has a default glass material assigned to the mesh so it doesn’t start with the default grid material.

I hope this helps, please let me know if you have any questions.

My best wishes,
Monz

1 Like

Thanks a lot, Monz, I really appreciate that you took the time to replicate the issue and confirm it’s an engine-level bug, and that you’ll be submitting a report to Epic. That’s very professional and much appreciated.

I’ll try out the solution (CaptureEveryFrame = False) and also test the minimal UI version you mentioned, looks like that could fit nicely for a lot of scenarios. I also tried excluding skeletal meshes from the SceneCapture, but it seems to get ignored, either I did something wrong or it’s part of the same underlying bug.

Thanks again for the clear explanation and the quick, detailed response, really solid support, and I’m glad to keep using and supporting Hiraeth Terminal. If I run into anything else or have more questions, I’ll reach out.

Thank you Eiven, you are most welcome!

Please keep in mind that I was referring to the CaptureEveryFrame boolean of the SceneCaptureComponent2D itself (so in an empty project) and not the boolean with the same name found under the “Hiraeth Terminal - Options” category of BP_Terminal_01 and BP_Terminal_02 instances.

The CaptureEveryFrame boolean of Terminal instances controls whether the actual CaptureEveryFrame boolean of the SceneCaptureComponen2D is always True, or only True when the Terminal is possessed/booting. It is set to False by default to allow adding as many Terminal instances to the scene as possible.

Setting either to False will not fix the issue unfortunately - CaptureEveryFrame must be set to True when the Terminal instance is possessed in order to update the monitor, so even without using the Boot Sequence, if the player possesses a Terminal and a Nanite Skeletal Mesh was in front of it, the mesh will go to the default/reference pose until the Terminal instance is unpossessed.

I have submitted a bug report and hopefully the issue will be fixed soon. I will also be looking for a workaround (I have tried excluding Skeletal Meshes as well and it didn’t work). For now it seems the best option would be to use the UI Only instance when using Nanite Skeletal Meshes, you will still have all functionality of the Terminal System - the only difference would be how you interact with and display each instance.

Please don’t hesitate to reach out if you need any assistance.

1 Like