TEAM ONBOARDING GUIDELINES
Project: Procedurally Generated Tower Defense Version: 1.0 Last Updated: December 2025
๐ Table of Contents
Overview
This document provides comprehensive guidelines for working on similar projects to the Procedurally Generated Tower Defense project. It ensures code quality, architectural consistency, and smooth team collaboration.
Target Audience
New team members joining the project
Client development teams taking over maintenance
External contributors (if applicable)
Code reviewers ensuring quality standards
Goals
โ Maintain clean, readable, and maintainable codebase
โ Ensure consistent architecture patterns (system-based design)
โ Preserve performance optimizations (+125% FPS)
โ Facilitate smooth onboarding for new developers
โ Enable efficient code review process
Getting Started
Prerequisites
Before contributing, ensure you have:
Required Software:
Unity 2022.3 LTS or newer (Download)
Visual Studio 2022 or JetBrains Rider 2023.3+ (recommended)
Git 2.30+ for version control
Required Knowledge:
C# programming (intermediate level)
Unity fundamentals (GameObjects, Components, Prefabs)
Basic understanding of ECS principles (recommended)
Git workflow (branching, merging, pull requests)
Recommended Reading:
Architecture Handbook - Read first!
Developer Guide - Setup and workflows
Performance Optimization Guide - Performance rules
Development Environment Setup
Step 1: Clone Repository
Step 2: Unity Setup
Step 3: IDE Configuration
Visual Studio 2022:
JetBrains Rider (Recommended):
Step 4: Verify Setup
Code Style & Standards
Naming Conventions
Classes & Structs:
Methods:
Fields:
Properties:
Interfaces:
Constants:
Code Formatting
Indentation:
Use 4 spaces (not tabs)
Configure IDE:
Ctrl+K, Ctrl+D(VS) orCtrl+Alt+L(Rider)
Braces:
Line Length:
Maximum 120 characters per line
Break long method chains into multiple lines
Whitespace:
File Organization
Using Directives:
Class Structure:
Architecture Guidelines
Core Principles
1. System-Based Design
โ ๏ธ CRITICAL: This project uses system-based architecture. DO NOT add Update() methods to entities!
2. Interface-Driven Design
Always use interfaces to define entity capabilities:
3. Separation of Concerns
Entities = Data providers (state + interface implementation)
Systems = Logic processors (batch operations)
Managers = Orchestrators (system lifecycle)
Adding New Features
Adding a New System:
Adding a New Entity Type:
What NOT to Do
โ Never:
Add Update() methods to entities
Use FindObjectOfType() in Update/Tick loops
Use LINQ in hot paths (Update/Tick)
Use string concatenation in frequent calls
Instantiate/Destroy objects (use object pooling)
Use GetComponent() in Update/Tick (cache in Awake)
Git Workflow
Branch Naming
Feature Branches:
Bugfix Branches:
Performance Branches:
Refactor Branches:
Commit Messages
Format:
Types:
feat: New featurefix: Bug fixperf: Performance improvementrefactor: Code refactoringdocs: Documentation changestest: Adding/updating testsstyle: Code style changes (formatting)
Examples:
Pull Request Process
1. Create Feature Branch
2. Make Changes
3. Push to Remote
4. Create Pull Request
PR Template:
5. Code Review
Minimum 1 approval required
Address all review comments
Resolve merge conflicts
6. Merge
Testing Requirements
Unit Tests
Location: Assets/Tests/EditMode/
Example:
Requirements:
โ Test all public methods
โ Test edge cases (null, empty, negative values)
โ Target 75%+ code coverage
Integration Tests
Location: Assets/Tests/PlayMode/
Example:
Performance Tests
Verify NO performance regression:
Before Merge Checklist:
Documentation Standards
Code Comments
When to Comment:
XML Documentation:
Required Documentation:
โ All public methods (XML summary)
โ All public properties (XML summary)
โ Complex algorithms (inline comments)
โ Performance-critical code (explain optimizations)
โ Workarounds (explain why + issue link)
Architecture Documentation
When adding new systems or major features, update:
Architecture Handbook - Add system documentation
Developer Guide - Add API reference
Performance Guide - If performance-related
Performance Guidelines
Critical Rules
โ ๏ธ These rules preserve +125% FPS improvement. DO NOT violate!
Rule 1: No Update() in Entities
Rule 2: No LINQ in Hot Paths
Rule 3: Cache Component References
Rule 4: Use Object Pooling
Rule 5: Use OnEnable, Not Start (for pooled objects)
Profiling Requirements
Before merging performance-related changes:
Baseline Measurement
Record FPS in Wave 7 (standard benchmark)
Record CPU/GPU time in Profiler
Record batch count in Stats window
Change Measurement
Apply changes
Record same metrics
Compare Before/After
Validation
FPS improved or maintained (no regression)
CPU/GPU time reduced or maintained
No new GC allocations
Documentation
Add performance numbers to commit message
Update Performance Guide if significant improvement
Code Review Process
For Reviewers
Review Checklist:
Architecture:
Performance:
Code Quality:
Testing:
Review Timeline:
Respond within 24 hours
Complete review within 48 hours
Approve or request changes with clear feedback
For Authors
Before Requesting Review:
Responding to Feedback:
Address all comments (or provide reasoning)
Push changes as new commits (don't force-push)
Re-request review when ready
Onboarding Checklist
Day 1: Environment Setup
Day 2-3: Codebase Exploration
Week 1: First Contribution
Week 2-4: Full Onboarding
Questions & Support
Getting Help
Documentation:
๐ Architecture Handbook - Design patterns and systems
๐ง Developer Guide - Setup and workflows
โก Performance Guide - Optimization techniques
๐ Sales Deck - Project overview and results
Communication & Support:
All questions, proposals, and discussions: aztoon.lab@gmail.com
Preferred format: Email or direct message (LinkedIn/Telegram/WhatsApp)
Response time: Within 24โ48 hours (weekdays)
Post-project support and minor clarifications are included for 30 days after handover. Extended maintenance available on separate agreement.
Response Times:
Critical bugs: 4-8 hours
Questions: 24 hours
Code reviews: 48 hours
Continuous Improvement
This document is a living guide. Suggestions for improvement are welcome!
How to Suggest Changes:
Create issue with
documentationlabelDescribe proposed change
Explain reasoning/benefits
Submit PR with changes
Document Version: 1.0 Maintained By: Aztoon Lab
Thank you for contributing to clean, performant, and maintainable code! ๐
Last updated