Heartless & Dreadful : Return By 72 Hours

Heartless & Dreadful : Return By 72 Hours

Not enough ratings
Custom Mission Making for Heartless & Dreadful (Setup, and basic level creation.)
By Kirillian
Since you're reading it, you're likely interested in how to make custom missions for Heartless & Dreadful.

Well, it's simple. Mostly.

This guide does assume you know some basics of Unity and/or Blender.

If you get stuck or need some help, just comment below.
   
Award
Favorite
Favorited
Unfavorite
Beginning.
Since you're reading it, you're likely interested in how to make custom missions for Heartless & Dreadful.

Got problem or questions? Shove them into the discussions tab.
https://steamhost.cn/steamcommunity_com/app/1701890/discussions/1/

Well, it's simple. Mostly.
This guide does assume you know some basics of Unity and/or Blender.

First of all, make sure you have the following installed on your computer.

List of tools you need to install.
1) Blender 3.0+ You can install it directly from Steam.
(Any version should work in theory, but 3.0+ is tested.)


2) An image editor of some sorts, preferrably Photoshop due to .psd support.
(It doesn't matter where you get it, it will work.)


3) Unity 2022.3.60f1 which can be installed via Unity hub.
(To install the SDK.)


4) The mod tools .unitypackage which is shipped with the game's folder.
(To install the SDK.)
Installing Blender
Why do we need Blender anyway?

Well, Blender is useful for a lot of things.

Such as model making, level making, etc, etc... But most importantly, because Heartless & Dreadful's SDK has .blend model files included, which will be automatically converted into something Unity can use if Blender is properly installed in your system.

You can either get Blender on Steam or on the official website. You only need one, make sure to run it at least once if you haven't already.

Steam link for Blender:
https://steamhost.cn/app/365670/Blender/

Official website of Blender:
https://www.blender.org/
Installing Unity and the SDK.
First, let's install the required Unity Version.

Option 1.

Install Unity Hub


1) https://unity.com/download
or use the direct link instead.
https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe

2) Copy paste this link into your web browser.
unityhub://2021.3.5f1/40eb3a945986

Option 2.

1) Go to https://unity.com/releases/editor/archive
2) Find Unity 2021.3.5 in this tab.

3) Download it with whichever option you want.

Now that you have Unity and Blender installed, there's two ways to start the SDK. You can either use the prepackaged project in the game's folder, or do it from scratch,

Loading prepackaged project is easier, and will also allow you to see the SDK Sample Mission that has been published to the workshop, you'll be able to mess around with it and so on.

Making a project: The easy way.
Click open in Unity hub.

1) Enter your game's location in there, and pick the SDKSample folder and open.
In my case, the path was: A:\Steam\steamapps\common\HnD\SDKSample



2) It should be just open and ready to use.

Keep in mind, that if you do it this way, you'll likely lose progress if the SDK Sample ever gets updated. It's best to Copy it somewhere on your hard drive first, and then open it from that separate location.
Making a project: The hard way.
1) Create a CORE 3D project. Do not use HDRP or LRP.



2) After project is created, go to the game's installed folder drag KyoshinOFHeart Mod Tools.unitypackage onto the project's Window. Let it import.

It may take a while to Import stuff, let it happen.



3) It'll ask you if you really want to import a project, click Import, and then import again once prompted.





4) Done that? You should be getting a lot of errors now. That's normal. That is because we need to enable a script definition to let the Engine know that it's in the dev kit mode.



5) To do that, go to properties and set up Scripting Define Symbols, add DEV_KIT and click apply. It should look something like this.

6) Now, some errors will remain in the Console, that is okay. That means you are just missing one reference, you need to download Post Processing stack by using Unity's package manager.





7) Let it import again.



8) The errors will disappear.

This is needed to only be done once, whenever you decide to update the tools, you wouldn't need to do it again.
1) Actually making a Mission.
Done with the install? Good. Let's continue with actually making the mission.

1) First of all, navigate to the Scenes folder in your SDK, should be in Resources/HeartGame/Scenes

