Please note that SILK is currently in its early stages of development and a stable release is not yet available. Feel free to give feedback!
SILK is an intricate game development framework designed to streamline the overall process of game development. With its simple yet effective stage-execution model, the SILK lifecycle enables developers to effectively manage large pieces of code with ease, keeping everything well-organized. This framework is highly versatile and flexible—adaptable to all development workflows and preferences. With the introduction of packages, developers are given the ability to develop code in a non-destructive manner, quickly producing more reliable and predictable results. The framework also includes pre-written packages involving the standard core functionalities for any typical project.
Provides a consistent interface between scripts to access shared data or functionality, avoiding duplication of effort and reducing the amount of code needed to accomplish a particular task, ultimately simplifying the overall process of development
Ensures effective communication between scripts in a controlled manner by having a centralized point of access for data and functionality, reducing the risk of bugs, conflicts, or other inconsistencies in the codebase
Simplifies game development workflows with better organization and flexibility through a highly modular ecosystem, giving the ability to modify different components of the project in a non-destructive manner
I’m glad you brought that up! Firstly, keep in mind that is only a game framework that equips you with the necessary base and provides the infrastructure to write your code. So depending on the project and the different components involved with the game, it generally falls upon the developer to take extra measures against potential exploits. Otherwise, SILK isn’t all that concerned with exploitation since the concerns for security are seemingly irrelevant to its functionality. Barring this, I believe your question is in regard to the Network package that comes included by default with SILK.
Built-in packages are optional packages that the developer can choose to include in their project. SILK fundamentally aims to give full control of the project to the developer. For example, instead of using the Network package that comes by default, say you wanted to use @ffrostfall’s BridgeNet2 instead. As stated in the documentation, external dependencies can be treated as regular packages and including them in your project is as easy as dragging and dropping them in.
In the Network module, communicators can be configured entirely on the server, making sure all the configuration data is hidden locally. When using remotes locally, the server returns a specialized table that only exposes the necessary remote methods for that particular remote. In other words, the client is never trusted with a direct reference to the remote Instance. For any single remote, it will only be received once by the client and the necessary methods can then be executed directly as needed for the rest of the game session. Additionally, all remotes have empty names—making it further difficult for exploiters to directly trigger a remote. These are some of the attempts the package makes at securing client and server communication. Under no circumstances do I claim that the Network package will guarantee security against exploits, but rather, it addresses the common concerns for security and makes minimal attempts at solving some of these issues.
I encourage you to check out the code for the Network package for a complete understanding of how it works!