Skip to content

Releases

KCDS 1.0.7

Choose a tag to compare

@github-actions github-actions released this 14 Nov 01:01
4bc6c23

KCDS 1.0.7.

KCDS 1.0.7

The Kingdom Come: Deliverance map arrives: Rataje, built on your PC from your own copy of KCD1.
GOG copies get their own licence check, Epic copies start through the Epic launcher, and the
client knows the Microsoft Store / Xbox app build of the game. Servers can see which KCD2 DLCs a
player owns and move the KCDS watermark to another corner.

Servers and players both need 1.0.7: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.7.

Kingdom Come: Deliverance map

  • Rataje as a KCDS level (kcd1_rataje). Nothing of KCD1 ships with KCDS: the first time the
    map loads, your game builds it from your own install of Kingdom Come: Deliverance.
  • The world: KCD1's terrain, buildings, vegetation, roads, water, lights and fires, and its
    navigation mesh.
  • KCD1's doors, chests, beds, ladders and chairs work like KCD2's: doors open and lock, chests open
    and sync, beds give Sleep and save, ladders climb. KCD2's dice tables stand at KCD1's.
  • KCD1's people walk their day as KCD2 NPCs, dressed for their work.
  • The inventory, the character sheet and the shops open, and players wear their underwear.
  • M shows KCD1's own world map, with the names of its towns and villages.
  • Only for owners: a server that starts on this map admits only players who own Kingdom Come:
    Deliverance on Steam. On a server with it among other maps, Player.setMap sends only owners
    there.
  • Still in progress: lighting inside buildings, and townspeople who stop on their walks or don't
    fight back.

Game stores

  • Microsoft Store / Xbox app: the client now finds its way around that build of KCD2 and can
    prove such a copy with the player's Xbox licence. The launcher can't start a Store copy with
    KCDS yet, and now says so clearly; before, the game started without KCDS.
  • GOG: a GOG copy sends a report of its install (file hashes and signer, no personal files) as
    its proof, and the KCDS Master checks that it is an original, unmodified copy.
  • Epic: the launcher starts an Epic copy through the Epic launcher, so the game is signed in to
    Epic and its licence can be checked.
  • A game that closes right after its start is reported instead of counted as started.
  • The loading screen no longer covers the game's menu for three minutes on a game build whose menu
    KCDS cannot hook.

Server owners

  • Player.entitlements and Player.hasEntitlement('kcd2_dlc:<name>'): the KCD2 DLCs a
    player owns, from their licence (Steam lists them), read-only. They are on the playerConnecting
    request too.
  • The Sedlec monastery (klaster) is only for owners of the Mysteria Ecclesiae DLC: a server
    that starts there admits only them, and Player.setMap('klaster') returns false for anyone else.
  • Watermark.setCorner(corner) and player.setWatermarkCorner(corner) move the KCDS
    watermark to 'bottomLeft' (the default), 'bottomRight', 'topRight' or 'topLeft'. It can't
    be turned off. The voice chat indicator always sits on the side of the watermark toward the middle
    of the screen.
  • Players online on the website count unlisted servers too: a server that is not in the server
    browser tells the KCDS Master its player count once a minute. The report holds a random id for
    the run, the count and the version, nothing else, and the server stays unlisted. A server bound
    to a loopback address sends nothing.
  • Player.equip puts a torch in its own slot.
  • Big servers: less work per player. Bursts of players joining or leaving, snapshot workers fitted
    to the CPUs the server may use, fewer system calls per snapshot, and /metrics shows what the
    server sends by channel and message type.

Dice

  • In a game against another player, your camera shows their dice on their turn, the way the game
    does against an NPC. Both players stay on their own stools.

Other

  • The first start after an update no longer stays on the loading screen when it joins a server
    straight from the launcher: the world waits until KCDS has finished setting up the game.
  • NoClip: a body flight doesn't start on horseback, and it ends when the player mounts.
  • Pointing is on V in KCDS's key bindings; B draws the weapon again.
  • The character creator's Random button takes its picks from WebCrypto's generator.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.6

Choose a tag to compare

@github-actions github-actions released this 12 Nov 11:45
079bd8e

KCDS 1.0.6.

KCDS 1.0.6

