UGTK / README
The full repository README, rendered 1:1
UGTK (Unity Games Toolkit)
Summary
The UGTK🛠️ comprises a lot of tools designed for game development🎮 across all platforms, including mobile📱, console🎮, and PC🖥️.
UGTK provides ready-to-use system🕹️ and extendable classes📚 that can be used by both designers and programmers.
It has key components in modern game design not readily available in Unity's functionalities, offering tools for UI manipulation, a state machine manipulation, singleton management, audio systems, pooling system and more. It includes a generic player controller, data saving mechanisms, an actor components system etc, providing a comprehensive solution for advanced game development needs.
Content
Features
Gameplay Systems
Gameplay Systems are comprehensive, code-free solutions designed to cover any gameplay mechanics a game developer wishes to implement in their game.
| Name | Description | Status |
|---|---|---|
| Audio System | Comprehensive audio management for playback control and volume adjustment. | ✅ Completed |
| Pause System | Manages the pause and resume of the game, allowing to pause the game and resume it at any time. | ✅Completed |
| Grid System | Manage gameobject placed in a 2D or 3D grid layout | ✅ Completed |
| Loading System | Manages loading screens and scene transitions, with hooks for progress feedback and events. | ✅ Completed |
| Visual Novel System | Visual novel framework with chapters, dialogues, choices, variables and conditional flows. | 🛠️ In Progress |
| Platform 2D Framework | Ready-to-use 2D platformer framework: player with stats and events, moving platforms, coins, checkpoints, enemies with vision cones, and status power-ups. | ✅Completed |
| Dynamic Track Audio System | Multi-track music system that blends and switches layers based on gameplay states. | ✅ Completed |
| QR Multiplayer System | Local multiplayer helper that generates and reads QR codes to connect player devices. | ✅ Completed |
| Tangram System | Puzzle system for building Tangram-style boards, checking tile combinations and firing events when shapes are correctly assembled. | ✅ Completed |
| Achievement System | System for defining, tracking and rewarding player achievements and progression goals. | ✅ Completed |
| Language System | Global language manager that stores available languages, syncs UI dropdowns and notifies listeners to update localized texts at runtime and in editor. | ✅ Completed |
| Quiz System | Flexible quiz framework with ScriptableObject quiz databases, controllers and UI managers to run linear or random quizzes and evaluate win/lose conditions. | ✅ Completed |
| Tris System | Tic-tac-toe in four variants — classic, matriosca, sliding and inception — with an AI opponent whose difficulty is selectable. | ✅ Completed |
| Tournament System | Tournament framework for managing brackets, users and match progression. | ✅ Completed |
| Checkpoint System | Save points that remember where the player was, and restore them after a death. | ✅ Completed |
| First Person 3D | First-person character controller: movement, look, jump and ground handling, driven from UI or keys. | ✅ Completed |
| Interaction System | Base for objects that react to a 3D collision, with the physics setup checked in the inspector. | ✅ Completed |
| Line Chart (3D) | Line chart rendered in the world rather than on a canvas. | ✅ Completed |
Utility Systems
Utility Systems are versatile solutions designed to streamline production in various scenarios, simplifying the development process for both programmers and designers. There are also a lot of primitive systems useful for build more complex systems
| Name | Description | Status |
|---|---|---|
| Activation System | The Activation System controls GameObject states, enabling activation, deactivation, and toggling for dynamic gameplay scenarios. | ✅Completed |
| Collision System | Manages 2D/3D collisions and detects mouse and touch interactions with customizable behavior. | ✅Completed |
| Event System | Flexible system for managing game events, including listener management, event invocation | ✅Completed |
| LinkOpener System | The LinkOpenerSystem opens URLs in Unity, supporting both web links and deep links to compatible apps. | ✅Completed |
| Pooling System | The Pooling System efficiently manages and reuses GameObject instances. | ✅ Completed |
| RandomicListElements System | The Randomic List Element System manages lists where each element has a unique percentage, ensuring totals equal 100%, with support for locking, syncing, and random selection. | ✅Completed |
| Copy Paste System | The Copy Paste System enhances Unity's Inspector with Copy, Paste, and Clear buttons for efficient string manipulation. | ✅Completed |
| Image Picker | Component that allow in a WebGL build to get an image from user computer | ✅ Completed |
| Time Online System | TimeOnlineSystem is a system that allows you to get the time from a server. | ✅Completed |
| Timing System | Configurable timer counting up, down or unlimited, with time components, threshold and interval events and ready-made UI prefabs. | ✅Completed |
| Interface Founder | Utility class to find all objects that implement a specific interface in the scene, inactive ones included. | ✅Completed |
| Graph System | Generic graph data-structure with nodes, edges, traversal (BFS/DFS) and pathfinding algorithms like Dijkstra and A*. | ✅Completed |
| VFX System | Pooling-based VFX spawner that plays particle and VFX Graph effects once, looping or at intervals, with auto-return and editor-friendly events. | ✅ Completed |
| UGTK Instantiator | Editor utility that adds ready-to-use UGTK prefabs to the scene via the GameObject/UGTK menu for fast system and component setup. |
✅ Completed |
| Counter System | Generic counting utility for timers, scores or any incremental values with events on thresholds. | ✅Completed |
| Range System | Counter subclass that classifies the current value into non-overlapping bands and fires the matching event. | ✅Completed |
| Key Input Action System | Maps keyboard or gamepad input to high-level actions, simplifying input handling and remapping. | ✅ Completed |
| Effectiveness System | Utility to track effectiveness metrics (e.g. success rates) over time, useful for analytics and balancing. | ✅Completed |
| Code Wizard | Editor wizard that automates generation of boilerplate UGTK code and ScriptableObjects. | ✅ Completed |
| Codes Generator | Utility for generating unique codes/keys (for coupons, invites, etc.) with customizable formats. | ✅ Completed |
| Web Param System | Reads and exposes query-string parameters (e.g. from WebGL builds) to drive in-game behaviour. | ✅ Completed |
| UGTK Assembly Manager | Centralizes references to UGTK assemblies and modules, easing setup and dependency tracking. | ✅ Completed |
| Texture Resizer System | Resizes textures at runtime or in editor, useful for optimization and dynamic thumbnails. | ✅ Completed |
| Desktop Window Controls | Quit, full-screen toggle and minimize for desktop builds. | ✅ Completed |
| Video View System | Plays local or remote video on a UI RawImage, with a WebGL prefetcher that caches the file in the browser's Cache Storage. | ✅ Completed |
| Level Streaming System | Additive async scene load/unload with events on every stage, plus a distance/visibility optimization pass on a list of target objects. | ✅Completed |
| Input Compatibility | UGTKInput: drop-in replacement for UnityEngine.Input that works with the legacy Input Manager and the new Input System alike. |
✅Completed |
| FPS Limiter System | Caps the frame rate from a component: target FPS, VSync and physics tick rate handled together. | ✅Completed |
| Hierarchy Overwritten | Editor-only Hierarchy overlays: row colours, name rules, Tag/Layer and component badges, separators, visibility and lock toggles. | ✅Completed |
| Invisibile Mouse System | Keeps the cursor permanently hidden on Editor, Standalone and WebGL (with its own .jslib for the browser canvas). |
✅Completed |
| GameObject Editor System | Editor tools for inspecting and batch-editing GameObjects in complex scenes. | ✅Completed |
| Folder Path System | Centralized management of folder paths used by other systems (saves, logs, exports, etc.). | ✅Completed |
| Vibration System (Utility) | Utility wrapper to trigger vibration/haptic feedback from non-mobile-specific contexts. | ✅Completed |
| Replace Special Word | Substitutes tokens inside a text template with values supplied at runtime. | ✅ Completed |
Libraries Extensions
The library extensions part provides the use of modules with static function libraries that extend classic objects such as game objects or lists. | Name | Description | Status | |-----------------|-------------------------------------------|----------------| | GameObject Extension | Extension class for GameObject providing additional functionality. | ✅Completed | | List Extension | Provides extension methods for List objects. | ✅Completed | | AnchorsLibrary | Tool for setting the anchor of a UI using predefined presets. | ✅ Completed | | Sprite Base64 Extension | Helper methods to convert sprites and textures to and from Base64 strings. | ✅Completed |
Algorithms Module
The Algorithms Module provides a set of core algorithms that enable efficient operations on data structures such as lists or graphs, including sorting, searching, and optimization techniques.
| Name | Description | Status |
|---|---|---|
| ReorderSystem | Utility system that allows you to reorder elements in a list | ✅Completed |
Ui Module
The Ui Module group offers ready-made solutions for any user interface needs.
| Name | Description | Status |
|---|---|---|
| Dashboard System | Modular dashboard UI for displaying tables, KPIs and widgets bound to data sources. | ✅ Completed |
| Line Chart System | Configurable line chart component for plotting values over time or categories. | ✅ Completed |
| Text Updater System | TextUpdaterSystem dynamically updates Unity UI text with TextMeshPro, reflecting real-time variable values from MonoBehaviour components. | ✅Completed |
| TMP Line Balancer | Utility for enforcing hard line breaks and balanced lines in TextMeshPro text. | ✅Completed |
| TMP CapsLock System | Components to force uppercase, lowercase or capitalized text in TextMeshPro fields. | ✅Completed |
| TMP Partial Bold | Applies bold formatting to selected parts of a TextMeshPro label via markers or segments. | ✅ Completed |
| Mouse Over System | Change mouse icon when over an UI with this system. | ✅Completed |
| Click Effect Button | UI button press feedback: hides shadow/outline and shifts RectTransform by a fixed offset on press. | ✅Completed |
| Jelly System | Continuous idle squash/stretch (jelly) animation for UI or world transforms. | ✅ Completed |
| Slider System | Manages to change the value of the slider with animation | ✅Completed |
| Coroutine Timer Slider System | Timer slider components (linear and circular) driven by coroutines with events on completion. | ✅Completed |
| Screen Chooser System | Manages switching between multiple UI screens or panels with simple API. | ✅Completed |
| Blur System | UI blur effects controller for backgrounds and panels. | ✅ Completed |
| Camera Shake System | Component to shake the camera or UI canvas for feedback effects. | ✅Completed |
| Gradient System | Multi-stop gradients on any UI Graphic (linear, radial, corner) plus a gradient overlay for images, with gamma compensation. |
✅Completed |
| Fade Controller System | Controls fade-in/out of UI elements or full-screen overlays. | ✅Completed |
| Leaderboard System | Displays a list of users and their scores, sorted in order. | ✅ Completed |
| Layout AutoResize | Auto-resizing UI layout components that manage grid/horizontal/vertical children and resize their parent while firing events on add, remove and clear operations. | ✅ Completed |
| Auto Scroll System | Automatically scrolls a ScrollRect at a constant speed with pauses at each edge (ping-pong / loop / once), on either axis, reacting to Layout AutoResize list changes. Used for leaderboards. | ✅Completed |
| TextAnimatorUGTK | Per-character TextMeshPro animation from one component: persistent/appearance/disappearance tags, 35+ built-in effects, modifiers (=,*,+,flags), per-effect stagger, typewriter with inline actions & events, accessibility. A Text Animator-class system, inspector-driven. | ✅ Completed |
| Raw Image Preserve Aspect | Ensures RawImage content keeps its aspect ratio when resized. |
✅Completed |
| Responsive Layout System | Responsive layout helpers to adapt UI to different aspect ratios and resolutions. | ✅ Completed |
| Dropdown Extension | Extra behaviours and events for standard dropdowns. | ✅Completed |
| Element Cycler System | Cycles through a list of UI elements or sprites with next/previous controls. | ✅Completed |
| Char Limiter System | Limits and visualizes the remaining characters in input fields or text areas. | ✅Completed |
| Drawing System | 2D drawing canvas system for pointer/touch drawing and saving strokes. | ✅ Completed |
| Keyboard System | Keyboard on screen that allow the mouse/touch only to type on a inputfield | ✅ Completed |
| Area Handles System | UI element that can be move and resized in Game | ✅Completed |
| Message System | Lightweight popup/message UI system with queues and callbacks. | ✅ Completed |
| QR Generator | Generates QR codes into UI images for links, invites or session IDs. | ✅ Completed |
| Text Typer System | Component that display text on screen with typing—revealing effect | ✅Completed |
| Toggle Extension | Extra events and behaviours for toggle groups. | ✅Completed |
| Resolution System | Changes the player's resolution and reports what the platform actually applied. | ✅ Completed |
| Scene System | Loads a scene from a UnityEvent, with an edit-time check that it is in the Build Settings. | ✅ Completed |
Data Systems
Data Systems provide implementations that enable versatile data management solutions.
| Name | Description | Status |
|---|---|---|
| Database System | Flexible Unity DB management | ✅ Completed |
| Dictionary System | UGTK's Dictionary System enhances serializable dictionaries with key/value operations. | ✅Completed |
| Save System | Designed to save data from the game by storing key-value to be later on saved in the main memory. | ✅ Completed |
| Table Management System | Tools for managing table-like data (e.g. CSV) and mapping it into UGTK data structures. | ✅Completed |
Component Module
The Component Module is a collection of various components essential for game development. A component is defined as a child GameObject of another GameObject, capable of adding additional functionality to the parent GameObject.
| Name | Description | Status |
|---|---|---|
| Generic Component | Provides the base classes and structure for all components. | ✅Completed |
| Movement Component | Components for controlling object movement: speed, direction, bounds, and coordinate limits. | ✅Completed |
| Rotation Component | The Rotation Component allows customizable game object rotation with animation curves, supporting continuous or timed rotations and event triggers. | ✅Completed |
| Jump Component | The Jump Component manages advanced jump mechanics, supporting multiple jumps, cooldowns, and dynamic interactions for 2D and 3D environments. | ✅ Completed |
| Dash Component | Enables a dash action for characters, temporarily boosting their movement speed. | ✅ Completed |
| Follow System | Implements follow behaviors for game objects, supporting 2D and 3D targets, as well as mouse and touch input | ✅Completed |
| Ping Pong Movement Component | Provides a flexible system for move between points | ✅Completed |
| Resource Component | Component for managing object resources such as health, energy, mana or custom values, with support for runtime updates, limits and system integrations. | ✅ Completed |
| DragDrop System | Drag and Drop System for UI uses a state machine for smooth interactions and includes drag events, state transitions, and pooling. | ✅Completed |
| Snap Component | The Snap Component System snaps the object to the last collided object upon TriggerSnap, using specific tag collisions. | ✅ Completed |
| Damage System | The Damage System manages game object damage, offering advanced functions for applying damage, healing, controlling vulnerability, and event management. | ✅ Completed |
| Shooting System | The Shooting System manages shooting mechanics, ammo handling, reloading, and projectile management using efficient pooling for performance. | ✅ Completed |
| Level System | Level system for managing player levels and experience points, with differenct type of progression. | ✅ Completed |
| Persistent Component | The Persistent component that allow a gameObject to have one or multiple component with same owner name | ✅ Completed |
| Collider AutoResize Component | Automatically resizes 2D box or capsule colliders on the owner to match the RectTransform size of a referenced UI element, both in play mode and in editor. | ✅ Completed |
| Flip Component | Component for flipping sprites or objects along axes, useful for 2D character facing or UI mirroring. | ✅Completed |
Design Patterns
Design Patterns are a set of pre-implemented and fully functional classes that embody the fundamental design patterns of object-oriented programming.
| Name | Description | Status |
|---|---|---|
| Singleton | Singleton module ensures a single Unity class instance | ✅ Completed |
| State Machine | The State Machine manages state transitions, defining states and conditions for control over state changes | ✅ Completed |
| Command | Command module encapsulates actions as objects, enabling parameterized actions, undo/redo functionality, and macro commands. | ✅ Completed |
Mobile
Mobile Systems are exclusively designed for use within a mobile context, adding essential functionalities that are not natively available in Unity for mobile development.
| Name | Description | Status |
|---|---|---|
| GestureSystem | Gesture System detects and manages mobile touch gestures in Unity, triggering events for taps, swipes, pinches, and more. | ✅Completed |
| Motion System | Accesses and normalizes device motion/accelerometer data for gameplay and UI effects. | ✅ Completed |
API
| Name | Description | Status |
|---|---|---|
| EmailSender | EmailSender is a system that allows you to send emails from your game. | ✅ Completed |
| ImagePhpManagment | ImagePhpManagment is a system that allows you to upload images to a server. | ✅Completed |
| PhpConnectionSystem | PhpConnectionSystem is a system that allows you to connect to a server and send data. | ✅ Completed |
| Leaderboard Api System | Server-side leaderboard management for submitting and fetching ranked scores. | ✅ Completed |
| OAuth Email Api | Email sending system using OAuth-based authentication flows. | ✅ Completed |
| Tickets Api | Generates and validates ticket codes, integrating with backend APIs. | ✅ Completed |
| WebSockets System | WebSocket client/host wrappers for real-time communication with servers. | ✅ Completed |
| Connection System | Detects whether the device is online and how strong the connection is (latency → 0..4 level), with bundled signal-bar icons and events. | ✅ Completed |
Installation
- Follow the tutorial for installation and use the link below:
https://github.com/MarcelloDeBonis/UGTK.git
UGTKengine within an engine