Simple QTE: Quick Time Events made easy w/ JSON support & 11 QTE types
Living Failure
$19.99
$39.99
50%OFF
(no ratings)
Jump AssetStore
Complete QTE framework with 11 QTE event types including composites.
JSON import/export for AI-generated configs.
Works with Legacy & New Input System.
Zero allocation, ScriptableObject-based design.Simple QTE is a complete Quick Time Event framework for Unity. Create cinematic action sequences, boss finishers, and interactive moments with 11 fully-featured QTE types. Works with both Legacy Input Manager and New Input System out of the box.Three ways to create QTEs:- Design in the Inspector with visual timeline editors (ScriptableObject configs)- Generate from JSON using the built-in import/export system (perfect for AI-assisted workflows)- Create at runtime via code (ScriptableObject.CreateInstance or direct evaluator access)11 QTE TYPESButton-Based:- Press: Single button press with Open or Windowed timing modes- Hold: Hold button until meter fills, optional release decay- Mash: Rapid presses to reach target (Count or Value modes), rapid bonus system- PingPong: Bouncing cursor on a bar, press when over target zone (golf swing, penalty kick, fishing style)Stick-Based:- StickWaggle: Waggle stick back and forth on configurable axis- Directional: Push stick in correct direction, 8-direction support- LinearPrecision: Find sweet spot on horizontal bar and hold- RotationalPrecision: Rotate to target angle and hold- Arc: Traverse arc from start to end angle (God of War style)- RotationalSpin: Rotate stick N full times (door crank style)Advanced:- Composite: Combine multiple QTEs in sequence or parallel blocks with branchingKEY FEATURESDual Input System SupportWorks with Legacy Input Manager and New Input System 1.4+. No configuration needed - auto-detects at compile time.JSON Import/ExportFull-fidelity JSON serialization. Export schema documentation for AI tools. Import AI-generated configs directly into your project. Includes 5 sample JSON files demonstrating all QTE types.Advanced Timing System- Random time limits for unpredictability- Speed curves: countdown accelerates or decelerates over time- Decay curves: decay rate changes over time- Timing phases: designer-friendly alternative to curves- Optional timeout: disable time pressure for accessibilityComposite QTEsBuild complex sequences with:- Sequential steps (do A, then B, then C)- Parallel blocks (do A AND B simultaneously)- Logic gates (ALL must succeed vs ANY can succeed)- Branching (custom success/fail paths, recovery routes, alternate endings)Release ModesFor precision and rotation QTEs:- Continue: cursor stays where it is- Decay: cursor drifts back to rest position- Reset: cursor snaps back to start- Fail: releasing fails the QTECustom Editors11 visual Inspector editors with:- Timeline visualization showing prompt/success/perfect zones- D-pad direction picker for Directional QTEs- Arc and angle visualizations- Bar preview with zone visualization for PingPong- Real-time validation with error display- Tooltips with examplesRUNTIME ARCHITECTURE- Pure C# evaluators: no MonoBehaviour inheritance required- Zero GC allocation per tick- Injected deltaTime for slow-motion and frame stepping support- Clean event system: OnStateChanged, OnProgressChanged, OnCompleted- Immutable QTEResult struct with accuracy, timing, and score dataWHAT'S INCLUDEDRuntime Scripts:- 11 QTE config classes (ScriptableObject)- 11 evaluators with complete logic- QTEInstance lifecycle controller- Input abstraction layer (IQTEInputSource)- QTEInputAdapter for both input systemsEditor Scripts:- 11 custom Inspector editors- Import/Export Wizard window- Schema exporter for AI tools- Timing phase editor with visual timelineDemo and Documentation:- Demo managers and UI for all 11 types- 10 HTML documentation pages- 5 sample JSON files (God of War, Resident Evil, Heavy Rain, Spider-Man, Edge Cases themes)USE CASES- Boss finishers and cinematic kills- Parry based gameplay with QTE prompts- Door cranks and valve wheels- Lockpicking and safe cracking- Button mashing escape sequences- Precision aiming minigames- Golf swing / penalty kick meters- Fishing minigame reeling- Dialogue wheel selections- Struggle and grapple moments- Charge attacks- Multi-input combo sequences- Timeline cutscene interaction with QTESUPPORT- Full HTML documentation included- Sample JSON files for reference- Demo scenes for all QTE typesSYSTEM REQUIREMENTSUnity Version: 2020.3 LTS or newer (2022.3 LTS recommended).NET: Standard 2.0 or newerRender Pipeline: Any (Built-in, URP, HDRP)Input System: Legacy Input Manager or New Input System 1.4+Platforms: All platforms supported by UnityPACKAGE CONTENTSRuntime Scripts: 27 C# files- 11 QTE config classes (ScriptableObject)- 11 evaluator classes- 1 lifecycle controller (QTEInstance)- Input abstraction layer (4 files)Editor Scripts: 25+ C# files- 11 custom Inspector editors- Import/Export Wizard- Schema exporter modules (per-type + combiner)- Timing phase editor- Property drawersDocumentation: 10 HTML pagesDemo: 12 demo managers + 12 UI scriptsTest Data: 5 sample JSON filesNAMESPACESSimpleQTE - Runtime classesSimpleQTE.Editor - Editor toolsSimpleQTE.Demo - Demo scene scriptsARCHITECTUREConfig Layer ScriptableObject-based configuration for each QTE type. Create via Assets menu or ScriptableObject.CreateInstance at runtime. All configs inherit from QTEConfig base class.Evaluator Layer Pure C# classes implementing IQTEEvaluator interface. No MonoBehaviour dependency. Receives deltaTime and input, returns QTEResult. Stateless design allows reuse or disposal.Instance Layer QTEInstance manages lifecycle: Created, Running, Completed, Cancelled, Disposed. Bridges game code to evaluators. Exposes events for state changes, progress updates, and completion.INPUT SYSTEMDual-system support via compile-time detection:- ENABLE_INPUT_SYSTEM defined: Uses New Input System API- Not defined: Falls back to Legacy Input ManagerIQTEInputSource interface:- IsPressed(): Button currently held- WasPressedThisFrame(): Just pressed this frame- WasReleasedThisFrame(): Just released this frame- GetStickValue(): Analog stick position (Vector2)QTEInputAdapter default implementation handles:- Gamepad buttons (face, triggers, bumpers, d-pad, stick clicks)- Keyboard fallbacks for all inputs- Analog stick with keyboard simulation (WASD, IJKL)QTEInput enum (14 platform-neutral button names): FaceSouth, FaceEast, FaceWest, FaceNorth DPadUp, DPadDown, DPadLeft, DPadRight LeftTrigger, RightTrigger, LeftBumper, RightBumper LeftStickButton, RightStickButtonQTEStick enum:LeftStick (WASD/Arrows fallback), RightStick (IJKL fallback)PERFORMANCE- Zero GC allocation per Tick() call- Evaluators use struct-based state- No LINQ or delegates in hot paths- Injected deltaTime supports slow-motion and frame steppingQTE RESULTQTEResult struct (immutable):- ResultType: Perfect, Success, PartialSuccess, Failure, Timeout, Cancelled- Accuracy: 0-1 normalized accuracy value- CompletionTime: Time when QTE completed- IsSuccess: True if Perfect, Success, or PartialSuccess- IsPerfect: True if PerfectQTE INSTANCE LIFECYCLEStates: Created -> Running -> Completed (or Cancelled/Disposed)Methods:- Start(): Begin QTE evaluation- Tick(float deltaTime): Update each frame- Cancel(): Stop QTE with Cancelled result- Dispose(): Clean up resourcesEvents:- OnStateChanged(QTEInstanceState)- OnProgressChanged(float)- OnCompleted(QTEResult)TIMING SYSTEMQTETimingProfile (shared timing config):- mode: Open or Windowed- enableTimeout: Optional time pressure- promptLeadTime: Delay before active phase- timeLimit: Total duration- useRandomTimeLimit: Randomize between min/max- useSpeedCurve: Countdown speed varies over time- speedMode: Curve (AnimationCurve) or Phases (discrete ranges)TimingPhase (for Phases mode):- durationPercent: 1-100, phases must total 100%- multiplier: Speed/decay multiplier for this phasePingPong uses inline timing (like Mash/StickWaggle) with the same features.RELEASE MODESAvailable for: LinearPrecision, RotationalPrecision, Arc, RotationalSpin- Continue: Input position maintained on release- Decay: Drifts back to rest position over time- Reset: Snaps back to start position- Fail: Releasing input fails the QTECOMPOSITE SYSTEMCompositeStep:- Atomic: Single QTE config reference- Parallel: Multiple QTEs running simultaneously- delayBefore: Optional delay before step- onSuccessGoTo / onFailGoTo: Branching to other stepsParallelLogic:- All (AND): Every item must succeed- Any (OR): At least one succeeding = successEvents:- OnStepStarted(int stepIndex)- OnStepCompleted(int stepIndex, QTEResult)- OnBranchTaken(int fromStep, int toStep)- OnCompositeCompleted(QTEResult)PINGPONG SYSTEMPingPongZone:- position: Center on bar (0-1)- range: Half-width of zone- zoneType: Success, Perfect, Penalty- penaltyEffect: Fail, AccuracyPenalty, LoseProgress- randomizePosition: Randomize zone position each run- randomizeRange: Randomize zone size between rangeMin/rangeMaxPingPongMode:- AnyOne: Hit any target zone to win- Sequence: Hit all zones in position order- FreeOrder: Hit all zones in any orderPingPongMissEffect:- Nothing: Cursor keeps bouncing- Fail: Instant fail- AccuracyPenalty: Lose accuracy on missJSON SYSTEMImport:- Full-fidelity deserialization (all config fields supported)- Validation with error and warning reporting- Two-pass import (atomics first, composites resolve references)Export:- Schema generation for AI tools (Claude, ChatGPT, Cursor)- JSON or Markdown format- Master schema (all 11 types) or single-type exportSupported formats:- Full wrapper: { "metadata": {...}, "qtes": [...] }- Single entry: { "type": "Press", "name": "...", "press": {...} }- Array: [ { "type": "Press", ... }, { "type": "Hold", ... } ]EDITOR TOOLSCustom Inspectors:- Visual timeline showing prompt/success/perfect zones- D-pad picker for directional QTEs- Arc and angle visualizations- Bar preview with zone colors for PingPong- Curve editors with phase alternative- Real-time validation displayImport/Export Wizard (Window > SimpleQTE):- Import-Export Wizard: Load JSON, validate, select entries, import- Export Schema: Generate AI-ready documentation (per-type or master)- Copy Schema to Clipboard: Quick paste into AI chat- Documentation: Open any doc page directly from UnityAPI QUICK START// Create and run a QTEvar config = Resources.Load("MyPressQTE");var input = new QTEInputAdapter(QTEInput.FaceSouth);var instance = new QTEInstance(config, input);instance.OnCompleted += result => { if (result.IsPerfect) Debug.Log("Perfect!"); else if (result.IsSuccess) Debug.Log("Success"); else Debug.Log("Failed");};instance.Start();// In Update loopinstance.Tick(Time.deltaTime);DEPENDENCIESNone. No external packages required.New Input System package optional (auto-detected).This package utilized Claude AI for code generation assistance and documentation drafting.However, all AI-generated content was thoroughly human-reviewed, modified, and validated over three months of intensive development. No AI-generated code or documentation was used without significant human modification and verification.All technical decisions, architecture choices, and design patterns were made by me, as the sole developer of this project. Each component was rigorously tested and painstakingly refined through both automated and manual testing procedures under my oversight.As the developer, I firmly acknowledge and attest that the completed final product represents extensive human oversight, testing, refinement, and validation.I take full responsibility for the technical integrity and overall quality of the codebase, and I affirm that the AI-generated elements were only used as a tool for assistance, not as a substitute for human expertise.




