GET STARTEDTROUBLESHOOTING
Troubleshooting
Each section starts from a symptom. The checks run in the order given, from the cheapest to the most involved. Each section names the system page that explains the setting, and the Core concepts page explains the terms.
Read the log first
Section titled “Read the log first”The plugin writes its messages to the log category CISLog. Its default level is Warning, so refusals of a use are hidden until you raise the level. Type log CISLog Log in the console, play again and look for CISLog lines in the Output Log.
These lines name the cause:
- On the server, a refused use writes
ServerRequestUse from <character>: the use of <object> is rejected (ECISUseRejectReason::<reason>), key <key>.The reason is one of the values in the table under “Works alone, fails online” below. No such line appears when the server cannot find the object at all, for example a destroyed object, or when the server runs its own use of that character. The player may then see the state snap back with no server line. - On the client,
ClientRejectUse on <character>: the server rejected use <key> (ECISUseRejectReason::<reason>).appears only while the player’s use still waits for the server’s answer. - Two warnings show at the default level.
... called on a client; the change is local only. Call it on the server.means thatSetObjectStateorSetUsableran on a client’s copy of the object. It is written once for each object.Component '<name>' (<class>) not found on <actor> (class <class>). Select the component again in the settings.means that a component reference names a component the actor does not have. An empty reference writes no warning. This warning appears once for each actor class and component name until the editor restarts.
The multiplayer guide, Object for multiplayer, shows where these lines appear in a test with two players.
Nothing happens at the use button
Section titled “Nothing happens at the use button”First, check that the use key reaches the character: the Input Mapping Context with the use action must be added to the player. See Your own character.
Then check these in order:
- Try Use Object runs. The use button must call
TryUseObjecton the character’sUCISCharacterInteractionComponentwhen it is pressed, andTryInterruptObjectUsingwhen it is released. The hold then ends in a use once the use time has passed, unless the release call cancels it first. The hold also cancels by itself when the object stops being usable for the character: the character leaves its reach, turns away, or a Condition turns false. The use time is Override Object Use Time of the object when that is on, otherwise Time to Use Object of the character. The call does nothing while the character already uses or holds an object, and when no usable object is selected. See Character interaction component. - The object is in reach of a trigger. The character finds an object only while one of its Trigger Components overlaps a component of the object. The object needs a component with collision that generates overlap events. See Character interaction component.
- The character stands within Interaction Distance of the object, measured flat from the object’s actor to the character’s feet. The default is 300. See Interaction object component.
- The character faces the object within half of Interaction Angle. Interaction Angle is 45 by default, so 22.5 degrees to each side. An object can override the angle. The point faced is the socket of Angle Detection Component, or the object’s root. See Character interaction component.
- The Visible Conditions pass, and then the Usable Conditions pass. The usable conditions are checked only while the object is visible, and a visible object must also have its usable flag on. See Conditions.
- The current state has an Action for the side. A side uses the first Action whose Required State Tag equals the object’s state. An empty tag matches an empty state only. See Actions.
- The demo objects accept only the demo character. Most of them have
BP_InteractionObjectCondition_IsObjectRenderedin Usable Conditions, and it lets onlyBP_CISCharacteruse them. Test your own character with your own object. See The demo.
The prompt E | INTERACT on the demo map comes from the demo HUD BP_CISHUD, not from the plugin’s use logic. A use can work without that prompt.
The character walks up but nothing plays
Section titled “The character walks up but nothing plays”- The Action of the side matches the state at the moment of the use (check 6 of “Nothing happens at the use button”). A state change made just before the use may have moved the object to a state that has no Action.
- Action Execution Type of the side decides when the Action starts. The default,
StartAfterFinishMoveHandler, starts the Action only after the MoveHandler finishes its movement. If the movement never ends, because nothing callsFinishMovement, the Action never starts.StartParallelWithMoveHandlerstarts the Action with the movement. See Move handlers. - The demo MoveHandlers move only
BP_CISCharacter. With another character the Action still runs, but the character is not walked to the point. See Move handlers. - Mesh Component On Object of a montage Action names the object’s component, and that component has the Anim Class of its animation. A skeletal mesh added in the editor needs its Anim Class set; without it the montage does not play on the object. See Two-sided door.
- A door or lever swings back as soon as its montage ends. The object’s Animation Blueprint must receive the new state through
BPI_InteractionObject, from the object’s state-changed event. See Two-sided door.
The use never ends
Section titled “The use never ends”- The Action calls
FinishAction. A use lasts until it does, and the object’s state changes only when the Action finishes. See Actions. - A MoveHandler that never calls
FinishMovementstops the use before the Action starts, as described above. See Move handlers. - Max Use Duration on the object ends a longer use as interrupted. The default, 0, means no limit. See Interaction object component.
- An interruption ends the use only when the object’s Object Interruption Type equals the type the input sends. A press or release of the use button ends a use only when the types match. See Character interaction component.
Works alone, fails online
Section titled “Works alone, fails online”The server checks each use request of a remote client. A standalone game, a listen host’s own character and characters that the server runs are not checked. So a use that works alone can be refused online. The table gives each reason and what to check.
| Reason | What to check |
|---|---|
ObjectInvalid | The server cannot find the object. The object or its actor was destroyed on the server. |
NotUsable | The object cannot be used now. Check its usable flag: a Blueprint, or a call of Set Usable, turned it off. |
Occupied | Another character is using the object. Check that every Action finishes, because a use lasts until FinishAction runs. |
NoActionForState | No Action of the side matches the object’s state. Check the Required State Tag of each Action and the Initial Object State. |
OutOfRange | The character stands farther than Interaction Distance plus the server tolerances. Check the distance and the tolerances in the project settings. |
BadAngle | The character does not face the object within half of its Interaction Angle, or the object’s override of it, plus Angle Tolerance Degrees. Check those settings. |
BadSide | The character does not stand within the requested side, or the side does not exist on the server. Check Interaction Angle Min, Interaction Angle Max and Angle Tolerance Degrees. Sides are not replicated, so every machine must build them from the same class defaults or Blueprint. |
ConditionFailed | A Condition checked on the server failed. Check the Visible and Usable Conditions of the object and the Server Validation of each Condition. |
HoldTooShort | The button was released before the use time. The server accepts a shorter hold by Hold Time Tolerance. |
Other checks for online games:
- The object’s state reaches other players only when the object’s actor replicates. In Class Defaults, turn on Replicates. See Object for multiplayer.
- A data object exists only on the machine of the player who controls the character, so a hint or an icon that the data object draws is seen only by that player. See Data objects.
- A call of Set Object State on a client changes only that machine’s copy, and the Output Log warns once. Run the call on the server. See Interaction object component.
- Server Validation of the project settings turned off makes the server confirm every request. The index checks of the side still run. See Multiplayer.
A component is not found
Section titled “A component is not found”The warning Component '<name>' (<class>) not found on <actor> (class <class>). Select the component again in the settings. means that a component reference names a component the actor does not have now. The component was renamed or removed, or the reference points at another actor. An empty reference writes no warning, so check that the field is set. The warning appears once for each actor class and component name until the editor restarts. Select the component again in the reference’s settings, and check the Blueprint that holds it. See Component references.
The icon does not show
Section titled “The icon does not show”- The character’s Data Object Class is
BP_CISDataObject, the demo’s data object. The default,CISInteractionDataObject, draws no icons. - The object’s own Data Object Class override, when it is on, replaces the character’s. Check that it is the class you expect.
- The demo’s data object draws icons only for objects built from
BP_BaseInteractObject. Its Interaction Widget component must showWBP_InteractionObjectIcon. An object built from another class shows no icon, even with the right data object. - The icon follows the object’s visibility: the object must be in reach, face the character, be usable and pass its Visible Conditions, and the character is not using an object. See Widgets and icons and Data objects.
- Quick start: a switch with two states, with no code.
- Core concepts: the terms used on this page.