The Multimedia Update – Cinemas, TVs, and Animations

Video Players

Multimedia Update Release

The biggest update since 1.0 released today. The Multimedia Update covers everything from video players, to custom animations, and more powerful modding capabilities. You’ll find something to love in this update whether you’re an admin, creator, or a distinguished anime enjoyer.

Working Video Players, TVs, Cinemas

Cinema

Video players are officially supported in 1.2 now. You’ll find usable video players not only in the new Cinema interior, but also on all Displays and TVs. The official implementation supports direct MP4/WEBM links, but there are already plugins supporting YouTube and more. SploeCyber has a good YouTube plugin on the Workshop. Just be sure to set the new permissions in your groups.json correctly!

Synced Animations

Ferris Wheel

Animators are now fully synced across the network. This is really important where animators affect positions, rotations, or other physical effects. Animators are very useful for dynamic mods so it’s supported for any Entity type as long as the Animator reference is assigned and ‘Sync Animator’ is checked on your mod. The Ferris Wheel is now fully animated and rideable to serve as an example in the BPResources modding package.

Dynamic Actions and Modding

Car Animations

Animators are fun and all, but they’re way more useful when you have actions to trigger them. A new set of methods to add and remove action menu items are now available. See the changelog for the full API. These actions are handled in your plugins and can do virtually anything. You’ll find action menus are now scrollable to handle many more options on items. The Jobs implementation in GameSource has been converted to use the new Actions API to show how it can be utilized.

Text Panel API

Text Panel API

TextPanels before 1.2 were quite limited. They didn’t offer any rich text or color options, and any kind of input wasn’t supported for a long time due to mobile limitations. But now all these features are here. A dropdown list of options can be sent, as well as the ability to Destroy panels with a specific ID (in case another plugin took over and your existing panel was already cleaned up without notification). A simple /coinflip command is provided to test out and give modders an idea how this API might be implemented.

New Animal Jobs and Modding

Retriever

Tons of other changes made it into this update, much more than I could cover in a single post. You’ll find new support for Animal Jobs, along with a much easier to modify jobs JSON file. Mods can now set a ‘referencePrefab’ field in order to copy assets from another prefab but without replacing it. Useful in case you want to make a more powerful gun, or a faster car variant but keeping the original prefabs intact. World Builder has also seen a ton of Quality of Life improvements you’ll see in the changelog.

Note Google Play only supports Android 10+ apps now. But I’ll always keep an updated Android 7+ APK at Broke Protocol Downloads.

Here’s the full v1.2 changelog:

v1.2 Multimedia Update Changelog

  • Added new VideoPlayer entity (fully scalable with dynamic volume)
  • Added working Cinema interior to Default map (thanks Yurri)
  • Added Video Panel menu to Computers/Laptops/TVs
  • Added SignExit and SignNoSmoking objects
  • Players will now sit in the closest seat when entering vehicles
  • Seat position can be changed by pressing Jump or Crouch
  • Able to mod more entity types now (AudioPlayer, Splines, Waypoints, etc)
  • Mobs can get jobs too if the new characterType property on JobInfo matches
  • Added new Retriever job to GameSource and Default map (with new hat for mobs)
  • Multi-Plugin Jobs support: JobsAdditive (new jobs) JobsOverride (replace defaults)
  • Job metadata extracted to a JSON file in the game directory for easier modding
  • Support for synced Animators on mods (assign Animator and check ‘Sync Animator’ field)
  • Old Player mods must re-assign Animator reference on ShPlayerProperties and re-export
  • Added mountable FerrisWheel as a synced Animator example
  • All emergency lights now use Animators (old mods may have to reconfigure sirens)
  • Swim animation now set correctly if spawned/activated on water
  • Extra speedhack checks and also validate player rotation in addition to position
  • Added initiator player as a parameter to PlayerRestrain/PlayerUnrestrain events
  • Removed client-side checks on Suicide (Server DestroySelf event handles everything)
  • Send relative delta updates for much more accurate on-water/vehicle physics
  • Fixed time desync bug (affected things from movement to hit-registration)
  • Simplified and optimized handling of RigidBody and ground check updates
  • Fixed world bounds calculation (and action range checks) for scaled entities
  • Fixed some Scalable type entities missing scale controls in Builder
  • Fixed collider error on FloorEdge prefabs
  • All AudioSources set to 128ft maxDistance (FixPrefab script will set this)
  • World Builder: Must now hold Ctrl to enable snapping
  • World Builder: Shift/Ctrl while dragging will now Add/Remove from selections
  • World Builder: Door connections reverse auto-connect when one is assigned
  • World Builder: Better placement for new objects (ignore ceilings/backfaces)
  • World Builder: Position tool gizmo is now always World-aligned
  • World Builder: Mods now organized into sub-folders
  • New Dynamic Action Menu methods (see GameSource Jobs implementation for usage)
  • -ShEntity.SvAdd/RemoveDynamicAction(eventName, label)
  • -ShPlayer.SvAdd/RemoveSelfAction(eventName, label)
  • -ShPlayer.SvAdd/RemoveTypeAction(eventName, type, label)
  • New DestroyMenu function with optional menuID parameter
  • TextPanels can now have a dropdown menu with optional buttons
  • TextPanels will now parse shorthand color codes
  • ShowTextPanel(text) -> SendTextPanel(text, menuID, options)
  • HideTextPanel() -> DestroyTextPanel(menuID)
  • Added example /coinflip command to GameSource to show new TextPanel API
  • Fixed ToyCat/ToyMouse naming error
  • Deployed Parachutes keep forward velocity from player
  • Vehicle minSteeringAngle calculated in-engine instead of exposed
  • GetRandom() extension method now safer and works on any ICollection type
  • Fixed hitscan and visibility checks to always use proper masks and range
  • NPCs will equip/wear correct job specific items after restocking
  • Fixed rare seating position desync when players come back into network range
  • Added serverside restraint check before dismounting vehicles
  • Unique Device ID is sent with on Register/Login with ConnectionData (for plugins)
  • New Custom Profiles/Videos Setting toggle added
  • Profile URLs must use full URL now (any domain, just https required)
  • New GameSource event: PlayerSetEquipable
  • SvPlayer.SvSetEquipable uses ShEquipable reference instead of index
  • Slightly reduced AI air traffic to prevent collisions
  • Added new adjustable Framerate Limit in Settings menu
  • New ‘referencePrefab’ modding property to copy instead of replacing default entities
  • Fixed bug where Firefighters weren’t rewarded when putting out fires
  • Fixed completely messed up consumable boosts/nerfs
  • Action menus are now scrollable
  • Better error handling with reading server files
  • Improved motorcycle physics and colliders
  • Reduced memory allocations on syncing animators and inventories
  • Mobile input fixes and changes
  • Fixed server crash related to votekicking
  • Fixed random mobs getting human jobs
  • Use Unity’s internal Newtonsoft package to avoid conflicts
  • Fixed Copying MeshCollider when overriding/referencing default assets
  • Update to latest Game Engine release

See you!

-Benz

Official Discord