KCDS 0.3.2 (work in progress)

Milestone 0.3.2: running a server. Every KCDS server now has a web admin, packages for Windows and Linux, a password, a status API and join links. This release also adds a large set of SDK additions and completes the public documentation.

This is a work-in-progress release: a few parts of the milestone are not in it and follow in 0.3.3 (listed at the end), and some parts are still being checked; those issues stay open until then.

Servers need the 0.3.2 server as well. The launcher updates itself to 0.3.2 on the next start.

Hosting a server

  • Server packages for Windows and Linux, and a Docker image (#115): a server.json, start scripts that restart the server on a planned restart, and the image's settings from environment variables or a mounted server.json.
  • Settings from the command line, the environment or server.json (#109), in that order. Each setting has a documented default. Unknown keys and wrong types are reported.
  • A web admin on every server (#116): status, players (message, teleport, kick, ban), the server's own bans, the live console, resources, server.json, backups, crash reports, one-click updates, planned and daily restarts, and moderator accounts, in the KCDS design and on a phone too. Settings has "Where the server listens": the game's, the admin's and the status API's ports and interfaces. A wrong sign-in tells how many tries are left. All of it is also a JSON API you can script.
  • A password (#110): KCDS_SERVER_PASSWORD. The game sends only a one-time proof, never the password, and the server browser asks for it.
  • A status API (#111): info.json and players.json for websites and scoreboards.
  • Private servers and join links (#112): kcds://join/<address> and kcds://server/<id> open KCDS and join the server.
  • Faster joins (#113): the game keeps the resource files it already downloaded (checked by SHA-256) and asks the server only for what changed.
  • The world is checked (#117): a server with an unknown level stops with a clear message. A player without the DLC a server's level needs is told so before anything loads.
  • A legal copy on every server, localhost included (#445). The player's Steam account is verified for the SDK (player.steamId).
  • Only KCDS's own mod runs (#461): other game mods, from the Mods folder or the Steam Workshop, stay off while playing KCDS. No game file is changed.

Playing

  • A KCDS loading screen (#485): the first load to the main menu shows KCDS's own animated screen (the KCDS mark with its turning ring, the name and a gold streak) instead of a black window, sized for every screen from 720p to ultrawide.

Fixes

  • Combat: a kill on the attacker's screen is a kill for everyone (#448). Fist fights can be parried (#449). The other player's mouth no longer starts talking after a few punches (#483).
  • Hunger and tiredness are off by default (#486): players no longer get hungry or tired, and Henry no longer says he is hungry, unless the server turns the needs on (Needs.setEnabled(true)).
  • A crash after leaving to the main menu and joining again is fixed (#450).
  • Nameplates no longer slide along the screen edge when the player's head is off screen, stay still over a player who stands still, and are smaller far away (#447).
  • The main menu no longer shows the game's "Deep Silver Account servers are not available" line (#451).
  • Dice: after a match the players stand up from their own seats (#452), their legs no longer glitch (#453), and players in a match cannot be attacked (#454).
  • Items in the world: an item one player picked up is gone for everyone, and a server can switch off the level's shop and armoury items (#455).
  • Props held in animations (the shovel, the lockpick and others) are seen by every player (#477, #462).
  • Alchemy as others see it: the recipe book (#456), the ingredients and tools without lag (#457), the held prop in the hand (#458), the bellows (#459), and the mortar's ground contents and the pouring (#460).
  • Smithing: the forge stick stays in the hand when Q is released (#463). Smithing and alchemy sounds are heard only near the station, not across the whole map (#446).
  • Horses: the bridle and reins show on a ridden horse, and riding is smoother (#475).
  • NPCs: the use key on a server NPC raises npcInteract (#478).
  • Resources: a resource's default client folder no longer sends hidden files (.env) or node_modules to players.

SDK

  • Players: player.ip (#464), player.ping, player.emit, player.horse and player.mounted. On the client, the nameplate the server set: isNameplateVisible(), getNameplateText(), getNameplateColor() and more.
  • Server scripts: global, process and setImmediate in the resource sandbox (#465).
  • Client camera (#466): the camera pose, a screen ray, raycasts and entities in a radius. Camera.startShot, endShot and inShot on the client (#471).
  • NPCs (#467): Npc.roles(), a soul by role, NPC nameplate text, npc.pin() and npcAnimationEnd.
  • Areas: the level's own areas in Area.all('level') and Area.getAt (#468).
  • Horses (#469): gear (setTack, fitGear, takeOffGear, gearList, gearSets, gearFixed), Horse.breeds and player.mount(horse).
  • Props on the client (#470): PropGhost and PropPlacer.
  • Web views: the webViewFailed event (#472).
  • Gates: Gate.toggle and openness (#473).
  • World: World.level.
  • Render: Render.view, pictures from any camera (the character export of #276 follows in 0.3.3).
  • TypeScript declarations with every release (#474): server-api.d.ts, client-api.d.ts and shared.d.ts.

Documentation

The public docs were checked and completed (#481):

  • Every SDK member has a description and an example, and every example is type-checked against the TypeScript declarations.
  • New guides: your first resource, debugging, project structure, TypeScript, the playground, containers, how players connect (with every refusal text), join queue and whitelist, animations, nameplates, sounds and game files, Discord, and following.
  • Every event is on the events page.
  • The status API and the web admin API show their real answers.

Not in this release (0.3.3)

  • Death, knockdowns near objects and hit reactions (#480), the hidden character export to PNG (#482, #276), the NPC death ragdoll check from two views (#488), and vaulting over obstacles (#476: the game finds the ledge but its ledge grab does not start; it is compared with the game without KCDS first).

Still being checked

  • Smithing and alchemy as seen by others (#193, #194), the original-copy check for the other stores (#166), the client installer on a clean PC (#114), the password flow (#110) and items dropped at death showing twice (#479).
  • The central ban list and the identity registry (#271) are in the Master server; they apply once the Master server of this release is deployed.