Skip to main content

Install the ROCK SDK

Use the RPS SDK headers from the same contract generation as the ROCK runtime. The modular headers require Windows x64 and C++20; the complete example plugins use C++23 through their F4SE/CommonLib dependencies.

Installed package​

find_package(RPS_SDK CONFIG REQUIRED)
target_link_libraries(MyPlugin PRIVATE RPS::ROCKCore RPS::ROCKHands)

These are header-only targets. Add the other RPS::ROCK<Family> targets your feature actually consumes; see the complete list. They neither link a ROCK import library nor install the runtime.

Source checkout​

set(RPS_SDK_BUILD_ROCK_EXAMPLES OFF CACHE BOOL "" FORCE)
set(RPS_SDK_BUILD_PAPER_EXAMPLES OFF CACHE BOOL "" FORCE)
set(RPS_SDK_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
add_subdirectory(external/RPS_SDK)
target_link_libraries(MyPlugin PRIVATE RPS::ROCKCore RPS::ROCKHands)

external/RPS_SDK is the SDK checkout inside your own project. Include <ROCK/Client.h> and <ROCK/Hands.h> for the observer below. Feature headers include the common ABI vocabulary, without importing every other feature table.

Runtime requirements​

Your plugin owns its F4SEVR bootstrap and runtime guard. Current ROCK integrates FRIK 0.79 / API 2.3. Resolve the already-loaded ROCK.dll at an appropriate plugin/game lifecycle point. Absence or failed negotiation leaves the dependent feature inactive. A table pointer alone is not permission or gameplay readiness.

The SDK still contains legacy headers and RPS::ROCK; those do not negotiate this modular contract. RPS::SDK aggregates include paths for ROCK, PAPER and UI, but new modular code should name its family targets explicitly for language requirements and dependency clarity.

Next: first consumer, then runtime rules.

Opt into inventory equip​

For explicit right/left inventory equip and retained switching, link RPS::ROCKWeapon and include ROCK/WeaponV1_1.h. Request weapon::v1_1::Api through the SDK client; installing a header does not establish that the loaded DLL provides minor 1. Existing consumers using ROCK/Weapon.h remain on the compatible 1.0 prefix. See the full integration.

Opt into held placement and click reservation​

Use RPS SDK df02e89 or newer for ROCK/GrabV1_1.h and ROCK/InputV1_1.h. Link RPS::ROCKGrab for placement or RPS::ROCKInput for observing its reserved click, alongside Core for registration/scheduling. Acquire grab::v1_1::Api with Read + Write (3) or input::v1_1::Api with Read (1). Neither changes the existing 1.0 header or adds a runtime DLL. The installed ROCK provider must negotiate minor 1 and the extended table size. See held placement.