Typing into a web page in the game no longer lags, players stop downloading a server's scripts
again after every restart, and Discord shows the KCDS activity even with a clip recorder running.

Servers and players both need 1.0.6: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.6.

Web pages

  • Typing without lag: a page's keys and clicks are read on a thread of their own while the page
    has the keyboard, so a login form or a chat box takes each key at once (about 15 ms), even while
    the world loads. Before, a few keys showed, then nothing for a second or two, then the rest at
    once. Text selection by dragging, double clicks, dead keys and AltGr work as before; Alt+F4,
    Alt+Tab and the Windows keys stay with Windows.
  • Screens in the world keep their own pointer, their address bar's keys and Escape to give the
    mouse back.

Server owners

  • Scripts stay cached across restarts: an unchanged resource file keeps its sealed hash when the
    server or the resource restarts, so players' download caches answer it and only changed files
    download again. The server keeps its seal key in the resources folder, resource-seal.key (made
    on the first start); when it cannot be read or written, the run seals with a key of its own, as
    before, and says so in the log.

Discord

  • The KCDS activity is set again every 30 seconds, so it stays the one Discord shows when another
    program (such as a clip recorder) sets an activity for the game too.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.5

Choose a tag to compare

@github-actions github-actions released this 11 Nov 23:19
27f6284

KCDS 1.0.5.

KCDS 1.0.5

New netcode built for crowds: a server keeps up with hundreds of players in one place, sends what is
near more often than what is far, and checks movement and melee reach by itself. Other players no
longer spin, scripts can put web pages on screens in the world, and KCDS gets its own page in the
game's settings.

Servers and players both need 1.0.5: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.5.

Netcode

  • Crowds: players near you are updated more often than players far away, motion travels in
    fewer bytes, and a busy tick gives the snapshots what time it has left. Large gatherings stay
    smooth for everyone.
  • Combat: each attack is sent once for everyone who sees it, not once per viewer.
  • Corrections: a short correction of your position glides in instead of jumping.
  • Checks: the server checks movement and melee reach and puts back a player who moves or hits
    farther than possible (a single hitch is only logged). Set KCDS_SERVER_MOVEMENT_CHECK or
    KCDS_SERVER_MELEE_REACH_CHECK to observe or off to only log or turn a check off.
  • Game updates: a client whose game build lacks combat or riding starts with that part off and
    says so, instead of not starting. Scripts read it from Player.clientNatives.

Other players

  • No more spinning: another player who turned no longer spun or swung back and forth, and no
    longer started a run sideways.
  • Standing and walking players keep their place between updates, and a crowd walks at an even pace.
  • Crowds keep their clothing colours (past about 200 dressed people, new ones were drawn in white).

Player women

  • The inventory shows a woman with a weapon worn (only the weapons were drawn).
  • Switching between a man and a woman keeps the sword, bow and quiver on the body (they stayed on
    the ground).
  • In first person her view stays level while she opens a door (it rolled and tilted).

Camera and keys

  • F5 steps through three third-person distances before going back to first person.
  • B (pointing) no longer draws the weapon.
  • Key bindings: a KCDS group holds push to talk, whisper/normal/shout, Point and Third person
    view, all of them free to change.

Settings

  • KCDS page in the game's settings, with its own title and headings: voice chat and the
    browser's volume, in one place.

Animations

  • An animation a script plays that has no clip for that body (a fragment with tags that match none)
    is refused at once: the body no longer stands with its arms spread until the script stops it.

Web pages

  • Screens in the world: a script puts a page on a screen in the world, in perspective or drawn
    into a screen model's texture, with its own pointer. Web.nearestWorldScreen finds the screen
    to focus, and Escape gives the mouse back. An address bar above the page shows any site.
  • Sound: pages play at the player's Browser volume, and the server sets each player's share with
    Player.webVolume and Player.webMuted.
  • Item icons: any page can show an item's inventory icon from kcds://icons/item/<name or GUID>.

World

  • Snow: the far forest is white too, and the grass comes back everywhere when the snow goes
    (places reached while it snowed stayed bare).
  • Doors: NPCs walk around a door a script keeps locked instead of waiting at it.
  • Dogs: the level's dogs run the game's own brain with levelPeople, and dogs walk a round.
  • The world's pace holds while a player is in the inventory or another game screen.
  • Fixed crashes: a dialogue with a person who has no stand-in, and another player leaving the server.

