THIS PLUGIN HAS GONE THROUGH A COMPLETE REWRITE (from scratch). THE REWRITE IS ON ENGINE VERSION 5.3+
Last Updated: March 11th, 2024
Current Published Version: V1.2.2
If you are looking for a robust, realistic and efficient ballistics system that pairs well with this plugin, I recommend checking out Terminal Ballistics
C++ Is not required to use this plugin; however, I recommend that you at least have a basic understanding of blueprints to use this framework.
Example Content (V2) / Example Content (Old V1) / Documentation(Written) / Documentation(Video(This series will be replaced in near future)) / Support Discord Server / Example Demo (WIP) for V2
What is this plugin:
This plugin is meant to be a simple, performant, modular, component based framework.
Performance:
Overview:
Performance was a huge focus with all the new systems. Unlike a few popular kits on the marketplace that use blueprint, run everything on the game thread, and/or use multicasts for nearly everything replication, mine utilizes the push model for replication, uses worker threads where viable, and does not have the additional overhead of blueprint.
Multiplayer:
Replication is something I have quite a bit of experience in and optimizing. At the core this system fully utilizes the push model to improve server performance over the default unreal implementation. Potentially large arrays utilize the fast array serializer to reduce the amount of data sent across the network when they change. Where applicable, variables are compressed into bytes before being sent and then uncompressed locally when received. Each class comes with a bAutoCallForceNetUpdate option and when it is set to true, upon the server marking a variable as dirty it will force net update and flush net dormancy. This allows you to have a very low NetUpdateFrequency set and still have a responsive replicated system.
Animation:
Like with most things, animation systems can take quite a hit on performance. To prevent much of this, the animation system offloads much of the heavy lifting to worker threads. This method allows for multiple pawns to have their animation data run at the same time in parallel to each other rather than waiting for the previous pawn to finish before the next pawn can start processing it’s work. An example of the performance of this system can be seen in the screenshot above where I compare 45 animating pawns using the default third person template character at 13.11ms on the game thread to my system with all the procedurals running at only 14.34ms. This is all before any additional optimizations that you can do to your animation systems and pawns such as the Animation Budget Allocator which can yield HUGE benefits with great results with my system (I include a helper function for blueprint users to utilize the animation budget allocator easier).
Procedurals:
The provided procedural system is the most in depth on the marketplace. It makes full use of ik bones (such as ik_hand_gun, granted you are not forced to use that bone) to allow for full freedom with firearms such as running the action of a bolt gun with your right hand and switching from right to left handed. The procedurals come with a new pose system that now allows for unlimited poses such as high port, low port, short stock, blind fire, shoulder swapping (like in the late 2023 Tarkov update), and whatever else you want you can make as they are driven entirely by curves. Also driven by curves are recoil (both firearm and controller), firearm collision and movement sway. The remainder are value and socket driven. Some socket driven procedurals include aiming, point aiming, aiming at multiple points on a single sight (think the Elcan with built in iron sights on the top of the housing) and offhand ik (for both left and right hand). Some value drive procedurals are movement lag, rotation lag, deadzone, base pose offset and third person aiming offset (both left and right handed mode).
Firearm:
With the procedurals comes a large set of firearm functionality and implemented attachments by default. The firearm component acts as an interface to the rest of the attachments along with holding the attachment manager that gives direct access to each attachment and their parent component.
Firearm Attachments:
The system comes with several components that allow you to make nearly any firearm attachments such as optics, magnified optics, lights, lasers, forward grips, muzzle devices, barrels, mounts, etc. Provided in the example are several additional features to compliment them such as a muzzle temperature system to have a tarkov like suppressor smoke/heat with shimmer (see pictures).
Infrared/Night vision:
There is a built in infrared/night vision system that allows devices such as lights and laser to only be visible when you have night vision on. The provided example content has a post process and overlay for the night vision (see pictures) that allow for a realistic look with a range of settings and material functions to assist in your own assets.
Attachment System:
The attachment system is meant to be universal, it is not just for firearms. It is intended to be used for really anything that needs addons such as a firearm with attachments and a character with clothing/kit (backpack/armor/etc.). It is setup to be fast and efficient with full support for skeletal meshes and the lead pose component.
CONT. – DESCRIPTION STILL IN PROGRESS
Technical Details
Features:
- Written Entirely in C++ with Components, No actor classes or interfaces
- Full Procedural Animation System
- Attachment system for all types of customization including characters
- Custom Physical Materials
- Magnified Scopes
- Simulated Scope Eye box
- Lights/Lasers
- Forward Grips
- Magnifiers
- Offset Mounts
- Range Finders
- Red Dots/Holograph Sights
- Changing Reticles
- Changing Reticle Brightness
- Night Vision
- Thermal Vision
- Muzzle Devices (such as suppressors and compensators)
- Firearm Collision Handling
- Much Much More that cannot even come close to fitting in this list!
Code Modules:
- SKGAnimGraphNodes
- SKGAttachment
- SKGLightLaser
- SKGMuzzle
- SKGOptic
- SKGOptional – Can be ignored
- SKGPhysicalMaterialModule
- SKGProceduralAnim
- SKGProjectile
- SKGRangeFinder
- SKGShooterFramework
- SKGShooterFrameworkCore
- SKGShooterFrameworkEditor
Number of Blueprints: In Example Project
Number of C++ Classes: 34
Network Replicated: Yes
Supported Development Platforms: Win64, MacOS, Linux, SteamVR, Oculus
Supported Target Build Platforms: Win64, MacOS, Linux, SteamVR, Oculus
Documentation: https://www.youtube.com/playlist?list=PLnHeglBaPYu9NBH3G9LT8v-4o6qe31xSg
You can contact us at any time and request that the asset you want be added to the site from the Request Asset section.