Documentation


What is the Hedgehog Development Kit?

The Hedgehog Development Kit (HDK) is an open-source framework for Epic Games' free-to-use Unreal Engine 4 that allows anyone to create 3D fan games based on the Sonic The Hedgehog franchise.

Because of its nature as a fan game framework, anything created using the Hedgehog Development Kit cannot be commercialised — only free-to-play distribution is allowed.

The HDK framework was created as part of our vision to create a versatile, modular, and expansive Sonic fan game engine using the power of Unreal Engine 4. Anyone can freely modify the framework for their own use, adding their own custom code, characters, abilities, maps, and more.


World Settings

When creating a new world without using the HDKDefaultMap template, some world settings must be changed in order for the HDK framework to operate properly.

If you do not have a special reason to not use the HDKDefaultMap template, use of the template is recommended as it saves a lot of time.

GameMode

The GameMode in UE4 determines what HUD, controls, and character will be used for a certain map or project. Use of the HDK's SonicGameMode is required for proper HDK operation.

After enabling SonicGameMode, the HUD, controller, and GameState will be automatically set to HDK's predefined ones, but you can change them to your own custom ones if you want.

There are two ways to enable the HDK's SonicGameMode:

GameMode — Entire Project

Perform these steps if you want to set HDK's SonicGameMode as the default GameMode for all worlds in your UE4 project.

  1. Enter "Project Settings" through Edit → Project Settings
  2. Go to the "Maps and Modes" tab
  3. Change the Default GameMode to SonicGameMode through Default Modes → Default GameMode

GameMode — Single World Only

Perform these steps if you want to set HDK's SonicGameMode as the default GameMode for only the current world you are working on.

  1. Enter "World Settings" through Window → World Settings
  2. Change "GameMode Override" to SonicGameMode

Miscellaneous World Settings

  • Default Pawn Class — Defines the character ("pawn") to use in the world
  • HUD Class — Defines the HUD to use in the world. The HUD communicates with GameState to get variables that are set on screen in the HUD, such as Rings, Lives, and Time.
  • Player Controller Class — Defines the control scheme to use in the world
  • GameState Class — Defines the parameters for the HUD such as Rings, Lives, and Time.

Player Damage and Kill-Planes

The HDK's implementation of a kill-plane is a KillZ area. KillZ is a point in the Z-axis where the player would take damage. KillZ can either behave like a kill-plane, where the damage inflicted to the player kills them, or it can be used for other kinds of damage.

KillZ is not the only way you can achieve this functionality; Damage Volumes can also serve the same purpose.

Force No Precomputed Lighting

If this option is turned off, then your world will use baked (precomputed) lighting. If this option is turned on, then your world will use Dynamic Global Illumination, available in UE4 4.3 and higher. Please note that only GPUs with Shader Model 5 capabilities will be able to use Dynamic Global Illumination.

Advantages of DGI is that you no longer need to set anything up unlike Baked Lighting (Lightmass). All you need to do is to set up a movable Directional Light object with "Affect Dynamic Indirect Light" turned on. It also needs "r.LightPropagationVolume=1" to be present in Config/ConsoleVariables.ini. For more details, please check the official Unreal Engine 4 documentation.


Editor Preferences

The Editor Preferences affect the entire UE4 Editor. Here, we've outlined some that we feel are important. The Editor Preferences can be found in Edit → Editor Preferences. The complete list can be found in the official Unreal Engine 4 documentation.

Loading and Saving

  • Auto Save — We recommend that you leave this option on. This way, the UE4 Editor will automatically save the content of the Content Browser and any open maps.

Miscellaneous

  • Developer Tools → Show Frame Rate and Memory — Turning this on is recommended because it's a great tool to track your game's speed and resource usage.

Project Settings

The Project Settings affect the current project. Here, we've outlined some that we feel are important. The Project Settings can be found in Edit → Project Settings. The complete list can be found in the official Unreal Engine 4 documentation.

  • Description — You can enter in some information here such as the version of the game, and a website URL.
  • Maps and Modes — You can set the default map and GameMode here.
  • Physics — You can set how frequently the game engine updates the physics per frame. Use substep for complex physics calculations. Other than that, the default settings are fine. Further information can be found in the official Unreal Engine 4 documentation.
  • Windows — You can change the game icon and the splash screen image here.

Unreal Engine 4 Tips and Tricks

Just some things we've ran into that you may find useful.

Folder Organisation and Redirection

UE4 maintains a filesystem lock on any referenced file or folder. This becomes an issue when you're trying to move things around. To fix this, right click and select "Fix Up Redirectors In Folder."

The folder will still remain on the filesystem, but now you are able to delete it normally. Do not delete folders first without using the fixer option, unless if you just want to rid of everything that was inside it.


Classes to Blueprints

https://docs.unrealengine.com/latest/INT/Engine/Blueprints/TechnicalGuide/ExtendingBlueprints/index.html


Terminology

  • Objects — Instances of classes that inherit from the UObject class. All instances of the engine are Objects.
  • Class — Objects in the engine that can be instanced to create a hierarchy.
  • Actor — Instances of classes that are derived from AActor class. They can be placed and spawned in the world and can also be containers that hold special objects called Components.
  • AActor — Base class of all gameplay objects that can be placed in the world.
  • Component — Actor Subobjects that can be instanced and swapped across actors. Different components can be used to define how the actor will move, render, etc.
  • UActorComponent — The base component. Can be included as a part of an actor.
  • USceneComponent — A physical thing that can exist in the world. They have transform commands, meaning they can move around and interact. They can also join in an attachment hierarchy.
  • UPrimitiveComponent — A component that not only exists, but represents something, like a mesh or particle system. Many of the interesting physics and collision settings are here.