WTF is a proxy? The term proxy means, in programming terms, a method or way to access something "through" another actor.
In this case, we present the functionality of Modiverse (AND large chunks of Unreal Engine) in a number of proxies (all starting with KJMod, given that's the historical name of the game). This means you can implement functionality on top of them, using their SDK's to effectively forget about the complex implementation Modiverse is doing underneath.
Each proxy has a different purpose and exposes a different set of SDK's to any object that inherited from it.
A short introduction to each proxy and what it does:
This is the core logic that executes in custom game-modes. It only runs on the server, it spawned before anything else (except the level the server has loaded) and controls all aspects of players, game flow, etc.
It focus is therefore on managing players and the game-mode flow.
The main work horse of the SDK; this proxy represents the actual player in the world. The game-mode will spawn (your custom game-mode's) player proxy for every player that joins.
The player proxy provides a large amount of Player Events (player spawned, dead, left, damage taken, weapon ammo updates, character models, chat / voice settings and more)
It also provides a huge amount of Player SDK calls that provide actions such as setting the view type, getting cameras, giving and stripping items, ammo adjustments, health, armor, interactions and more)
We should have named this "weapon proxy", but the name has now stuck! This "Gun proxy" is used to allow weapons to interact with players, environments and more! All official guns and weapons use these proxy for they're functionality.
The proxy provides Gun Events that include firing (primary and secondary), reloading, being dropped, equipped, ammo changes and even notification of the player to alter views.
The Gun proxy functions include altering ammo, resetting it and getting clip/magazine information.
The complexity of tools is key to making Modiverse sandbox experience unique and comprehensive. All official tools are made through this proxy and are available in our Github page.
For tools the list of Tool Events is quite extensive. It covers everything from being equipped, to mouse interactions, to custom key bindings and even when items are spawned by them.
Tools also have an extensive list of SDK functions that provide ways to create information panels, settings I/O, history management, showing messages and even register triggers to control props.