World Architect

  • Story states: the game's maps keep every state the campaign puts a place in (Nebákov's yard
    before and after the siege, a forge broken and rebuilt) as layers. The new Story tab lists the
    states of the places around the camera and switches each one on or off, so a map can mix them:
    one fortress before its siege, the village beside it after. The choice is kept with the work, in
    saves and in Export for server, so every player on the server sees the places that way.
  • Servers switch a story layer for all players of a dimension with
    LevelEdit.apply({ kind: 'layer', name, hidden }); players who join later get it too.
  • MCP: story_layers, set_story_state and set_story_layer.
  • To ground fits a thing's whole footprint on a slope (no corner floats), and the MCP has
    to_ground.

For scripts

  • Hud.setXpNotices: the game's own level and XP notices are off on KCDS until a script turns them
    on.
  • Npc.playVoice plays a voice line from an NPC's body; Npc.nameShown leaves its name out of the
    HUD's corner.
  • World.snapToGround(null, position): any ready player answers, and answers are kept.
  • Door.lock: the lock kind of any door (bolt, key, both or none).
  • Inventory.beforeCommit transactions keep a unique id and settle with
    playerInventoryTransaction.
  • Items.info names a registered item type; the Player screen's list takes settings of its own.
  • Runtime.apiVersion and serverVersion carry the KCDS version on both sides.

Server owners

  • Monitoring: GET /metrics gives Prometheus numbers (tick time, players, refused checks), and
    dynamic.json carries the server's health (tick time, missed ticks, CPU). A Grafana dashboard
    comes with the Docker files.
  • Favourites by address: players keep a private server as a favourite by its address; the game
    port answers its public card.
  • Resource files: many small files download at once, and icon checks no longer walk the resource's
    files each time.
  • The licence check reads the network interfaces once per 30 seconds, not on every join.
  • Proof of origin: gh attestation verify <file> --repo KCD-Synced/KCDS.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.4

Choose a tag to compare

@github-actions github-actions released this 10 Nov 20:58
25b2ac3

KCDS 1.0.4.

KCDS 1.0.4

Women look and move right: a player woman holds, draws and aims a bow as a man does, wears her
sword in its scabbard and keeps her wrists straight. Weapons a server gives are ready to use at
once, other players' torches stay in their hands, and scripts get the inventory's stat rows, their
own pictures in the game's screens, buffs and alchemy recipes in the player's book.

Servers and players both need 1.0.4: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.4.

Player women

  • Bow: she draws, holds and aims a bow as a man does, her fingers on the grip and the string,
    the arrow at her cheek.
  • Look and aim: her head, eyes and arms follow where she looks and aims.
  • Sword: her sword sits in its scabbard at her hip.
  • Wrists: her wrists no longer twist where the hand starts, in any pose.

Other players

  • Torches and weapons on the body stay in the hand and on the belt of a walking or turning
    player (they trailed behind and jumped).
  • Ladders: another player climbing over the top of a ladder no longer crouches through the wall
    and stands up a second early.
  • Beds: you stay lying in a bed until you choose Get up (you stood up after two seconds).

Snow

  • No snowflakes fall over the inventory, the map and the game's other screens.
  • The ground under a shed stays bare while you look at it from outside, not only once you step in.

Equipment

  • Weapons a server gives are ready: a bow equipped by the server draws with an arrow, charges and
    shoots, and can be put away, without equipping it again by hand.
  • Player.equip puts a weapon into the selected weapon set and arrows or bolts into the set of the
    bow, as the game's own Equip does.

For scripts

  • Character stats: Hud.setCharacterStats hides stats on the inventory's character panel and the
    Player screen's list, or shows your own label and number in their place.
  • Pictures in the game's screens: NativeElement.load(clip, picture) puts a picture your resource
    ships into a clip of a game screen, such as a stat row's icon.
  • Screens: nativeScreenOpened and nativeScreenClosed name the screen (the inventory's panels,
    the map, the journal and more) the frame the game shows or hides it.
  • Custom buffs: image gives a buff its own picture in the status list, and a buff's name shows
    as written (it showed "@" before each word).
  • Alchemy recipes in the book: a resource's own recipe perk and perk_recipe row put its alchemy
    recipe in the player's recipe book once they learn it (learnRecipe, grantKnowledge).
  • loadProgression(..., { exact: true }) puts perks and levels back without the game's notices.
  • Appearances: the body catalog no longer offers bodies that leave out part of the person.

