Skip to content
KCD Multiplayer

Release notes

Changelog

Every build, newest first, and what changed in it. The same notes land in Discord the moment a build is out.

v0.48.1

Preview

For Steam 1.5.6, Microsoft Store 1.5.6, Epic Games Store 1.5.6 Protocol 119

Download

Crowd T-Pose and White Clothes Fix

Server Owners

  • No server update is needed: this release changes the game client only, and 0.48.0 servers keep working with it

Bug fixes

  • Fixed an issue where other players in big crowds flashed into a T-pose several times a second, mostly the ones further away. The game could draw only so many characters' skeletons at once; KCD:MP now raises that limit when the game starts
  • Fixed an issue where some players' clothes and horses were drawn white in big crowds. The game had room for the colours of only so many pieces of clothing at once; KCD:MP now raises that limit too (the two raised limits take about 120 MB of graphics memory together)
v0.48.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6, Epic Games Store 1.5.6 Protocol 119

Client Server

Lanterns, Custom Items and Horse Looks

Lanterns

Players can now carry a lantern instead of a torch. It is equipped and raised like the torch, lights the way at night, and stays in hand beside a one-handed weapon and on horseback. Servers give or sell them.

  • Added the Lantern and the Fine lantern
  • Other players see the lantern lit in your hand
  • NPCs can carry lanterns too

Custom Items

Servers can now add items of their own, with their own names, descriptions, weights and prices, and hand players and NPCs a tool for the work they do.

  • Added the server's own items: they stack, trade, store and drop like the game's items
  • Added tools in hand during the server's animations - an axe while chopping wood, a broom while sweeping - for players and NPCs alike

Horse Looks

Servers can now give a horse any coat, mane and tail of the game's own horses, not only the ten ready coats.

  • Added the game's patterned coats, work horse and mare builds, and the coats of its named horses
  • Added curly, braided, flipped and heavy manes, and curly and braided tails
  • A hitched horse keeps its look in front of a cart

Busy Servers

Big servers run smoother, and joining one in a crowded town works the first time.

  • Fixed an issue where the game froze for a moment at a steady beat - about once or twice a second - on servers whose map editor had taken things out of the level
  • Fixed an issue where joining a busy server in a crowded town could end in a long load and a reconnect, again and again - the players around you now come into view nearest first, as fast as your connection takes them

Carrying Players

  • Fixed an issue where a carried woman lay stiff across the carrier's shoulder, as if standing, instead of hanging over it
  • Fixed an issue where a player carrying someone walked oddly when moving forward-right or right

Launcher

  • On Linux under Proton, the launcher now finds the game in your Linux Steam libraries by itself, and when its window cannot open it says how to add WebView2 with protontricks
  • Added a guide to playing on Linux and the Steam Deck to the docs

BasicRP Changes

  • The general store sells both lanterns, and the guard walks his rounds with one
  • Added /horselook for admins: the coat, mane or tail of the horse they ride, kept with the horse
  • One of the stable's horses wears a braided mane and tail
  • A horse traded at the stable for another coat takes that coat's own mane and tail

