First off, thank you for considering contributing to AgriSim! 🎉
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Style Guidelines
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
- Unity 2022.3 LTS or later
- Git with LFS support
- Basic knowledge of C# and Unity
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/AgriSim.git cd AgriSim - Open in Unity Hub and let it import
AgriSim/
├── Assets/AgriSim/ # Main game assets
│ ├── Scripts/ # C# scripts (namespace: AgriSim)
│ ├── Scenes/ # Unity scenes
│ ├── Art/ # Sprites, animations
│ ├── Audio/ # Sound effects, music
│ └── Prefabs/ # Reusable game objects
├── ProjectSettings/ # Unity project settings
└── Packages/ # Package dependencies
| System | Location | Description |
|---|---|---|
| GameManager | Scripts/GameManager.cs |
Central game coordinator |
| PlayerController | Scripts/PlayerController.cs |
Player input & movement |
| InventorySystem | Scripts/InventorySystem.cs |
Item management |
| DayCycleHandler | Scripts/DayCycleHandler.cs |
Time & lighting |
| WeatherSystem | Scripts/WeatherSystem.cs |
Weather effects |
feature/your-feature-name- New featuresfix/bug-description- Bug fixesdocs/what-you-documented- Documentationrefactor/what-you-refactored- Code refactoring
Use Conventional Commits:
feat: add new crop type (tomatoes)
fix: resolve inventory overflow bug
docs: update README with new controls
refactor: simplify terrain manager logic
- Test your changes in Unity Editor
- Ensure no console errors or warnings
- Push to your fork
- Open a Pull Request with:
- Clear description of changes
- Screenshots/GIFs (for visual changes)
- Reference to related issues
namespace AgriSim
{
public class ExampleClass : MonoBehaviour
{
// Private fields: m_ prefix, camelCase
private int m_ExampleValue;
// Public properties: PascalCase
public int ExampleValue => m_ExampleValue;
// Methods: PascalCase
public void DoSomething()
{
// Local variables: camelCase
var localVar = 10;
}
}
}- Use
[SerializeField]for inspector-exposed private fields - Prefer
ScriptableObjectfor shared data - Cache component references in
Awake()orStart() - Use object pooling for frequently spawned objects
- Open
Assets/AgriSim/Scenes/Loader.unity - Press Play in Unity Editor
- Test affected gameplay systems
- Check Unity Console for errors
Open a Question Issue or reach out via the links in the README!
Happy Contributing! 🚜🌻