Server owners

  • "master": true in server.json lists the server in the in-game server browser, and false (the
    default) keeps it private. The older "on" and "off" still work. A server updating from 1.0.2 or
    older needs it to stay listed.
  • In Docker, limit the container's log with Docker's log options when you recreate it for the update
    (see the docs, Containers).
  • Proof of origin: every download and the server image carry GitHub's build provenance, proving
    the public repository's release workflow built them:
    gh attestation verify <file> --repo KCD-Synced/KCDS.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.3

Choose a tag to compare

@github-actions github-actions released this 09 Nov 23:33
8da3f29

KCDS 1.0.3.

KCDS 1.0.3

A redesigned main menu, voice chat keys in the game's own key bindings, logs that never fill the
disk, a large set of new script functions for fights, knock-outs, inventories and NPCs, and many
fixes asked for by server owners and players.

Servers and players both need 1.0.3: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.3.

Server owners: a server is no longer listed in the in-game server browser unless "master": "on"
is in its server.json (or KCDS_MASTER_URL is set). Add it before updating if your server must stay
listed; players can always join by address or a kcds:// link.

Main menu

  • Redesigned server browser bar: World Architect and the Anim/Assets Studio are named buttons in
    the top bar, with Join Discord; the bottom bar shows the chosen server (its art, name, players and
    ping), the direct connect and one Connect button.
  • Joining by address (typed, or a kcds://join/ link) of a listed server shows its card while
    connecting, as a join from the list does.
  • Tools: the menus of World Architect and the Studio take clicks again after another tool's
    Leave (before, often only the camera moved); a double click on a tool's button no longer opens it
    again after its Leave.

Voice chat

  • Your own keys: Settings > Key bindings has a Voice chat group, Talk (push to talk) and Whisper,
    normal or shout. The keys you choose are the same on every server. Saving no longer reports a
    conflict with the game's own keys.
  • The voice indicator's bars follow your voice and lie flat while you are silent.

Logs

  • A game's log holds at most 32 MB (then it continues in a new part) and the logs folder keeps the
    20 newest files, 256 MB at most.
  • The Linux server writes logs/server.log beside start-server.sh, at most 20 MB per file and 5
    files (KCDS_LOG_FILE, KCDS_LOG_MAX_MB, KCDS_LOG_FILES; off for none). In Docker the
    container's output stays the log: limit it with Docker's log options (see the docs).

Fixes

  • Walking into a person no longer costs stamina, then health.
  • Lock picking: a door that was picked open stays open (it could be picked again and again).
  • Women: a worn bow, quiver, sword and held torch sit where they sit on a man.
  • Blip labels show as plain text (no "@"), and a long action hint is no longer cut.
  • Players stuck at Syncing resources: a big client file that was only touched on the server (a
    git pull or a copy) is served again; a real change names the resource to restart.
  • Chat lag with many web pages open: the pages of one server share one browser process.
  • NPCs no longer slide without their walking animation on the second map or without the
    level's people.
  • Snow: no flakes inside buildings, and no bare yard beside a roof.
  • Dead animals give the game's own yields until a server sets its own harvest table.
  • World Architect AI: a prop put on the ground stands on its foot.

Scripting

  • Fights and harm: Player.startFight(opponent) with fight start and end events;
    Player.knockOut({ health, keepEffects }) and numbered knock-out episodes; the events
    playerHarm (harm that is not another player's blow, refusable) and npcHit (a hit on an NPC,
    decided before it loses health); player.canReach(target, range) checks a target a client chose.
  • Inventories: Inventory.beforeCommit(handler) makes players' own actions (pickup, drop, use,
    shops, trade, containers, loot, horse gear) wait for the resources' verdict; the game's changes
    reach the server in answered batches.
  • NPCs: Npc.useObject(object, { place, side }) lets an NPC sit, lie or work on placed smart
    objects and the level's own seats, beds and work places, with the game's own animations;
    SmartObject.levelPlaces(position, radius); hens as script animals (Npc.create({ class: 'Hen' })).
  • ActionMenu: two to six actions on one key, as one line of the game's hint, picked with the
    mouse wheel.
  • Terrain: Terrain.hideGrass(center, radius), Terrain.blockNavmesh(min, max) (World Architect's
    buildings now close the navmesh under them), and Terrain.paint uses a game level's own materials.
  • Stash.levelChests() rows carry the level entity's own name (sourceName).

