Skip to main content
Glama
gameengines.json5.44 kB
{ "gameEngines": [ { "id": "unreal", "name": "Unreal Engine", "languages": [ "C++", "Blueprints" ], "type": "Game Engine", "features": [ "Rendering", "Physics", "Networking", "AI", "VR/AR" ], "bestPractices": [ "Use UPROPERTY() and UFUNCTION() macros for reflection", "Follow Unreal naming conventions (A/U/F/E/I prefixes)", "Leverage Blueprints for rapid prototyping", "Use GameplayTags for flexible categorization", "Implement proper GC-safe coding patterns" ], "projectStructure": { "Source/": "C++ source files", "Content/": "Assets (meshes, textures, blueprints)", "Config/": "Configuration files", "Plugins/": "Engine and game plugins" }, "patterns": { "ActorComponent": "Modular gameplay logic", "GameMode": "Game rules and state", "PlayerController": "Input handling", "GameInstance": "Persistent game state", "Subsystems": "Global service pattern" }, "cppPatterns": { "UPROPERTY": "Expose C++ variables to editor/blueprints", "UFUNCTION": "Expose C++ functions to blueprints", "UCLASS": "Make class visible to Unreal reflection", "USTRUCT": "Make struct visible to Unreal reflection", "UENUM": "Make enum visible to Unreal reflection" } }, { "id": "unity", "name": "Unity", "languages": [ "C#" ], "type": "Game Engine", "features": [ "Rendering", "Physics", "UI", "Animation", "AR/VR" ], "bestPractices": [ "Separate data from behavior (ScriptableObjects)", "Use object pooling for frequently spawned objects", "Avoid Find() methods in Update loops", "Cache component references in Awake/Start", "Use events instead of Update polling" ], "projectStructure": { "Assets/": "All project assets", "Assets/Scripts/": "C# scripts", "Assets/Prefabs/": "Reusable GameObjects", "Assets/Scenes/": "Game scenes", "Assets/ScriptableObjects/": "Data containers", "Packages/": "Package Manager dependencies" }, "patterns": { "MonoBehaviour": "Component-based design", "ScriptableObject": "Data containers", "Singleton": "Global managers (use carefully)", "ObjectPool": "Performance optimization", "StateMachine": "Game state management" }, "lifecycle": [ "Awake() - Called first, initialize self", "OnEnable() - Called when enabled", "Start() - Called before first Update", "Update() - Called every frame", "FixedUpdate() - Called at fixed intervals (physics)", "LateUpdate() - Called after all Updates", "OnDisable() - Called when disabled", "OnDestroy() - Called before destruction" ] }, { "id": "godot", "name": "Godot", "languages": [ "GDScript", "C#", "C++" ], "type": "Game Engine", "features": [ "2D/3D", "Animation", "Physics", "Networking" ], "bestPractices": [ "Use signals for decoupled communication", "Leverage scene composition over inheritance", "Export variables for inspector editing", "Use groups for batch operations" ] }, { "id": "phaser", "name": "Phaser", "languages": [ "JavaScript", "TypeScript" ], "type": "2D Game Framework", "features": [ "WebGL/Canvas", "Physics", "Animation", "Audio" ], "bestPractices": [ "Use scene structure for game states", "Preload assets in preload()", "Use sprite atlases for performance" ] }, { "id": "bevy", "name": "Bevy", "languages": [ "Rust" ], "type": "ECS Game Engine", "features": [ "ECS", "Rendering", "Hot Reloading" ], "bestPractices": [ "Design with Entity-Component-System pattern", "Use systems for behavior, components for data", "Leverage Bevy's plugin architecture" ] } ] }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/millsydotdev/Code-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server