-
Notifications
You must be signed in to change notification settings - Fork 2
๐ ๏ธ Dev tech stack & skill
๊น๋์ฑ edited this page Dec 4, 2025
·
3 revisions
๐ ๏ธ Development Tech Stack & Skill Documentation
- Project Name: Space Invaders - Software Development Practices
- Course: CES2024 (25-2-23292)
- Type: 2D Arcade Game (Space Invaders Clone)
- Architecture: MVC Pattern + Entity-Component System
-
Java 21 (LTS)
- Language Level: Java 21
- Source/Target Compatibility: Java 21
- Toolchain: Temurin Distribution
- Encoding: UTF-8
-
Gradle 8.14
- Build Tool: Gradle Wrapper
- Plugins:
-
java- Standard Java build tasks -
application- Application execution support
-
- Main Class:
engine.Core
-
JUnit 5 (Jupiter) 5.10.0
- Test Platform: JUnit Platform
- Test Logging: Enabled (passed, skipped, failed events)
-
Java Swing / AWT
- 2D Graphics rendering
- Custom font: Space Invaders Regular
- Sprite-based animation system
-
Custom Audio Manager
- Sound effects (.wav files)
- Background music support
- Located in:
src/audio/
Invaders-SDP-Private/
โโโ src/ # Source code
โ โโโ audio/ # Audio management
โ โโโ engine/ # Core engine
โ โ โโโ DTO/ # Data Transfer Objects
โ โ โโโ level/ # Level management
โ โ โโโ renderer/ # Rendering system
โ โโโ entity/ # Game entities
โ โ โโโ pattern/ # Boss attack patterns
โ โ โโโ skills/ # Player skills
โ โโโ screen/ # UI screens
โโโ test/ # Unit tests
โ โโโ engine/ # Engine tests
โ โโโ entity/ # Entity tests
โโโ res/ # Resources
โ โโโ images/ # Sprite images
โ โโโ maps/ # Level maps
โ โโโ sfx/ # Sound effects
โ โโโ font.ttf # Custom font
โโโ .github/workflows/ # CI/CD configuration
โโโ build.gradle # Gradle build config
โโโ README.md # Project documentation
File: .github/workflows/SDP-ci.yml
Trigger Events:
- Push to
masterbranch - Push to
feature/*branches - Pull requests to
master
Pipeline Steps:
-
Checkout Code -
actions/checkout@v4 -
Setup JDK 21 -
actions/setup-java@v4(Temurin distribution) -
Cache Gradle Packages -
actions/cache@v4- Caches:
~/.gradle/caches,~/.gradle/wrapper
- Caches:
-
Grant Execute Permission -
chmod +x gradlew -
Build & Test -
./gradlew build
CI Features:
- โ Automated build on push/PR
- โ Gradle dependency caching
- โ Automated unit test execution
| Test File | Lines | Purpose | Status |
|---|---|---|---|
GameStateTest.java |
61 | Coin system logic | โ Implemented |
BulletPoolTest.java |
75 | Bullet pooling system | โ Implemented |
ShipTest.java |
183 | Player ship mechanics | โ Implemented |
| Total | 319 | - | 3 test classes |
GameStateTest (5 tests):
- โ
testAddCoins()- Adding coins - โ
testAddNegativeCoins()- Negative coin validation - โ
testDeductCoins_Success()- Successful deduction - โ
testDeductCoins_InsufficientFunds()- Insufficient funds handling - โ
testDeductCoins_Negative()- Negative deduction validation
BulletPoolTest (3+ tests):
- โ Bullet pool management
- โ Object reuse pattern
- โ Performance optimization
ShipTest (8+ tests):
- โ Ship movement mechanics
- โ Collision detection
- โ Health management
- โ Power-up system
- โ Low Coverage - Only 3 test classes for entire codebase
- โ No Integration Tests - Only unit tests
- โ No Boss Pattern Tests - Complex boss patterns not tested
- โ No UI Tests - Screen/rendering not tested
- โ No Performance Tests - No benchmarking
- โ JaCoCo - Code coverage analysis
- โ Checkstyle - Code style enforcement
- โ SpotBugs - Static bug detection
- โ PMD - Code quality analysis
- โ SonarQube - Continuous inspection
plugins {
id 'jacoco'
id 'checkstyle'
id 'com.github.spotbugs' version '6.0.0'
}
jacoco {
toolVersion = "0.8.11"
}
jacocoTestReport {
reports {
xml.required = true
html.required = true
}
}MVC (Model-View-Controller)
- Model:
entity/,engine/ - View:
screen/,engine/renderer/ - Controller:
engine/Core
Strategy Pattern
- Boss attack patterns (
entity/pattern/) - Different boss behaviors interchangeable
Object Pool Pattern
- Bullet pooling for performance
- Tested in
BulletPoolTest
State Pattern
- Game state management
- Screen transitions
Factory Pattern
- Entity creation
- Level generation