pluginagentmarketplace/custom-plugin-game-developer/game-engines
Trust tier 3
- community
- By pluginagentmarketplace
- Coding
- pluginagentmarketplace/custom-plugin-game-developer
- skills/game-engines/SKILL.md
- Updated 10 Oct 2026
- Version 1.0.0
Source check pending
Checking that the SKILL.md file is still in the repository.
Master game engines - Unity, Unreal Engine, Godot. Engine-specific workflows, systems architecture, and production best practices.
Install
npx vskill@latest install pluginagentmarketplace/custom-plugin-game-developer/game-enginesSKILL.md
Game Engines & Frameworks
Engine Comparison
┌─────────────────────────────────────────────────────────────┐│ ENGINE COMPARISON │├─────────────────────────────────────────────────────────────┤│ UNITY (C#): ││ ├─ Best for: 2D/3D, Mobile, Indie, VR/AR ││ ├─ Learning: Moderate ││ ├─ Performance: Good (IL2CPP for native) ││ └─ Market: 70%+ of mobile games ││ ││ UNREAL (C++/Blueprints): ││ ├─ Best for: AAA, High-end graphics, Large teams ││ ├─ Learning: Steep (C++) / Easy (Blueprints) ││ ├─ Performance: Excellent ││ └─ Market: Major console/PC titles ││ ││ GODOT (GDScript/C#): ││ ├─ Best for: 2D games, Learning, Open source ││ ├─ Learning: Easy ││ ├─ Performance: Good for 2D, Improving for 3D ││ └─ Market: Growing indie scene │└─────────────────────────────────────────────────────────────┘
Unity Architecture
UNITY COMPONENT SYSTEM:┌─────────────────────────────────────────────────────────────┐│ GameObject ││ ├─ Transform (required) ││ ├─ Renderer (MeshRenderer, SpriteRenderer) ││ ├─ Collider (BoxCollider, CapsuleCollider) ││ ├─ Rigidbody (physics simulation) ││ └─ Custom MonoBehaviour scripts ││ ││ LIFECYCLE: ││ Awake() → OnEnable() → Start() → FixedUpdate() → ││ Update() → LateUpdate() → OnDisable() → OnDestroy() │└─────────────────────────────────────────────────────────────┘
csharp
// ✅ Production-Ready: Unity Component Patternpublic class PlayerController : MonoBehaviour{[Header("Movement Settings")][SerializeField] private float moveSpeed = 5f;[SerializeField] private float jumpForce = 10f;[Header("Ground Check")][SerializeField] private Transform groundCheck;[SerializeField] private float groundRadius = 0.2f;[SerializeField] private LayerMask groundLayer;private Rigidbody2D _rb;private bool _isGrounded;private float _horizontalInput;// Cache components in Awakeprivate void Awake(){_rb = GetComponent<Rigidbody2D>();}private void Update(){// Input in Update (frame-rate independent)_horizontalInput = Input.GetAxisRaw("Horizontal");if (Input.GetButtonDown("Jump") && _isGrounded){Jump();}}private void FixedUpdate(){// Physics in FixedUpdate (consistent timing)CheckGround();Move();}private void CheckGround(){_isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundRadius, groundLayer);}private void Move(){_rb.velocity = new Vector2(_horizontalInput * moveSpeed,_rb.velocity.y);}private void Jump(){_rb.velocity = new Vector2(_rb.velocity.x, jumpForce);}}
Unreal Engine Architecture
UNREAL ACTOR SYSTEM:┌─────────────────────────────────────────────────────────────┐│ AActor (Base class for all game objects) ││ ├─ APawn (Can be possessed by controller) ││ │ └─ ACharacter (Has CharacterMovementComponent) ││ ├─ AGameMode (Game rules) ││ └─ APlayerController (Player input handling) ││ ││ COMPONENTS: ││ ├─ USceneComponent (Transform hierarchy) ││ ├─ UStaticMeshComponent (3D model) ││ ├─ UCapsuleComponent (Collision) ││ └─ UCharacterMovementComponent (Movement logic) ││ ││ LIFECYCLE: ││ Constructor → BeginPlay() → Tick() → EndPlay() │└─────────────────────────────────────────────────────────────┘
cpp
// ✅ Production-Ready: Unreal CharacterUCLASS()class MYGAME_API AMyCharacter : public ACharacter{GENERATED_BODY()public:AMyCharacter();virtual void BeginPlay() override;virtual void Tick(float DeltaTime) override;virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override;protected:UPROPERTY(EditAnywhere, Category = "Movement")float WalkSpeed = 600.0f;UPROPERTY(EditAnywhere, Category = "Movement")float SprintSpeed = 1200.0f;UPROPERTY(EditAnywhere, Category = "Combat")float MaxHealth = 100.0f;private:UPROPERTY()float CurrentHealth;bool bIsSprinting;void MoveForward(float Value);void MoveRight(float Value);void StartSprint();void StopSprint();UFUNCTION()void OnTakeDamage(float Damage, AActor* DamageCauser);};// Implementationvoid AMyCharacter::BeginPlay(){Super::BeginPlay();CurrentHealth = MaxHealth;GetCharacterMovement()->MaxWalkSpeed = WalkSpeed;}void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent){Super::SetupPlayerInputComponent(PlayerInputComponent);PlayerInputComponent->BindAxis("MoveForward", this,&AMyCharacter::MoveForward);PlayerInputComponent->BindAxis("MoveRight", this,&AMyCharacter::MoveRight);PlayerInputComponent->BindAction("Sprint", IE_Pressed, this,&AMyCharacter::StartSprint);PlayerInputComponent->BindAction("Sprint", IE_Released, this,&AMyCharacter::StopSprint);}
Godot Architecture
GODOT NODE SYSTEM:┌─────────────────────────────────────────────────────────────┐│ Node (Base class) ││ ├─ Node2D (2D game objects) ││ │ ├─ Sprite2D ││ │ ├─ CharacterBody2D ││ │ └─ Area2D ││ ├─ Node3D (3D game objects) ││ │ ├─ MeshInstance3D ││ │ ├─ CharacterBody3D ││ │ └─ Area3D ││ └─ Control (UI elements) ││ ││ LIFECYCLE: ││ _init() → _ready() → _process() / _physics_process() ││ ││ SIGNALS (Event System): ││ signal hit(damage) ││ emit_signal("hit", 10) ││ connect("hit", target, "_on_hit") │└─────────────────────────────────────────────────────────────┘
gdscript
# ✅ Production-Ready: Godot Player Controllerextends CharacterBody2Dclass_name Playersignal health_changed(new_health, max_health)signal died()@export var move_speed: float = 200.0@export var jump_force: float = 400.0@export var max_health: int = 100@onready var sprite: Sprite2D = $Sprite2D@onready var animation: AnimationPlayer = $AnimationPlayer@onready var coyote_timer: Timer = $CoyoteTimervar gravity: float = ProjectSettings.get_setting("physics/2d/default_gravity")var current_health: intvar can_coyote_jump: bool = falsefunc _ready() -> void:current_health = max_healthfunc _physics_process(delta: float) -> void:# Apply gravityif not is_on_floor():velocity.y += gravity * delta# Handle coyote timeif is_on_floor():can_coyote_jump = trueelif can_coyote_jump and coyote_timer.is_stopped():coyote_timer.start()# Jumpif Input.is_action_just_pressed("jump"):if is_on_floor() or can_coyote_jump:velocity.y = -jump_forcecan_coyote_jump = false# Horizontal movementvar direction := Input.get_axis("move_left", "move_right")velocity.x = direction * move_speed# Flip spriteif direction != 0:sprite.flip_h = direction < 0# Update animation_update_animation()move_and_slide()func _update_animation() -> void:if not is_on_floor():animation.play("jump")elif abs(velocity.x) > 10:animation.play("run")else:animation.play("idle")func take_damage(amount: int) -> void:current_health = max(0, current_health - amount)health_changed.emit(current_health, max_health)if current_health <= 0:die()func die() -> void:died.emit()queue_free()func _on_coyote_timer_timeout() -> void:can_coyote_jump = false
Engine Feature Comparison
FEATURE MATRIX:┌─────────────────────────────────────────────────────────────┐│ Feature │ Unity │ Unreal │ Godot │├───────────────────┼──────────────┼─────────────┼───────────┤│ 2D Support │ Excellent │ Basic │ Excellent ││ 3D Graphics │ Good │ Excellent │ Good ││ Physics │ PhysX/Box2D │ Chaos/PhysX │ Godot ││ Animation │ Animator │ AnimGraph │ AnimTree ││ UI System │ uGUI/UITk │ UMG/Slate │ Control ││ Networking │ Netcode/MLAPI│ Built-in │ ENet/Nakama││ Mobile │ Excellent │ Good │ Good ││ Console │ Good │ Excellent │ Limited ││ VR/AR │ Excellent │ Excellent │ Basic ││ Learning Curve │ Moderate │ Steep │ Easy ││ License │ Revenue-based│ 5% royalty │ MIT Free │└───────────────────┴──────────────┴─────────────┴───────────┘
🔧 Troubleshooting
┌─────────────────────────────────────────────────────────────┐│ PROBLEM: Low frame rate in editor │├─────────────────────────────────────────────────────────────┤│ SOLUTIONS: ││ → Disable unnecessary editor windows ││ → Reduce scene view quality ││ → Hide gizmos for complex objects ││ → Build and test outside editor │└─────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────┐│ PROBLEM: Physics behaving inconsistently │├─────────────────────────────────────────────────────────────┤│ SOLUTIONS: ││ → Use FixedUpdate/_physics_process for physics ││ → Check fixed timestep settings ││ → Avoid moving static colliders ││ → Use continuous collision for fast objects │└─────────────────────────────────────────────────────────────┘
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/game-engines/SKILL.md
Popularity
- Installs
- 2
- Unique users
- 1
- Repository stars
- 21
- Repository forks
- 3
- 7-day trend score
- 15
Installs come from the vskill CLI. Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 8 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/pluginagentmarketplace/custom-plugin-game-developer/game-engines)Something wrong with this skill or its page? Tell us.