Skip to content

Base the mod on Featureful SDK

Roman Chistokhodov edited this page Aug 8, 2023 · 9 revisions

So, you want to port your mod or create a new one using Featureful SDK.

Option 1: download the mod sample

You can grab the archive with the mod sample from the Releases (download the associated halflife_featureful zip asset). Install it like you install other mods, i.e. unpack the archive into your Half-Life directory, so the featureful directory ends up being a subdirectory of Half-Life directory.

From now you can edit the liblist.gam and rename the directory to whatever you want for your mod.

The downside is that you may not need all resources packed with a mod sample (e.g. if you don't need all custom weapons and monsters in your mod), so you'll need to manually clear out the unneeded resources if you don't want redundant files in your mod.

Option 2: adjust your existing mod directory

If you already have a mod directory or if you created a fresh one, you'll need to copy cl_dlls/, dlls/ and optionally features/ subdirectories from either the mod sample or from the automated build to your mod directory.

Then make sure liblist.gam in your mod directory points to dlls/hl.dll.

liblist.gam example:

game "My Mod"
startmap "c0a0"
trainmap "t0a0"
sp_entity "info_player_start"
mp_entity "info_player_deathmatch"
gamedll "dlls\hl.dll"
gamedll_linux "dlls/hl.so"
secure "0"

Feature configuration

The main point of Featureful SDK is being configurable via a set of configuration files.

For a quick start you can just copy features/ subdirectory from a mod sample or an automated build to the directory of your mod.

If you decided to start with a mod sample instead, the subdirectory should be already present.

Read the Feature-configuration wiki page about the files format.

Enabling custom weapons

Decide which of the available new weapons you want to include in your mod. Based on that you should put all required resources to your mod either from the mod sample or other sources (e.g. from gearbox/ folder of Opposing Force). The resources vary depending on the weapon and usually include:

  • Models (v_, p_ and w_)
  • HUD sprites and .txt file describing the weapon hud (e.g. weapon_eagle.txt)
  • Projectile sprites and models (for some weapons, e.g. shock rifle, spore launcher)
  • Sounds
  • events/*.sc file (the Grapple doesn't need .sc file)
  • Additional skill cvars in skill.cfg.

Open featureful_weapons.cfg in your mod directory and configure the list of enabled custom weapons. The list of all available weapons:

pipewrench
knife
medkit
grapple
eagle
m249
displacer
sniperrifle
sporelauncher
shockrifle
penguin
uzi

Enabling custom monsters

Decide which of available non-standard Half-Life monsters you want to be use in the mod. Monsters need new resources to be included in the mod directory.

  • Models (the monster's model itself; sometimes gibs and projectiles)
  • Sounds
  • Sprites (visual effects related to the monster)
  • Additional skill cvars in skill.cfg
  • Some monsters need additional entries in the sound/sentences.txt. E.g. Otis needs sentences with OT_prefix.

Open featureful_monsters.cfg in your mod directory and configure the list of enabled monsters. The list of all available custom monsters:

cleansuit_scientist
rosenberg
keller
otis
barniel
kate

babygarg

gonome
zombie_barney
zombie_soldier

human_grunt_ally
human_grunt_medic
human_grunt_torch

hwgrunt

male_assassin
blkop_apache
blkop_osprey

robogrunt

pitdrone
shocktrooper
shockroach
voltigore
babyvoltigore
pitworm
geneworm

drillsergeant
recruit

featureful_monsters.cfg defines the list of enabled monsters. To configure the aspects of monster behavior, edit the featureful_server.cfg.

Configuring server-side features

You can edit some server-side features via featureful_server.cfg. The file provided in the repo or mod sample directory contains comments describing the features, so we don't go into detail on each feature here.

There's also a featureful_exec.cfg file which is getting executed by the engine and needs to be in the regular .cfg format (like server.cfg or skill.cfg). In this file you can set some cvars to values specific for your mod for features that are currently implemented as cvars only (e.g. pushablemode cvar).

Configuring client-side features

You can edit some client-side features via featureful_client.cfg. The file provided in the repo or mod sample directory contains comments describing the features, so we don't go into detail on each feature here.