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 (Downloadarrow-up-right)

  • 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:


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) or Ctrl+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 feature

  • fix: Bug fix

  • perf: Performance improvement

  • refactor: Code refactoring

  • docs: Documentation changes

  • test: Adding/updating tests

  • style: 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:


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:

  1. Baseline Measurement

    • Record FPS in Wave 7 (standard benchmark)

    • Record CPU/GPU time in Profiler

    • Record batch count in Stats window

  2. Change Measurement

    • Apply changes

    • Record same metrics

    • Compare Before/After

  3. Validation

    • FPS improved or maintained (no regression)

    • CPU/GPU time reduced or maintained

    • No new GC allocations

  4. 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:

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:

  1. Create issue with documentation label

  2. Describe proposed change

  3. Explain reasoning/benefits

  4. Submit PR with changes


Document Version: 1.0 Maintained By: Aztoon Lab

Thank you for contributing to clean, performant, and maintainable code! ๐Ÿš€

Last updated