Hello Devforum and code guru’s!
I’ve made my own personal framework (that I might share), and I was wondering if a 1.01ms startup time is breaking anyone’s meter for fast?
FYI, the framework includes:
- Smart dependency resolution - Automatic circular dependency detection and handling
- Proper Client/server architecture - Seamless execution on both client and server with automatic detection
- Service/ Controller management - Register, initialize, and manage services/controllers with lifecycle hooks
- Memory management - Automatic cleanup and connection handling to prevent leaks
- Error handling - Error recovery with optional player kick on critical failures
- Debug tooling - Comprehensive logging with performance metrics and timing
- Event system - Built-in signal/event handling for service communication
- Timeout protection - Configurable timeouts to prevent hanging during initialization
- Development utilities - Server folder cleanup and debugging aids for smooth workflow
- Type safety - Fully Typed for a better development experience
Complete API Reference
Core Framework Methods
Registration
Framework:RegisterController(controller)
- Register a client controllerFramework:RegisterService(service)
- Register a server service
Lifecycle Management
Framework:Initialize()
- Initialize all registered modulesFramework:Start()
- Start all modules after initializationFramework:Shutdown()
- Clean shutdown with cleanup
Service Access
Framework:GetService(name)
- Get a service (lazy loaded)Framework:WaitForService(name, timeout?)
- Wait for service with optional timeoutFramework:GetController(name)
- Get a controller (lazy loaded)Framework:WaitForController(name, timeout?)
- Wait for controller with optional timeout
Utilities
Framework:GetMetrics()
- Get performance metrics and timing dataFramework:IsServiceRegistered(name)
- Check if service is registeredFramework:IsControllerRegistered(name)
- Check if controller is registeredFramework:GetRegisteredServices()
- Get list of all registered servicesFramework:GetRegisteredControllers()
- Get list of all registered controllers
Events & Signals
Framework:CreateSignal(name)
- Create a new signal/eventFramework:GetSignal(name)
- Get existing signalFramework:FireSignal(name, ...args)
- Fire a signal with argumentsFramework:ConnectToSignal(name, callback)
- Connect to a signal
State Management
Framework:GetState()
- Get current framework stateFramework:OnStateChanged(callback)
- Listen for state changes
Service/Controller Structure
Required Properties
MyService.Name = "ServiceName" -- Required: Unique identifier
Optional Properties
MyService.Dependencies = {"Service1", "Service2"} -- Services this depends on
MyService.EnableDebug = true -- Enable debug logging for this service
MyService.Timeout = 30 -- Custom timeout for initialization
Lifecycle Methods
function MyService:Init()
-- Initialize phase - dependencies available
end
function MyService:Start()
-- Start phase - all services initialized
end
function MyService:Cleanup()
-- Cleanup when framework shuts down
end
Framework Access
-- Access framework instance from within service
self.Framework:GetService("OtherService")
Configuration Options
CONFIG Table
CONFIG = {
ENABLE_DEBUG = true, -- Enable debug logging
KICK_ON_ERROR = true, -- Kick players on critical errors
KICK_MESSAGE = "Framework loading error. Please rejoin the server.",
CLEANUP_DELAY = 1, -- Seconds before cleanup on client
}
States
Framework States
"IDLE"
- Framework not started"INITIALIZING"
- Currently initializing services"STARTED"
- All services started successfully"RECOVERING"
- Attempting error recovery"SHUTTING_DOWN"
- Framework shutting down
Events
Built-in Events
"ServiceAdded"
- Fired when service is registered"ControllerAdded"
- Fired when controller is registered"StateChanged"
- Fired when framework state changes"InitializeComplete"
- Fired when initialization completes"StartComplete"
- Fired when start phase completes"ShutdownComplete"
- Fired when shutdown completes
Error Handling
Error Recovery
- Automatic retry on service initialization failures
- Graceful degradation when services fail
- Optional player kick on critical client errors
Debug Information
- Detailed timing metrics for each service
- Memory usage tracking
- Dependency resolution logs
(Yes, I used AI for the API reference, its 12am)
If anyone wants to contribute to this upcoming framework, please DM me!
Love you all!