World Architect

  • To ground (G); a Shift group moves, turns and is deleted together; a Select drag picks a group in a
    box; Ctrl+C keeps a copy that Ctrl+V puts down on another map; Decals (the game's 239 ground
    decals); Tab hides the side panels for the whole world view.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.2.1

Choose a tag to compare

@github-actions github-actions released this 08 Nov 21:55
855ce10

KCDS 1.0.2.1.

KCDS 1.0.2.1 (hotfix)

Fixes

  • The game no longer stops with a GPU error (D3D12 Device Removed, GPU timeout) in the main
    menu on some new graphics cards (RTX 5080). The chat overlay draws on the game's own frame
    queue again, as it did in 1.0.1.1.
  • Crash reports are always on in a release. Installs whose launcher settings had them switched
    off sent nothing: the settings file is kept across updates, so it stayed off. The launcher
    and the game now report crashes in every case, and a release cannot be built without it.

Releases

  • A hotfix keeps the previous release's network label in the client too, so 1.0.2.1 players
    join 1.0.2 servers.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.2

Choose a tag to compare

@github-actions github-actions released this 08 Nov 19:27
87db2b5

KCDS 1.0.2.

KCDS 1.0.2

Snow, two maps on one server, a new server browser, a lobby before the world, lead ropes between
players, server-side sounds, many fixes asked for by server owners, and a fix for games that died
with a lost graphics device while starting.

Servers and players both need 1.0.2: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.2. One script
change: Player.equip now returns { ok, code, ... } instead of true or false (see below).

Fixes

  • Games that died while starting, with "D3D12 Device Removed" in the game's log or "Nvidia
    Aftermath caught a GPU crash" (RTX and Radeon cards alike): the client's start-up check of the
    graphics hooks borrowed the game's own graphics device while the game was still starting. It
    now uses a device of its own, and the chat overlay draws on the queue that shows the frame.
    Crash reports also carry the graphics card's crash dump when there is one.
  • Asset/Animation Studio after World Architect: opening the Studio after World Architect left
    its panels dead (only the camera moved). Fixed.
  • NPCs at doors: a villager no longer stops in front of a door and stands there when a player
    is near it, and a door a script locked now holds for the level's NPCs too.
  • playAnimation: a one-shot animation that plays to its end frees the player; before, a
    movement lock stayed until the script stopped the animation.
  • Client scripts no longer stall when they read the game's screens (NativeUI.element) while
    the game is still loading them.
  • Door.find takes a door's GUID in either order, the one World.raycast gives and the one the
    server shows.
  • Level people: a woman of the level gets a woman's body (her name matched her look before
    only for men).
  • Action hints: a hint on X takes the key press even where the game uses X for the horse
    whistle.
  • A server's loading page stays over the server browser when a player joins again from the menu,
    and the browser fits a small or nearly square game window.

Snow

  • World.setSnow({ amount, frost, freezing, flakes }): a server lets it snow in every player's
    game. Snow lies on the ground, roofs, rocks and trees (not on people) and buries the grass;
    flakes fall around each player. There is no snow under the roof over your head, and none on the
    ground under a roof. World.snow reads it back, and {} melts it. The cover costs no frame time
    of its own; flakes do (about a tenth of the frame rate for 1000 flakes), as the docs say.

