5.0 KiB
5.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is EasyBallistics_C, an Unreal Engine 5.6 plugin that provides realistic ballistics simulation for projectiles. The plugin implements advanced physics calculations including atmospheric effects, material penetration, ricochets, and drag curves.
Build System
This is an Unreal Engine plugin that uses Unreal's build system. The plugin compiles as part of the host project using UnrealBuildTool.
Build Configuration
- Module: EasyBallistics (Runtime module)
- Engine Version: 5.6.0
- Platforms: Win64, Linux, Mac, Android
- Build File:
Source/EasyBallistics/EasyBallistics.Build.cs
Dependencies
- Public: Core
- Private: CoreUObject, Engine, PhysicsCore
Architecture
Core Components
-
AEBBullet (
EBBullet.h/.cpp) - Main bullet actor- Handles physics simulation, atmospheric effects, penetration
- Implements pooling system for performance
- Supports complex ballistics including drag curves, wind effects
- Manages collision detection and material responses
-
UEBBarrel (
EBBarrel.h/.cpp) - Weapon barrel component- Manages firing mechanics (auto, semi-auto, burst, gatling modes)
- Handles ammo cycling and reloading
- Implements spread patterns and muzzle velocity variations
- Supports networked replication for multiplayer
-
UEBMaterialResponseMap (
EBMaterialResponseMap.h) - Material system- Maps physical materials to ballistic responses
- Configures penetration depth, ricochet probability, friction
- Supports different penetration trace types
Key Features
- Realistic Physics: Atmospheric density, temperature, pressure effects
- Mathematical Ballistics: Physics-based penetration using Taylor-Hopkinson and Recht-Ipson models
- Material Penetration: Configurable penetration depth per material with physical material integration
- Ricochet System: Angle-based ricochet probability with energy loss
- Spalling System: Secondary fragment generation on high-energy impacts
- Ballistic Impact Component: Event-driven impact handling with Blueprint events
- Multiplayer Support: Full replication with client-side prediction
- Performance Optimization: Object pooling, LOD systems for high-rate fire scenarios
- Shotgun Support: Multi-projectile spawning with configurable spread
- Editor Integration: Asset factories, smart material recognition, JSON import/export
File Structure
Source/EasyBallistics/
├── EasyBallistics.Build.cs # Build configuration
├── Public/
│ ├── EasyBallistics.h # Module header
│ ├── EBBarrel.h # Barrel component
│ ├── EBBullet.h # Bullet actor
│ └── EBMaterialResponseMap.h # Material response system
└── Private/
├── EasyBallistics.cpp # Module implementation
├── EBBarrel.cpp # Barrel implementation
├── EBBullet.cpp # Bullet implementation
└── [Additional implementation files]
Development Notes
Networking
- Uses Unreal's replication system extensively
- Supports both reliable and unreliable multicast for performance
- Client-side aim prediction for responsive gameplay
Performance Considerations
- Object pooling enabled by default for bullets
- Fixed timestep simulation option for consistent physics
- Configurable trace complexity and collision margins
Physics Integration
- Integrates with Unreal's physics system for impulse application
- Supports both simple and complex collision detection
- Atmospheric model supports Earth-like conditions or custom curves
Documentation Structure
The plugin includes comprehensive documentation in the /docs directory:
Documentation Categories
- Getting Started: Installation and quick start guides
- Core Concepts: Mathematical ballistics, spalling system, impact components
- Tutorials: Step-by-step guides for material setup and advanced weapons
- Advanced Guides: Multiplayer, performance optimization, editor integration
- API Reference: Complete class and function documentation
- Troubleshooting: Common issues and debugging techniques
Key Documentation Files
docs/docs/intro.md- Main introduction and overviewdocs/docs/core-concepts/mathematical-ballistics.md- Physics calculationsdocs/docs/core-concepts/spalling-system.md- Fragment generation systemdocs/docs/tutorials/material-setup-guide.md- Material configuration tutorialdocs/docs/advanced/json-import-export.md- Data import/export toolsdocs/docs/api/bullet-reference.md- Complete AEBBullet APIdocs/docs/api/material-properties-reference.md- Material system API
Documentation Build System
- Uses Docusaurus 2 for static site generation
- Configuration in
docs/docusaurus.config.js - Sidebar structure in
docs/sidebars.js - Supports local development:
npm run startin docs directory