Server Owners

  • This release moves the protocol: players on 0.48 join 0.48 servers only, so update the server with the game
  • For game modes - lanterns: the two lanterns are given, sold, stored and saved by name like any item (kcdmp_lantern, kcdmp_lantern_fancy), with or without the game's tables export; SetActorTorch(id, true, "lantern") puts one in an NPC's hand and GetActorLight says which light it holds
  • For game modes - your own items: DefineItem makes an item of your own on one of the game's, with its own name, description, weight, price, condition, quality and look, given, stored and sold by its own name from then on; RemoveItemDefinition, GetItemDefinition, GetItemDefinitions (C#: IServerApi.DefineItem, ItemDefinition)
  • For game modes - items in hands: an emote's item option puts a tool in the player's hand while it plays; SetActorHandItem / GetActorHandItem for NPCs (C#: EmoteOptions.Item, IServerApi.SetActorHandItem)
  • For game modes - key hints: AddPlayerActionHint, RemovePlayerActionHint, ClearPlayerActionHints, GetPlayerActionHints add the mode's own lines to the key hints in the corner; client scripts: AddActionHint, RemoveActionHint, ClearActionHints
  • For game modes - carried things: SetCarryItemUse makes the left mouse button the mode's while a player holds a carry item, and OnPlayerUseCarryItem hears each press and release
  • For game modes - sleeping: SetPlayerSleepWheel(pid, false) lets a bed lay the player down without the game's sleep wheel, for a mode's own sleep screen; EndPlayerSleep, IsPlayerSleeping, OnPlayerSleep
  • For game modes - seats: GetPlayerSeat and OnPlayerSeatChange say when a player sits or lies on a bench, a chair or a bed of the level
  • For game modes - horse looks: SetHorseLook, GetHorseLook, GetHorseLookParts; CreateHorse takes a look in place of the coat (C#: IServerApi.SetHorseLook, HorseLook)

Miscellaneous

  • A fight's end no longer shows "The fight with ... is over" in the chat and on screen

Bug fixes

  • Fixed an issue where the game could freeze for several seconds and then crash in busy places, mostly on Intel 13th and 14th generation processors - the game now carries on
  • Fixed an issue where your character's eyes, mouth, beard and hair still showed in first person in some actions - blacksmithing, dice, petting a dog, gathering herbs, looting, kneading dough
  • Fixed an issue where a woman's shoulders were pushed forward and her arms looked stretched in a man's animations - emotes, a held torch, fights - most of all in first person
  • Fixed an issue where some looping animations a server plays on a player, such as chopping wood, kept playing after the server stopped them
  • Fixed an issue where searching dead NPCs, butchering and some of a server's own objects stopped working after rejoining that server
  • Fixed an issue where a dead NPC's body showed up naked for good after a player searched it, on that player's screen only
  • Fixed an issue where sleeping in a bed showed no message and gave no rest when the hours were picked quickly
  • Fixed an issue where a server's cutscene camera showed the world only about 1 km out
  • Fixed an issue where a few wild dogs, deer, sheep and cows of the single-player world were still in the world on servers - a wild dog near Kuttenberg attacked players and could not be killed
v0.47.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6, Epic Games Store 1.5.6 Protocol 113

Client Server

Big Battle Fixes and Leaner Servers

Big Battles

Weapons no longer vanish in big fights, and a death nearby no longer makes the game stutter.

  • Fixed an issue where weapons and shields disappeared from players' hands in big battles, on other players and your own, and could not be drawn again
  • Fixed a short stutter whenever someone died nearby, most noticeable in big battles

Server Maps

The buildings and objects a server adds to the map now show for every player, and edited towns run smoothly.

  • Fixed an issue where buildings and other objects of a server's map could be missing for some players until they rejoined
  • Fixed an issue where players entered the world before the server's map was in place; the loading screen now waits for it, for up to a minute
  • Fixed an issue where your own walk and ride slowed down and caught up again about twice a second on servers with heavily edited maps, most noticeable in towns
  • Fixed an issue where the map editor would not open on a server whose map has many areas or saved prefabs

Women's Characters

Women's animations fit them better.

  • Changed women to sprint with the men's sprint again; their own walk, run and idle stay
  • Fixed an issue where men slid and moonwalked on their own screen when sprinting diagonally after a woman had run nearby
  • Fixed an issue where a woman's fingers curled like a claw while she stood still
  • Fixed an issue where a woman running diagonally without sprinting faced the opposite diagonal on her own screen
  • Fixed an issue where a woman's sheathed sword went through her belly while she rode a horse
  • Fixed an issue where a woman's dress showed no dirt or blood, only her skin did

NPCs at Work

Server NPCs at work now hold and use their tools.

  • Fixed an issue where server NPCs mining, digging, shovelling, cutting trees, hoeing, sweeping or fishing had no tool in their hands
  • Fixed an issue where server NPCs at work held their tool stiffly by their side instead of using it, and where a fisherman's rod vanished when he sat down
  • Fixed an issue where server NPCs moved in small jerky steps while sitting down to work or getting up again

Launcher

  • Changed the Servers tab to list the public server list and your own servers.txt; servers you joined or favourited that are not on it stay under History and Favourites
  • Fixed an issue where the Update button had to be clicked several times before the update started

Server Owners

  • Big servers use far less memory and CPU: each player's view now holds only what is near them and the few updates still on their way (several GB less on a server of 600 players), and the server no longer looks through every NPC, horse and cart of the map for each player many times a second; the 10-second status line in the server's log shows how much it holds
  • A player whose game could not draw the server's map, or never confirmed it, is sent it again (up to three times), and every ten minutes the server log says how many players have the map when some do not
  • The server log's "could not measure" lines about map objects are far rarer
  • For game modes - dirt and blood: GetPlayerDirt, GetPlayerBlood and GetPlayerGrime read how dirty and bloody a player's skin and clothes are, OnPlayerGrimeChange tells the mode when it changes, and WashPlayer, SetPlayerDirt and SetPlayerBlood change it - baths, a wash at a trough, a "you're filthy" check (C#: IPlayer.Grime, IServerApi.WashPlayer, SetPlayerDirt, SetPlayerBlood, IGameMode.OnPlayerGrimeChange)
  • For game modes - the map: ResendPlayerMap sends one player the server's map again, as at their join

Bug fixes

  • Fixed an issue where the game could crash a few seconds after joining a server that changes parts of the level, such as opened or closed areas of a town
  • Fixed an issue where the game could crash a moment after an NPC or another player left view on servers whose own scripts keep track of NPCs' belongings
  • Fixed an issue where players with a slow or distant connection were disconnected about 15 seconds into joining a server with a large web interface, again at every try
  • Fixed an issue where running into another player took health off on your own screen for a moment
  • Fixed an issue where the left arm stayed down by the side after pointing with T, even while running, until the next attack or animation
v0.46.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6, Epic Games Store 1.5.6 Protocol 111

Client Server

Epic Games Store Version and Women's Animations

Epic Games Store Version

KCD:MP now works with the Epic Games Store version of Kingdom Come: Deliverance II, alongside the Steam and Microsoft Store versions.

  • Added support for the Epic Games Store version: the launcher finds it by itself and starts it through the Epic Games Launcher, which must be installed and signed in
  • Your Epic account's details never reach a crash report or a problem report

Women's Characters

Women now move like women.

  • Added women's own walk, run, sprint and idle animations
  • Fixed an issue where a woman holding a torch had her shoulder pushed out and her arm stretched toward it
  • Fixed an issue where a woman's shoulders looked rounded and too wide when standing

Launcher

  • The game folder setting takes the Epic Games Store install too (the folder that holds its Bin folder), and the launcher says which store it found the game through

Server Owners

  • The export tools find the Epic Games Store install of the game by themselves, as they do Steam's and the Microsoft Store's
  • The server's 10-second report now says which job made a tick slow: the slowest tick's world step lists its biggest jobs, a new "the world step's top" part names the costliest ones on average, and the slow-tick warning names them too - a C# game mode's OnTick and posted work included, which the report could not time before
  • The same report now says what the last full memory collection left alive (or that none has run yet), so a growing heap figure can be told apart from a leak
  • A server stuck in its world step now names the job it is stuck in
  • A big server now gives its memory back after a crowd leaves: each player's recent snapshots and outgoing queue kept the size they reached at the crowd's peak for as long as the player stayed (several GB on the biggest servers, hours after the crowd was gone)
  • For game modes - helmets: IsPlayerVisorDown says whether a player's helmet visor is down and OnPlayerVisorChange tells the mode each time it goes down or up - a closed visor can hide a name, or a guard can ask a stranger to raise it (C#: IPlayer.IsVisorDown, IGameMode.OnPlayerVisorChange)
  • For game modes - item quality on the ground: GetPickupQuality and SetPickupQuality read and set a pickup's quality, and CreatePickup takes a quality - a mode that keeps dropped items in its own database, or gives a picked-up item itself, keeps a masterwork a masterwork (C#: IServerApi.GetPickupQuality, SetPickupQuality). A mode that moves items between players itself must pass each item's quality from GetPlayerInventory on to GivePlayerItem and SetPlayerInventory

Bug fixes

  • Fixed an issue where an item whose quality the game raised after it was in your bag, such as a forged masterwork, lost that quality when you gave it to another player, put it in a chest or rejoined
v0.45.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 111

Client Server

Big Battles, Recipes and Trespass Areas

Big Servers and Big Battles

Servers with a thousand players now stay up, in a battle of hundreds in one place and when everyone joins at once. Before, either could make every player on the server time out, and the rejoining crowd brought it down again.

  • The other players' dirt, blood and armour wear now update a few times a second, the nearest players first, instead of after every blow
  • Each player's messages now go out at the pace of their own connection, so a slow connection no longer holds up everyone else
  • Players joining at once (after a restart, or when everyone rejoins) are now let in a few at a time, in the order they came
  • A player whose messages fall far behind on an overloaded server is now disconnected (their game rejoins by itself) instead of the whole server timing out
  • A battle's hits now go only to the players who can see it, so a big battle no longer slows down everyone else on the server
  • Everyone rejoining at once after a restart no longer floods the server while their connections are being set up
  • On a very busy server, players who are not fighting now send their movement less often, leaving room for more players
  • Servers can now spread their players over several network threads, for crowds of thousands
  • A server whose simulation falls behind with a big crowd now slows everyone's movement updates a little until it catches up, as it already did when its connection was full

Recipes

The alchemy and blacksmithing recipes a character knows can now be kept by the server: a recipe learned from a recipe document comes back at the next login, and a game mode can teach recipes its own way.

  • Added saving of learned alchemy and blacksmithing recipes on servers whose game mode keeps them
  • Added recipes taught by the server, shown in the alchemy table's and the anvil's books

Health Perks

The game's health perks now work online.

  • Revenant and Revenant II now slowly heal you outside of fights, up to 50 and 75 health
  • Diehard (Hard to kill) now keeps you alive through a killing blow in a fight, then rests for a while
  • On servers that turn it on, praying at a shrine with Fundamentals of Divinity gives the Guardian Angel, which saves you from one killing blow

Women's Characters

Women's characters now move like men's, fitted to their bodies, so their arms, hands and what they hold look right.

  • Women's characters now walk, run, jump and fight with the same movements as men's, fitted to their bodies, so their hands and what they hold stay right in every move
  • Fixed an issue where women's shoulders, wrists and hands twisted under many animations - crossed arms, crouching, a raised hand - and a shield sat crooked on her arm
  • Fixed an issue where a woman's hands and fingers twisted in every fight pose - with a sword, a shield or bare fists - her sword was not held by its grip and her shield hand sat behind the shield
  • Fixed an issue where another player could see a woman standing with her weapon put away while she crouched with it drawn, when her character's look reached them after she came into view

Trespass Areas

Servers can now mark houses, yards and whole districts as private or off limits. Inside one you see the game's own trespass icon, blue for a private place and red for a forbidden one, and hear its music. What happens to a trespasser is up to the server.

  • The level's own private places show the icon as in single player, unless the server turns them off
  • A server can mark places private for one player and not for another

Map Icons

Servers can now put the game's own icons on the world map and the compass, such as a player's shop or a guild hall, and take away the game's own icons where they mean nothing on that server.

Rain Control

Houses built with the map editor now keep the rain out under their roofs, as the game's own houses do, and inside them the rain sounds muffled, as it does indoors in the game. Servers can also keep the rain out of a whole area, such as a covered market, or away from one player.

  • Added "Keeps rain out" to the map editor's objects (on by default; turn it off for an awning that should let the rain through)
  • Added "Rain" to the map editor's areas: an area can be dry or only drizzly

Prefabs Placed as One Unit

A saved prefab can now be placed as one unit: a single map object that every player's game draws as the prefab's objects. A big build stays light for the server and for every player, and saving the prefab again changes every unit of it at once.

  • Added "As one unit" to the map editor's prefab list
  • A click on any object of a unit selects the whole unit; it moves, turns, scales and is deleted as one
  • Added Unpack to a unit's inspector: its objects become separate map objects again

Item Quality

An item's quality now stays with it: a masterwork forged at the anvil is still a masterwork after a rejoin.

  • Items now keep their quality in chests and saddlebags, when dropped and picked up, and on other players' screens

Drinking

  • Added drinking from tankards and steins held in the hand, with the drinking animation on every screen; you reach for one to pick it up and set it down by hand
  • Other players now see you drink when you drink from your inventory

Arrows Stick in Bodies

  • Arrows and bolts now stay in the player or NPC they hit and move with them, on every screen

BasicRP Changes

  • Added a PERKS table: Revenant and Diehard can be switched off, and the prayer's Guardian Angel switched on (it is off)
  • Added a WEATHER table at the top of the script: how often each kind of weather comes up and how long a sky stays, ready to edit
  • Added saving of the recipes a character learned; they come back at the next login
  • Commands: /recipes
  • Added /recipe for admins: gives or takes a recipe
  • Items now keep their quality between visits, in the bags and in the horse's saddlebags

Server Owners

  • Important: export the game's tables again with this version's exporter - the special horse armour (the Unicorn chanfron, the reward and DLC caparisons, the special horseshoes) now counts as horse gear, so taking it off a horse no longer loses it
  • Added [rates] grime_rate (10) and grime_range (50 m): how often each player gets the others' dirt, blood and armour wear, and for how near a body; lower them on servers with very big battles
  • Added [server] join_rate (20): players let in a second when many join at once; the rest wait their turn
  • Added [server] network_threads (1) and network_ports: a server of a thousand players or more can split them over several network threads, each on its own UDP port (the ports after port, or the listed ones) - players still join on port and are sent on by themselves; open every port
  • Added [rates] crowd_report_hz (15): when the server is too busy to send everyone every movement update, the players who are not fighting send theirs this many times a second instead of 30; 0 keeps 30
  • Added two settings that cap one path search of the server's characters and game modes, by nodes and by milliseconds; a search past them answers "no way" and the log names it
  • The server's 10-second report now shows the players' round trips, the connection's traffic, the joins waiting and how many players were disconnected for falling far behind
  • Big builds of map objects are much lighter on players' games: the collision made for buildings that have none of their own is now worked out once and kept between sessions, and it is put in over several frames instead of all at once
  • Players' game logs now note how many map objects stand near them and what their collision cost, to help budget big builds
  • Players' game logs no longer fill with a line per door when a game mode opens, shuts or locks many doors at once
  • The map editor's inspector now sets a mesh's draw distance and LOD ratio
  • The shipped game modes have a PERKS table with the health perks' rules
  • The shipped freeroam mode has the same WEATHER table as BasicRP
  • Naming one of the level's sky variants (such as cloudy_frequent_showers_B) in SetWeather now brings that sky's own rain, as in single player
  • For game modes - health perks: SetPerkEffects (Revenant and Diehard on by default with the game's own numbers, revenant = false or diehard = false switches one off; the Guardian Angel is off until guardianAngel = true), GetPerkEffects; with the angel on, a mode can also give it itself with GivePlayerBuff; a mode that healed Revenant players itself should drop that now
  • For game modes - recipes: GivePlayerRecipe, RemovePlayerRecipe, HasPlayerRecipe, GetPlayerRecipes, SetPlayerRecipes, GetRecipes, GetRecipeInfo and the OnPlayerLearnRecipe callback (return false to take a recipe away again); a new list of every recipe in the scripting reference
  • For game modes - trespass: an area's trespass level, SetAreaTrespass, SetPlayerAreaTrespass, SetPlayerTrespass, SetLevelTrespass, SetPlayerLevelTrespass, GetPlayerTrespass, OnPlayerTrespassChange
  • For game modes - map icons: CreateMapIcon, SetMapIcon, DeleteMapIcon, SetMapIconVisibleFor, HideLevelMapIcons, HideLevelMapIconsFor, ShowLevelMapIcons, GetMapIconTypes; the icon types and every level's shop and service icons are listed in the scripting reference
  • For game modes - rain: a map object's rain option (false lets the rain through it; C#: MapObjectSpec.OccludeRain), an area's rain, SetAreaRain, SetPlayerRain, GetPlayerRain
  • For game modes - map objects: CreateMapObject, SetMapObject and GetMapObject take an object's LOD ratio (lod), how soon the game swaps in its simpler models - a higher one draws a big town lighter (C#: MapObjectSpec.LodRatio)
  • For game modes - prefabs placed as one unit: CreateMapPrefab places one, GetMapPrefabParts lists its objects (each with an id of its own - a door's key, a use prompt's id), UnpackMapPrefab turns it into separate objects, and GetMapObject's part_of names the unit an object belongs to; a prefab with units on the map cannot be deleted (C#: CreateMapPrefab, GetMapPrefabParts, UnpackMapPrefab, MapObjectInfo.PartOf)
  • For game modes - item quality: GetPlayerInventory (and the chest, saddlebag and corpse lists) gives each item's quality; SetPlayerInventory, GivePlayerItem and GivePlayerTaggedItem make items at a quality; GetPlayerItemQuality, SetPlayerItemQuality
  • For game modes - item weights and prices: SetItemClassWeight and SetItemClassPrice change what every item of a kind weighs and costs for every player (bags, saddlebags, carried weight, prices, the server's shops); GetItemClassWeight, GetItemClassPrice
  • For game modes - drinks: SetCarryItemDrink and GetCarryItemDrink fill a tankard or a stein; a sip goes through OnPlayerUseItem; a new built-in "drink" emote
  • For game modes - blocked blows: OnActorBlocked and OnPlayerBlockedByActor tell the mode when a player blocks an NPC or an NPC blocks a player; StaggerActor and SetActorBlockRules set what a block costs an NPC
  • For game modes - SetPlayerCanAttack keeps a player from attacking at all (no swings, shots or drawn weapons), CanPlayerAttack reads it
  • For game modes - the game's own texts: a server can word the game's own texts itself - the place names on the world map, the map legend, the fast travel and the Codex, any text of the game - for every language or one, without players installing anything; the texts apply only while a player is on that server (SetTextOverride, LoadTextOverrides reads a file in the game's own translation format or JSON, SetPlayerTextOverride, GetPlayerLanguage)
  • For game modes - the Codex: a mode unlocks or locks Codex entries for each player, with or without the game's "new entry" notice, and can stop the game from unlocking entries by itself (SetPlayerCodexEntry, SetCodexEntryHidden); with the text overrides an entry can be given a title and a page of the mode's own
  • For game modes - the game's screens: a mode can open and close the inventory, the character screen, the map, the Codex and the journal on a player's screen and refuse some of them for a while - no inventory for a handcuffed player (OpenPlayerScreen, ClosePlayerScreens, SetPlayerScreenBlocked, OnPlayerScreenChange); client scripts open and close them too (OpenScreen, CloseScreens, OnScreenChange)
  • For game modes - loose items: SetWorldItemInteractable leaves one item of the level lying where it is with nothing to pick up (a merchant's display, a scene's props), IsWorldItemInteractable; GetWorldItemsNear says which are switched off
  • For game modes - weather: SetWeatherChances sets how often the server's rotation picks each kind of weather (clear, fair, cloudy, overcast, showers, drizzle, storm, dry storm, or one of the level's own sky variants) and how many game hours a sky stays; GetWeatherChances reads them back. Every player still sees the same sky, and a player who joins gets the one up now
  • For game modes - doors: SetDoorCheck, SetDoorPrompt, SetDoorLockSides and SetDoorKey now take up to 4096 doors each, however long the doors' names (before, the big levels' long door names stopped them at about 170 doors and the rest opened before the game mode was asked)
  • For game modes - doors by virtual world: a virtual world can now keep doors of its own (SetVirtualWorldOwnDoors) - a door opened or locked there stays as it was everywhere else, and a door's key can be one world's; SetDoorState, GetDoorState, SetDoorKey and GetDoorKey take the world. Worlds share their doors as before unless a game mode turns this on
  • For game modes - name plates: the nameplates option npc_range sets how far away the NPCs' names show, apart from the players' names
  • For game modes - voice chat: SetVoiceVisorMuffle / GetVoiceVisorMuffle - how much a closed visor muffles a voice (on by default, 0 turns it off)
  • For game modes - shops: each line of a deal now says the condition of its items (health, 0-100), so a shop can pay less for worn gear
  • For game modes - dialogues: the dialog interface options side (the choices on the right, as in the game's own conversations) and bars (the game's own cinema bars, while a dialogue is open or at any time)
  • For game modes - props: SetPropCollision / IsPropSolid - a prop players walk into or through; solid props whose mesh had no collision of its own now get one
  • For game modes - dogs: SetDogCoat, GetDogCoat and GetDogCoats pick a dog's coat, the same on every screen, for a player's dog and for a dog made as an animal
  • For game modes - weapons: GetPlayerHandItems says what a player holds in their hands right now and IsPlayerWeaponDrawn whether a weapon is out; GetPlayerWeapon now names no weapon while it is sheathed, as documented
  • For web interfaces: KcdMp.openInBrowser opens a website - a sign-in with Discord or Google, a forum - in the player's own browser once the game has asked them; the sites go in ui.toml's [permissions] links

Admin commands

  • Added /weather chances for admins: shows how often the server picks each kind of weather and how long a sky stays; /weather rain is a new name for showers
  • Added /map prefab unit for admins: places a prefab as one unit at your feet
  • Added /map prefab unpack for admins: turns a unit back into separate objects
  • Added /map area trespass and /map area rain for admins: set an area's trespass level or its rain

Miscellaneous

  • NPCs now stagger and lose their next attack when you perfectly block them
  • Cart drivers now hold the horses' reins in their hands, and a wagon's harness is tied to its pole, as in single player
  • The server's weather rotation now picks each new sky by its chance alone, so the same weather can stay for a second spell instead of always changing
  • When a server turns you away over your mods, the message now also says where the game found them: its Mods folder (where a mod manager such as Vortex puts its mods back) or the Steam Workshop
  • Picking a herb holds you for half a second instead of more than a second, and other players see the picker stand up quicker
  • A player speaking with their helmet's visor down now sounds muffled through it
  • Server characters at work now hold the game's own tools - the saw at the saw horse, the axe at the chopping block, the hammer and chisel, the cobbler's needle - and a tool lying at the spot is the one they pick up
  • Riding with your party, the game's Follow prompt now shows the name of the party member you would follow, and left Alt follows them while the prompt is up (it brought up the pointer instead)
  • Ladders placed with the map editor (the game's own village and siege ladders) can now be climbed like the level's ladders
  • Added arms crossed as a built-in emote: the character folds their arms and stands until they move (/anim armscrossed on the shipped game modes)
  • Henry no longer talks to himself when you pet your horse
  • /map remove look aimed where a removed object stood now names it and how to put it back

Bug fixes

  • Fixed a crash in busy places that hit some players with Intel 13th and 14th generation processors; the work done each frame for every player, horse and cart in view is lighter too. If the game still crashes often on one of these processors, a BIOS update from the motherboard maker usually helps
  • Fixed an issue where a player in a fight could not get away: running off, getting on a horse or riding away turned them back toward the other player and pulled them back into the fight
  • Fixed an issue where a character could starve to death while the connection to the server was lost, and the single-player death screen with its "Try again" appeared - once you have joined a server, the game's own deaths and that screen stay out, also while reconnecting
  • Fixed an issue where, on a server whose clock stands still, changing the time left the ground, walls and buildings lit for the old hour - a night lit like day, or a day sky over dark walls
  • Fixed an issue where a server could stop for a minute or more when a server character chased someone it could not reach, or a game mode asked for a path to a place no way leads to
  • Fixed an issue where servers that limit mods turned you away for mods you had already removed (an old game log from an earlier session was read instead of the current one)
  • Fixed an issue where building a town of hundreds of map objects froze every player's game for up to a second at a time while it went up
  • Fixed an issue where the game's message box for a server's notice (a kick, a refusal) showed an empty key beside "Enter OK" - it shows the Enter key now, and Y / N on questions
  • Fixed an issue where a drawbridge's sound came from its hinge instead of the bridge, and its creak came only once a lowering bridge was down
  • Fixed an issue where the arrow count in the bottom bar (and the other counts there) did not change after looting, buying or being given items
  • Fixed an issue where other players saw you in a T-pose after you got off a cart, until you moved
  • Fixed an issue where a horse's chanfron or other gear taken off in the inventory disappeared
  • Fixed an issue where an invisible wall stayed where a wrecked cart or a similar prop was removed with the map editor
  • Fixed an issue where, standing where a building had been removed with the map editor, the trees and houses beyond it vanished and only the ground was left
  • Fixed an issue where dropped items were sometimes left floating in the air, or fell through the ground on a slope
  • Fixed an issue where an item the server would not let you take sometimes vanished instead of going back where it lay
v0.44.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 100

Client Server

Improved Combat Sync, Emotes, Seats and Beds

Improved Combat Sync

Sword fights between players now follow what each fighter saw, also at higher ping: a blow that touched the other player on your screen counts unless they blocked or parried it in time.

  • Hits that clearly connected on your screen now land, instead of doing nothing
  • Parries now show on the attacker's screen, followed by the defender's counter
  • Two players striking at the same moment now trade as in single player
  • Dodges, combo follow-ups and counters now show on the other player's screen, and counters can be parried
  • Other players' swings now play at their real speed, and longsword slashes land again
  • Hits now sound like what they struck: plate, mail or cloth
  • Your lock-on and guard now come back after a stumble
  • Fixed opponents jumping, spinning or ending up on the wrong side of you during a fight
  • Fixed clinches ending on one screen only
  • Fixed fighting players flashing out of their armour when struck
  • Fixed a player teleported in the middle of a fight being unable to attack or block

Emotes

Emotes can now sit down and stand up, lie down and get up, and keep playing on the upper body while you walk.

  • Added a Sit emote
  • Added emotes that sit or lie down, stay down and get up again, on every screen
  • Added upper-body emotes that keep playing while walking or running
  • While sitting or lying in an emote you look around without turning, and moving stands you up
  • Fixed a player sitting on the ground looking like they sat on an invisible chair to everyone else

Bleeding and Armour

Fights last longer: armour now protects against bleeding.

  • Armour now stops most cuts from bleeding
  • Each wound now bleeds for its own time and stops; a new wound no longer reopens the old ones
  • Fixed NPCs' blunt weapons and fists causing bleeding

Seats and Beds

Chairs, benches and beds placed on a server's map can now be sat on and slept in, like the ones already in the world.

  • Added sitting and sleeping on chairs, benches and beds placed with the map editor
  • Added a Seat to the map editor, and "At a table" for chairs

Launcher

  • Added an over-the-shoulder third-person camera, on the right or the left, with your choice of offset and camera distance

BasicRP Changes

  • Added bleeding rules: armour holds back cuts, and arrows, bolts and bullets can be set not to bleed

Server Owners

  • Added settings under [combat] for fights between players (hit_rule, defense_grace_ms, trades, trade_tolerance_ms, dodge_check, dodge_margin_m, dodge_allowance_ms, fair_ping_ms)
  • Busy servers now lose far fewer players' movements and actions: the connection buffer is 16 MB ([rates] socket_buffer); on Linux the system caps it unless net.core.rmem_max and wmem_max are raised, and the log says what the server got
  • Kicks and bans are no longer announced in the chat; only the admin who used the command sees a line
  • The shipped game modes have a BLEED table with the bleeding rules
  • For game modes - combat sync: OnPlayerCheatDetected reports contact_ratio
  • For game modes - bleeding: SetBleedRules (ranged = false stops shots from bleeding), SetPlayerBleeding, SetActorBleeding; the damage callbacks hear whether a blow bleeds and how much the armour took, and can decide it (C#: OnPlayerBleed, OnActorBleed)
  • For game modes - emotes: AddEmote takes an in and an out, upper-body emotes and locked emotes only the mode can end; [emotes.custom] takes the same
  • For game modes - seats and doors: CreateMapSeat; doors placed with the map editor now count in GetNearestDoor, GetDoorPosition, GetLevelDoors and /objectinfo
  • For game modes - voice mutes: SetPlayerVoiceMutedFor, IsPlayerVoiceMutedFor, GetPlayerVoiceMutes, OnPlayerVoiceMute; a mode can replace /mute and /unmute
  • For game modes - kicks: OnPlayerDisconnect's reason starts with "kicked:" for a mode that wants to announce them
  • For game modes - the use key on players: SetPlayerPrompt and SetPlayerPromptFor take hidden (the key works, nothing is drawn over the head), IsPlayerPromptHidden

Admin commands

  • Added /map place seat for admins: a place to sit or a bed at your feet

Miscellaneous

  • /mute and /unmute now take a player's id as well as a name, and /mute alone lists who you have muted
  • Medal death clips are now 30 seconds long
  • The map editor no longer offers the far-distance landscape pieces

Bug fixes

  • Fixed the game keeping one CPU core fully busy for the whole session
  • Fixed a small stutter every second or two while riding or walking away from towns
  • Fixed stutters and missing grass around very large objects placed on a server's map
  • Fixed locked doors placed with the map editor opening for anyone
  • Fixed a knocked-out player's screen flickering and the in-game day jumping ahead
  • Fixed /mute silencing the wrong player when two players shared a name
  • Fixed a player who joined with the id of someone you had muted staying muted
v0.43.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 96

Client Server

Combat Sync, Custom Sounds, Shared Herbs

Combat Sync

Fights between players are now much more reliable: what you see on your screen is what happens.

  • Fixed blocks that came in time on your screen but still let the blow land
  • Fixed losing health to blows you never saw, and blows you saw land doing nothing
  • Your health now drops the moment a blow lands on your screen
  • Your own blows now show as a hit, a block or a miss exactly as the other player's game decided
  • Perfect blocks and parries now show on both screens, also on slower connections
  • Combos and quick follow-up swings now show at the other player's pace, and finishing blows play on every screen
  • Fixed swings of a fast-turning player never showing
  • Watching other players fight, hits, blocks, parries, clinches, throws and takedowns now show as they really happened
  • Fist fights now sync: blocks, the fist guard, kicks and clinches
  • Counters inside a clinch now show on both screens
  • Fixed players getting stuck in a clinch, clinches that started with nothing working, and new clinches that would not start
  • Fixed clinch strikes carrying over into your next attacks

Trees, Rocks and Buildings

Game modes can now bring the level's own scenery into play: woodcutting, mining and more.

  • Servers can now tell which tree, rock or building you look at, down to a tree's species
  • Servers can now hear your weapon's blows on trees, rocks and walls
  • Game modes can remove a felled tree or a mined rock for every player

Anti-cheat

Far fewer honest players are flagged, and cheated progress is now put back.

  • Added: on servers that enforce the check, cheated XP, levels and perks are put back
  • Fixed brewed potions, cooked and dried food, picked herbs and caught chickens being taken away
  • Fixed arrows, dropped weapons and items taken back from saddlebags being taken away
  • Fixed the cups, spoons and tools the game hands you for its own animations being taken away
  • Fixed false alerts for a stable horse's gear, a new character's first experience and a potion running out
  • Fixed a player made drunk by a game mode counting as overloaded
  • Pickpocketing no longer offers quest items

Custom Sounds

Servers can now play their own recordings in the world: voiced lines with moving lips, tavern music, bells and more. They sound like the game's own - from where they play, with the place's echo, muffled behind walls.

  • Added custom sounds played from places, characters and objects in the world
  • Sounds download only when they first play near you, and your game keeps them for next time

Shared Herbs

Herbs and mushrooms are now the same for every player on a server.

  • Added picked herbs and mushrooms disappearing for all players
  • Added herbs growing back for everyone at the same time, out of sight like in the single-player game
  • Picked herbs are remembered across server restarts where the server keeps its world

Dirt and Blood

Other players now see the dirt and blood on your clothes and skin, as your own game shows them.

  • Added dirt and blood on other players, washing included
  • Blows from other players now leave blood where they land
  • Women's dresses now take the dirt of the clothes they stand in for

Carts

Driving a cart looks and feels better, and game modes can make each cart their own.

  • Added reins in the driver's hands
  • Added horses tiring after a long trot or canter
  • Added players' own horses in front of carts, heavier loads and decorations, where the game mode allows it
  • Fixed carts shaking in third person
  • Fixed the two-wheeled cart tilting back; it now has longer shafts
  • Fixed wagons getting stuck on slopes and in curves

Butchering

  • Added the game's own butchering of animals the server owns, where the game mode allows it
  • Other players see you butchering, and the carcass stays skinned for everyone

Horses and Archers

  • Added the whistle: game modes can now bring your horse to your side
  • Game modes can now walk horses nobody rides
  • Added archers: characters can now fight with bows and crossbows

Medal Clips

  • Added automatic clips of your deaths with Medal

Launcher

  • Added a setting to switch off Medal clips
  • Improved the report sent when the game freezes

BasicRP Changes

  • Whistling now brings your own horse to you at a canter
  • Added /setenergy, /setsleep and /sethunger for admins

Server Owners

  • Important: re-export the game's tables - the item check now needs the alchemy recipes.
  • Added settings under [combat] for how blows between players are judged (verdict_window_ms, unanswered_blow, unshown_blow, attacker_preview)
  • Under [audit] mode = "enforce", clear XP and level rises and wrongly bought perks are now put back; smaller ones are still only logged
  • Added sounds, sound_max_mb and sounds_cdn under [client] for a game mode's own sounds, with an optional copy on your own web host
  • Picked herbs follow [containers] world_items and are kept across restarts with [containers] persist
  • The tables exporter now reads the actors' spoken lines from whichever voice language is installed (--voice-language picks one)
  • The log now shows what makes up the server's network traffic
  • Fixed a server's memory growing for as long as it ran while players joined and left
  • For game modes - trees, rocks and buildings: GetLookTarget names the model and its box (mesh, bbox, center), RemoveLevelObject takes them, OnPlayerHitScenery
  • For game modes - custom sounds: PlayEntitySound, PlaySoundAt, PreloadSound, StopSound, StopEntitySounds, IsSoundPlaying, GetSoundLength, OnEntitySoundEnd
  • For game modes - herbs: OnPlayerPickHerb, SetHerbRegrowTime, GetHerbRegrowTime, SetHerbsEnabled, GetHerbZones, TakeHerbs, ResetHerb, ResetHerbs, GetHerbsNear, CreateHerb, RemoveHerb, GetHerbKinds
  • For game modes - carts: HitchHorse, UnhitchHorse, GetCartHorse, GetHorseCart, SetCartLoad, SetCartLoadFactor, SetCartStaminaRate, SetCartStamina, GetCartPull, OnCartHorsesTired, AddCartProp, SetCartProp, RemoveCartProp, ClearCartProps, GetCartProps, SetCartPartMaterial
  • For game modes - horse types: SetHorseType, SetHorseTypeRule, GetHorseTypeRule, GetHorseTypes
  • For game modes - horses: MoveActor, StopActor and TurnActor on horses nobody rides, OnActorArrive, OnPlayerWhistle
  • For game modes - archers: SetActorRanged
  • For game modes - butchering: SetActorButcher, IsActorButchered, OnPlayerButcher
  • For game modes - invisible actors: SetActorInvisible, SetActorInvisibleFor, IsActorInvisible, IsActorVisibleTo
  • For game modes - anti-cheat: more detail in OnPlayerAuditViolation, OnPlayerProgressViolation (now asked about perks) and OnPlayerCheatDetected (now hears a carry capacity too high)
  • For game modes - players who have left: CreateEntity, SetEntityController, SetHorseOwner and MountPlayer now refuse them
  • For client scripts: IsKeyDown (and OnKey now always hears a release), OnMouseLook, SetMouseLookCapture, IsMouseLookCaptured, SetPhotoModeMaxDistance, GetPhotoModeMaxDistance

Admin commands

  • Added /cart prop, /cart props and /cart material for admins: decorate the nearest cart with objects and other wood

Miscellaneous

  • Removed the "You are fighting ..." message at the start of a fight
  • The third-person camera no longer creeps closer and back while riding or driving
  • With push-to-talk, the microphone now opens at your first press of the key
  • When the interface cannot be shown, the game now says so and gives back the keyboard and mouse

Bug fixes

  • Fixed no interface and no movement for players running RivaTuner or MSI Afterburner
  • Fixed the most common crash, at the end of a fight
  • Fixed crashes when RivaTuner closed, when an item wore down as it left the inventory, and when a dice match ended
  • Fixed freezes caused by a slow disk or an antivirus
  • Fixed short freezes in towns
  • Fixed your face showing in first person while reading and in some actions
  • Fixed Chinese, Japanese and Korean input in server pages
  • Fixed the mouse wheel in server pages scrolling the wrong box or nothing
  • Fixed a pop in some headsets when joining a server
  • Fixed hurt players sliding and hunching on other players' screens
  • Fixed an emote the server stopped playing on to its end on your own screen
  • Fixed discovered places sometimes not being saved
  • Fixed the interface not starting on some graphics setups
  • Fixed the game's sound staying muffled after switching away while loading
  • Fixed holding Esc turning off a server's interface when it should not, and the interface staying off after rejoining
  • Fixed /map remove look sometimes removing a nearby bush or fence instead
v0.42.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 90

Client Server

Client Optimizations, Dice Onlookers, Steadier Big Servers

Client Optimizations

Busy towns run much smoother: a crowded Kuttenberg went from about 43 to a steady 60 frames a second.

  • Fixed the regular stutters near places where players had taken items
  • Fixed a short freeze when the first woman's character came into view
  • Fixed an issue where KCD:MP kept one processor core busy all game

Dice

Everyone around a dice table now sees the game being played.

  • Added the throws, the dice on the table and the players' reactions for onlookers
  • Players now stand up and walk away from the table after a match
  • Fixed an issue where a woman's body did not show at the dice table
  • Fixed an issue where the dice opponent appeared naked

Launcher

  • Added a warning when Windows or an antivirus blocks KCD:MP's web interface, with a link to the file to allow

Server Owners

  • Big servers no longer freeze when hundreds of items restock or hundreds of players join at once
  • Players now only hear about loose items, doors and locked chests near them ([aoi] radius; 0 = everyone, as before)
  • Added reliable_rate under [rates] in server.toml (24 MB/s by default; the server configuration page lists values by upload speed)
  • The log no longer fills with chest and door lines when a player joins
  • For game modes - loose items: TakeWorldItem, ResetWorldItem(s) and the restock now reach players at a steady pace, so big batches need no spreading out

Miscellaneous

  • KCD:MP's programs are now digitally signed, so Windows and antivirus programs recognize the publisher
  • The game now tells you when an antivirus blocks the web interface
  • The map editor hides the game's unfinished white placeholder models
  • Grass and flowers no longer grow through solid objects placed with the map editor

Bug fixes

  • Fixed an issue where a blocked web interface kept restarting for the whole game
  • Fixed an issue where joining a server could lock a nearby door for everyone
  • Fixed an issue where some objects placed with the map editor could be walked through with Solid on
v0.41.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 88

Client Server

Map Editor, Living Towns, Bigger Crowds

Map Editor

Servers can now add the game's own buildings and props anywhere on the level and take parts of the level away - and every player sees it at once.

  • Added an in-game editor for admins: fly around, pick the game's meshes from a panel, move, turn and stretch them with the mouse, with undo and redo; several admins can build at once
  • Added taking parts of the level away: an admin looks at a house, a wall, a rock or a tree and removes it, and players walk where it stood
  • Besides meshes, the editor places the game's lights, fires and smoke, sounds, doors that open, close and lock for everyone, and markers only the game mode sees (a spawn point); any placed object can carry a use prompt that players press like the game's own
  • Added areas: named zones of the level (a town, a market, an arena) that show their name to players who walk in and that game modes build their rules on
  • Added your own pictures (PNG files) and web pages on the map, hung on the wall you click; any object can sit on another and move, turn and stretch with it
  • Added map layers that show or hide a whole set of objects at once, prefabs (a saved set of objects placed again anywhere), map export and import between servers of the same level, daily backups, and importing a layer made with the game's official modding tools
  • The server's characters walk around what was placed and through where something was removed
  • The map is kept on the server: players download it when they join, before they appear in the world, and keep it for the next time

Town People Who Live

The people a server puts in the world can now live like the game's own: they ride horses, speak in the game's own voices, sit on benches, work at trestles and talk to each other.

  • Added people on horseback: they get on and off with the game's own movements and ride at a walk, a trot or a gallop
  • Added the game's voices for people: greetings, grumbles and gossip between two of them, heard from the speaker with the mouth moving
  • Added seats, beds and work spots: people walk to a bench or a work trestle of the level, sit down or work there and get up again
  • Added pair animations: two people talking face to face, drinking together or dancing

Bigger Crowds

Servers hold more players in one place: in a packed town square each player's updates stay a steady size, and what matters most to them goes first.

  • In a big crowd, the players near you, the fast riders and whoever you fight update first; the others a little less often
  • Chat, web pages and a server's interface files no longer hold up movement and fights
  • A very full server stays up: when its connection reaches its limit, everyone's movement updates come a little less often for a while instead of every player being dropped
  • The scoreboard's pings are sent only while you have the scoreboard open, and stay current on the fullest servers
  • The server builds movement updates for a big crowd with about half the work, and a crowd of hundreds in one place no longer makes them grow until the server falls behind
  • The server checks each player's movement with about a fifth of the work on the big maps
  • A game mode that changes its rules on doors (the doors it decides, its own rows on doors) no longer floods a full server: the changes go out once, with only the doors that changed, instead of the whole list to every player for each door

Web Pages on Boards in the World

Servers can now put their own web pages in the world - a notice board, a shop sign, a screen on a wall - drawn on boards that are lit by the world like the game's own signs.

  • Added boards that show a server's web page, live, to every player nearby
  • Added a use prompt on such boards: the use key turns a notice board's page or opens what the server made it for
  • Added glowing boards that stay bright at night
  • Added see-through boards: a page can show only its letters or its own shape, with the wall behind it showing through - like a shop's name painted on a wall

Server Items, Keys and Locked Doors

Servers can now make items of their own, with their own name, description, weight and price, and keys that open the doors and chests they choose. A door a server locks can stay locked from both sides.

  • Added server items with their own weight and price, shown in the inventory and counted in what you carry
  • Added server keys: holding one gives "Unlock and open" on the doors and chests it belongs to
  • Added doors locked from both sides: from the inside such a door shows "Locked" and needs its key or a lockpick, instead of opening for anyone
  • Added server items for sale in shops under their own name, and shops that buy a server item back when it has a price
  • Added server items that keep their own name on the ground, for everyone who looks at them
  • Added server weapons and gear that look like another item, in the hands, on the belt and back, on the ground and on other players

Clearer Voices

Quiet microphones now reach everyone about as loud as good ones, so nobody has to turn the whole game down to hear the other players.

  • Added an automatic microphone level: a quiet microphone is raised, a loud one lowered, and a sudden shout held below distortion
  • A microphone on one input of a two-channel device is no longer sent at half its loudness
  • Fixed an issue where the voice cut in and out for players whose microphone ran at a very high rate in Windows (such as 192 kHz)
  • Fixed an issue where a player on a cart sounded muffled, as if behind a wall

Crafting and Drinking

Other players at an alchemy bench, an anvil or a grindstone are now seen at work, tools and all, and a drunk player looks drunk again.

  • Other players now play the game's own alchemy, smithing and sharpening animations, with their tool sounds, while they brew, forge or sharpen
  • A smith now takes up the anvil's own hammer and tongs for everyone and swings the hammer for all to see, the piece being forged shows in the forge and in the tongs and glows as hot as it is, and the forge's bellows move and the fire flares as they pump, with showers of sparks at the blows and steam at the quench
  • The alchemy bench's mortar, herbs and bottles now move for everyone as the player works with them
  • The grindstone now turns under another player's blade, held flat on the wheel, with sparks off it
  • Drunk players sway and stagger again on other screens, and the players around them hear their burps, farts and hiccups (a drunk woman burps)
  • A woman who overeats now burps for the players around her
  • Henry no longer talks to himself (about hunger, tiredness, alchemy, smithing and the like)

Launcher

  • The server list shows each server's own tags beside its name, and the filter finds servers by them; the pvp, scripts, interface and master tags are gone
  • Added "Automatic mic level" to the voice options (on by default)

BasicRP Changes

  • The town lives: the pilgrim sits on a bench, a courier rides his rounds, two carters stand talking, the innkeeper and the barmaid gossip, the smith grumbles at his anvil, the guard mutters on his rounds and the innkeeper greets whoever talks to him
  • A second player under a name already on the server is turned away with a word to pick another name in the launcher (a name is an account here)
  • The nearby chat (talking, /me, /do, /shout, /b) is sent to everyone in range at once, so a crowd that talks no longer slows the server down
  • Added /board, /sign and /paint for admins: a notice board, a sign or words painted on the wall the admin looks at, seen by everyone nearby; /post pins a notice on the notice boards (players read them with the use key), /unpin takes the oldest down, /clearboards takes the boards away. The boards last until the server restarts
  • Server items with their own name, description, weight, price and look (prizes, quest keys) now come back as themselves when you log in again, in your bags and your horse's saddlebags

Server Owners

  • For game modes - people on horseback: MountActor, DismountActor, GetActorHorse and IsActorMounted; MoveActor rides a mounted one; OnActorMount and OnActorDismount
  • For game modes - the game's voices: PlayActorVoice (one of the game's lines), PlayActorBark (a line picked by a word such as "greeting"), PlayActorConversation (two people), StopActorVoice, IsActorSpeaking, SetActorVoice, GetActorVoice, GetVoiceLineText and GetBarkLines; OnActorVoiceEnd and OnActorConversationEnd. The voices, barks and conversations are listed in the scripting reference
  • For game modes - seats and work: SetActorUse (a seat, bed or work spot of the level), SetActorUseAt (an activity anywhere), StopActorUse, GetActorUse, GetActorUseObject, GetSmartObjects and GetNearestSmartObject; OnActorActivity. The activities are listed in the scripting reference
  • For game modes - pair animations: PlayActorPairAnim and GetPairAnims
  • MoveActor takes a height below 0 as "on the ground", like the spawn point and /tp
  • Important: re-export the game's tables (KcdMp.ExportTables.exe) - the game's voices and each level's seats, beds and work spots come from the new export; with an older one people say nothing and find no seats
  • Added [rates] snapshot_budget (1600 by default): how much movement one update carries to a player - in a crowd the nearest, the fastest and the fighting go first and the rest wait their turn; 0 = no limit. nearest_full_rate now means the nearest that many always update, whatever the budget
  • The server's log has a "tick time" line every 10 seconds: where the server's time goes, the game mode's share and its slowest callback, the kinds of players' messages that cost the most, and the memory's clean-ups; the "slowest tick" warning now names the slow part
  • The server's log has a "network thread" line every 10 seconds: how busy its connection is, and when it slows the movement updates to stay up
  • A web interface's files go out after everything else and at most 48 Mbit/s, so reloading the interface no longer slows the game for the players
  • For game modes - door rules: SetDoorCheck and SetDoorPrompt now send only what changed, once at the end of the tick, and refuse a door once all the doors' rules together would pass about 60 KB
  • For game modes - bigger crowds: SendClientMessageInRange sends one line to everyone near a point in one call (a nearby chat no longer costs a call per listener), and GetPlayersInRange is searched by the server - both much lighter in a crowd
  • For game modes - web pages on boards in the world: declare a page under [surfaces.<name>] in the interface's ui.toml (its size, pictures a second and range); CreateWebSurface places a board that shows it, SetWebSurfacePos, SetWebSurfaceSize, SetWebSurfaceGlow, GetWebSurfaces and GetWebSurfacePage; SendWebSurfaceMessage and SendPlayerWebSurfaceMessage feed the pages, OnPlayerWebSurfaceReady, OnPlayerWebSurfaceEvent and OnPlayerUseWebSurface hear them. The server folder's sdk/web/examples/notice-board/ is a working example: it hangs a board flat on the wall a player looks at and prints the line that makes the same board at every start
  • For web interfaces - pages on boards: KcdMp.surface says which board a page is drawn on, KcdMp.onSurfaceUse hears the player's use key on it
  • For game modes - see-through boards: CreateWebSurface's transparent option (true for soft edges, "cutout" for hard ones) and SetWebSurfaceTransparent let the world show through a page's see-through parts; the page's own CSS decides which parts those are (background: transparent). The notice-board example's /paint paints a name on the wall you look at
  • The tags under [server] tags are now the only tags the launcher shows for your server, in its list as well as its details
  • For game modes - invisible players: SetPlayerInvisible hides a player from everyone else - no body, clothes, name plate, horse or voice - while they still see and hear everyone (an admin who watches unseen); SetPlayerInvisibleFor hides or shows them to one player (the other admins), IsPlayerInvisible and IsPlayerVisibleTo read it back
  • For game modes - shared names: two players may now join under one name, and the server tells them apart by their player id; a mode that wants one player per name turns the second one away in OnPlayerConnect. GetPlayerId gives the reason as a second value, and a name two players share picks nobody (use the id). The server's admin commands take a player's id too, and /players lists the ids
  • For game modes - items of your own: SetPlayerItemWeight and SetPlayerItemPrice give a tagged item its own weight and price, kept with the item wherever it goes (weight and price in the inventory, chest, saddlebag and corpse lists); a shop buys a tagged item only when it has a price of its own; GetPlayerItemHealth and SetPlayerItemHealth take a tagged item's id to read or set that one item's condition; a change of a tagged item's name, text, weight, price or look runs OnPlayerInventoryChange (the moment to save it); SetPlayerItemModel draws a tagged item as another item class wherever it is seen (model in the lists); a dropped tagged item keeps its name, weight, price and look on the ground
  • BasicRP keeps a tagged item's id, name, text, weight, price and look in six new columns of player_items and horse_items, which it adds itself at the first start
  • For game modes - keys and locks: SetDoorKey and SetContainerKey make a tagged item the key of a door or a chest; SetDoorLockSides(door, "both") locks a door from both sides; OnPlayerUseDoor also gets the side the player stood at and whether the door was locked; a refused door use says the mode's reason for every door
  • For game modes - shops: SetShopTaggedItem and RemoveShopTaggedItem sell your tagged items under their own name, one to a player; OnPlayerBuy, OnPlayerSell and a deal's lines name the item's id
  • Added the server's map: [world] map says where the server keeps it (one folder per level, written from the first edit on; "" turns it off). Copy the folder to give another server of the same level the same map
  • For game modes - the map: CreateMapObject, SetMapObject, DeleteMapObject, GetMapObject and GetMapObjectsNear place and change objects (a mode's own may last for its run only); RemoveLevelObject, RestoreLevelObject and GetLevelRemovals take parts of the level away and back; SetMapLayer and GetMapLayers switch whole sets; GetMapInfo, SaveMap and OnPlayerMapReady (a player's game has the map, or could not get it); SetPlayerEditor and GetPlayerEditor open the in-game editor for a player with what they may do (their own objects only, one layer, a number of objects - a building plot), and OnMapEdit may refuse any of their edits
  • For game modes - the map's areas: CreateArea, SetArea, DeleteArea, GetArea, GetAreas, GetAreasAt, IsPlayerInArea and GetPlayerAreas, the mode's own values on an area (SetAreaProperty, GetAreaProperty), and OnPlayerEnterArea / OnPlayerLeaveArea by the area's name
  • For game modes - the map's working things: CreateMapLight, CreateMapEffect, CreateMapSound, CreateMapDoor (its key works with the door functions) and CreateMapMarker, GetMapMarkers to find the markers by tag, a map object's use prompt and OnPlayerUseMapObject when a player presses it
  • For game modes - the map and the server's characters: a placed object's or an area's nav option (in the way, walkable, ignored; an area that keeps them out or gives them a floor); CreateNavLink, DeleteNavLink and GetNavLinks for jumps and gaps their walk cannot join
  • The server's world knows placed objects: the first admin's game that draws one measures its mesh's shape for the server (kept with the map), then the server's collision and its characters' paths follow every object of that mesh
  • The map is backed up once a day and before every import; the newest 14 backups are kept in the map's folder, beside the exports
  • Added an example game mode for building plots (gamemodes/plots.lua): admins mark plots, a player claims one and builds on it with the in-game editor - their own objects only, inside their plot
  • For game modes - stretched objects: a map object's scale may be {x, y, z} along the mesh's own axes (CreateMapObject, SetMapObject, GetMapObject); a layer of the official modding tools keeps its stretched meshes
  • For game modes - sharing the map: ExportMap, GetMapExports, ImportMap (merge or replace), BackupMap and ImportSandboxLayer; SetPlayerMapLayer and GetPlayerMapLayers for one player's own view of a layer; GetMapPrefabs, SaveMapPrefab, DeleteMapPrefab and PlaceMapPrefab
  • The map's pictures are PNG files in its pictures folder (at most 2048 pixels a side, 64 pictures and 8 megapixels in all); an export carries them
  • For game modes - pictures and pages on the map: CreateMapPicture and CreateMapSurface hang one on a board (a surface's page talks to the mode like any web surface: GetMapObjectSurface, GetWebSurfaceMapObject), GetMapPictures, ReloadMapPictures; a map object's attach puts it on another one

Admin commands

  • Added to the freeroam mode's /actor for admins: ride, dismount, say, bark, talk, use, unuse and pair
  • Added /editor for admins: the in-game map editor (on, and off again)
  • Added /map for admins: place one of the game's meshes at your feet, list what is near, move, turn, scale or delete an object, take out what you look at (/map remove look) and put it back (/map restore), switch a layer, save
  • Added /map area and /map areas for admins: draw an area around you (a circle or a box), label it, show its name to players, list the areas, take one away
  • Added /map place light, effect, sound, door and marker and /map use for admins: one of the game's lights, effects, sounds or doors, or a marker, at your feet; a use prompt on an object
  • Added /map export, /map import, /map exports, /map backup and /map backups for admins: the map as one file, taken in by another server (merge or replace), a layer of the official modding tools (/map import sandbox <file>), the backups
  • Added /map scale for admins: an object stretched along its own axes
  • Added /map place picture | surface [width], /map pictures [reload] and /map attach for admins: a picture or a web page hung in front of you, the map's pictures read again, an object put on another
  • Added /map prefab save, place and delete and /map prefabs for admins: a set of objects saved under a name and placed where you stand
  • Added /map navlink and /map nav for admins: a link for the server's characters from where you stood to where you stand, the links near you, the navmesh's figures

Miscellaneous

  • Two players with the same name - the launcher's default "Henry", say - can now play on one server; a server whose game mode needs unique names still asks the second one to pick another
  • Name plates are wider: names of up to about 24 letters stay on one line

Bug fixes

  • Fixed an issue where worn items stored in a horse's saddlebags came back as good as new after leaving and joining a server again
  • Fixed an issue where a person the game mode stopped walked on a step past the spot where it stopped
  • Fixed an issue where a person sent walking "on the ground" (height -1) sank under the world
  • Fixed an issue where another player's galloping horse could slide along without moving its legs until its rider changed pace
  • Fixed an issue where the message shown when a server turned you away showed only its last line - a server that does not allow your mods now names them first
  • Fixed an issue where the first join could take minutes on some PCs while the game was starting up
  • Fixed an issue where KCD:MP unpacked into the game's Mods folder got you turned away by servers that allow no mods (KCD:MP's own folders were taken for mods). Keeping KCD:MP in a folder of its own outside the game is still best
  • Fixed a crash right after switching characters on servers that keep the world map's fog per character
  • Fixed an issue where everyone sitting in a cart was thrown off at once when a player beside it swung a weapon at nothing
v0.40.0

Preview

For Steam 1.5.6, Microsoft Store 1.5.6 Protocol 82

Client Server

Microsoft Store Version, Quests, Join Links

Microsoft Store Version

KCD:MP now runs on the Microsoft Store copy of the game (the Xbox app, PC Game Pass) as well as on Steam's.

  • Added support for the Microsoft Store version of Kingdom Come: Deliverance II 1.5.6

Quests in the Journal

Servers can now give players quests that appear in the game's own journal, with objectives, diary entries, banners and markers.

  • Added server quests in the journal's Main, Side and Task lists
  • Added the game's banners for quests and objectives
  • Added quest markers on the compass and the world map

Server Details and Join Links

A click on a server opens its details beside the list, and a Join button on a server's website opens the launcher on that server.

  • Added a details panel for the selected server: its description, tags, language, website and Discord
  • Added Join links from websites
  • Added a setting to turn off Join links

Horse Riding

Other players on horseback look right again: on the ground, at a gallop, and with carts parked side by side.

  • Fixed other players' horses floating above slopes or sinking into them
  • Fixed riders who came into view at a gallop sliding along without the horse's legs moving
  • Fixed the horses of a cart parked in or next to another cart shaking
  • Carts made where another cart stands are now put beside it

Launcher

  • The launcher now finds and starts the Microsoft Store copy of the game
  • The game folder setting accepts the Microsoft Store install's folder

BasicRP Changes

  • Added a town around the spawn: shops, an inn, a stable, guards and townsfolk
  • Added a stable master who trades your horse for one of another coat
  • Added web pages: a menu (/menu or Insert), the stable and notices
  • Added a welcome page with the server's rules when you join
  • Your three outfits and your quests now stay with your character
  • Added keeping each character's map pin, legend and uncovered map (off by default)
  • BasicRP adds its new tables (player_quests, player_outfits) and the players table's outfit column itself at the first start

Server Owners

  • Added a description, website, Discord invite, tags and language to the server's settings, shown in the launcher, on the public list and on the status page
  • Added Join links for your own website
  • The exporters now find the Microsoft Store copy of the game too
  • Game mode files and client scripts saved as "ANSI" now show their Russian and accented letters
  • No-clip checks no longer pull players back for walking through small props the game lets them pass
  • The web interface folder's watcher now waits for a rebuild to finish and keeps retrying
  • A server that cannot start, or whose network stops, now says why in its log file
  • Server list checks are now one log line every 10 minutes
  • For game modes - quests: CreateQuest, UpdateQuest, DestroyQuest, StartPlayerQuest, SetPlayerQuestObjective, CompletePlayerQuest, FailPlayerQuest, RemovePlayerQuest, SetPlayerQuest, SetPlayerQuestMarker, GetPlayerQuests, GetQuestByKey - save players' quests by a key of your own, a quest's id changes at a restart
  • For game modes - outfits: GetPlayerOutfits, SetPlayerOutfits, OnPlayerOutfitChange
  • For game modes - loot: SetActorLoot, GetActorLoot, OnPlayerLootActor
  • For game modes - interaction prompts: CreateInteraction, SetEntityPrompt, OnPlayerInteract
  • For game modes - doors: SetDoorCheck, SetDoorPrompt, OnPlayerInteractDoor; OnPlayerUseDoor may answer with a reason
  • For game modes - chest locks: SetContainerLocked, SetContainerLockedFor, OnPlayerUnlockContainer
  • For game modes - animals: SetAnimalHostile, SetAnimalFlee, SetAnimalBehavior, SetAnimalAttack, GetAnimalState
  • For game modes - the camera: SetPlayerCamera, ResetPlayerCamera, IsPlayerCameraSet
  • For game modes - player ids: GetPlayerUid, GetPlayerByUid, GetPlayerSteamId
  • For game modes - discovery: the "ui" and "fog" kinds; ForgetPlayerDiscovery now forgets places too
  • For game modes - item wear: SetItemWear(rate, "walk") for shoes
  • For game modes - name plates: the nameplates option peek_scope
  • For game modes - anti-cheat: OnPlayerCheatDetected gets count
  • For game modes - carts: CreateCart puts a cart beside one it would stand in
  • For client scripts: GetLookTarget, SetCamera, ResetCamera, SetUiWrap; GetScreenSize and WorldToScreen fixed
  • For web interfaces: preloaded pages now stay hidden until ShowPlayerWebFrame (show a page meant to be there from the start in OnPlayerWebReady); a page that handles Esc keeps the keyboard

Miscellaneous

  • Added searching dead animals and NPCs that a server put loot on
  • Added interaction prompts that servers place on props, doors and spots in the world
  • Added animals that hunt players or run from them, on servers that use them
  • Added cutscene cameras that servers can show
  • Servers now recognize you when you join them again, and can see your Steam ID
  • Chest locks are now the same for every player
  • Added /voice reset: opens your microphone again
  • Legacy of the Forge no longer shows its map icon or starts on servers

Known issues

  • Stealth kills and knock-outs from behind cannot be done on other players yet

Bug fixes

  • Fixed an issue where a woman's feet showed through men's boots
  • Fixed an issue where only the first outfit was kept after leaving a server
  • Fixed an issue where a weapon put into a weapon set while wearing the second or third outfit could land in the first outfit's set
  • Fixed an issue where the game could freeze for several seconds the first time another player swung at the air near you
  • Fixed an issue where a server's text box took no typing until you switched to another window and back
  • Fixed an issue where a server's use prompts showed as "@View @the @house" instead of their text
  • Fixed an issue where a helmet's visor looked open to one player and closed to another
  • Fixed an issue where a microphone stopped sending when its device reset, such as a USB headset
  • Fixed an issue where a stealth kill on another player made their body jump around while they were still alive
  • Fixed an issue where a server's page that had not finished loading took the keyboard and the mouse
  • Fixed an issue where a server's preloaded pages stood empty on screen from the moment you joined
  • Fixed an issue where the places and books a server keeps for you were not given back when you joined again
  • Fixed an issue where carried items and siege engines stopped working after reconnecting to a server
  • Fixed an issue where the prompt to carry a fallen or knocked-out player did not show
v0.39.1

Preview

For Steam 1.5.6 Protocol 77

Client

Player and Horse Bodies Fix

Server Owners

  • No server update is needed: this release changes the game client only, and 0.39.0 servers keep working with it

Bug fixes

  • Fixed an issue where other players and horses showed only their clothes, armour and saddles, without their bodies
v0.39.0

Preview

For Steam 1.5.6 Protocol 77

Client Server

Item Health, Mounted Combat, Siege System

Siege System

Servers can now set up sieges: trebuchets, cannons, siege ladders and piles of stones that players work together, with every shot and impact the same on every screen.

  • Added the trebuchet and the cannon: aim, load and fire, with a mark where the shot will land
  • Added damage from shots to players and to siege engines
  • Added siege ladders that fit the wall they lean on
  • Added knocking siege ladders down from the top of the wall with a polearm, and raising them again
  • Added the trebuchet's two-player crew at its winches
  • Added piles of stones that defenders throw down on the climbers
  • Added wading across a moat and breaking through Suchdol's wooden fence with siege shots
  • Added distance to the sound of impacts and cannon shots

Horseback fighting

Fights from the saddle now look the same on every screen, and horses can be hurt and killed.

  • Added riders' weapons in the saddle on other players' screens
  • Added riders' swings and stabs from the saddle on other players' screens
  • Added the rider's guard side and held attacks on other players' screens
  • Added riders' bows: the draw, the aim and the shot
  • Added horse health: horses can be hurt and killed, and a dead horse throws its rider
  • Fixed blows between riders and players on foot being refused while the horses were moving

Carrying items

Players can now carry sacks, baskets, buckets, crates, tools and lanterns in their hands, and everyone around sees it.

  • Added picking up and putting down carry items with E
  • Added the game's own carrying walk for sacks, baskets and buckets
  • Added dropping the carried item on death

Item wear

Item wear now carries over and is the same on every screen.

  • Added saving of how worn each item is
  • Added other players' gear shown at its real condition
  • Added wear kept on dropped and pickpocketed items
  • Added repair kits and the grindstone kept by the server
  • Added server control over how fast items wear

Voices behind walls

  • Added muffled voices behind walls, floors and closed doors

Name plates

  • Added player ids on name plates, also shown only while a key is held
  • Added names that differ per player
  • Added hidden name plates
  • Added names per player over NPCs

Items on tables and shelves

  • Fixed picking up one item making the items beside it disappear too
  • Changed taken items to come back in their own place after the restock period
  • Fixed taken items staying gone after a server restart
  • Fixed a refused pickup making the item vanish

Web interfaces

  • Increased the web frames a server can have from 32 to 128
  • Added the game's item pictures and typefaces to server pages
  • Fixed web interfaces not starting when the KCD:MP folder's name contained a semicolon
  • Fixed the whole screen turning blue while a server's page was open
  • Fixed a server losing track of its open pages when it showed or hid many at once

Launcher

  • Added the web engine's download progress in place of the Join line; joining waits until it is done
  • Added a banner when the web engine's download fails, with a retry
  • Added a microphone test under the Microphone setting
  • Changed Options and Settings to two columns
  • Fixed the ping shown next to each server being about twice the real one
  • Changed the server list to keep servers that do not answer, greyed with the reason
  • Added an Ask again button for a server that did not answer

BasicRP Changes

  • Added muffled voices behind walls
  • Added /carryitem, /carryitems and /clearitems for admins

Server Owners

  • Important: export the game's tables again with this version's exporter - it tells apart the chests and shelf items that share a name in Kuttenberg and Trosky, lists the anvil recipes for the item check, and lists the walls and fences that can be taken away
  • Added the public list's verdict in the server's console: listed, or not reachable and why
  • Fixed servers on home IPv6 connections never showing on the public list
  • Added saddlebag tracing lines to the server's log
  • Added a check for armour that never wears down (logged, never a kick on its own)
  • Siege ladders fit their wall, and shots meet the walls, only on servers with the level's collision exported
  • The server folder now has four example web interfaces and a React + TypeScript starter
  • A C# game mode can now be rebuilt while the server runs and reloaded with /reload
  • For game modes - siege: CreateSiegeEngine, AimSiegeEngine, LoadSiegeEngine, FireSiegeEngine, SetSiegeEngineShots, SetSiegeEngineRules, SetSiegeEngineHealth, PushSiegeLadder, RaiseSiegeLadder, OnSiegeEngineAction, OnPlayerSiegeHit, OnSiegeEngineHit, OnSiegeShot, OnSiegeEngineDestroyed, OnSiegeImpact
  • For game modes - the level's invisible walls and removable parts: SetLevelBarriers, GetLevelBarriers, GetLevelLayersNear
  • For game modes - horse health: GetHorseHealth, SetHorseHealth, SetHorseInvulnerable, OnHorseDamage, OnHorseDeath
  • For game modes - carry items: CreateCarryItem, ENTITY_CARRY, SetItemCarrying, GetItemCarrying, GivePlayerCarryItem, PickUpCarryItem, DropPlayerCarryItem, TakePlayerCarryItem, GetPlayerCarryItem, GetCarryItemHolder, OnPlayerPickUpCarryItem, OnPlayerPutDownCarryItem
  • For game modes - item wear: OnPlayerItemWear, GetPlayerItemHealth, SetPlayerItemHealth, SetItemWear, GetItemWear, SetPickupHealth, GetPickupHealth, a condition on GivePlayerItem and CreatePickup, a real health in GetPlayerInventory / SetPlayerInventory; client scripts: GetInventory
  • For game modes - voices behind walls: SetVoiceOcclusion, GetVoiceOcclusion
  • For game modes - name plates: SetPlayerNameplateFor, GetPlayerNameplateFor, SetActorNameplateFor, GetActorNameplateFor, SetPlayerNameplateHidden, IsPlayerNameplateHidden, the nameplates options text and peek_key, GetPlayerStance, IsPlayerCrouching, OnPlayerStanceChange
  • For game modes - items on tables and shelves: ResetWorldItem, ResetWorldItems, GetWorldItemsNear
  • For game modes - containers: chests that share a name have keys of their own (Stash96@3160,787,57); a refusal from OnPlayerOpenContainer or OnPlayerLootBody shows the mode's own text, or nothing
  • For game modes - items of their own: GivePlayerTaggedItem, SetPlayerItemTag, FindPlayerItem, kept through inventories, chests, saddlebags, corpses and pockets
  • For game modes - item uses: OnPlayerUseItem for books, letters, maps and recipes, SetItemUseCheck, IsItemUseChecked
  • For game modes - crafting: OnPlayerCraft, SetCraftCheck, IsCraftChecked; anvil products reach OnPlayerNativeItem as smith
  • For game modes - NPC strength and gear: SetActorStat, SetActorSkill, SetActorInventory, GiveActorItem, RemoveActorItem, GetActorInventory
  • For game modes - targets: SetZoneHittable, OnProjectileHitZone, OnMeleeHitZone, CreateSphereZone, AttachZoneToEntity
  • For game modes - the use key on players: SetPlayerPrompt, SetPlayerPromptFor, OnPlayerInteractPlayer
  • For game modes - the mouse in client scripts: OnMouseMove, OnMouseButton, OnMouseWheel, SetMouseCapture, IsMouseCaptured, GetCursorPosition
  • For game modes - C# modes: GameModeFolder
  • For web interfaces: KcdMp.itemIcon(key), voice:levels and voice.level

Admin commands

  • Added /siege for admins: places, lists, repairs and removes trebuchets, cannons, siege ladders and piles of stones, and knocks ladders down or raises them
  • Added /layer near for admins: lists the level's parts around you that /layer can switch
  • Added /carryitem, /carryitems and /clearitems for admins in the freeroam mode

Miscellaneous

  • Fighting sounds are now synced
  • Animals' hit reactions are now synced
  • Removed the "Server interface - not Steam, not KCD:MP" label
  • Servers can give NPCs any gear, strength and skills
  • Servers can count arrows and blows that hit a target
  • Servers can put a use prompt over players
  • Server menus can use the mouse
  • Servers can react to reading a book, a letter or a map, and can refuse an item's use
  • Servers can decide who may use an alchemy table, an anvil or a grindstone
  • Servers can hand out their own named items, such as letters and contracts

Known issues

  • A siege ladder against a low wooden wall cannot be knocked down from the top yet

Bug fixes

  • Fixed an issue where only one player could hurt a horse
  • Fixed an issue where many chests in Kuttenberg and Trosky could not be opened
  • Fixed an issue where some items picked up from tables in Kuttenberg and Trosky vanished from the bag, or could be taken by every player
  • Fixed an issue where players, NPCs and animals floated while walking downhill or down stairs
  • Fixed an issue where a rider who came into view mounted could stand beside their horse
  • Fixed an issue where a rider who mounted in front of you never took up the mounted guard or lit their torch
  • Fixed a rider's weapon staying out while they were pulled or thrown from the saddle
  • Fixed an issue where items put into saddlebags could go missing
  • Fixed an issue where a horse's harness or breeching was not seen by others and was lost on a rejoin
  • Fixed an issue where a weapon broken in a fight could vanish instead of turning into its broken version
  • Fixed an issue where a drawn weapon could turn invisible in a fight
  • Fixed an issue where a rebuilt C# game mode could not replace the running one on Windows
  • Fixed an issue where a C# game mode named with its namespace was refused
  • Fixed an issue where saddlebag items came back as new when the horse was brought back
  • Fixed an issue where forged items and the anvil's tools were flagged by the server's item check
v0.38.0

Preview

For Steam 1.5.6 Protocol 69

Client Server

Voice Levels, Open Fortress Gates, Smoother Server Screens

Voice levels

Choose how far your voice carries: whisper to the person next to you, talk normally, or shout across the square.

  • Added the voice level key, left Ctrl by default: each press switches to the next level, and the line under the compass shows the one you picked ("Voice: Whisper (3 m)"). On horseback Ctrl still slows the horse
  • Added three levels to the shipped game modes: Whisper (3 m), Normal and Shout (50 m)

Open fortress gates

The gates of the Raborsch and Nebakov fortresses and of Ruthard Palace in Kuttenberg stand open now, so players can ride in.

  • Opened the gates of Raborsch, Nebakov and Ruthard Palace on every server; admins open and shut them with /gate
  • Fixed an issue where the door in Trosky castle's south gate could stand shut in front of a player who had just joined, though the way was open

Smoother server screens

Server screens keep up with the game even while the graphics card is busy, and server menus take your keys straight away.

  • Fixed server screens falling seconds behind the game while the graphics card is at full load: they are now drawn inside the game itself
  • Sped up how server menus answer clicks and keys while the graphics card is busy
  • Changed menus that open with the keyboard to take your keys at once: the first text field is ready to type in, and Esc goes to the menu instead of opening the pause menu
  • Added a line in the chat when a server's screens fall seconds behind, saying what helps

Launcher

  • Added the voice level key to Options, next to the talk key
  • Added Interface drawing to Settings: "Separate process" if the game crashes while a server's screens are up, "Compatible" for server screens that stay black or grey

BasicRP Changes

  • Added voice levels: players whisper, talk or shout with the voice level key (the VOICE table at the top of the mode sets the levels)

Server Owners

  • For game modes - voice levels: set as many levels as you like, each with its name and range (SetVoiceLevels), put a player at one (SetPlayerVoiceLevel, GetPlayerVoiceLevel) and refuse a switch (OnPlayerVoiceLevelChange)
  • For game modes - gates: the gates of Raborsch (raborsch_gate), Ruthard Palace (ruthard_palace_gate) and Nebakov (nebakov_gate) work with the gate functions like the Malesov courtyard gate (SetGateState, ToggleGate, GetGateInfo); a mode that wants one shut says so
  • For game modes - the player's cursor: bring up or take away the same mouse pointer the cursor key shows (SetPlayerCursor), with or without a web interface
  • For web interfaces - closing a frame: DestroyPlayerWebFrame (client scripts: DestroyWebFrame) closes a frame and frees the memory its page used; showing it again loads it from the start. Hiding keeps it in memory, as before
  • For web interfaces - a frame with focus = "open" now gets the keyboard together with the cursor straight away, and a field with autofocus gets the focus

Miscellaneous

  • Changed the cursor key (left Alt by default): it now has to be held for a second to show or hide the mouse pointer, so Alt+Tab no longer brings it up
v0.37.0

Preview

For Steam 1.5.6 Protocol 68

Client Server

Web Interfaces, Mouse Pointer, Smoother Riders, Faster Updates

Web interfaces

Servers can now give their players an interface of their own, made of web pages: menus, shops, login screens, their own chat, scoreboard or loading screen. Servers without one look exactly as before, and the standard interface comes back by itself whenever a page cannot draw.

  • Added server interfaces made of web pages, drawn over the game on the servers that have one
  • Added web versions of the chat, the scoreboard, the notices, the party frames and the other pieces of the interface, which a server can switch on and restyle: the web chat has channel tabs and suggests commands as you type
  • Added the server's own loading screen, drawn while the level loads
  • Added the web engine that draws them (Chromium, through CEF) to KCD:MP; it starts only on servers that have a web interface

The mouse pointer

You can now bring up the game's own mouse pointer while you play, the one its menus show, and click the server's menus with it.

  • Added the cursor key, left Alt by default: tap it to switch the pointer on or off, or hold it to show the pointer until you let go
  • While the pointer is up the view holds still and you can still walk

Smoother riders

Other players, riders above all, now move on your screen without small jerks or jumps.

  • Fixed other players moving in small jerks and jumping a little forward every few seconds
  • Fixed a rider at a gallop being thrown back a few metres after a short stutter of their game or their connection

Launcher

  • Updates now download only the files that changed, and pick up where they stopped after an interruption
  • Updates are now signed: the launcher installs only updates that come from KCD:MP
  • The web engine keeps itself up to date in the background
  • Added Server interfaces to the settings: turn it off to keep the standard interface on every server
  • Added UI developer mode to the settings, for server owners building a web interface
  • Added the cursor key to Options, next to the third person key
  • Fixed an issue where a crash report could name the wrong cause when an earlier, harmless error came first

Server Owners

  • Added [combat] master_strike: set it to false to take master strikes (and disarms) away from players - only the plain perfect block is left
  • [validation] max_speed is 18 by default now (it was 14): a horse at a full dash with horseshoes or a horse perk reaches about 16 m/s, and its rider was pulled back on every screen. A server.toml made before keeps its 14 - raise it to 18 (the server warns at start)
  • Added [client] ui, ui_cdn, ui_max_mb and ui_report_errors for the web interface: where its files are, a host for its big files, how much it may send and whether players' games report its script errors
  • For game modes - web interfaces: a ui folder next to the game mode, with its ui.toml, holds the pages; ShowPlayerWebFrame, HidePlayerWebFrame, SetPlayerWebFocus, SendPlayerWebMessage, OnPlayerWebStatus, OnPlayerWebReady, and SetPlayerInterface / SetInterfaceForAll with default or a page; client scripts have ShowWebFrame, SendWebMessage and OnWebEvent. The scripting docs have a new guide, Make a web interface
  • For game modes - chat: channels (RegisterChatChannel), commands with help and suggestions (RegisterCommand, AddChatSuggestion), styled lines (SendChatMessage) and ClearPlayerChat; OnPlayerText now gets the channel
  • For game modes - keys: RegisterKeyBinding and OnPlayerKeyBinding give a game mode keys of its own
  • For game modes - the interface: SetScoreboardColumns (columns of your own on the web scoreboard), SetPlayerHudVisible (the game's own HUD pieces), SetPlayerLoadingHandover and ClosePlayerLoadingScreen (a loading screen kept up until the game mode closes it)
  • For game modes - the pointer: client scripts can bring the pointer up and take it away (SetCursorShown, IsCursorShown) and hear it change and the clicks made with it (OnCursorChange, OnCursorClick)

Miscellaneous

  • The download is bigger (about 160 MB): it carries the web engine; later updates fetch only what changed
  • On horseback, left Alt no longer follows a party member while it is the cursor key - pick another cursor key in the launcher to keep Alt for following

Bug fixes

  • Fixed an issue where the game could freeze ("not responding") while a server's on-screen menu or HUD elements were being redrawn
  • Fixed an issue where pieces of armour - helmets, boots, gauntlets and the rest - were missing on other players' screens, also right after a login, until the piece went through a horse's bags and back
  • Fixed an issue where a server could change settings of your game when you joined it; the launcher now refuses a server that names a level the game does not have
v0.36.0

Preview

For Steam 1.5.6 Protocol 67

Client Server

Anti-cheat, 3rd Person, Skills & Perk Persistence

A new anti-cheat

The server now knows where every item, every point of experience and every perk came from, and checks what a player's game reports against it. New servers only log what nothing explains; switched to enforcing, they take away or put back what a cheat added.

  • Fixed the false alarms of the old item check: honest pickups, trades, chests, loot, crafting and dice no longer get anyone warned or kicked
  • Items a cheat tool conjures, and experience, levels or perks it writes, are taken away or put back instead of kicking the player
  • Only a cheat proven beyond doubt is punished
  • Added checks of movement speed, jumps and a horse's stamina

Third person view

Press F3 to switch between first and third person on servers that allow it.

  • The mouse wheel zooms the camera in and out, up to a fair distance behind you
  • The camera stops at walls, turns with your opponent in a fight and moves over your shoulder when you aim, with a crosshair dot
  • Riding works too: A and D steer the horse and the mouse turns the camera around you
  • Dialogues, menus and minigames switch back to first person by themselves
  • Server owners decide whether third person is off, allowed or forced

Smoother riders, carts and nameplates

Other players now move smoothly at a gallop and on uneven connections, and nameplates stay on their heads.

  • Fixed riders at a gallop and running players jumping back and forth on other players' screens
  • Fixed a cart passenger's nameplate lagging behind and a driven cart shaking at speed

Stats, skills and perks stay with your character

Your stats, skills, experience, perks and how fed and rested you are now belong to the server, so it can keep them when you leave and give them back when you return.

  • Fixed stats and skills resetting every time a player rejoined a server
  • Horses can have their own strength, speed, stamina and courage

Places found and books read stay with your character

A server can now keep the places you found on the map and the books you read, and give them back at your next login.

  • Fixed reading a book doing nothing: the hours you pick are read at once, while the world's clock stays where it is
  • Fixed opening a book to read it counting as dropping it

Carrying bodies and knocked-out players

Pick up the fallen, or a player the server knocked out, and carry them over your shoulder with the game's own grab and put-down, seen by everyone around. Off until the server allows it.

Picking pockets

Rob other players with the game's own "Rob", its charge and its wheel; what you take moves from their pockets to yours. Off until the server allows it.

Riders thrown and pulled from the saddle

A rider who hits a low branch, or whose horse throws them, now falls off on every screen. Players on foot can pull a rider out of the saddle with the game's own take-down, where the server allows it.

Clinches and master strikes between players

Locked blades now clinch on both screens, with the game's own strikes and counters in slow motion, and a master strike shows as one on the other player's screen too.

Big crowds no longer take a server down

  • Fixed a big crowd in one place freezing a server's connections and then crashing it
  • Players on slow connections now get fewer updates instead of falling ever further behind, and the people nearest you update first

Lip sync

Characters now move their mouths when their players talk on the voice chat.

Animals

Servers can now put the game's own animals into the world - wolves, boars, deer, hares, farm animals and more - seen by everyone in the same place and hunted with blades and arrows.

Launcher

  • Added a "Third person key" to the options (F3 by default)
  • The launcher now opens maximized the first time and remembers its place and size after that

BasicRP Changes

  • Third person is allowed (F3)
  • Each character's stats, skills, experience, perks, nourishment and energy are saved, and each horse's stats and coat
  • Added /skills for everyone: your level, stats and skills
  • Added rules for pulling riders down, carrying, pickpocketing and keeping the places and books a character found - all off by default, at the top of the mode's script
  • Fixed saved items being lost when a player's game crashed or disconnected while logging in

Server Owners

  • Added the anti-cheat's [audit] mode: observe (the default) only logs, enforce takes away and puts back what cannot be accounted for - read your log for a while before switching; --audit-mode and KCDMP_AUDIT_MODE override the file
  • Changed [audit] action (kick, ban or log) to apply only to proven cheats; [audit] strikes is no longer used
  • Added [validation] strict (the movement and blow checks act instead of logging) and [validation] speed_scale for servers whose mods make players faster
  • Third person is set by the game mode: the shipped modes keep their camera settings at the top of their script (off, allowed or forced, first person while fighting or aiming, the crosshair dot)
  • Players gain experience only when the game mode allows it (SetXPRate(1) gives the game's own rate)
  • Added [server] stall_exit (30 seconds): a stuck server ends itself with exit code 3 - set your host to restart it
  • Added [rates] adapt and nearest_full_rate: updates follow each player's connection, the nearest 32 people at the full rate
  • Added [combat] clinch, clinch_scale and clinch_parry_window_ms; [combat] corpse_seconds keeps a dead player's body to be carried
  • BasicRP adds its new tables and columns by itself at its first start
  • Important: export the game's tables again with this version's exporter - the anti-cheat needs the perks, clothing sets and weapon sets it now carries
  • For game modes - the anti-cheat: OnPlayerCheatDetected, OnPlayerNativeItem, OnPlayerProgressViolation, GetPlayerProgressAudit, GetPlayerWeight; OnPlayerAuditViolation now comes before an item is taken away
  • For game modes - third person: SetPlayerThirdPerson, GetPlayerThirdPerson
  • For game modes - stats, skills and perks: SetPlayerStat, SetPlayerSkill, AddPlayerPerk, SetPlayerPerkPoints, SetPlayerNourishment, SetPlayerEnergy, GetPlayerProgress / SetPlayerProgress, SetXPRate, SetHorseStat and their getters, OnPlayerGainXP, OnPlayerLevelUp, OnPlayerProgressChange
  • For game modes - places and books: SetDiscoveryTracking, GetPlayerDiscovery / SetPlayerDiscovery, ForgetPlayerDiscovery, OnPlayerDiscoveryChange, OnPlayerDiscoveryRestore
  • For game modes - carrying: SetCarrying, CarryPlayer, CarryEntity, StopCarry, SetPlayerKnockedOut, SetActorKnockedOut, OnPlayerCarryStart, OnPlayerCarryEnd, OnPlayerKnockedOut, OnPlayerWake
  • For game modes - pickpocketing: SetPickpocketing, SetPlayerPickpocketable, SetActorPocket, CancelPickpocket, OnPlayerPickpocketStart, OnPlayerPickpocket, OnPlayerPickpocketEnd
  • For game modes - riders: ThrowPlayerFromHorse, SetPlayerPullDown, PullPlayerFromHorse, OnPlayerThrown, OnPlayerPullDown, OnPlayerPulledDown
  • For game modes - animals, horses and characters: CreateAnimal, SetHorseCoat (and a coat in CreateHorse), SetActorTorch; in C#, CreateEntity now makes NPCs and animals
  • For game modes: database calls now run in the order they were made; the developer's console commands (KcdMp_exec) are gone from the released game - try a client script from the mode's client folder with /reload
  • Every new function and callback has its page in the scripting docs

Admin commands

  • Added /setlevel, /givexp, /perk, /perkpoints and /xprate (Freeroam, BasicRP)
  • Added /horsestat and /horsecoat (BasicRP)
  • Added /carrying, /ko, /wake, /carry, /putdown and /pickpocket (Freeroam, BasicRP)
  • Added /throw, /pulldown, /pulldowns and /animal (Freeroam)

Miscellaneous

  • The voice chat now warns you when your microphone sends only silence, and tries your other microphones when one fails to start
  • A character's gear now comes back with the belt before the weapons, so every weapon slot is open

Known issues

  • On servers set to enforce, crafted weapons, armour and ammunition are taken away again - the shipped modes do not allow them yet
  • Disarming another player only shows on your own screen

Bug fixes

  • Fixed a player who got off their horse under a roof staying in the saddle on other players' screens
  • Fixed a player coming back into view showing standing, without their torch or out of their seat, until they moved
  • Fixed a quick crouch, draw or torch that was undone at once staying that way on other players' screens
  • Fixed an item dropped right after another one that nobody else could see
  • Fixed settings a server made for everyone being missed by a player who was still loading
  • Fixed rare crashes when sleeping in a bed, opening or closing game screens, dropping a large stack of items, and using the quick-access menu on an item that left your bag
  • Fixed KCD:MP's own interface staying hidden while another overlay program was running
  • Fixed Esc in a server's own menu, such as the login screen, sometimes not leaving the server
v0.35.0

Preview

For Steam 1.5.6 Protocol 60

Client Server

Combat sync, game-native dialogue and animation sync

Improved combat sync

Fights between players now look the same on both screens: the other player's guard, parries, counters and swings show as they made them and when they made them, so parry-counter chains between players go on exchange after exchange.

  • Another player's guard now shows on the side they hold it - left, right, high or a stab - so you can read which side their attack will come from
  • Another player's parries now show on your screen for the whole fight - before, after a few exchanges your blows seemed to land while they had parried them
  • A perfect block of another player's counter now holds until their blade reaches you: their counter no longer hits you through your parry, and your chance to counter back no longer lasts only a moment, so parry-counter chains no longer break after one exchange
  • The single player's brief slow motion is back when you get the chance to parry another player's counter, and the counter icon lights up when you counter another player, as it does against the game's own characters
  • Another player's raised shield now shows at once, not a second late or not at all
  • Another player's attack now starts on time, also right after they were hit or lowered their block
  • Another player attacking or countering from a step away no longer jumps toward you and slides back again
  • Another player's character keeps its guard up between its moves and reacts to your hits the way the game's own opponents do
  • Another player's swing outside a fight, seen from beside or behind, now plays whole and in the direction they swung, without turning towards you
  • Damage between players lands sooner after a clean hit: once the struck player's game confirms the blow, the server no longer waits for a parry that can no longer come

Game-native dialogue

Game modes can now talk with players in the game's own conversation look: a character's line as the game's subtitle and up to eight answers in the game's own list, one page after another.

  • Added conversation pages: move with W / S, answer with E, Enter or a number, leave with Esc; an answer can be shown greyed out
  • Your character stands still while you talk; walking away from the character, dying or leaving ends the conversation
  • For game modes: ShowPlayerDialogue, HidePlayerDialogue, GetPlayerDialogue and the OnDialogueResponse callback - a character's Talk prompt (SetActorPrompt with OnPlayerInteractActor) is the usual way in

New animation sync

Other players now see what you do around the world: sitting down on benches, chairs and the ground, lying down, climbing ladders, vaulting, opening doors, picking herbs, digging, butchering and patting your horse.

  • Added sitting and standing up for everyone to see, with the pose of the seat - a bench, a table, a chair, the ground
  • Added lying down and getting up on beds, benches and the ground
  • Added ladder climbing and vaulting over obstacles - others see your own vault, from a stand, walking, running or sneaking, played through to the landing
  • Added the push or pull of your hand when you open or shut a door
  • Added picking herbs, digging, butchering an animal and patting a horse, standing beside it or from the saddle

Gates the story opens

Two gates that only open later in the campaign now stand open, and can be shut and opened again like the Suchdol portcullis and the Malesov drawbridge: the wooden double gate of the Malesov fortress, the one barred by a latch, and the door in Trosky castle's south gate. They open or shut at once for everyone.

  • For game modes: the gate functions (SetGateState, ToggleGate, GetGateInfo ...) work on malesov_courtyard_gate and trosky_south_gate, of the kind "gate": no opening or closing motion, and they keep their state across a restart
  • For game modes: SetLevelLayer, GetLevelLayer and GetLevelLayers show and hide the level's story layers for every player - the parts of the level the story changes as it goes, such as a gate shut or open or a wall whole or broken
  • For game modes: the scripting docs list the shut and open pairs of every map and show a game mode keeping Trosky's gate shut and giving its admins a command for it

Launcher

The launcher now lets you choose where Kingdom Come: Deliverance II is installed and tells you plainly when the game files are not a version KCD:MP supports. Its pages scroll, keep their Save button in sight and say what may help after a crash.

  • Added a Game folder setting to the launcher, with a Browse button and a box for a pasted path; the launcher takes the game's folder or the one above or below it, and remembers your choice
  • The launcher finds the game in more places on its own: every Steam library, also with accented or non-Latin letters in its name, and Steam installs in unusual places
  • The launcher checks the game's version before it starts the game: an older version is not started and the launcher says what to do; a newer one starts with a warning that the multiplayer part stays off until KCD:MP is updated
  • Added a note at the top of the launcher when the game is not found or is not a version KCD:MP supports, with a button to the Game folder setting
  • Added a Chat option to the launcher's Options page: switch it off and the chat stays hidden in the game, its lines and its box on Enter
  • Added an optional email field to the launcher's Report a problem, so the team can answer you about your report; the launcher remembers it for the next one
  • Added a suggestion in the launcher after a crash inside a graphics driver, an overlay or a mod's plug-in: what may help
  • Crash reports, when you allow them, now tell a freeze from a crash and also name your processor, your graphics drivers with their dates and how many mods the game holds, so a crash inside a driver, a mod or unstable hardware is told apart at once
  • The launcher's warning about other software in the game folder now also names ASI plug-ins, ReShade add-ons and swapped upscaler libraries (FSR, XeSS, DLSS); Disable for KCD:MP sets them aside like the mod loaders, and other unknown files there are named and left alone
  • The launcher's Options and Settings pages keep their Save button in the top right corner while you scroll, show when a change is not saved yet, and ask whether to save or discard it when you move to another page or update the launcher
  • Fixed an issue where a game of a version KCD:MP does not support started with no word on why the multiplayer never came, and where a missing list of supported versions next to KCD:MP had the same effect: the list is now also carried inside the program
  • Fixed an issue where a talk key or chat scroll key picked in the launcher's Options was forgotten without a word unless you also clicked Save - so a talk key moved to a mouse side button stayed V; leaving the page now asks whether to save it
  • Fixed an issue where the launcher's pages did not scroll: at the window's first size the bottom of the Options page and the end of a long server list could not be reached without making the window full screen

BasicRP Changes

  • The game's own story quests stay asleep on BasicRP servers, as on every server by default; change SetStoryQuests(false) to true in basicrp.lua to let them run (they are made for one player and can take a player's things)

Server Owners

  • The server's settings now ship as server.toml.example, and the first start copies them to server.toml. Unpacking an update over the server folder no longer overwrites your server.toml. An existing server.toml is kept as it is
  • Added a status page: http://<address>:<port>/ answers the server's name, level, game mode, version, players and their names, slots, password, uptime and the world's time as JSON, for hosting panels, uptime monitors and server-list sites. It uses the server's port number over TCP (open TCP too to reach it from outside) and answers 503 while nobody can join; http_status = false in [server] switches it off
  • max_attackers in [actors] can make server characters take turns when many of them fight one player - at most that many swing at once, the others wait at arm's length for their turn, the one waiting longest first. Off by default (0: everyone in reach swings, as before); 3 is close to how the game's own crowds fight
  • The Malesov courtyard gate and the door in Trosky's south gate are open on every server without any change to its game mode; a game mode or an admin can still shut them
  • The server's log keeps its lines about blocks, parries and blows that did no harm for the whole session, counted per player - on a busy server they stopped for everyone after the first few hundred - and it now also notes a blow that did not land
  • The inventory audit now acts on a player whose game keeps an item the server took back from them - before, one standing by the level's own copy of that item was asked for it again and again and never acted on

Admin commands

  • Added /layer for admins: shows or hides one of the level's story layers for everyone by its full name; /layer list names the ones switched
  • /gate now also opens and shuts the Malesov courtyard gate and the door in Trosky's south gate

Miscellaneous

  • Added Cyrillic letters to the chat, player names, commands and the text game modes show: Russian, Ukrainian and other Cyrillic writing is no longer turned into question marks, and names may use accented Latin letters too
  • Names now keep to one alphabet, Latin or Cyrillic, so a name cannot pass for another with look-alike letters
  • For game modes: string.lower and string.upper now change Cyrillic and accented letters too, so names and command words compare without regard to case in any alphabet
  • For game modes: characters can fight each other - SetActorHostileToActor sets one on another, the other answers the first blow, every player sees the fight, and OnActorAttackActor can change each blow's damage; GetActorTarget tells whom one fights
  • For game modes: the name over a character can be relabelled and colored like a player's - SetActorNameplate, SetActorColor, GetActorNameplate and GetActorColor
  • For game modes: SetPlayerChatVisible hides or shows a player's chat - for a login screen or a cutscene - and GetPlayerChatVisible tells whether the mode hid it
  • For game modes: the scripting docs of NPC actors and SetActorHostile describe the turn-taking
  • For game modes: SetStoryQuests(true) lets the game's own story quests run in the players' games again. They stay asleep by default: they are made for one player and the story's people, and can take a player's things or hold them in places they cannot leave. A player's game picks the setting up when it starts
  • An ASI loader in the game's folder (the file some camera and controls mods use) now works with KCD:MP: its plug-ins start with the game and run in your sessions as they do in single player. The launcher names it as an ASI loader; if one of its plug-ins crashes the game, Disable for KCD:MP sets the loader aside
  • When your game and a server run different KCD:MP versions, the message now says which side has to update - you, with the launcher, or the server's owner
  • Pressing Esc three times in a row now gives the keyboard back from a server menu that holds it
  • KCD:MP's own graphics check now finishes before the game starts looking at your graphics cards, which should make start-up crashes on some laptops with Intel and NVIDIA graphics less likely
  • For game modes: a client script can no longer change the player's own model while they play - the game refuses it and notes the script's line in the log

Bug fixes

  • Fixed an issue where another player getting on a horse appeared in the saddle for a moment before their mount animation began
  • Fixed an issue where many enemies fighting one player at once could crash the games of the players watching the fight, most often when one of them died
  • Fixed a crash when a fallen or departing character was removed from the world
  • Fixed an issue where a server's scripts running in your game could get past the limits that keep them inside the game
  • Fixed an issue where the counter-attack window against the game's own characters opened too early or too briefly
  • Fixed an issue where walking into some places, such as the mine shaft in Old Kuttenberg, started one of the game's own quests: its cutscene played, you were left stuck where it put you and everything you carried was gone
  • Fixed an issue where another player's rider threw his upper body back and forth when his horse started moving or was only nudged
  • Fixed an issue where players in heavy armour took no damage from other players: a blow their armour absorbed completely counted as blocked. Such blows now do the reduced damage the armour allows; a real block or parry still stops them
  • Fixed an issue where your weapons came off when the server gave your things back, after joining or choosing a character: a bow or crossbow and a sword with a shield pushed each other out of their places and were left unequipped
  • Fixed an issue where clothes or weapons a server put on you one after another, such as in a wardrobe, pushed each other off until neither was worn
  • Fixed an issue where your weapon, a piece of armour or your lit torch came off at random: when an item of the same kind appeared on the ground near you, such as a fallen enemy's sword or another player's drop, your own was put on the ground in its place and a new one left in your bag
  • Fixed an issue where you could lose your weapon after a player or a server character died near you: when the fallen body was taken away, the weapon it had dropped counted as picked up by you, and the server took one of that kind back from you - your own
  • Fixed an issue where the server could take one of your own items when it refused you an item you never picked up, for example one that vanished near you: an item you may not keep is now taken back only once your inventory shows it, and never one you own
  • Fixed an issue where a pile of coins the server did not let you keep was taken back only in part, and the inventory check then removed you from the server for the rest: the whole pile is taken back
  • Fixed an issue where picking up a weapon or a piece of armour the server did not let you keep took the one you were wearing: the one in your hand came off and the picked-up one stayed in your bag. The picked-up one is taken back now
  • Fixed an issue where female characters got no Mount or Inspect option next to a horse, so they could only ride where the server put them in the saddle
  • Fixed an issue where female characters could not use alchemy tables or grindstones: the option to start alchemy or sharpen never appeared
  • Fixed an issue where the game crashed when another player carrying a torch mounted a horse, was pulled off their horse or played one of the game's own animations, such as a climb - the most common crash of the last releases
  • Fixed an issue where a character that left the world during or right after a fight could damage the game's memory, so that the game crashed some time later - most often in busy places and in big fights with many characters coming and going
  • Fixed an issue where ending a session - a server restart, a kick, a lost connection or leaving from the menu - removed every character at once, which could crash the game while some of them were still fighting; they are now hidden at once and removed a moment later
  • Fixed more crashes in large fights: when blocks, parries and other defence windows were removed while fighters were still using them, and when a fighter's body was removed in the middle of a fight movement
  • Fixed an issue where the game could crash a moment after closing the map, the inventory or a trade screen, most often on servers whose scripts or mods react to those screens
  • Fixed a rare crash while characters' feet were being placed on the ground
  • Fixed an issue where the game crashed right at the start when an ASI loader from a mod was in the game's folder
  • Fixed an issue where joining a busy server could freeze the game for several seconds - long enough for Windows to show it as not responding and close it; the world's doors, items and other players now arrive spread over a few frames, and joining a server that has run for a long time is faster
  • Fixed an issue where the game could hitch every couple of seconds on a server that had been running for a long time with many items taken from the world
  • Fixed an issue where the chat box could stay open behind one of the game's own screens or menus, leaving the keyboard dead until the game was closed; the box now closes by itself, Esc always closes it and Enter no longer opens it while it cannot be shown
  • Fixed an issue where KCD:MP did nothing at all when its graphics check failed at start, as seen under Wine: it now tries your other graphics adapters and tells you when it still cannot start
  • Fixed an issue where the KCD:MP overlay could stay gone or be drawn wrongly after the game changed the window's size or switched the screen between standard and HDR
  • Fixed an issue where a game mode's client script that changed the player's own model crashed the game
  • Fixed an issue where pressing a quick-access key on an item just taken out of your inventory could crash the game
  • Fixed an issue where a player whose KCD:MP was too old for a server was dropped without a word; they are now told to update
v0.34.0

Preview

For Steam 1.5.6 Protocol 57

Client Server

Female characters, dice matches and horse-drawn carts

Female characters

Players can now be women. A woman has her own body, face, hair and skin, walks and idles as the game's women do, and can do everything a man does: fight with every weapon, block, ride, run and use the emotes. She can wear everything a man wears and keeps its protection, while the game has no women's armour to show: a woman's dress stands in for a man's clothes and armour on her body, a man's hoods and helmets are left off so her own hair and face always show, his boots show as they are, and his scabbards hang at her hip without their waist belt.

  • Added women's bodies for players and for the server's characters: the other players see her at once
  • Added the stand-in dresses: the cut follows what she wears (a coat or tabard, plate, mail, a gambeson, a shirt), the color the garment; the inventory shows the real items and their values, and a dress of her own is worn as it is
  • Added her sword in a man's scabbard at her hip, and her shield, bow, crossbow and quiver where a man carries them: the shield flat on her back, the bow or crossbow across it, the quiver at her right hip
  • Added her own fists: when she raises her fists her hands close into fists, on her own screen and on everyone else's
  • Added a woman's own view of herself: her body, her hands in first person and her height, loaded with the map - when your character becomes a woman (or a man again) while you play, the game asks once to restart and join again on the new body, and remembers it for your next visit to that server
  • Added the choice between a man and a woman to BasicRP's character creator: her faces, hair styles and colors, and skin tones
  • For game modes: gender = "female" in a look (SetPlayerLook, SetActorLook, the one-line form gender=female;...), GetLookParts(kind, pattern, "female") for her parts, and look.gender in OnPlayerLookChange; the client scripts' preview body and RequestLookChange take it too
  • Server owners: a player's look now checks that its parts are all a man's or all a woman's; a woman has no beard

Dice

Two players can now play the game's own dice game against each other at any dice table - the tavern tables, the dice, the keys and the scoring of single player. Each of you plays on your own screen with the other seated across the table, and the server deals every throw fairly, checks every move and holds the stakes. For now every match is played with plain dice: special dice (your own weighted or devil's head dice) and badges are not in yet, and come in a later release.

  • Added dice matches between players: stand together at a dice table, one challenges, the other accepts, and both of you sit down to play; the challenger throws first
  • Added bets: each player puts the same stake in, and the winner takes both
  • Added the other player's picks showing one by one on their side of the table, as they make them
  • Added both players' names to the score in the lower left, which sits above the chat while you play
  • Commands: /dice [bet], /dice accept, /dice decline, /dice quit
  • Server owners: the rules belong to the game mode - the shipped modes keep them in a small table at the top of their dice command: dice on or off, the goal (1500 to 4000 points), the seconds a player may take for one move (90 by default) and how far apart the two may stand at the table
  • For game modes: StartDiceMatch (with the goal, the turn timeout and the range as its own arguments), EndDiceMatch, GetPlayerDiceMatch and GetDiceMatchInfo, and the OnDiceMatchStart and OnDiceMatchEnd callbacks

Horse-drawn carts

Wagons pulled by two horses and two-wheeled carts behind one now travel the roads. Server owners lay out routes the carts drive along by themselves, stopping where they should, with a wagoner on the bench - hop on and ride along. Free carts wait for anyone to take the reins and drive them, with friends riding along beside you or in the back.

  • Added cart routes: the carts keep to the road at a steady canter, pull up at their stops and wait there, and go round a loop or there and back
  • Added getting on and off with the game's own prompt ("Get on" by the wagon) and its own dismount key; a cart waits a moment while someone climbs in or out
  • Added driving: "Mount" at the bench of a free cart takes the reins - W trots, W with Shift held canters, S brakes and backs up, A and D steer, and the horses stop at walls, trees and other carts
  • Added the other players on the bench and in the back, seated as you see them in the game
  • Added changing seats: /seat shows who sits where in your cart, /seat <number> moves you over - to the reins of a free cart too (between the bench and the back you climb down and up again, so the cart has to stand)
  • Added the game's two-wheeled cart beside the wagon: one horse between its shafts, the driver on the front of its bed and a passenger on each side, with loads of goods, market wares, sacks or cabbages
  • Added carts of many looks, the same on every screen: the game's open and covered wagon bodies, two front axles, three sets of wheels, loads of sacks, charcoal, cloth, stone, hay, goods, junk or cabbages, and the horses' coats - each part changes on the spot, even on the move
  • Server owners: record a route in the game by riding it (/cartroute), and it runs from the routes file after every restart; /cart puts down a free cart (/cart cart a two-wheeler), /cartroute kind cart makes a route run two-wheelers. The [carts] settings: enabled, routes (the file), speed (7 m/s, a canter, for the routes), drive_speed (the fastest a player may drive) and driver_clothing (the wagoners')
  • For game modes: CreateCart (a "wagon" or a two-wheeled "cart"), AddCartRoute, RemoveCartRoute, SaveCartRoutes, GetCartRoutes, SetCartRoute, GetCartRoute, SetCartSpeed, HoldCart, PutPlayerInCart, RemovePlayerFromCart, GetPlayerCart, GetCartPassengers, the ENTITY_CART kind, and the OnPlayerEnterCart, OnPlayerExitCart and OnCartStop events
  • For game modes, the parts - for cart dealers and cartwrights: SetCartPart, SetCartParts, GetCartPart, GetCartParts (the body, axle, wheels, load and both horses), GetCartPartSlots and GetCartPartNames (the catalogue for a shop's menu), a parts table on CreateCart and on a route; the new guide "Personal carts" has a dealer and a cartwright worked through
  • For game modes, seat by seat: GetCartSeatCount and GetCartSeatPlayer (who sits where), SetPlayerCartSeat (move a seated player, the reins included), SetCartSeatLocked and IsCartSeatLocked (keep a seat - the reins too - from the prompt), OnPlayerChangeCartSeat, and OnPlayerEnterCart may answer with another seat

BasicRP

The role-play game mode that ships with the server now lets every player build a cart of their own and put it down where they stand.

  • Added the cart maker: a window where you pick a wagon or a two-wheeler, its body, front axle, wheels, load and horses, and see every change on the cart in front of you as you pick it - Q and E turn it round, R picks at random, Space puts it down ready to drive, Esc gives it up. Nobody else sees the cart while you build it
  • Added one cart for each player: building a new one takes the old one's place, and your cart leaves the world when you do
  • Added a way out for a player stuck somewhere they cannot walk out of: back to the spawn, once every five minutes and never during a fight
  • Commands: /createcart opens the cart maker, /despawncart takes your cart away wherever it stands, /unstuck takes you back to the spawn

Admin commands

  • Added /cart for admins: a free cart in front of you, a wagon or with /cart cart a two-wheeler (/cart remove takes the nearest one away, /cart parts lists what a cart can be made of, /cart part <slot> <part> changes the nearest one)
  • Added /weather auto for admins: hands the sky back to the server's own choice
  • Added /cartroute for admins: records a cart route as you ride it - new <name>, point or auto <metres>, stop <seconds> <name>, mode loop|back, speed, carts, kind wagon|cart, part <slot> <part> (what its carts look like), save; list, part <route> <slot> <part> and remove <name> for the saved ones

Miscellaneous

  • Changed the weather: left to the level (weather = "", the default), the server now chooses the sky itself, a new one every few game hours with its rain, and every player sees the same - before, each player's game chose its own
  • For game modes: SetWeather("") hands the sky to the server's own choice, and GetRain returns the rain every player sees (the weather's own until SetRain forces an amount) instead of -1
  • Changed the scoreboard for busy servers: more players than one column holds are shown in several columns, and more than those hold get pages - the mouse wheel or PgUp / PgDn while Tab is held, with your own row at the top of every page
  • Changed the server to send the scoreboard's pings only when they change, so a full server sends far less
  • For game modes: SetPlayerFlying and IsPlayerFlying - a player flies over the map (the movement keys along where they look, Space up, C down, Shift faster) with no gravity and through walls, the server's movement checks and falls off for them until they land; the example under SetPlayerFlying is an admin's /fly
  • For game modes: GetLevelDoors - every door of the level, touched or not (where the houses and villages are)
  • Server owners: the Pterodactyl egg takes up to 512 slots (it stopped at 128) and has an Admins setting for the shipped modes
  • Disabled the game's console
  • Changed the launcher's server list to show the fullest servers first, and only the servers that answer: one that cannot be reached, or runs another KCD:MP version, is left out (the status line counts those on another version); a refresh keeps the list on screen while it asks again, and your favourites and history still show every server of theirs
  • Changed the launcher's message when a server cannot be joined: it now tells a server that is down or unreachable - or one your own network does not reach - from one that took the connection but did not answer
  • Changed the public server list to show only the servers players can reach: each one is checked when it announces itself and every half minute after, and one that stops answering leaves the list within a minute
  • Server owners: a server whose own work stops - nobody could join it - stops announcing itself to the public list until it runs again, and its log says so and what it was doing
  • Server owners: [master] public_address takes a port too ("host:port") for a server that players reach on another port than its own, such as a tunnel's
  • Changed the chat to show ten lines instead of eight, and to keep all ten on screen: it no longer shrinks to its last five lines when nobody has spoken for a while
  • Added scrolling to the chat: Page Up and Page Down go back through what was said and forward again, with the chat box open or closed. The chat returns to the newest lines when you close the box, or a little while after you last scrolled. The two keys can be changed on the launcher's Options page

Known issues

  • Women do not show properly in a game of dice yet. This will be fixed in a coming release
  • RivaTuner Statistics Server (often installed with MSI Afterburner) can stop the chat, the scoreboard, the emote wheel and servers' menus from getting your keys. Close it while you play
  • Some internet providers do not let their customers reach servers at some large hosting companies: those servers show no answer in the launcher and cannot be joined, not even by address, although the website lists them. A VPN gets around it

Bug fixes

  • Fixed an issue where servers stayed on the public list, some of them at the top, while players could not join them
  • Fixed an issue where a server whose public address carried its own port was listed under a broken address, or under the wrong port, and could not be joined from the list
  • Fixed an issue where other players loosed their arrow on your screen as soon as they drew their bow: the draw is now held until they really shoot
  • Fixed an issue with gun accuracy and sync between players
  • Fixed an issue where the game crashed for everyone nearby when another player got on or off a horse while holding a lit torch - the crash while mounting that was still there after 0.32.0. The torch goes out of their hand for the climb and comes back once they sit in the saddle or stand on the ground
  • Fixed an issue where another player who carried a dagger could be seen holding it in their left hand, where the shield goes, after drawing their weapon: they now draw their weapon and shield as in their own game
  • Fixed an issue where another player with a torch equipped next to their weapon could be seen holding the torch, burning, in place of their shield when they drew their weapon - even though they had not lit it, and still after they put the weapon away. A torch now shows in their hand only while they hold it lit
  • Fixed an issue where another player's torch going out next to you counted as a torch you picked up, and could make a torch lying nearby disappear
  • Fixed an issue where the game could crash when the server moved your character many times in a row (a game mode repeating a teleport, or the movement checks pulling you back): only the last move is applied now
  • Fixed an issue where the game could crash while sneaking near another player or one of the server's characters
  • Fixed an issue where the game could crash when other players or the server's characters died or left the area around you
  • Fixed an issue where other players and the server's characters who left the area around you, and bodies after their time was up, stayed in your game unseen - on a busy server hundreds of them piled up the longer you played
  • Fixed an issue where a short hiccup in a player's connection could make the server send them hundreds of moves back at once, which could crash the game - more so on horseback: the server sends one now, and the game applies only the last of any that arrive together, for the horse under you too
  • Fixed an issue where the game could crash shortly after someone near you died in a fight
  • Fixed an issue where whistling for your horse crashed the game. The whistle does nothing for now: calling your horse with it comes later
  • Fixed an issue where the game crashed when the server restarted, or your horse was taken away, while your horse's saddlebags were open in the inventory - or later, when you closed the inventory. The inventory and the loot screen now close by themselves when the connection to the server is lost, or when your horse is no longer yours
  • Fixed an issue where the scoreboard listed an extra player numbered 65535 who was not on the server: someone checking the server from the server list, or a join the server turned away, showed up as a player and never left
  • Fixed an issue where a player who joined while someone had a weapon drawn did not see that player on the scoreboard for a moment
  • Fixed an issue where a long chat message ran out of the chat's frame while you typed it: it now wraps onto the next line as you type, as it does once sent
  • Fixed an issue where two players who picked up the same item at the same moment both got it
  • Fixed an issue where your helmet, weapon and shield came off every time you left the server and joined again: they are on you and in their slots again when you come back
  • Fixed an issue where a horse bounced up and down on the spot for the other players while nobody rode it, and a horse that went down stood on for them: a horse now stands still on every screen, and one that goes down lies there for everyone
  • Fixed an issue where players on the same server saw different weather, and a player whose clock had run ahead could keep another time of day for up to a quarter of an hour
  • Fixed an issue where a server crash showed only in the server's console window: the error now goes into server.log too
  • Fixed an issue where the voice chat and sound settings on the launcher's Options page were not kept: the game always started with push-to-talk on V and the default microphone, whatever the page said
  • Fixed an issue where picking up a weapon or shield someone else had already taken, and walking on right away, could still get a player kicked by the anti-cheat; the item is now quietly given back instead
v0.33.0

Preview

For Steam 1.5.6 Protocol 55

Client Server

Crash reports and crash fixes

Crash reports

When the game crashes, the launcher now sends a report to the KCD:MP team by itself - what the game was doing, its logs and a snapshot of its memory - so a crash can be tracked down the first time it happens, without anyone collecting files by hand.

  • Added crash reports, sent by the launcher after a crash, with your Windows user name, your computer's name and server passwords taken out - never your files
  • Added the report's id to the launcher's window after a crash, to quote when you ask for help
  • Added "Crash reports" to the launcher's Settings page: on by default, untick it and nothing is sent
  • Added a report that could not go (no internet) going out at the launcher's next start
  • Added the error messages KCD:MP writes into its log while you play to what goes to the team, a few of each kind and a couple of hundred a game at most - under the same setting
  • Added "Report a problem" at the foot of the launcher's menu: a few words about what went wrong go to the team with the logs of your last game, and you get an id to quote
  • Added a warning in the launcher when the game's folder holds a file that loads itself into the game under the name of a Windows file, as mod loaders and overlays do (a dinput8.dll, a dxgi.dll ...) - a known cause of crashes at start -, with "Disable for KCD:MP" to set it aside (renamed, never deleted) and a way to put it back
  • Added the programs loaded into the game to every crash report, and the Steam overlay's own log of the session when it runs - to track down crashes that other software on a player's PC causes
  • Changed the crash report's log to keep what happened just before the crash, without the routine movement figures that used to fill it
  • Turned off the game's own crash reporter while KCD:MP runs: its window no longer opens after a crash, and its reports no longer go to the game's makers, who cannot act on a crash with KCD:MP

Miscellaneous

  • Added the mouse's side buttons and middle button as push-to-talk keys: the launcher's Options page takes them when you set the talk key

Bug fixes

  • Fixed an issue where the game could crash when another player who had gone out of sight swung a weapon or turned their guard - on a busy server this happened several times an evening
  • Fixed an issue where /peace said you were fighting nobody while an NPC was still fighting you, leaving you in combat and unable to change your gear: it now ends your fights with NPCs too
v0.32.0

Preview

For Steam 1.5.6 Protocol 53

Client Server

Sleeping in beds, server announcements and the horseback crash fixed

Sleeping in a bed

Beds now work with everyone sharing one clock. You pick the hours on the game's own sleep wheel as before, but the time no longer moves on: the screen goes dark for a moment, and you get up with the rest the wheel showed.

  • Added a short dark screen saying how many hours you slept
  • Changed sleeping to restore exactly the rest the wheel shows for the hours you chose, without skipping time for anyone

Admin commands

  • Added /announce for server owners: typed into the server's own console (a game panel's console too), it shows every player [SYSTEM]: <your text> in the chat - to warn everyone before a restart

Miscellaneous

  • Server owners: [combat] parry_window_ms is 500 by default (was 250); a blow on a player holding a block waits a little longer for that player's own game to say whether the block held

Bug fixes

  • Fixed an issue where everyone watching a player get on or off a horse with a weapon drawn crashed, including a player joining near someone riding armed; other players now ride with their hands empty on your screen
  • Fixed an issue where a player fighting from horseback was pulled out of the saddle on other screens and put back on a few seconds later
  • Fixed an issue where maces, clubs and war hammers did no damage to other players
  • Fixed an issue where taking a weapon from a rack or a table could get a player kicked by the anti-cheat; an item someone else already took is now quietly given back instead
  • Fixed an issue where the game froze for a fifth of a second every five seconds on the large map, making every other player jump
  • Fixed an issue where another player could be shown almost half a second behind where they were for minutes at a time (after a respawn or a stall), so their hits seemed to land from out of reach
  • Fixed an issue where being kicked while on horseback crashed the game
  • Fixed an issue where a player who crashed while riding stayed standing on other players' screens after coming back
  • Fixed an issue where another player's shield or weapon wore out and broke on your screen before it did on theirs; other players' items no longer wear down on your screen, and break when their own do
  • Fixed an issue where a blow you blocked could hurt you in full because the server decided before your game had told it about the block; a blow that gets partly through your guard now costs only what got through
  • Fixed an issue where an item lying on a table could be taken by more than one player, and where an item the server put back on a table disappeared again
  • Fixed an issue where closing the screen of a dead player's body with Esc was not noticed: that player's respawn waited up to 30 seconds longer, and what you took was not saved
  • Fixed an issue where sleeping in a bed stopped the clock after an hour, gave back only a little rest, and then refused every later sleep with "Can't delay - no time to lose"
v0.31.0

Preview

For Steam 1.5.6 Protocol 53

Client Server

Your own horse, searching the dead and characters that keep their things

Your own horse

A horse the server gives you is now your horse in the game, with its saddle, its bridle and its saddlebags shown on everyone's screen, and nobody else can ride it as their own or open its bags.

  • Added: a horse the server gives you is your own horse in the game, so its saddlebags open from your inventory and your items can be moved onto it
  • Added: every player sees the gear your horse wears (a saddle, a bridle, saddlebags, a caparison), players who arrive later too
  • Added: horses have owners. Only the owner gets on with a plain "Mount" and sees the saddlebags; anyone else gets the game's "Mount and steal", and what the bags hold stays the owner's
  • Added: what you keep in your horse's saddlebags goes with the horse when another player takes it over
  • For game modes: SetHorseOwner, GetHorseOwner and GetPlayerHorses (a player may own several horses), and OnPlayerStealHorse to allow or refuse a theft
  • For game modes: GetHorseItems and SetHorseItems read and fill a horse's saddlebags, GetHorseGear and SetHorseGear its saddle, bridle and the rest, so a mode can save a player's horse and bring it back after a restart (the server itself forgets horses when it stops)
  • For game modes: OnHorseItemsChange runs when something goes into or out of a horse's saddlebags, or its gear changes, so a mode can save it right away
  • For game modes: a player who leaves still owns their horses in OnPlayerDisconnect, so the mode can save them there
  • For game modes: GetPlayerHorse now picks the horse the player rides, then the one they own, and only then one they happen to control
  • Important: server owners should export the game's tables again. Saddles, bridles, saddlebags and caparisons get a category of their own (HorseGear), which the anti-cheat does not guard by default, so changing a horse's saddle never gets anyone kicked
  • Server owners: add HorseGear to guarded_categories in [audit] to guard horse gear like armour

Searching the dead

The body of a player who died can be searched again, and the server keeps track of it: whatever you take is yours, and it is gone from the dead player.

  • Added: the game's own loot prompt on a dead player's body opens their things in the loot window
  • Added: the respawn waits while someone is searching your body
  • Added: a dead player keeps everything nobody took from their body when they respawn
  • Server owners: loot_bodies in [combat] decides what a body gives up - "all" (the default), "carried" (not what they wear) or "none" (no searching)
  • Server owners: corpse_seconds in [combat] keeps the body where it fell for that many seconds after the respawn
  • For game modes: OnPlayerLootBody can refuse a search
  • For game modes: OnPlayerCorpse runs when a body stays behind; SetCorpseItems, GetCorpseItems and RemoveCorpse decide what it holds and how long it lies there

Characters that keep their things

Game modes can now set a player's whole inventory in one call, dress them in what they wore, and save what they carry the moment it changes. Players start naked unless the server or the mode dresses them.

  • For game modes: SetPlayerInventory makes a player's inventory exactly the list given, and EmptyPlayerInventory takes everything (or everything but what they wear)
  • For game modes: GetPlayerInventory marks what the player wears, and SetPlayerInventory puts those items on again, so a saved character comes back dressed
  • For game modes: OnPlayerInventoryChange runs within about a second of a change to what a player carries or to their purse, so a mode can save it right away instead of on a timer (a crash then cannot give back an item the player had already put in a chest or sold)
  • Server owners: players now spawn naked and unarmed by default; clothing_preset and weapon_preset in [spawn] dress them as before. Characters a game mode creates without an outfit of their own still wear a peasant's clothes

BasicRP

The role-play game mode that ships with the server now remembers a character whole: what they carry, what they wear and their horse, saved the moment anything changes.

  • Added: a character comes back at the login wearing what they wore when they left
  • Added: your horse is saved with your character - its breed, its gear and what its saddlebags hold. It leaves the world when you do (so nobody can empty its bags while you are away) and /horse brings it back, after a relog or a server restart
  • Added: your items, your purse and your horse are saved the moment they change, not once a minute
  • Changed: /horse only ever brings your own horse, never a loose one of another player's
  • Server owners: BasicRP now keeps a character's items and horses in tables of their own - player_items, player_horses and horse_items, one row per stack - and numbers the accounts (players.id), so a database tool can answer questions like who owns an item
  • Server owners: the first start of the new version brings an existing BasicRP database up to date by itself - the accounts numbered, the saved bags moved into the new tables. Back the database up before that start

Game mods

The server now knows which of the game's own mods (Workshop items and the Mods folder) each player's game runs.

  • Server owners: [mods] decides which mods may join - policy = "any" (the default), "allow_list" (only the mods in allowed) or "none"; the mods in refused never get in. A player turned away is told which mods to remove
  • Server owners: the server's log lists every player's mods when they join
  • For game modes: GetPlayerMods lists a player's mods

Miscellaneous

  • Players who lean out over a castle's battlements or a window sill now lean on everyone else's screen too
  • Talking to a merchant now works as in single player: you have to stand close and look at them, and the game shows the key to press in the lower right
  • A hit on a party member or a teammate that does nothing on this server now says so in the chat, instead of doing nothing without a word
  • Server owners: fall_damage in [combat] scales the damage of a fall (0 = falls hurt nobody)
  • Server owners: the server's log now keeps every refused hit and refused shot of a session, not only the first five

Known issues

  • A body that stays after the respawn is only seen by the players who were near it when its player respawned
  • An item taken from another player's body shows as stolen in your own game only, and the mark is gone after you log in again

Bug fixes

  • Fixed an issue where your game could crash when another player near you died right after shooting a bow or crossbow
  • Fixed an issue where picking up another player's dead body crashed the game (bodies of other players cannot be carried for now)
  • Fixed an issue where a deadly fall showed the single-player death screen and left you there; a fall now hurts through the server like a blow, and you respawn as after any death
  • Fixed an issue where a dead player got back up after a few seconds and could walk around until the respawn
  • Fixed an issue where a player killed by a fall or an admin's command stayed standing on everyone else's screen
  • Fixed an issue where eating from a cooking pot got you kicked by the anti-cheat
  • Fixed an issue where a stack you dropped whole (20 arrows, say) was picked up by the next player as a single item
  • Fixed an issue where taking back a stack of arrows (or anything else) you had dropped got you kicked by the anti-cheat
  • Fixed an issue where putting an item in your horse's saddlebags and taking it back out could get you kicked by the anti-cheat
  • Fixed an issue where your horse did not count as your own in the game: its saddlebags did not open from your inventory and nothing could be moved onto it
  • Fixed an issue where another player standing near your horse could ride it as their own and open its saddlebags
  • Fixed an issue where a horse you had ridden and got off sometimes could not be mounted again
  • Fixed an issue where another player's bow fired real arrows on your screen when they started to draw, which could hit people and animals around you
  • Fixed an issue where the game's calendar skipped a whole day when your game's clock ran a minute ahead of the server's
  • Fixed an issue where the game's calendar could jump a whole day at a respawn
v0.30.0

Preview

For Steam 1.5.6 Protocol 52

Client Server

The whole map, clearer voices and sound in the background

The whole map from the start

The world map no longer hides the land under clouds: every player sees the whole map as soon as they are in the world.

  • Added the whole world map from the start, without the fog of war over the places you have not walked yet
  • Server owners: map_fog = true under [ui] in server.toml keeps the fog, for a server built around exploring
  • For game modes: RevealPlayerMap lifts the fog for one player on a server that keeps it (a map bought, a quest done)

Clearer voices

The voice chat got a close listen: it sounds clean now, holds up over an uneven connection, and plays on in the menus and while the game is in the background.

  • Added a Sound option to the launcher's Options page: the game's sound and the other players' voices keep playing while the game is in the background (alt-tab). It is on by default; untick it for the game's own quiet when tabbed out
  • Changed how voices are buffered: each player's voice is buffered to suit their connection and kept in step with your sound card, so voices reach you without gaps, slightly later than before

Bug fixes

  • Fixed an issue where the voice chat sounded garbled: a hiss rode on every word from headsets that record at 16 kHz, quiet syllables dropped out, and voices caught every few seconds
  • Fixed an issue where a player in the inventory, on the map or in a shop could not hear the other players' voices
  • Fixed an issue where a player killed on horseback stayed in the saddle on their own screen while the horse carried the body on
  • Fixed an issue where searching a dead player's body copied its items and got the robber kicked by the anti-cheat: other players' bodies and the game mode's characters can no longer be searched or robbed
  • Fixed an issue where BasicRP wrote four failed database queries ("Duplicate column name") to the server log at every start: it now adds only the columns its players table is missing, and says so when it adds one
v0.29.0

Preview

For Steam 1.5.6 Protocol 51

Client Server

Character creation, BasicRP accounts and following your party

Character creation

Servers can now let you make your own character: the face, the haircut and its color, the beard and the skin, picked on a screen of the server's own with a preview of yourself in front of you. Everyone sees the look you settle on, and a server that keeps accounts gives it back at your next visit.

  • Added the looks: a server can give every player a face, a haircut, a beard and a skin of the game's own, and everyone sees it on your character
  • Added the preview: a copy of you, dressed as you are, that only you see while you choose; turn it, or bring it close to see the face - your view turns onto it when the screen opens
  • Added the look parts to the scripting reference: every face, haircut, beard and skin of the game by name
  • Server owners: the lists of faces, hair, beards and skins come from the game's tables - export them again with this version's exporter
  • For game modes: SetPlayerLook, GetPlayerLook, OnPlayerLookChange (the mode decides whether a player may change their look), GetLookParts, GetLookPartInfo, LookToString and LookFromString (the look as one line of text for your database), and SetActorLook / GetActorLook for NPC actors
  • For client scripts: ShowLookPreview, HideLookPreview, RequestLookChange, GetPlayerLook, OnLookChange, and for menus of your own SetKeyboardCapture / IsKeyboardCaptured (the menu takes the keyboard while it is open), OnTextInput (a text field that types as the player's keyboard layout does) and QuitGame (a menu's Exit)

BasicRP

The role-play mode now has proper accounts and characters: you log in on a box when you join, and a new name makes its character before it steps into the world.

  • Added a password box when you join: a new name chooses its password there and then logs in with it, a known name logs in; Esc leaves the game
  • Added the character creator for new characters: right after an account's first login you make your character in a world of your own at the spawn, where nobody sees a half-made character, and join the others at the spawn when you are done
  • Saved your look with your account: it comes back at every login, together with the place you left
  • Commands: /look changes your look any time; /register and /login still work in the chat
  • Limited the password to five tries: the fifth wrong one ends the visit
  • Server owners: BasicRP keeps the look in a new column of its players table and adds the column by itself at start; without a database it shows no box and a look lasts the visit

Follow a party member

Riding next to someone from your party, the game's own Follow prompt appears in the lower right, the one you know from riding beside a companion in the story. Press it and your horse rides after them, about six metres behind, until you press it again.

  • Added the Follow prompt for party members on horseback: Left Alt follows the nearest party member riding within about 12 metres, and Left Alt again stops following
  • Made your horse keep pace with the leader, turn where they turn and stop a few metres behind them when they stop

Miscellaneous

  • Changed the chat box's history to the plain Up arrow: Up brings back the lines you sent before, Down goes forward again - no Alt needed any more

Known issues

  • Only a man's look can be chosen for now: women's faces, hair and bodies are not supported yet

Bug fixes

  • Fixed an issue where /tp did not move a player riding a horse: the rider was put back in the saddle where the horse stood. Rider and horse now arrive together, and the same holds when the server sets a rider back after a too-fast move
  • Fixed an issue where a modified game could move its player across the map by getting on and off a horse over and over: getting on or off moves a player a few metres at most now
  • Fixed an issue where a horse a game mode moved while someone rode it (SetEntityPos) was pulled back with its rider: the rider now goes along
  • Fixed an issue where a player killed on horseback came back to life where they died instead of at the spawn point: they come back there, with their horse
v0.28.0

Preview

For Steam 1.5.6 Protocol 50

Client Server

Emotes, and smoother movement of other players

Emotes

Hold G for the emote wheel and pick a gesture - a wave, a bow, a cheer, applause, a dance or a beckon - and everyone around sees your character make it. A dance goes on until you move. Hold T to point.

  • Added the emote wheel on G: point at an emote with the mouse and let go of G to play it; a quick tap of G leaves the wheel open for a click, and the number keys pick one directly
  • Added T to point: your arm stays out as long as T is held, and you can walk while pointing
  • Commands: /anim <name>, /anim stop and /anim (the list) in the shipped game modes, with three more emotes to type: salute, point and nod
  • Made emotes play when you stand still on foot with your weapon away and are not fighting (the point also while you walk); a dance ends when you move, crouch, draw, mount, are hit or die, and players who arrive later still see a dance or a held point
  • Changed G to open the wheel instead of the game's own Throw stone on a server with emotes
  • Server owners: [emotes] in server.toml - enabled, wheel (up to eight emotes) and [emotes.custom] for your own from the game's animations
  • For game modes: OnPlayerEmote, SetEmoteWheel, AddEmote, PlayPlayerEmote (it says why an emote cannot play, ready for your own command), StopPlayerEmote, GetPlayerEmote, GetEmotes and GetEmoteWheel

Miscellaneous

  • Changed the chat to open with Enter alone: holding T points now
  • Changed how the other players' movement is played back: your game now keeps just the delay their updates really need on your connection, and adjusts it gently instead of in jumps
  • Changed the other players' paths to curve smoothly from one update to the next, and their movement to carry on around a turn when an update comes late
  • Changed your game to send your movement 30 times a second at any frame rate (at 45 frames a second it was sent only 22 times)

Bug fixes

  • Fixed an issue where the other players' characters stuttered for a moment now and then, even on a good connection
  • Fixed an issue where, for the first half minute after you joined a server, the other players' characters jumped forward every second or so and could lag several metres behind
  • Fixed an issue where a character holding a looping pose from a game mode, such as a kneel or a seat, stood back up for several seconds now and then
v0.27.1

Preview

For Steam 1.5.6 Protocol 49

Client Server

The game's own trade screen

Trading with vendors

A vendor now opens the game's own trade screen, the one the story's merchants use: your things on one side, the vendor's shelf on the other, a basket in between and one deal for all of it. The server still keeps every price, every Groschen and every item, and as with the story's merchants a deal closes the screen - press the use key again to go on trading.

  • Added the game's trade screen to vendors: walk up, press E, put what you buy and what you sell in the basket, then Close deal
  • Added deals of many items at once: what you sell pays for what you buy, and either the whole deal goes through or nothing changes hands
  • Changed a vendor's side of the screen to show the server's prices, and your side to offer the vendor only what they buy
  • For game modes: CreateVendor makes a vendor in one call; SetShopScreen keeps a vendor on the list panel; SetShopBuyCategories and SetShopBuyPrice decide what a shop buys and for how much, GetShopBuyPrice tells; OnPlayerOpenShop may keep a shop closed, OnPlayerShopDeal sees every deal whole before anything moves

Miscellaneous

  • Changed BasicRP's merchant to open the trade screen and to leave papers out of what it buys

Known issues

  • The trade screen has no haggling yet: the price on the shelf is the price

Bug fixes

  • Fixed an issue where a vendor bought an item back for more than they sold it for (BasicRP's broad sword: 90 to buy, 783 to sell back)
v0.27.0

Preview

For Steam 1.5.6 Protocol 48

Client Server

Perfect blocks, counters and a server that trusts less

Perfect blocks, counters and master strikes

Fights between players now use the game's own special moves. The perfect block, the counter or the master strike you pull off on your screen is what the others see, and what the server counts - and a counter can be parried and countered back, as in the game.

  • Added perfect blocks between players: a block timed to the blow deflects the swing, does the defender no harm and costs the attacker stamina
  • Added counters after a perfect block that the other player can parry in turn: parry, counter, parry, counter, for as long as both keep it up
  • Changed a counter to land when the game's own counter would, on every screen, so the one it is aimed at gets their chance to parry it
  • Changed a block that held on your screen to protect you, even when the other player's screen showed it a moment late
  • Changed the other players' characters to stand in their guard while you fight them, as the game's own opponents do
  • Changed another player's character that swings at you from a little too far on your screen to step up to you first, so every swing that can hit you is one you see
  • Added master strikes between players: a counter with your guard turned to meet the blow parries the swing and cuts back, and the counter deals its damage
  • Added special attacks on the other screens: the attack your game chose is exactly the one everybody sees
  • Gave every player the perfect block, the counter and the master strike from the start, and the same moves to the other players' characters on your screen
  • Changed a master strike between players to always play its plain animation: whether it kills is the server's call, and a deadly one ends in the ordinary death
  • Server owners: [combat] perfect_block, parry_window_ms, counter_parry_window_ms, perfect_block_stamina, master_strike_scale and victim_blocks tune them - copy the new lines over if you keep your own server.toml

Tighter cheat protection

The server believes less of what a player's game tells it. Running faster than anyone can, money that appears from nowhere, and items that were never yours no longer get you anywhere, and a server now kicks a cheater instead of only noting it.

  • Changed the speed check to watch a player over two seconds, with its own limit on foot, crouched and on horseback: a speed hack is pulled back to the fastest an honest player moves, and a lag spike is no violation
  • Changed the purse to be the server's: you start each visit with the money the game mode gives you, money that grows without the server knowing why is a violation, and shops sell against the money the server can account for
  • Added a check on items that leave a player - dropped, put into a chest or sold to a shop - against what the server knows they hold, so a conjured sword never turns into somebody's pickup, a chest's contents or clean money
  • Changed a weapon or a piece of armour picked up where the level holds none to be taken back; the arrows and bolts you shot can still be gathered again
  • Server owners: a violation now kicks by default ([audit] action = "kick"); "log" only writes the line, for testing
  • Server owners: [validation] max_speed is the limit on horseback (14 m/s), with max_speed_on_foot (8) and max_speed_crouched (5) new beside it
  • Server owners: the terrain check turns itself on when the level's terrain file is in data/heightmaps/ - export it once and there is nothing to set
  • Server owners: Money in [audit] guarded_categories guards the purse
  • Server owners: a server that keeps its own server.toml keeps its own values for these keys - copy the new [validation] and [audit] lines over to get the new defaults
  • Server owners: a player the server moves - a respawn, a teleport - no longer leaves a false "pulled back" line in the log
  • For game modes: GetPlayerMoney answers the money the server stands behind; OnPlayerAuditViolation hears about the purse too (in tenths of a Groschen) and about items dropped or put away that were never held; a player's starting money is given with GivePlayerMoney

Miscellaneous

  • Reduced the stutter when many players come into view at once, and quieted the client log with a crowd around
  • Added doors to the NPC characters' walks: a character opens a closed door it walks through, for everyone to see, and a locked door stops it there
  • Server owners: the navigation mesh and the collision geometry turn themselves on like the terrain check - a level's file in data/navmesh/ or data/collision/ is used without a setting
  • Server owners: export the game's tables again (KcdMp.ExportTables) - the new file knows which way every door faces, so a character opens only the doors it walks through, not the ones it passes
  • Server owners: [actors] open_doors = false keeps the NPC characters from opening doors
  • For game modes: a walk that ends at a locked door calls OnActorArrive there, and a chase waits at the door
  • Changed your dog to come along when you respawn or a game mode moves you far away, unless you told it to stay
  • Changed sprinting and jumping to cost the stamina the game itself charges (5 a second, 9 a jump), and stamina to come back a quarter slower while you walk or run, as it does in the game
  • Server owners: [combat] sprint_stamina_cost and jump_stamina_cost default to 5 and 9; a server that keeps its own server.toml keeps its old values
  • Added the party commands to the BasicRP game mode: /invite, /accept, /decline, /leave, /p to talk to your party, and the leader's /pkick, /leader and /disband
  • Server owners: the BasicRP game mode makes everyone who joins an admin; set EVERYONE_ADMIN = false at the top of the mode to keep it to the names in KCDMP_ADMINS
  • Removed the injury marks under each member in the party frames: a frame shows the name, health and stamina, and "bleeding" while they bleed
  • Changed the game's own low-health look - the screen turning red and pale under 20 health - to follow your health as the server counts it, and to stay off while you lie dead
  • Removed the developers' debugging hooks from the game client

Known issues

  • On the other players' screens a master strike shows as a perfect block: the parry and the damage are the same everywhere, the counter's own cut is seen by the one who struck
  • In a quick exchange of parries and counters, another player's character can jump a step closer just before its counter
  • The first swing of a fight can show a moment late on the other player's screen, sometimes too late to parry

Bug fixes

  • Fixed an issue where a perfect block timed late in the swing, the usual timing, looked like a landed blow on the attacker's screen
  • Fixed an issue where other players' swings played slower on your screen than on theirs, so a block timed to them came late
  • Fixed an issue where another player's block gave way on your screen after a few blows while it held on theirs
  • Fixed an issue where another player's raised block dropped on your screen when they were pushed back or stepped away
  • Fixed an issue where a swing that was never thrown showed on the other screens
  • Fixed an issue where dying emptied your purse
  • Fixed an issue where dying took everything you carried: a respawn now keeps your inventory, the torch and what you bought included
  • Fixed an issue where a red tint came back over the whole screen every time you closed the inventory after dying
  • Fixed an issue where another player's short actions played only the first time on your screen: praising the dog a second time left them standing idle
  • Fixed an issue where praising your dog looked like crouching to the other players
  • Fixed an issue where the Lua definitions for code editors in the server's sdk/ lacked the functions that came with the shops, the purse and the role-play chat
  • Fixed an issue where KcdMp.ExportTables --no-meshes left every level's chests, table items and doors out of the file
v0.26.0

Preview

For Steam 1.5.6 Protocol 45

Client Server

Vendors, the role-play chat and the torch

Shops and vendors

A game mode can now set up shops and put them on its NPC characters. Walk up to a vendor, and "Trade" shows under their name; the use key opens a shop screen in the game's own look, with what the vendor sells on one tab and what they pay for what you carry on the other. Everything you buy or sell goes through the server, so your purse and your bags stay honest.

  • Added the shop screen: W / S move, A / D set the quantity, Tab switches between buying and selling, Enter trades, Esc closes; it closes by itself when you walk away from the vendor
  • Added the merchant to the BasicRP game mode: a vendor at the spawn nobody can hurt, selling a few useful things and buying at half their worth
  • For game modes: CreateShop, SetShopItem, RemoveShopItem, GetShopItems, GetShopMoney, SetShopMoney, GetShopTitle, SetShopTitle, DestroyShop, IsValidShop; SetActorShop makes a character a vendor, OpenShop and CloseShop open a shop on a player from anywhere, GetPlayerShop tells; OnPlayerBuy and OnPlayerSell may refuse a trade, OnPlayerCloseShop hears the screen close
  • For game modes: SetActorInvulnerable makes a character no blow can hurt; SetActorPrompt puts a word under a character's name and OnPlayerInteractActor hears the use key on them - a talk, a quest, a guard's challenge
  • For game modes: GetPlayerMoney and GivePlayerMoney; the purse now rides along with the inventory report

Role-play chat

The BasicRP game mode speaks like a role-play server: what you say is heard nearby, actions and descriptions come in the lavender every role-play player knows, and a short action can float over your head instead of the chat.

  • Commands: /me <action>, /do <description>, /ame <action> (over the head), /s <shout> (heard across 40 m), /b <text> (out of character)
  • A plain chat line in BasicRP is heard within 20 m and shows over the speaker's head
  • For game modes: SetPlayerChatBubble puts a line over a player's head in a color of the mode's for everyone within a distance; GetPlayersInRange lists who is near a point; COLOR_PURPLE

The torch on the other players

Light a torch and everyone else sees it in your hand: the torch itself, its flame, and the light it casts on the ground around you. Put it away and it goes out on their screens too. Riding at night with someone is a different thing now.

  • Added the lit torch to the bodies of the other players - the game's own torch, lit and held up
  • The torch follows the torch key, not the inventory: equipping one changes nothing until you take it in hand

The chat is easier to read

The chat sits higher above the bottom edge, clear of the game's own bar, and the five newest lines now stay on screen instead of fading away - you can see what was just said without opening the chat box.

  • The five newest lines never fade; older ones fade after twelve seconds as before
  • Opening the box (T, or Enter) still shows the whole backlog
  • Removed the key reminder under the chat
  • The chat goes out of the way while the player menu or the pause menu is open

Miscellaneous

  • The BasicRP game mode answers /horse for every player, not admins alone: a horse appears in front of you and you are put in the saddle (X gets you off)
  • The BasicRP game mode has its own /help now — the mode's commands, grouped and explained, instead of the server's list of admin tools
  • The BasicRP game mode runs on Kuttenberg now, the spawn in the Suchdol fortress yard, with the merchant by it; a new character starts with 3000 Groschen and a torch, and a registered player's purse is saved with their place
  • The BasicRP game mode promotes the names of KCDMP_ADMINS to admins once they log in (or on connect when the server keeps no accounts)
  • Server owners: an NPC character created with a height below zero stands on the ground the server's world data finds (the same "on the terrain" rule the spawn point has); without world data the log says so
  • The item reference now says what the price column is: tenths of a Groschen, the game's own money unit
  • KcdMp_shop in the console shows the shop screen's state and the vendors around you

Known issues

  • A player carrying a torch walks as though their hands were empty: the torch rides in the hand rather than being carried the way the game carries one

Bug fixes

  • Fixed an issue where the shop screen flickered when its lists arrived or when the use key was held
  • Fixed an issue where items a game mode gave at the spawn vanished under the spawn's own outfit
  • Fixed an issue where buying several torches, swords or other items that do not stack put only one in the bag
  • Fixed an issue where /give money counted tenths of a Groschen: it takes Groschen now
  • Fixed an issue where a registered player's saved place was restored on another level
v0.25.0

Preview

For Steam 1.5.6 Protocol 44

No public download

The game mode's database

The game mode's database

A server owner can connect a MySQL, MariaDB or PostgreSQL database for the game mode, and the mode keeps its own things in it: accounts, factions, scores, the rules on doors and chests. The server itself no longer remembers players between visits; a mode that wants to, does, on its database.

  • Added [gamemode.database] to server.toml: the driver, the host, the user, the password, the database, or one url line
  • Added the BasicRP game mode (gamemodes/basicrp.lua), the start of a role-play mode on your own database: accounts with /register and /login, and every player put back where they left, their place saved when they leave and every minute
  • Added /register <password> and /login <password> to the freeroam mode, on the database when the server has one: a logged-in player continues where they left
  • Server owners: KCDMP_DB_DRIVER and KCDMP_DB_URL set the game mode's database from the environment
  • Server owners: the server's own state - doors, gates, chests, taken items and the bans - now lives in data/server.db, made on the first start with nothing to set up; an older server's world.json and bans.json are imported once
  • For game modes: GetDatabase() with Query, Execute, Scalar and Batch (Lua), IServerApi.Database (C#); SetSecretCommand, HashPassword, VerifyPassword for a mode's own login

Admin commands

  • Added /objectinfo [radius|off] for admins: a label over every door, chest, loose item and gate around you for a minute, with the name and the distance, and the full keys in the chat - for whoever writes a game mode's rules

Miscellaneous

  • Admins are now the game mode's to name (the freeroam mode takes them from the KCDMP_ADMINS environment variable); the [accounts] section of server.toml is gone
  • Removed the server's own /register and /login, the player records (players.json) and the [persistence] section: the server keeps no accounts
  • A chat command a game mode declares secret is masked as you type it and is not recalled by Alt+Up
  • A player the server turns away (banned, a wrong version) or kicks with a ban sees the reason on the game's own dialog, and the game closes when they press Enter
  • For game modes: GetDoorPosition, GetContainerPosition, GetWorldItemPosition, GetNearestDoor, GetNearestContainer, GetNearestWorldItem
  • The tables export now carries every door's position; re-run the exporter for /objectinfo and the position functions

Known issues

  • Names registered on a server before this release are forgotten: the server no longer keeps accounts, and a mode's own accounts start empty
v0.24.0

Preview

For Steam 1.5.6 Protocol 43

No public download

The game's own UI

The game's own UI

Everything KCD:MP puts on the screen is now drawn by the game's own interface: the same typeface, the same boxes and toasts, the same compass. The nameplates of the last release opened the road; this release takes the chat, the scoreboard, the party, the compass and every message down it, and gives game modes and their client scripts the same tools.

Messages in the game's own toasts

What the server has to tell you now shows the way the game tells you things: the line under the compass, the short notification at the top, the log line and the quest banner.

  • Added the welcome on joining: the server's name at the top, its message of the day under the compass
  • Added the fight messages under the compass: who you are fighting, when it is over
  • Added the kick line in the game's log for everyone else on the server
  • Added the duel arena's countdown and "Fight!" under the compass and its rounds and results as quest banners
  • For game modes: ShowInfoText, ShowNotification, ShowGameLog, ShowObjectiveEvent, ShowTutorial, HideInfoText, HideTutorial and their ForAll forms; the same in C#
  • For client scripts: the same names without the player - ShowInfoText, ShowNotification, ShowGameLog, ShowObjectiveEvent, ShowTutorial, HideInfoText, HideTutorial, ClearNotificationQueue

The party in the game's UI

  • Added the party frames in the game's own look: the names in its typeface, the health and stamina bars, the injury marks and the bleed mark, greyed while a member is dead or loading
  • Added the party invitation on the game's own tutorial box, with the keys and the countdown

The chat and the scoreboard in the game's look

  • Added the chat lines in the game's typeface, each in its color, on a dark backing, with the typed line and a caret under them while the box is open; the keys, Enter, Esc and the Alt+Up history are as before
  • Added the Tab scoreboard in the game's look: ids, names in their colors, pings, who is talking or muted or in a menu, your party members marked, the server's name and address

Compass blips

Your party and a game mode's points of interest on the game's own compass.

  • Added the party members as blips on the compass, at their bearing, at any distance
  • Added compass markers for game modes: a point in the level shown to the players the mode chooses, with the game's quest or point-of-interest symbol
  • Server owners: [ui] party_compass turns the party blips off
  • For game modes: CreateMarker, DestroyMarker, SetMarkerPos, SetMarkerKind, SetMarkerColor, SetMarkerText, GetMarkerInfo, ShowMarker, HideMarker, ShowMarkerForAll, HideMarkerForAll, IsMarkerShown, GetMarkers; the same in C#

Nameplate rules

  • Added [ui] nameplates = "party" and health_bars = "party": the plates or the bars for your party members alone
  • Added [ui] party_color and team_color: a party member's or a teammate's name in a color of the server's choosing
  • Added [ui] injuries: six marks under the bar, lit for the body parts the server knows as injured

A UI toolkit for client scripts

A game mode's client script can now draw in the game's own look: panels, lines of text in the game's typeface and filled shapes, placed in a space that fits every screen, kept across level changes, gone with the script.

  • For client scripts: CreateUiClip, CreateUiText, CreateUiRect, SetUiText, SetUiPos, SetUiSize, SetUiColor, SetUiAlpha, SetUiScale, SetUiAlign, SetUiWrap, ShowUiElement, HideUiElement, DestroyUiElement, ClearUi, GetScreenSize, WorldToScreen and the callback OnKey
  • The shipped freeroam mode draws its world clock that way now, in the game's typeface at the top right, from a client script of its own (freeroam/client/hud.lua); a single-file mode's client half lives in a folder named after it

Chat over the head

  • Added chat bubbles: a player's chat line shows in the game's speech bubble over their nameplate for a few seconds
  • Server owners: [ui] chat_bubbles turns them off for everyone; KcdMp_chat_bubbles 0 on a client for that player alone
  • Added the login box: a registered name is told on the game's own box how to log in, and it comes down with the login

The death box

  • Added a box on a death saying who killed you and when you are back on your feet; it goes with the respawn

Client scripts written like game modes

A client script now reads like the game mode it belongs to: it defines callbacks by name and calls functions with the server's own names, minus the player - on the client the player is always you.

  • Added the callbacks OnServerEvent, OnFrame, OnStateChange, OnPartyChange and OnKey
  • Added SendServerEvent, GetPlayerId, GetPlayerName, GetPlayerPos, GetLevelName, GetGlobalState, GetPlayerState, GetEntityState (and their *States tables), GetParty, CountEntities, GetEntityCensus, SetLabelOcclusion, the HUD and UI functions above, and the COLOR_* constants (0xRRGGBB on this side: the game's Lua numbers are 32-bit floats, so the server's 0xRRGGBBAA does not fit - the alpha is a separate 0 .. 100)
  • The KcdMp. names of the earlier releases still work in this release and go in the next; the editor definitions and the reference describe the new names alone
  • A file run by hand with KcdMp_exec gets the same API over the game's whole Lua, its OnFrame and OnKey included

Miscellaneous

  • colour is color everywhere a script or a setting says it: COLOR_SERVER and its kin, SetPlayerColor, SetMarkerColor, SetHudTextColor, [ui] party_color and team_color, the C# Color properties; the old spellings still load in this release and go in the next. Added COLOR_GOLD, the game's own text gold
  • The freeroam mode's party kick is /pkick now: /kick is the server's admin command and the mode's stood in its way
  • A player kicked from a party is told so in the chat, and the party hears who was kicked or left
  • A player kicked from the server sees who did it and why on the game's own dialog; the others read it in the chat
  • The starting stats are the map's own now ([spawn] stat_level = 0): no stack of level notices on joining
  • Tab holds the scoreboard instead of toggling it; the board's title names the server and the player count
  • For game modes: ForEachPlayer(fn, inWorld) calls a function for every connected player, or for the ones standing in the world alone; returning false stops it
  • Added the console command KcdMp_hud <kind> <text> to show each toast slot by hand
  • Added KcdMp_compass 0|1|server and KcdMp_compass_span <degrees> on the client for the compass blips

Bug fixes

  • Fixed an issue where a hidden health bar left its dark backing on the plate
v0.23.0

Preview

For Steam 1.5.6 Protocol 42

No public download

Voice chat, gates, nameplates and chests

Proximity voice chat

Talk to the players standing near you, through the game's own sound. A voice comes from where its owner stands, fades with the distance and is gone at 25 metres.

  • Added proximity voice chat: hold V to talk, or switch to voice-activated
  • Added the launcher's voice settings on the Options page: push-to-talk / voice-activated / off, the talk key, the microphone, the sensitivity, noise suppression and the volume of the other voices
  • Added the talker marks: » name over a speaking player's head and (talking) on the Tab list
  • Commands: /voice off|ptt|vad, /mute <name>, /unmute <name>
  • Server owners: [voice] in server.toml - enabled, range in metres, max_bytes
  • For game modes: SetVoiceRange, GetVoiceRange, SetPlayerVoiceRange, SetPlayerVoiceMuted, SetPlayerVoiceDeaf, IsPlayerTalking, IsPlayerVoiceEnabled, the callbacks OnPlayerVoiceStart / OnPlayerVoiceStop; the same in C#
  • Requires a microphone Windows lists as a recording device; without one you still hear the others

Nameplates

A name over every player's head, drawn in the game's own look, with a health bar under it.

  • Added nameplates in the game's typeface on a dark plate, fading with the distance and hidden behind walls
  • Added a health bar under the name that follows what the server knows of that player's health
  • Server owners: [ui] nameplates, [ui] health_bars, [ui] range (50 m by default) and [ui] through_walls in server.toml; a player hides them on their own screen with KcdMp_nameplates 0 and KcdMp_health_bars 0
  • Changed the freeroam colour command to /color (/colour still answers)

Chests and loot

Chests hold what the game would put in them, and what one player takes is gone for the other.

  • Changed chests to be filled by the server from the game's own loot tables the first time anyone opens them
  • Added restocking: a looted chest is rolled again after its own restock period (seven world days for most, as in the game); [containers] restock sets the period for every chest or turns it off
  • Added [containers] loot = "empty" for servers whose game mode fills the chests itself
  • Added money in chests, riding along with the rest of the contents
  • Added linked chests: the ones the game links to one shared inventory share it on the server too
  • Added [containers] persist: doors, chests and taken items survive a restart in world.json beside the player records
  • Changed loose items on tables and shelves to be one per world ([containers] world_items = false restores the old way); their removal on the other players' screens is not finished yet, see the known issue below

Gates and drawbridges

The Suchdol portcullis and the Malesov drawbridge are one per world, owned by the server.

  • Synced the two gates: they drop and rise at the same moment on every screen, a newcomer sees them wherever they have got to, and a gate sent back the other way turns round from where it is
  • Changed the gates to move at one even pace: the portcullis takes 5 s to drop and 12 s to rise, smoothly, with the game's own sounds
  • Added the gates' state to what survives a restart, with the doors
  • For game modes: GetGates, GetGateInfo, SetGateState, ToggleGate, GetNearestGate and the callback OnGateChange

Admin commands

  • Added /gate [open|close|toggle] for admins: turns the nearest gate round; /gate list names them
  • Added /restock here, /restock all and /restock <key> for admins: rolls a chest's contents again

Miscellaneous

  • Added a spawn per map: kutnohorsko = [x, y, z, yaw] (also trosecko, klaster) under [spawn] in server.toml beats the plain x, y, z, yaw on that map, and --spawn on the command line beats both
  • Changed the Kuttenberg default spawn to the inner yard of the Suchdol fortress, facing its gate
  • Added for game modes: RollLoot, HasLootPreset, GetContainerInfo, GetContainerPreset, SetContainerPreset, RestockContainer, LinkContainers, GetTakenWorldItems, GetWorldItem, RespawnWorldItem, TakeWorldItem, GetWorldSeconds, and the callbacks OnContainerRestock and OnPlayerTakeWorldItem
  • Changed the tables export to carry the game's loot tables and, per level, every chest's loot preset and every table slot's item; run it again to get the new contents (an older file still works, with every chest empty)

Known issues

  • Loose items on tables are not yet removed on the other players' screens: the server records the take and tells them, but their game keeps the item in place, so a bowl or a piece of cheese can still be picked up by everyone. Chests are fine.

Bug fixes

  • Fixed an issue where a door left open before you joined looked shut while it was open (the prompt offered to close it), on a fresh game and after a server restart
  • Fixed the white ball that could appear where another player's handgonne or hookgun shot landed and sit there for half a minute; a gun's shot now shows the flash and the smoke at the muzzle and nothing in flight
v0.22.0

Preview

For Steam 1.5.6 Protocol 38

No public download

Two games on one PC, the maps by name, the server's log

Multiple instances on one PC

Join while a game is running starts a second one instead of refusing. The launcher numbers it with window titled KCD:MP (2) and its own log (client-2.log). Play with a friend or review your own server from another screen.

  • Second instance opens on another monitor or beside the first on one monitor
  • Launcher stays in the taskbar while games run and comes to front when the last one closes
  • From console: KcdMp_launcher --connect ... starts a second instance

Server logging

The server prints everything to server.log next to KcdMp.Server.exe as well as the console. A double-clicked server no longer closes on error; it waits and shows the reason in the log.

  • server.log and server.log.1 (previous run) next to the executable
  • log_file under [server] in server.toml names another file (--log-file on command line); "" keeps console-only
  • Double-clicked server waits on error; the reason is in server.log
  • Port errors now say "cannot open udp/7777 ... is another server already listening on that port?" instead of a generic message

Miscellaneous

  • Maps now show their names: Trosky, Kuttenberg, Sedletz Monastery instead of trosecko, kutnohorsko, klaster (ids stay in config and commands)
  • Chat background is darker: near-opaque when open, softer as lines fade
  • Removed the overlay indicator (version, FPS, connection) from player screens; shows with -KcdMp_console, togglable in F9
  • Removed Master list field from launcher Settings (the public list is the project's own; server owners keep @ lines in servers.txt and --master)
  • Server owners: GetLevelName() (Lua) / LevelName (C#) for player-facing names, GetLevel() / Level for config

Admin commands

  • Added /kill [player] for admins in freeroam: a death without a blow, next to /hurt, for testing respawns

Bug fixes

  • Fixed the red death screen sticking through respawn and heal (the client now prevents the game from judging blows lethal; KcdMp_death_look clear in F9 clears it by hand if needed)
  • Fixed doors and chests inside houses not syncing (all containers in the three levels now sync; dropped containers are logged)
v0.21.0

Preview

For Steam 1.5.6 Protocol 38

No public download

The launcher updates itself, the emblem, the game window

The launcher updates itself

When a newer KCD:MP is out, the launcher offers to download and apply it. A pop-up and a line in the window show the version, title and size, with Update, Later or Skip this version buttons. Nothing happens automatically.

  • Update downloads the release, checks it against its published checksum, puts the new launcher and client in place, and starts the launcher anew
  • Game must close while it applies; no installer, no administrator prompt; your folder, settings, favourites and history stay
  • Server owners: When a join fails due to version mismatch, the server says so and points at the update
  • Check now in Settings asks on demand and re-shows skipped versions
  • From console: KcdMp_launcher --update-check checks for updates, KcdMp_launcher --update applies one

The look

The KCD:MP emblem — a wax seal with crossed swords — appears as the icon of the launcher, client and server, and the loading screen displays the KCD:MP key art: the company on the hill over Bohemia.

  • Emblem is the launcher, client and server icon on Windows and the taskbar
  • Loading screen shows the key art with the title

Display and window options

A new Options page lets you choose how the game window appears. Display uses the game's own video settings; Windowed opens a window, Borderless a fullscreen one (alt-tab friendly). Pick your monitor and resolution. Your choice applies at every join.

  • New Options page: Display, Windowed, Borderless modes; monitor and resolution selection for windows
  • Level loads in the game's own window; your chosen mode takes over when the level is up

Miscellaneous

  • Launcher menu: Servers, Favourites, History, Direct connect, Options, Settings
  • Loading screen: Loading the game and Loading local game assets
  • Server owners: KcdMp.Server.exe displays the emblem icon on Windows
v0.20.0

Preview

For Steam 1.5.6 Protocol 38

No public download

Parties, world data and fifty on a server

Parties

Players can form a party of up to five to share health and stamina info and prevent friendly fire. Invitations arrive as a note with Y to accept or N to decline. The leader who leaves passes lead to the next member.

  • Synced party frames under the HUD showing each member's health, stamina, wounds and bleeding at any distance
  • Party members cannot hurt each other; no friendly fire
  • Commands: /invite <name>, /accept, /decline, /leave, /kick <name>, /leader <name>, /disband, /p <text>
  • Server owners: [party] in server.toml with max_size (5), invite_timeout (30 s), frames (on), leader_leaves ("next" or "disband"), friendly_fire (off)
  • Server owners: OnPartyInvite, OnPartyInviteResponse, OnPartyCreate, OnPlayerJoinParty, OnPlayerLeaveParty, OnPartyLeaderChange, OnPartyDisband callbacks; InviteToParty, AcceptPartyInvite, DeclinePartyInvite, AddPlayerToParty, RemovePlayerFromParty, SetPartyLeader, DisbandParty, ShowPartyFrames functions
  • Server owners: Client scripts see KcdMp.party and can hook KcdMp.on_party_change

World data: the server knows the level

On servers carrying the level's data, NPC actors walk around walls and through doors, hits through walls can be refused, and bridges count as ground. Export the navigation mesh and collision geometry once from your game.

  • NPC actors walk the mesh: guards and opponents navigate like the game's own people instead of in straight lines
  • Hits and players through walls can be refused by the server; doors the server knows are open let both through
  • Bridges, roofs and upper floors count as ground for terrain checks, so anti-cheat stays tight without bothering climbers
  • Server owners: Export using KcdMp.ExportNavmesh (no game run, seconds per level) and KcdMp.ExportCollision (one game run per level) in the tools/ folder
  • Server owners: [validation] in server.toml: set navmesh and collision to file paths like "data/navmesh/{level}.knav" and "data/collision/{level}.kcol"
  • Server owners: Enable line_of_sight to refuse hits through walls; enable no_clip to pull players through walls back to the last position (both off by default, logged until enabled)
  • Server owners: With collision geometry, max_above_terrain can tighten from 60 m (tower height) to 10 m (storey height)
  • Server owners: Game modes use HasNavmesh(), FindPath(...), IsReachable(...), GetNavmeshHeight(...), NearestNavmeshPoint(...), HasCollision(), RayCast(...), IsLineOfSight(...), GetGroundZ(...)
  • Server owners: Freeroam admin commands: /actor come (walks to you along mesh), /los [name] (line of sight check), /ground (floor height)

Miscellaneous

  • First stress test: fifty players on one server at once, walking, running, riding and fighting in parties, held 60 fps
  • KcdMp_party_keys changes the party acceptance keys
  • Protocol 38: clients and servers update together

Bug fixes

  • Fixed the game window dropping to 20 fps and stuttering when it is not in front (now runs at full speed for streamers and second players)
  • Fixed frame rate with thirty or more others in sight by batching actor movements and optimizing checks (now 60 fps with fifty in view)
v0.19.0

Preview

For Steam 1.5.6 Protocol 37

No public download

Game modes get a client half

Scripts from the server

A game mode can send scripts to your game that run in a sandbox, letting you see markers, hear sounds or watch UI. The server sends them when you join. The launcher and chat confirm when a server does this.

  • Game modes can send client scripts that run in a sandbox: they can draw, read the world and talk to the server, but cannot read files, open your browser or run console commands
  • Server owners: Game modes with client scripts live in gamemodes/<name>/<name>.lua with gamemodes/<name>/client/*.lua for client files (up to 64 files of 256 KB each, auto-reload with watch = true)
  • Server owners: [client] scripts names another folder (for the built-in mode); [client] console opens the F9 window on your server
  • Server owners: Client scripts access the KcdMp table (events, state bags), game drawing, entities, timers and KcdMp.on_frame(fn) to draw every frame
  • Server owners: The marker example ships in the server folder as a template

The F9 window

The overlay console (F9) is closed by default. A server can open it for its players when it wants to. Offline, use -KcdMp_console to open it.

  • F9 window closed by default, server-controlled
  • -KcdMp_console opens F9 in offline mode

Miscellaneous

  • Protocol 37: clients and servers update together
v0.18.0

Preview

For Steam 1.5.6 Protocol 36

No public download

One name: KcdMp

Unified naming

Everything that used to use kcd2mp now uses KcdMp. The launcher, client, server, console commands and data folder all carry the unified name throughout.

  • Launcher: KcdMp_launcher.exe; client: KcdMp_client.dll
  • Launcher switches start with -KcdMp_: -KcdMp_autoquit, -KcdMp_instance, -KcdMp_window, -KcdMp_spawn
  • Console commands: KcdMp_exec, KcdMp_log, KcdMp_net, KcdMp_say
  • Data folder: %LOCALAPPDATA%\KcdMp (migrated from the old location on first run)
  • Log tag: [KcdMp]

Miscellaneous

  • Server owners: Windows server is KcdMp.Server.exe; tools are KcdMp.ExportTables.exe and KcdMp.ExportHeightmap.exe
  • Server owners: Environment variables KCDMP_MASTER_URL and KCDMP_MASTER_ADDRESS override the master list
  • Server owners: Editor definitions for the APIs: sdk\KcdMp.d.lua (game mode API) and sdk\KcdMp-client.d.lua (client script API)
  • For game modes: Client scripts use the KcdMp table for events and state (KcdMp.on_event, KcdMp.state, KcdMp.player_id, etc.)
  • For game modes: C# plugins use the KcdMp.Api namespace; rebuild against the new sdk\KcdMp.Api.dll
v0.17.0

Preview

For Steam 1.5.6 Protocol 36

No public download

The server on Windows, the tools for its data, and an API your editor knows

Dedicated server on Windows

The server now ships for Windows as well as Linux: KcdMp.Server.exe, the same server.toml, the same game modes (it needs the .NET 10 runtime). The server folder has one layout wherever it runs: the program, server.toml, gamemodes/ with Lua modes, sdk/ for plugins and your editor, and data/ for server files. server.toml is short with a link to the reference page per key group; a file from an earlier build keeps working.

Export tools for server data

Three tools write the server's data from your copy of the game. KcdMp.ExportTables.exe writes data/combat/items.json with damage, items, souls, buffs, potions, ointments and props. KcdMp.ExportHeightmap.exe writes data/heightmaps/ with the terrain used by movement checks and GetTerrainHeight. Run them on a Windows PC with the game, then copy the files into a Linux server's data/ folder. Without them the server runs on client reports and knows items by GUID only.

Editor support for your scripts

The server folder includes sdk/KcdMp.d.lua that adds completion, inline docs and error checking to VS Code Lua extension and other editor tools. Point your mode folder's .luarc.json at ../../sdk to use it. sdk/KcdMp-client.d.lua does the same for client scripts.

Miscellaneous

  • For C# plugins: Post(action) hands work from another thread to the server's tick (the way to use a database or web service without stalling players)
v0.16.0

Preview

For Steam 1.5.6 Protocol 36

No public download

Dogs on the game's own AI

Dogs

Your dog is the game's own companion now. Use /dog to summon one that follows you on the game's dog AI the way Mutt does: it keeps to your heel, catches up at a run when you pull ahead, and waits when told to. Everyone else sees the same dog trotting after you. Control it with /dog stay (wait here), /dog follow (return to heel), /dog free (roam near you), or /dog again (send away). Press V to praise your dog, and its coat is picked once and looks the same on every screen.

Miscellaneous

  • For game modes: SetDogMode(id, mode) tells a dog what to do - DOG_STAY, DOG_FOLLOW, DOG_FREE, and the game's other modes like DOG_AGGRESSIVE; GetDogMode(id) reads it back; the mode is also the dog's state bag key mode

Bug fixes

  • Fixed a companion dog standing still or going invisible (the game's story rule that hides dogs was lifted for multiplayer)
v0.15.0

Preview

For Steam 1.5.6 Protocol 36

No public download

Typed command arguments for game modes

Miscellaneous

  • For game modes: sscanf(args, format) parses command arguments as typed values - u a player (by name or id), d a whole number, f a decimal number, s one word (or "quoted string"), z the rest of the line; ? makes it optional; returns false and a reason on error
  • For game modes: GetPlayerId(name) looks up a player by name, name fragment or id; returns nil when nobody or two players match
  • The getting-started guide shows a complete /pay <player> <amount> command; the shipped modes use these functions for /hurt, /actor hostile, and /arena
v0.14.1

Preview

For Steam 1.5.6 Protocol 36

No public download

The healed body straightens

Bug fixes

  • Fixed a player who is healed after a bad hit staying hunched over on other players' screens; the wounded posture now follows the server's health, so a near-death player looks it to everyone
v0.14.0

Preview

For Steam 1.5.6 Protocol 36

No public download

Fights seen from the side, an actor's drops for everyone

Hired hand drops

When a hired hand dies, the weapon and shield they fought with drop as pickups that every player can pick up. They are gone for everyone once taken, rather than appearing separately on each screen.

Admin commands

  • Added /actor hostile [player] for admins: sets the demo character on the named player instead of yourself, handy for watching a side-view fight
  • Added /hurt [player] [amount] for admins: takes health off a player without a blow

Miscellaneous

  • Server owners: [actors] drop_weapons in server.toml (on by default) controls whether a dying hired hand's held weapon and shield fall as pickups

Bug fixes

  • Fixed an issue where a character watched fighting from the side turned towards you instead of facing their opponent
  • Fixed a fight you walk up to not showing as locked between the two fighters from the first moment
  • Fixed a healed player's body hunching on other screens after /heal
v0.13.0

Preview

For Steam 1.5.6 Protocol 35

No public download

The public server list and the scripting reference

Public server list

Every server now shows up on the KCD:MP server list by default. The launcher's Servers tab reads the public list to join or start a game.

  • Servers announce to the public list automatically; set url = "" under [master] in server.toml to keep one private

Miscellaneous

  • Server owners: [master] url names which server list to announce to; KCDMP_MASTER_URL and KCDMP_MASTER_ADDRESS environment variables override the file
  • For game modes and client scripts: the scripting reference is complete, with a page per callback and function (what it takes, returns, examples), and reference tables for items, souls, buffs, meshes, presets, stats, skills, animation clips, effects, sounds, decals, and doors and containers for each level
v0.12.0

Preview

For Steam 1.5.6 Protocol 35

No public download

Sounds from a game mode

Sounds

A game mode can play the game's own sounds at a point — a lightning strike, a bell, a voice — and everyone nearby hears them where they are.

  • For game modes: PlaySound(trigger, x, y, z [, seconds]) plays an audio trigger at a point for players within [effects] range; seconds is how long the sound source stays (10 by default)
  • Server owners: freeroam includes /sfx [trigger] (admin) to play a sound at your feet
v0.11.0

Preview

For Steam 1.5.6 Protocol 35

No public download

Effects from a game mode

Effects

A game mode can put the game's own particle effects in the world — smoke, fire, sparks — and everyone nearby sees them.

  • For game modes: SpawnEffect(name, x, y, z [, scale, dir]) plays a particle effect at a point; SpawnDecal(material, x, y, z [, size, seconds, normal]) puts a decal there
  • Both reach the players within [effects] range (150 m) and return how many got it
  • Server owners: freeroam includes /fx [effect] (admin) to put an effect two metres ahead
v0.10.0

Preview

For Steam 1.5.6 Protocol 34

No public download

Lighter traffic and wounded, guarding characters

Network

The server sends only what changed: a player who stands still costs nothing on the wire, a walking one about half of what they did. A full server uses far less bandwidth for the same picture.

NPC characters

Characters get hurt like players: a heavy blow injures the body part it hits, a cut bleeds, and a character can bleed out. The limp and the blood show on every screen. Characters block: an armed character raises its guard against your swing part of the time, and swings where your own guard is not.

  • For game modes: OnActorInjury(id, attacker, part) fires when a character is wounded
  • For game modes: GetActorInjuries, IsActorInjured, GetActorBleeding, and IsActorBleeding read the wounds; HealActor makes a character whole
  • Server owners: [actors] block_chance (0.5) sets how often a character raises its guard, block_hold (0.7) how long it keeps it up
  • Server owners: freeroam includes /actor heal to restore a character, and /actor lines list its wounds

Miscellaneous

  • Server owners: the status line shows snapshot traffic and how much delta encoding saves; KcdMp_net in the client's console shows the client's side
v0.9.0

Preview

For Steam 1.5.6 Protocol 33

No public download

Crossbows, guns, hired hands and a dog

Weapon sync

Crossbows and guns are synced: other players are shown reloading, aiming and firing. Ranged damage matches the single-player game — arrows, bolts and bullets do the same damage they would in the story game, with head shots counted as head shots. The archer's strength limits how far a bow is drawn, as in the game.

Player bodies

A healed player stands up straight on every screen, not only their own.

Dog

Spawn a dog with /dog that follows its owner. Everyone sees it.

Miscellaneous

  • The mod is called KCD:MP everywhere it shows its name
  • For game modes: CreateActor creates a named, dressed character; MoveActor walks it; OnActorArrive fires at the target
  • For game modes: SetActorAnim poses characters (sit, wave, bow, nod, pray, chop, sweep, smith)
  • For game modes: characters take hits and die via OnActorDamage and OnActorDeath
  • For game modes: characters fight back — a struck or hostile character (SetActorHostile) chases the player and swings; settings in [actors]
  • Server owners: freeroam includes /actor demo to show character capabilities
  • For game modes: CreateDog and GetPlayerDog to manage dogs; one dog per player

Bug fixes

  • Fixed melee damage measurement to read the body part hit from the game's own hit record
  • Fixed an issue where a crossbow's aim flashed empty before the bolt was fully loaded
v0.8.0

Preview

For Steam 1.5.6 Protocol 28

No public download

Bows, potions and a drink

Ranged combat

Bows are synced: arrows fly across the screen when shot. Ranged hits use the game's own damage — a half draw does less, and a bow too strong for the archer cannot be drawn. Other players are shown drawing, holding, aiming and releasing their bow.

Consumables

Potions and food are handled by the server: a healing potion heals over time, a bandage stops bleeding. Alcohol: a player who drinks gets drunk and is shown swaying and stumbling to everyone; the effect wears off with a hangover.

Weather

The server can set weather presets with /weather.

Chat

Alt+Up recalls the last lines you typed. While the chat box is open, the game ignores key presses.

Admin commands

  • Added /heal for admins: restore a player's health

Miscellaneous

  • Server owners: game modes can place objects in the world with CreateProp; commands /prop and /props manage them (static or physical)
  • Server owners: /reload reloads the game mode without restarting the server; [gamemode] watch reloads on save
  • For game modes: player buffs by name with GivePlayerBuff; state bags replicate to every client
  • For game modes: alcohol model via GetPlayerAlcohol, OnPlayerDrunk, and OnPlayerUseItem
  • Server owners: consumables are audited — using an item the server never saw the player receive is refused
  • For game modes: player levels for stats and skills via [spawn] stat_level, SetPlayerStat, and SetPlayerSkill

Bug fixes

  • Fixed an issue where other players collapsed unconscious at low health
  • Fixed an issue where a dead body did not lie still
  • Fixed the red low-health screen pulse appearing on other players
v0.7.0

Preview

For Steam 1.5.6 Protocol 19

No public download

A launcher window, doors and chests

Launcher

The launcher is now a window: browse servers, set up favourites and history, connect directly, choose your name, and adjust settings. After the game closes, the launcher returns with the exit report. A loading screen shows from the first frame until you spawn.

In-game menu

The Esc menu is the game's own, reduced to Resume, Settings, Help and Quit. Enter opens the chat, in addition to T. Name tags are hidden behind walls.

Doors and chests

Doors are synced: a door opened by one player is open for everyone and swings the same way on every screen. Chest contents are shared: what one player takes, the next player does not find.

Admin commands

  • Added /give <item> [count] for admins: give items by their English name
  • Added /item for admins: manage items
  • Added /tp <x> <y> <z> for admins: teleport
  • Added /goto <player> for admins: teleport to a player
  • Added /horse [breed] for admins: spawn or ride a horse
  • Added /horses for admins: list available horse breeds
  • Added /time <hour> for admins: set the world time
  • Added /rain for admins: control the weather
  • Added /kick <player> for admins: remove a player
  • Added /kickban <player> for admins: remove and ban a player
  • Added /unban <player> for admins: lift a ban

Miscellaneous

  • Added public commands: /help, /pos, /players, /items, /uptime
  • Added a starting torch for every player
  • Registered names spawn frozen in a private copy of the world until /login; guests play immediately
  • Server owners: admins are listed in [accounts]; a game mode can promote with SetPlayerAdmin
  • Server owners: built-in commands can be disabled or made public individually in [commands]
  • For game modes: virtual worlds to place players in separate map copies with SetPlayerVirtualWorld
  • For game modes: zones, on-screen text and HUD elements, name-tag colours, teams, bans, script-to-client events, and a server-wide key/value store
  • Added item and horse catalogues as tables for server owners
  • Server owners: item anti-cheat logs, kicks or bans players who conjure weapons, armour or ammunition via [audit]

Bug fixes

  • Fixed an issue where rejoining after a dropped connection got stuck behind the old session
  • Fixed an issue where a rider could ride off before other players see the mount
v0.6.0

Preview

For Steam 1.5.6 Protocol 13

No public download

Swords drawn

Melee combat

Players can lock on and fight each other with the game's own combat system.

  • Players can lock on and fight each other with the game's own combat system
  • Swings are shown on the attacker's body in the direction they were thrown; blocks are shown
  • Unarmed players fight with their fists
  • Walking up to another player no longer triggers combat mode; fights start with /fight <name> and end with /peace

Server-side health and damage

The server owns health, death and respawn. Damage uses the game's tables and accounts for the weapon, armour and body part.

  • Health, death and respawn are handled by the server; a killed player falls on every screen and respawns
  • Damage uses the game's own tables: attacker's weapon against victim's armour on the body part struck; head hits count more, limb hits less
  • Stamina is server-side: swings, sprints and jumps cost stamina; tired swings do less damage; stamina regenerates after a pause; the stamina bar shows the server's value
  • Injuries and bleeding: a hard hit injures the limb struck; a cut bleeds until it stops, is bandaged or healed; bleeding out counts as a death

Equipment sync

Other players wear what they actually wear. Items and weapons update within a second.

  • Other players wear what they actually wear; a changed hood, helmet or shield shows within a second
  • Drawing and sheathing weapons is animated on other players
  • Items dropped from the inventory appear on the ground for everyone

Duel mode

Two players at a time are placed face to face in an arena for a scored fight.

  • Added /duel: joins the queue; two players are placed face to face in the arena with a countdown, a fight to the death and a score

Movement sync

Other players move more smoothly with better animation and positioning.

  • Other players move more smoothly, with fewer stutters
  • Backward walking, crouching while moving and the combat stance are shown on other players
  • The scoreboard shows pings

Miscellaneous

  • For server owners: configure combat with [combat] in server.toml: player-versus-player on or off, damage scale, respawn timer, fight timeout, stamina costs
  • For game modes: OnPlayerDamage and OnPlayerDeath events; heal players, read and set health and stamina, read the weapon a hit was made with
  • Items can be referenced by name, id or GUID in scripts and chat commands
v0.5.0

Preview

For Steam 1.5.6 Protocol 3

No public download

Horses, weather and a scoreboard

Chat and HUD

In-game chat and information displays for coordinating with players.

  • Chat lines appear at the bottom left of the screen; press T to open the chat box
  • Press Tab to open the scoreboard showing every player's ping
  • Press F9 to open the debug window

World synchronization

Time, weather and items are synchronized across all players.

  • Time of day and rain are set by the server; all players see the same sky
  • Dropped items lie on the ground for everyone; picked-up items disappear for everyone

Horses

Spawn and ride horses. Other players see riders at various gaits.

  • Added /horse: spawns a horse and mounts it
  • Other players see the rider at a walk, trot, canter or gallop
  • Horses stay in the world when left; any player can take a loose horse

Animation sync

Additional animations are shown for other players.

  • Jumps, mounting, dismounting, rearing and falls are shown on other players
  • Drawn and sheathed weapons are shown on other players

Connection and accounts

Persistent accounts and automatic reconnection after disconnect.

  • A lost connection or server restart reconnects automatically at the same spot
  • The server remembers players by name: visits, play time and last position
  • Command /register <password> to claim a name; /login <password> to sign in next time

Server browser and launcher

Browse servers and test with multiple game clients.

  • Added a server browser, fed by a server list file and master lists that servers announce to
  • On a crash, a report file is written and the launcher displays it after the game closes
  • Two copies of the game can run on one PC in separate windows for testing

Miscellaneous

  • For server owners: /time and /rain commands in freeroam mode; configure with [world] settings in server.toml
  • For game modes: GetSavedPlayer, GetSavedData and SetSavedData for per-player saved values
  • Added movement checks: impossible speeds are refused and the player is pulled back
  • With a terrain map of the level (exported from the game), players cannot move below or above the ground
v0.4.0

Preview

For Steam 1.5.6 Protocol 2

No public download

Other players, in the flesh

Player bodies

Other players are rendered as full game characters with realistic movement and appearance.

  • Added full character bodies for other players: clothing, weapons and face
  • Faces are server-assigned, so a name keeps the same face between visits
  • Movement uses the game's own animations: walking, running, sprinting, crouching and sidestepping at the player's real speed
  • Name tags appear above every player's head
v0.3.0

Preview

For Steam 1.5.6 Protocol 1

No public download

Two players, one world

Joining a server

Join a server by address. The server tells you which level it runs, and you spawn on that level.

  • Added joining by server address: the launcher asks the server for its level and starts the game there
  • The server keeps the player list and sends each player the others' positions 30 times per second
  • Other players are shown as a character that follows their movement
  • Added chat between players

Performance

The mod scales smoothly from a few players to many.

  • Only players within about 200 m are sent to each client
  • Tested with 100 simulated players at once

Miscellaneous

  • All server settings in one file: server.toml with server name, level, player limit, password, spawn point and outfit
  • Server rules are written as a Lua script: OnPlayerConnect, SendClientMessage, SetPlayerPos, timers, per-player data; the freeroam mode is the default
  • Game modes can also be written as a C# plugin
  • Test bots: simulated players that join, walk and chat
v0.2.0

Preview

For Steam 1.5.6 Protocol 0

No public download

An empty Bohemia

Level loading

Loads a level directly without the main menu or story, with the single-player population removed.

  • Added level loading: the monastery, Trosecko or Kutná Hora load directly, in about 20 seconds
  • Single-player villagers, guards and animals are removed; the world is empty and ready for players
  • Players spawn at the point and with the outfit the server sets

Multiplayer rules

Multiplayer servers enforce consistent rules: no saving, no fast travel, no pausing, and no achievements.

  • Saving and loading are disabled
  • Fast travel is disabled
  • The game never pauses: menus and inventory keep the world running
  • Achievements and tutorial pop-ups are disabled
  • Steam must be running for the game's licence check

Miscellaneous

  • The overlay captures the keyboard while open; the game's log is shown inside it
  • A crash log is written when the game crashes
v0.1.0

Preview

For Steam 1.5.6 Protocol 0

No public download

First contact

Launcher

Starts Kingdom Come: Deliverance II with the mod loaded. Checks your game version and refuses to run on unsupported builds.

  • Added the launcher: starts the game with the mod, no game files modified
  • Refuses to run on unsupported game versions

Overlay

An overlay drawn over the game displays frame rate and gives access to console commands through a log window.

  • Added an overlay with a frame counter; press F9 to open the log window
  • Can run the game's own script and console commands from inside the game

Dedicated server

A Linux dedicated server running at 30 ticks per second.

  • Added a dedicated server for Linux; players cannot join it yet