Servers

  • Two maps at once: maps in server.json runs Trosky and Kuttenberg together, and the game's
    own travel between them works. World.maps, Player.map, Player.setMap(map, position), the
    events playerTravelling and playerMapChanged. A server without maps runs one map as before.
  • Lobby: Player.setLobby(true) holds a player out of the world while they log in or make a
    character: nobody sees or hears them, they hear nothing of the world, they are out of voice chat
    and the server's loading page stays up. Player.inLobby, playerLobbyChanged.
  • Server browser info: description, tags (from a fixed list) and website in server.json
    show in the new browser.
  • Lead ropes: Player.setLeadRope(target, { from, to, length }) ties a rope from a player's hand
    to another player or an NPC, drawn smoothly by every client, late joiners included.
    horse.follow(target, { rope: { at: 'neck' } }) ties a horse's rope where the script says.
  • Sounds from the server: Audio.playAt(trigger, position, { range, dimension }),
    Audio.playFrom(trigger, entity) and Audio.list(prefix).
  • Equip: Player.equip(item) and Horse.equip(item) put one piece on, a plain item or one with
    its own metadata. Player.equip returns { ok, code, revision, items } like Inventory.add,
    and a piece that cannot go on says why in conflicts. For example, a helmet needs a mail coif
    under it: { rule: 'needsFilled', slot: 'head_helmet', needs: 'head_coif_padded' }.
    Inventory.set names its conflicts the same way.
  • Character creator for a server's own editor: CharacterCreator.open({ panel: false }),
    preview, look, frame, accept, cancel and characterCreatorChanged.
  • Crafting.addStation takes mode: 'press' | 'hold' and holdDuration.
  • World.SHARED_DIMENSION, the dimension everyone starts in (4294967295).
  • Markers go down to 0.05 m.
  • Server TypeScript projects get the types of fetch and WebSocket with "DOM" in their lib.

Client scripts

  • nativeScreenOpened / nativeScreenClosed and NativeUI.openScreens() for the game's own
    screens (inventory, map, journal and the rest), not only the Esc menu.
  • LocalPlayer.knockedOut and the events localPlayerKnockedOut / localPlayerRevived.
  • Hud.rect('vitals'): where the game's health and stamina frame is on the screen.
  • Web views paint at the display's refresh rate (up to 240 a second), so typing and clicking in a
    server's page shows sooner.

Server browser

  • Rebuilt: lists (All, Favourites, Recent, Localhost), filters (has players, not full, ping under
    60 ms), tags, search, and rows that open for a server's picture, description, address, version
    and website. Each listed server's ping is measured and shown.

World Architect

  • Copy several things at once: Shift with Select builds a group, Ctrl+C copies it and Ctrl+V
    puts it down where you point, a whole castle included.
  • Panels resize by dragging their edges, and the dock folds to its tabs.
  • The angle snap goes down to 1 degree and off.
  • Grass works when the editor starts from the main menu (clear nature, ground changes, add nature).
  • The editor name button shows that it opens the Saves tab.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.1.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 19:17

KCDS 1.0.1.1.

KCDS 1.0.1.1 (hotfix)

Fixes

  • Carts and wagons drive again: the driver's movement keys (W, A, S, D, sprint) move the cart.
    The driver's seat pose locked movement, and that lock kept the keys from the cart.
  • Custom items on horses: a renamed saddle (or any horse gear) with its own name, description
    and quality keeps them on the horse, shows its own name in the horse's inventory screen, and
    comes back whole when taken off. Before, the horse showed the game's original item and a
    custom piece taken off came back as the plain game item.
  • A released game is never in the test kit's background mode, whatever the environment holds.

World Architect and the AI (MCP)

  • A room's review waits for the eye to adapt to the room's light before its pictures: good
    rooms were called too dark.
  • No more "walls look plain" warnings on the game's own dim rooms: the wall checks use the
    eye-level views only, and even areas are judged in lit pictures only.

Asset/Animation Studio

  • Each press on the Studio's panels goes to the client log, so a report of clicks that do
    nothing can be traced.

Releases

  • A hotfix goes out without the VirusTotal scan (the slow step after the build).

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.1

Choose a tag to compare

@github-actions github-actions released this 07 Nov 17:10

KCDS 1.0.1.

World Architect no longer freezes when you open it, the Asset/Animation Studio opens for every
player, walk-in copies of the game's closed buildings,
furniture arranging, a logs button in the main menu and the server browser's settings gear.

