Preserved forum archive. This topic stores the original first post and locally mirrored RPG Maker Web attachments when available. It is posted by the BMMPlay archive account, not by the original creator.
Original Source
- Original title: MV SDJB_UltimateCameraControl
- Original author: ShadowDragon
- Original date: July 24, 2025
- Source thread: https://forums.rpgmakerweb.com/threads/sdjb_ultimatecameracontrol.179144/
- Source forum path: Game Development Engines > RPG Maker Javascript Plugins > JS Plugins In Development
Summary
PluginName: SDJB_UltimateCameraControl Author: ShadowDragon This Plugin is in WIP. A powerful Camera Tool to Lock, Scroll, Target EventId, set position on x and y,
Archived First Post
PluginName: SDJB_UltimateCameraControl
Author: ShadowDragon
This Plugin is in WIP.
A powerful Camera Tool to Lock, Scroll, Target EventId, set position on x and y,
back to player, Zoom in/out, Scroll on region path, or common event when hitting
the edge while the camera scroll (like a platformer or challenge mode!)
Stages for release:
-When Lock Camera has full features
-After target xy, eventId, player position
- After Zoom in/out where able
- Full control over almost everything I can think off
What would be possible on full release:
with little eventing, Zelda transitions (not automatic!)
platform levels or other mechanic that camera scroll, hit the
edge = game over!
look around the map by x tiles using mouse or by holding a button down.
and many more (when I'm able to do them and inside my range,
but I keep trying to give you all the best features I can offer.
=== TERMS OF USE ===
Free for Non-Commercial and Commercial use when credit is given.
credit one of the following:
ShadowDragon
ShadowDragonJB
Version + UPDATE'S
28-07-2025 Version 1.0.0 first release
=== WARNING ===
YOU ARE NOT ALLOWED TO REDISTRIBUTE OR SELL IT OR TAKE CODE FOR YOUR OWN.
DO NOT REMOVE THE HEADER.
(it require my base plugin (SDJB_Base) MV ONLY!
Download it from itch.io
Author: ShadowDragon
This Plugin is in WIP.
A powerful Camera Tool to Lock, Scroll, Target EventId, set position on x and y,
back to player, Zoom in/out, Scroll on region path, or common event when hitting
the edge while the camera scroll (like a platformer or challenge mode!)
Code:
A powerful camera tool that lets you:
→ Lock the camera on X or Y axis
→ Automatically scroll in a direction (like auto-run or platformer levels)
→ Trigger common events when reaching camera edges (during autoScroll)
→ Target an event, set camera position manually
→ Zoom in/out dynamically
→ Follow paths via regions
Camera X/Y Lock
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
$gameSystem.setCameraLock(axis, lock, direction, loopJump, speed)
axis => "x" or "y"
lock => true or false => enables or disables lock
direction => "left", "right" (for X), or "up", "down" (for Y)
loopJump => true/false => if true, teleport player to opposite edge
speed => Number => camera follow speed (default = 5)
Notes:
When direction is set to "both", the camera locks both directions
on that axis.
loopJump only works when direction is "both".
Examples:
$gameSystem.setCameraLock("x", true) // Lock both X directions
$gameSystem.setCameraLock("x", true, "left") // Lock only left side of X
$gameSystem.setCameraLock("x", true, "both", true) // Lock both and loop jump
To unlock:
$gameSystem.setCameraLock("x", false)
$gameSystem.setCameraLock("x") // Equivalent to unlocking Y
$gameSystem.resetCameraLock() // Unlock both "x" and "y"
Automatic Scroll
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
$gameSystem.setAutoScroll(direction, speed)
direction => "up", "down", "left", "right"
speed => Number - how fast the camera scrolls (default = 0.05)
Notes:
Triggers when the player hits the camera edge. The effect is defined
in the plugin parameter as any JS code that returns "true".
Example: SceneManager.push(Scene_Gameover)
Higher speed number scrolls faster, lower number scrolls slower.
Auto-scrolling stops automatically if the camera can't scroll further
(i.e., reached the edge of the map).
Auto-scroll in the Y direction (up/down) may also cause camera movement
on the X axis. To prevent this, use $gameSystem.setCameraLock("x", true)
to lock the camera horizontally.
Example:
$gameSystem.setAutoScroll("up") // Scrolls "up" at speed 0.05
$gameSystem.setAutoScroll("up", 0.02) // Scrolls "up" slower
$gameSystem.clearAutoScroll() // Stop auto-scrolling
Scroll to Target
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
Camera Sequence Script Call: $gameSystem.setCameraTo(steps)
steps is an array of objects defining the camera movement sequence.
Notes:
The lock option only needs to be set once at the start of the sequence to
lock player movement. Subsequent steps can omit it.
The unlock option must be called at the end of the sequence (or during an event)
to unlock player movement; omitting this will cause the game to freeze.
Each step moves the camera based on the specified mode and parameters.
The speed and wait parameters are optional; sensible defaults are used if omitted.
Supported Modes and Options:
mode: "static" => Move camera to a fixed position.
x: number (required) => target X coordinate
y: number (required) => target Y coordinate
lock: boolean (optional) => lock player movement (only in first step)
speed: number (optional, default 4) => camera movement speed
wait: number/string (optional) => wait behavior (see below)
mode: "event" => Move camera to an event’s position.
id: number (required) — event ID
lock: boolean (optional) => lock player movement (only in first step)
speed: number (optional, default 4) => camera movement speed
wait: number/string (optional) => wait behavior (see below)
mode: "player" => Focus camera on the player.
unlock: boolean (optional, required at end) => unlock player movement
speed: number (optional, default 4) => camera movement speed
wait: number/string (optional) => wait behavior (see below)
Wait Parameter Explanation:
The wait parameter controls how the sequence progresses after the
camera arrives at the target.
Omitted or true => Wait until arrival, then immediately continue to next step.
false => Same as above — no extra wait, continue immediately.
Number (e.g., 60) => Wait until arrival, then pause for given number of frames.
String "true+N" => Same as number — wait arrival plus N frames (for readability).
Scriptcalls examples:
$gameSystem.setCameraTo([
{mode: "event", id: 1, lock: true, speed: 6, wait: true}
]);
$gameSystem.setCameraTo([
{mode: "event", id: 1, lock: true, speed: 6, wait: true},
{mode: "player", speed: 4, wait: "true+60"},
{mode: "event", id: 2, speed: 5, wait: 30},
{mode: "static", x: 5, y: 5, speed: 3, wait: false},
{mode: "static", x: 25, y: 15, speed: 6},
{mode: "player", unlock: true}
]);
Returning camera back to player
You can also return the camera smoothly to the player position with:
$gameMap.returnToPlayer(); // speed = 4
$gameMap.returnToPlayer(speed); // adjust speed
speed is optional; controls how fast the camera moves back to the player.
Zoom in/out
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
[Planned feature]
Implement zooming with stable centering.
Support zoom-in above 100% (e.g., 150%-200%) and limited zoom-out
below 100% (down to ~50%) where possible.
Handle edge triggers and auto-scroll properly while zoomed.
Scroll Path by Region
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
[Planned feature]
Lock camera movement inside defined map regions.
Prevent camera from moving outside specified region boundaries.
Allow smooth zone transitions (like Zelda style screen shifts).
Optionally integrate with auto-scroll for fun camera paths.
Example Plugin Commands:
͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞ ͞
[Planned feature]
Under construction
Stages for release:
-
-
- After Zoom in/out where able
- Full control over almost everything I can think off
What would be possible on full release:
with little eventing, Zelda transitions (not automatic!)
platform levels or other mechanic that camera scroll, hit the
edge = game over!
look around the map by x tiles using mouse or by holding a button down.
and many more (when I'm able to do them and inside my range,
but I keep trying to give you all the best features I can offer.
=== TERMS OF USE ===
Free for Non-Commercial and Commercial use when credit is given.
credit one of the following:
ShadowDragon
ShadowDragonJB
Version + UPDATE'S
28-07-2025 Version 1.0.0 first release
=== WARNING ===
YOU ARE NOT ALLOWED TO REDISTRIBUTE OR SELL IT OR TAKE CODE FOR YOUR OWN.
DO NOT REMOVE THE HEADER.
(it require my base plugin (SDJB_Base) MV ONLY!
Download it from itch.io
Downloads / Referenced Files
Log in to download
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadLicense / Terms Note
=== TERMS OF USE === Free for Non-Commercial and Commercial use when credit is given. credit one of the following: ShadowDragon
Creator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
0
replies
1
view
Topic Summary
Loading summary...