2) Right click, create Scene.



3) Should look something like this.



4) Now double click on the scene, it should open a basic Unity scene.



5) Select the Camera and delete it from the Heirarchy on top left.



6) Done it? Good. We need some basic ground here, before we can continue, Ideally, you should have some sort of model you'd want to use as the ground already which can be created in Blender, but for now a simple cube will do.

7) Right click on the Heirarchy, create a cube and stretch it.





8) Make sure that the Box Collider attached has PhysZero material.



9) Now that we are done with the basic terrain, let's add the actual character.

10) Navigate to the Resources/HeartGame/LevelEditorSDK/Prefabs folder.



11) In here, we have a few subfolders. The namings are quite self explanatory. So let's grab an SDK_Player prefab and put it in the scene by dragging and dropping it.



12) But that's not all! We also need to actually provide some level information for the game to recognize it properly.

13) This time, open the general folder within prefabs, and drag SDK_Level_Info onto the scene.

14) Did that? Should look something like this.



15) Here you can customize a lot of things related to the mission, a lot of them are self explanatory.

16) Now to actually finish the mission, we also need SDK_LEVEL_FINISHER in the scene. Drag and drop it somewhere.



17) Did it? Now you're basically done with the basics. That's all it takes to get one scene to be "playable" in the game.

18) If you just want to test that it works after doing that, refer to 5) Testing your mission part of this guide.

Important notes:

- Don't forget to BAKE! Lighting is VERY expensive in the game, baked lighting on another note will reduce the amount of draw calls, shadow casters, and overall will make your mission a much smoother experience. Unity, for whatever reason is really heavy with dynamic objects. So baking is 100% something you should do. Even if you don't plan on having baked lightmaps, merged meshes are way more optimized than having everything dynamic.
Also. Compress them. Seriously. Do it. You'll save a ton of space and VRAM.



- FOR LIGHTING BAKE, YOU HAVE MULTIPLE PRESETS.
HnD_True_Settings_Preview is the one that I reccomend as it's quickest and lightest.



- Don't forget to bake Occulusion Culling, this will also improve performance of your project. Do be aware that the settings of Occulusion Culling however will need to be played around with for the best experience.





- Since Heartless & Dreadful mostly relies on custom physics, you should ensure all of your colliders have "PhysZero" material to work the same as they do in the main game.



- Usage of LEVEL_DATA prefab is completely optional, however it is always good to organize your project for easier workflow in the future. Makes searching for stuff in the scene a ton easier, too.
2) Using basic prefabs for platforming, collecting, and fighting.
The game provides plenty of different prefabs that can be used for platforming.
If you want to just play around and see how they all behave, I reccomend loading the SDK_TEST_LEVEL in the SDK. As it provides basically every possible thing set up in a playable state, once the stage is exported.

In any case, let's talk prefabs.

All you have to do, is to grab these blue cubes and drag them into the scene. Just like you've done before.


Once dragged, some of them may have additional options you can use. For example, jump height on the jump pads / hoops. Fan power on the fan, etc.

Notes:
- Player prefab, you can adjust which character should be used for this mission.

- Same goes to enemies, bosses. You can pick who should be spawned by clicking on them and selecting them. The preview is available in there.
- Gates are open by default. To make them closed, make sure the Switch toggle on the right is disabled.

- Teleporters need to have another Empty gameobject in the scene, aka just some empty object... model... whatever, just to get the position of it. You'll need to ensure it is set up on the script on the right so the game knows where to teleport the player where needed.

- Moving Platforms - even though you can adjust their parameters, it is not reccomended in general. The pink destination should be enough of a reference for you to know where it'll go in the general direction. Though it's always reccomended to playtest.
- Rail System - The rail system is a mess. You'll have to ensure the root of your rail starts somewhere around it's base like this. Why? Because it uses it's root position to figure out whether or not player should get onto it backwards or forwards.