Servers and players both need 1.0.1: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.1. Scripts
written for 1.0.0 run as they are.

  • World Architect and the Asset editor no longer freeze after you open them from the main menu.
    With a player's own display settings, the first content picture stopped the game: the cursor
    still moved, but nothing answered and the tiles said "Loading..." for good. The pictures are now
    taken without waiting on the graphics card inside the frame.

  • Anim / Assets opens for everyone: on a player's game the Asset/Animation Studio's empty level
    was missing, so the game showed a "kcds_studio" error and stayed on the loading screen. The
    level is now made from your own game files when the Studio opens.

  • Crash reports carry the end of the game's own kcd.log too: the graphics card, its driver and
    what the game wrote about a lost graphics device, which a call stack does not show.

  • A folder button next to the gear opens %LOCALAPPDATA%\KCDS\logs, where the client's and the
    launcher's logs now are together, ready to attach to a ticket. The 20 newest client logs are
    kept.

  • The gear opens the game's own settings over the main menu.

  • Direct connect takes a host or an IP without a port and joins port 7777.

  • Faster content pictures: about a quarter faster each, and the next two pages are taken while
    you are idle, so turning a page shows its pictures at once.

  • Smoother moves: a building you drag is shown as a see-through preview and built once where
    you let go, instead of being rebuilt 20 times a second.

  • Interiors:

    • Details of a level building lists its rooms and doors, and Go inside puts the camera in a
      room.
    • Open it turns a building the game keeps closed into your own walk-in copy where it stands,
      as one Undo step: no filling boxes, a plank floor you can stand on, ceilings, a Room light and
      firelight-coloured lanterns, the ground under it levelled.
    • Room lights (Effects > Lights) light a room the way the game lights its own.
  • Arranging: copies of a prop in a row or a block, or chairs around a table (Details >
    Arrange). Content has tags and kinds of room, and the search box finds by them.

  • Materials: Props > Yours makes stone, brick, plaster, planks, tiles, cobbles and roof tiles as
    textures of your own, and Details > Slots draws one material slot of a prop with another.

  • Validation names props that float, sink or hang from nothing, lamps without a light and lights
    on the floor. With Surface on, a prop pressed on a ceiling hangs from it and one pressed on a wall
    stands against it.

  • Reset map (Saves tab) starts the map again from the game's own and keeps your work as a save.

  • The AI assistant (MCP) can do all of the above: buildings_near, open_building, interiors_near,
    enter_interior, arrange, make_texture, slots and set_slot, reset_map, and catalogue tags.

  • Render.view takes ui: false for a picture without the resources' screens.

  • A client light takes ambient: true: a room light that sets the ambient light within its radius.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.

KCDS 1.0.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 21:00

KCDS 1.0.0.

Voice chat that knows when you are indoors, smoother horses on a lead rope, other players' bodies
that keep up with them, a sturdier connection, and a TypeScript tab beside every example in the
docs.

Servers and players both need 1.0.0: a client and a server of different versions refuse each other
when joining. The launcher updates itself on the next start; servers update from their update
channel, the new packages or the Docker image ghcr.io/kcd-synced/kcds-server:1.0.0. Scripts
written for 0.4.3 run as they are.

Voice chat

  • Indoors is indoors: voice inside a house sounds like a room again. The game's own knowledge of
    whether you are in a building now decides it, so the houses of Kuttenberg no longer sound like
    the open street.
  • The voice state reaches scripts: kcds.ui.LocalVoice and the localVoiceTransmitting event now
    follow your microphone, range and talking.

Horses

  • A horse led on a lead rope keeps up with a walking player instead of walking a metre and
    stopping: it aims where you will be a moment later, and jogs or runs after you when you move
    faster.
  • The lead rope is tied where the horse's reins start, at the bit.

Other players

  • Another player's body that got stuck at a doorway or the foot of the stairs while they walked on
    is put where they really are, also a floor up or down.

Connection

  • A passing network error no longer ends your connection: the game drops that one packet and goes
    on, where before the session and every later join lost the server until the game restarted.

Docs

  • Every example in the docs is shown in JavaScript, TypeScript, Lua and C#. The TypeScript tab
    is checked as a strict TypeScript project checks it.
  • Instructions for AI assistants that write KCDS resources: CLAUDE.md and CODEX.md, linked from
    the docs.

Downloads (public):

Unpack the Client zip anywhere and follow its README.txt.