KCDS 0.1.5
0.1.5 brings fair, synced melee combat (the game's own damage on every screen), many more things players see each other do, a pillory, dirt and blood, needs control, and a large set of new SDK features for server and client scripts. Joining a server is about three times faster.
Servers need the 0.1.5 server as well. The launcher updates itself to 0.1.5 on the next start.
Highlights
- Combat is the game's own, on every screen. The struck player's own game prices every blow with the real weapon, the attacker's real strength and skills, and the victim's real armour on the body part that was hit. Health matches on every player's screen and on the server after every blow.
- Pillory. A server can put a player into the stocks. Another player can free them with the game's own lockpicking minigame.
- Dirt, blood and wear on bodies and clothes look the same for everyone.
- Joining is faster. The client gets into the world in about 15 s instead of about 45 s.
- SDK additions:
- equipment slots with clear rules;
- weapon quickslots that survive a relog;
- player needs control;
- a third-person camera switch;
- HUD marker switches;
- player queries by name and by distance;
- animations with props and custom clips.
Combat
- Blows priced by the victim's own game (#45, #49). The attack uses the attacker replica's
real stats, and the defence uses the victim's armour where the blow landed (head, face, torso,
arms, legs). Checked live with bare, light, medium and full plate kits:
- a full plate knight takes nothing on the chest and forearm, but about 16 health on the open face of the bascinet;
- a mail-and-gambeson kit takes 3 to 6 health on the body and arms, and 26 on the face.
- playerHit veto and modifiers (#45). A resource can let a blow through, change it or refuse it. A modified blow is priced again by the game (attack x2 is not simply damage x2).
- Blocks, perfect blocks, block breaks (#49, #197). A raised guard blocks natively, and low stamina breaks the block as in the game. Hit and block reactions of the struck player show correctly in fast exchanges.
- Master strikes (#209) between players: the defender's game opens its window as in single player (the perk, a weapon class that allows it, a guard opposite the attack), and the attacker's strike lands on all screens.
- Parries reach the attacker (#209): the attacker sees the parry. The remaining delay is still being worked on (see below).
- Cancelled combat (#46):
stopFightalso stops the blow that is already on its way. - Clinch (#50): the right pair of animations on every screen, counters included, F push, fall and getting up.
- Shields against arrows behave as in vanilla. A raised shield does not stop an arrow in KCD2 either: only pavises do.
- Bows and crossbows (#203): other players see the arrow or bolt being loaded.
- Removed replicas (#219): a watcher's game no longer stops when a fighting player's replica is removed. Before the fix it crashed in the first of 10 test runs; after it, all 10 runs passed with no crash.
Players and the world
- Pillory (#224):
player.putInPillory(name)uses a given pillory.player.putInPillory()uses the one nearest to the player.player.releaseFromPillory()lets them out. Another player can also pick the lock with the game's minigame.- The prisoner's weapon is put away first. After the release they walk away normally.
player.pillorynames the pillory a player is in, also duringplayerDisconnect. So a resource can put a player who logs out in the stocks back in when they return.- Event:
playerPilloryReleased(player, 'script' | 'lockpicked').
- Carrying players (#51): picking up, carrying and putting down a knocked-out player looks the same for everyone.
- Pickpocketing (#52): the game's own Rob prompt and minigame between players, with server policies and result events. There is no Rob prompt through a wall or from a ladder.
- Leaning out of a window or over a battlement (#198) and head look while leaning, sitting, riding and crouching (#199) are seen by everyone.
- Ladders (#201): two players on one ladder no longer climb through each other, and the climbing pose shows for others.
- Falling asleep (#218) is seen by everyone.
- Third-person camera (#223): F5 switches the game's own third-person view. A server can
force it or turn it off (
ThirdPerson.setMode('forced' | 'disabled' | ...)). - Lost connection (#207): the client goes straight back to the main menu and shows the reason there, instead of a popup in the world.
Appearance and inventory
- Dirt, blood and wear (#200) on the body and on worn clothes and armour look as dirty,
bloody and worn on every screen as in the player's own game.
- Washing and the game's own cleaning show for everyone.
- SDK:
player.grime,player.clean({ body, clothes }),player.soil({ dirt, blood }).
- Equipment slots for resources (#226): new public page
Docs-Public/equipment.md. It lists every slot of the game,
what goes where, which pieces cannot be worn together, how to equip and unequip with
Inventory.set, how to read what a player wears, and a relog example.Inventory.classes()gives each class itsslot(head_helmet,body_plate,leg_armor,boot,belt, ...).Inventory.setnow refuses withinvalidEquipmentinstead of letting the game silently keep one piece:- two pieces for one place (a tunic and a gambeson, two belts, two rings);
- a piece without the one it goes over (plate without a gambeson, a helmet without a padded coif);
- boots with plate legs that cover the feet.
- Weapon quickslots (#226, #38):
- the weapons in every slot, not only the selected one, now show in
Inventory.getand come back withInventory.set, so a relog restores the belt as it was; - slots the outfit has not unlocked (no belt, or a smaller one) stay empty, and their weapons are not equipped;
- a belt given in the same call gets its slots in time.
- the weapons in every slot, not only the selected one, now show in
- Overloaded players: whatever the game does to an overloaded player's movement, everyone else sees the same movement.
SDK
- Needs (#216, #217):
Needs.setEnabled(false)turns the sleep and food needs off for the server.getStat,setStat,addStatandfillStatread and set a player's vital states (sleep, food, stamina, ...).
- Players:
Player.find(text)and player commands such as/tptake a name, not only an id (#210).Player.inRadius(position, radius)andPlayer.nearest(position)give the players near a position, nearest first (#227).- Player ids count from 1 (#212).
- HUD switches:
CombatMarker.setEnabled(false)hides the top combat marker for everyone (#211);RestrictedAreaMarker.setEnabled(false)hides the restricted-area marker (#222).
- Animations (#53):
player.playAnimationplays the game's own clips;- with props held in the hands;
- and with clips a resource ships itself (
clips/x.cafin its client files); - everyone sees the animation, also players who join later.
- Texts (#202): KCDS's own messages can be rewritten, and a server can ship locales for its custom texts.
Runtime and launcher
- Joining (#206): the client's ~320 engine hook lookups are much faster. From the first log line to the world went from 45 s to 15 s on the same machine.
- Launcher updates (#205) no longer fail when the crash handler changes.
- Disk space (#225): the resource runtime no longer leaves a 30 MB browser profile behind on every game start. At most the last session's profiles remain until the next start removes them.
Known limitations (still open)
These issues stay open and continue after 0.1.5:
- #209 parry delay: the attacker sees the defender's weapon parry, but still later than the defender does.
- #204 faces: a remote player's face can still open its mouth now and then.
- #46, #47, #48, #50: the combat event pipeline, injuries and revive, no-lock regressions and the clinch lifecycle pass their live checks so far, but their full contracts are not closed.
- #49 dodge and ranged defence: not done yet. Making shields stop arrows would be a KCDS-only rule and needs a decision.
- #200 washing at a tub: the native E action plays the washing animation but does not clean
in multiplayer yet.
player.clean()and the game's other cleaning work and sync. - Time of day and weather are not synced between players yet (planned for 0.2.1, #65).
- Female characters still have no armour of their own in the game (#181 findings).
Downloads
Unpack the Client zip anywhere and follow its README.txt. Hosts use the Server zip.