In addition, after you've set up the rail, you'll need to Remove mesh collider component from it, and add a new one. Why? It needs to be done so the generated mesh collision will update accordingly.
- Pulleys are an exception when it comes to configuration, if you want to set up where the pulley should rest, you need to click and drag this green thingie where you want it to rest.

- Fixed cameras have a handy model that is tied to the parent of where the camera will be located, use that parent and put it where you want the camera to be located.


- The rest of the objects don't require much configuration and can be placed as is.


3) Setting triggers for custom events, combat, etc.
- Triggers. Triggers can be used for basically anything. Turning something on, turning something off. Interacting with the scripts. In addition to these triggers, you can also set up some of them on the enemies as well. For example, do something if enemy dies, do something when enemy spawns... etc.
As you can see on the right, there's a handy default example of how to turn on and off the light provided within the prefab. Use that as a reference to do your own triggers.
(You have to drag and drop an object in there, and only then you can choose what to do with it.)


Now let's talk the Arena system, and how to set up "forced" encounters.
Arenas... are... Complicated. Very complicated, one would say.
But figurable out. There are a few tooltips available on the right to guide the user on what part of the SDK does.


In short, you can just use the Arena prefab to make your fights simple. They all come with Siis as default enemies, but you can always adjust that, their spawn position, rotation, etc. The rest is explained in the hints within the SDK once you select the SDK_ARENA_BASE_SCRIPTS.

The fight is activated once the player walks through SDK_TRIGGER within this prefab. You can move it anywhere you want.

What's important to note, is that SDK_ARENA_WAVE_0 should always be "Enabled" while other wave should be disabled, otherwise conflicts may happen. That's just the way the game is programmed.
4) Adding NPCs that can speak and do things.
Here's how you can utilize the SDK tools to add NPCs and story to your mission, if you so desire.
This is actually quite simple, really.

1) Drag and drop SDK_NPC into the scene.

2) After selecting them in the scene you can pick the character that should speak, the emotion they should have, and their dialogue of course. You can use the + icon to keep adding lines.


You can pick the background image for the dialogue, and if it should be played automatically. "Automatic" dialogues are useful if you're trying to make a cutscene, you can just make the NPC sprite invisible by turning it off, and expanding the trigger size to ensure player sees your dialogue.

If you scroll below, you should see that you can give them a custom sprite, portrait, name too.


Each face doesn't have to look unique, if you don't have a specific picture, you can just reuse the default one. it will be fine.

If you have a problem with translating to another locale, you can use https://www.deepl.com/ it's free and cool. And mostly accurate. Way more accurate than google anyway.



5) Testing your mission
Done with the mission making? Good!

1) Go to Tools > ModTool > Export Mod



2) Enter your information here, and pick the game's mods folder for testing.

In my case, the path was: A:\Steam\steamapps\common\HnD\Mods



3) Export it with the information of your level, go into the game, custom mission, load level.
6) Uploading your custom mission to workshop and updating it in case something goes wrong.
Utilize the uploader tools provided in the game's folder.

In my case, since the game is installed on the A drive, this is the tool to upload the custom missions into the workshop.
A:\Steam\steamapps\common\HnD\WorkshopTools\SteamWorkshopUploader.exe

Or you can just load it from the Steam now.

1) On top left, create your mod.


2) Put your level files that you had created into the mod you had just created.

In my case, it would be this.
A:\Steam\steamapps\common\HnD\WorkshopTools\WorkshopContent\Cool mod

3) Then follow the instructions provided with the toolset, it should be self explanatory.



Keep in mind, that after you try to upload it for the first time, it might ask you to accept the workshop's terms of service, if it happens, go to your item within workshop, and accept the terms.

Once you do, try to upload again, and you should be done.

To update the mod, just open it in the tool from the top left, replace the files in the mod folder again, and upload.
Congrats, you're done.
You've done it, you've just finished your first custom mission.

Now there's always more you can do, learn to make custom models, assets, shaders, etc, etc... But that's beyond some silly mission making tool.

That's an entirely different topic altogether that can be learned online. Go have fun now, you goofball.