Advanced RTS Camera (ARTSC)

A flexible dynamic RTS camera

  • Supported Platforms
  • Supported Engine Versions
    4.27, 5.0 - 5.3
  • Download Type
    Engine Plugin
    This product contains a code plugin, complete with pre-built binaries and all its source code that integrates with Unreal Engine, which can be installed to an engine version of your choice then enabled on a per-project basis.

Tutorial Videos (Coming Soon) | Demo | DocumentationDiscord


The Advanced RTS Camera (ARTSC) is a highly flexible third-person style camera system that can be used in both games and industrial projects (such as ArchViz).


This camera runs directly out of the box (but should be optimized for your needs) and can be used in RTS, third-person, and racing (as a track camera) games. Several features for customization can be mixed and matched to create a unique experience.


Now with a menu system, including key bind remapping!


Do not hesitate to reach out with any questions, feedback, or for support. I can be reached at the Discord Link provided above or at Support@twoneuronsstudio.com.


Updates

V2.1 (5.1+ only)

  • New feature: new method (ForceBreakTracking) added to allow users to stop camera tracking (useful on BasicMovement() and prevents CloseTrack() from being called unless camera is tracking)
  • Created new getters for tracking – GetIsAttaching() will confirm if the camera is attaching (moving) to a tracked object, and GetIsTracking() will confirm if the camera is tracking
  • All new functions (from version 2.0 and 2.1) now in the demo camera (BP_RTSCamera) with comments
  • Renamed bDisableEdgeScroll (in BP this showed up as “Disable Edge Scroll”) to bDynamicallyDisableEdgeScroll (in BP this shows up as “Dynamically Disable Edge Scroll”)
  • Added new variable bAlwaysDisableEdgeScroll (in BP this shows up as “Always Disable Edge Scroll”)
  • Added checks to prevent edge scroll from happening when users do not want edge scroll to ever happen.
  • Updated features for those not using the follow terrain height, so that the camera pawn height can be more easily adjusted (set “Desired Camera Height” and this will automatically take place now, without any additional nodes being used on BeginPlay)
  • Fixed issue for those not using follow terrain height where the camera’s height would not return to the desired height after tracking an actor
  • Pan, Zoom, and Tracking will no longer enable edge scroll if edge scroll is permanently disabled
  • Fixed a typo on SetMovementSpeed category


V2

  • Updated for Unreal5.3
  • New feature: Advanced Collision Test that smoothly changes the length of the spring arm when an object is between the camera and pawn root. This replaces the standard collision test provide by the base spring arm class.
  • Removed all kismet functions (except Gameplay Statics and text library) to further optimize the code
  • New Feature (5.1 and newer only): Added a menu to allow users to remap controls
  • New Feature (5.1 and newer only): Added a menu to allow users to modify camera speed and camera panning speed
  • New Feature (5.1 and newer only): Added a menu to allow users to modify sound settings
  • New Feature (5.1 and newer only): Added a menu to allow users to change visual scalability.
  • New Feature (5.1 and newer only): Added a game instance (can be derived, or code can be copied) for a user’s setting save system for personalized settings (speed/pan sensitivity) and for audio settings and in UE5.1 and UE5.2 to save remapped inputs (note: for UE5.3 both remapping and visual scalability use the built-in user settings and do not need to be saved with this approach)
  • New interfaces included to allow for interaction between menus and pawn.
  • New Material Function/Feature: A new camera fade material has been added, this one uses a dither node to break fade out part of the object under the camera. This material function can be applied to any material using the masked domain and does not need the interface applied either. Giving designers and developers more options and easier way to apply the camera fade without worrying about loss of material attributes (e.g., base color)
  • Created a custom spring arm class for the Advanced Collision Tests (further updates to this class are planned for later versions of this plugin).
  • Updated header files to explicitly list the “_implementation” methods, so that developers can more easily navigate between the header and implementation files, and to avoid ordering issues when using an IDE’s (like VS2022) quick actions/refactoring tools.
  • Added further options for tracking (the camera can begin attached to an actor to track)



v1.1

  • Cleaned up for 5.2
  • Fixed timers to be more performant (on tracking actors)
  • Added new zoom features.

Technical Details

Features:

  • New! Menu system with key binding/remapping, and saves for other settings
  • New! Custom Spring Arm component
  • Basic forward/backward and right/left movement & Edge scroll/mouse scroll
  • Dynamic movement speeds and adjustments
  • Dynamic zoom (including change camera distance, change in field of view, and rotation)
  • Rotate/pan around pivot
  • Follow/track target/actor
  • Fade materials under camera
  • Ability to quick (dis)enable features at run time
  • Multiple approaches to handling zoom events
  • Features can be turned on/off in editor
  • Additional feature settings
  • Override all of the functions to implement your own logic
  • All use-related variables exposed to BP (edit defaults - most have setter/getter methods for dynamic use).
  • All methods camera exposed to BP and can be overridden 

Code Modules:

  •  RunTime

Number of Blueprints: 1 Pawn, 3 Curve Graphs, 4 Materials, 1 Actor, 13 input data assets, 14 widgets, 1 game instance, 4 sound classes & 1 sound class mix

Number of C++ Classes: Camera 4, 6 interfaces, 20 menus, 1 Save Object, 1 Game Instance

Network Replicated: Yes*

Supported Development Platforms: Win64

Supported Target Build Platforms: Win64

Documentation: Documentation

Example Project: Demo

Important/Additional Notes: None