Releases: Overflower706/ovfl-ecs
Releases · Overflower706/ovfl-ecs
Release list
v1.3.0
v1.3.0 - 성능 개선 및 런타임 타입 지원
# ⚡ OVFL ECS v1.3.0 - 성능 개선 및 런타임 타입 지원
대규모 성능 최적화와 런타임 타입 지원으로 한층 더 강력해졌습니다!
## 🚀 주요 개선사항
### ⚡ 성능 대폭 향상
**컴포넌트 쿼리 최적화: O(n) → O(1)**
```csharp
// 기존: 매번 모든 엔티티 순회
// 개선: 컴포넌트 타입별 엔티티 캐시 활용
var entities = context.GetEntitiesWithComponent<PlayerComponent>(); // 즉시 반환
실제 성능 향상
- 1000개 엔티티 기준 100회 조회 시 100ms 이내 완료
- 시스템 수 증가 시에도 성능 저하 없음
- 매 프레임 검색 비용: O(시스템 수 × 엔티티 수) → O(시스템 수)
###🔧 런타임 타입 지원
Entity.AddComponent() 내부 구현 변경
// Before - 복잡한 리플렉션 코드 필요
var methods = typeof(Entity).GetMethods(BindingFlags.Public | BindingFlags.Instance);
// ...복잡한 리플렉션 로직
// After - 간단한 비제네릭 메서드 사용
entity.AddComponent(notifyComponent); // IComponent 타입으로 직접 추가
### 🏗️ 캐싱 시스템
- Dictionary<Type, HashSet<Entity>> 기반 캐시 구조
- 컴포넌트 추가/제거 시 자동 캐시 업데이트
- Entity 이벤트(OnComponentAdded, OnComponentRemoved)와 연동
- 엔티티 제거 시 모든 관련 캐시에서 자동 정리
### 📈 성능 벤치마크
- GetEntitiesWithComponent<T>(): 기존 대비 10-100배 성능 향상
- 메모리 효율성: 중복 검색 제거로 CPU 캐시 효율성 증대
- 확장성: 대용량 엔티티 환경에서도 일정한 성능 보장
### 📦 설치 방법
https://github.com/Overflower706/ecs.git?path=/Packages/com.ovfl.ecs#v1.3.0
### 🔄 마이그레이션 가이드
기존 코드는 완전히 호환됩니다. 추가된 기능들을 점진적으로 적용하세요
전체 변경사항은 CHANGELOG.md를 참고하세요.v1.2.0
v1.2.0 - 시스템 인터페이스 개선
# 🔧 OVFL ECS v1.2.0 - 시스템 인터페이스 개선
더 깔끔하고 사용하기 쉬운 시스템 인터페이스로 업데이트되었습니다!
## 🚨 Breaking Changes
### 📝 메서드명 변경
- `Systems.Add()` → `Systems.AddSystem()` (명확성 향상)
### 🏗️ 시스템 인터페이스 개선
**Context 파라미터 제거 - 더 깔끔한 시그니처**
```csharp
// Before
public class MySystem : ITickSystem
{
public void Tick(Context context) { }
}
// After
public class MySystem : ITickSystem
{
public Context Context { get; set; } // 자동 할당
public void Tick() { } // 파라미터 제거
}
자동 Context 할당
var systems = new Systems()
.AddSystem<MySystem>() // Context가 자동으로 할당됨
.SetContext(context);
### ✨ 주요 개선사항
- 타입 안정성 향상: 컴파일 타임 타입 검사 강화
- 코드 간결성: Context 파라미터 제거로 메서드 시그니처 단순화
- 사용성 향상: 시스템 등록 시 Context 자동 할당
### 📦 설치 방법
https://github.com/Overflower706/ecs.git?path=/Packages/com.ovfl.ecs#v1.2.0
### 🔄 마이그레이션 가이드
1. Systems.Add() → Systems.AddSystem()로 변경
2. 시스템 클래스에 public Context Context { get; set; } 속성 추가
3. 모든 시스템 메서드에서 Context 파라미터 제거
4. 메서드 내에서 this.Context 사용
5. 전체 변경사항은 CHANGELOG.md를 참고하세요.v1.1.0
v1.1.0 - 제네릭 메서드 지원
# 🚀 OVFL ECS v1.1.0 - 제네릭 메서드 지원
사용성과 성능을 크게 향상시킨 업데이트입니다!
## ✨ 새로운 기능
### 🎯 제네릭 메서드 추가
**AddComponent<T>()** - 더 간편한 컴포넌트 추가
```csharp
// Before
entity.AddComponent(new GridComponent());
// After
entity.AddComponent<GridComponent>();
GetEntitiesWithComponent<T>() - 특정 컴포넌트를 가진 엔티티 조회
// 성능 최적화된 for문 사용
var gameEntities = context.GetEntitiesWithComponent<GameStateComponent>();
Systems.AddSystem<T>() - 제네릭 시스템 등록
// Before
Systems.AddSystem(new DataSystem());
// After
Systems.AddSystem<DataSystem>();
### 📈 개선사항
컴포넌트 추가 시 간결한 문법 지원
타입 안전성 향상
성능 최적화된 엔티티 쿼리
### 📦 설치 방법
https://github.com/Overflower706/ecs.git?path=/Packages/com.ovfl.ecs#v1.1.0
### 🔄 마이그레이션 가이드
기존 코드는 그대로 동작하며, 새로운 제네릭 메서드를 점진적으로 적용할 수 있습니다.
전체 변경사항은 CHANGELOG.md를 참고하세요v1.0.0
🎉 OVFL ECS v1.0.0 - 초기 릴리즈
Unity용 학습 친화적인 ECS(Entity Component System) 구현체의 첫 번째 릴리즈입니다!
✨ 주요 기능
🏗️ 핵심 아키텍처
- IComponent 인터페이스: 순수한 데이터 컴포넌트 정의
- Entity 클래스: 컴포넌트 관리 (추가, 제거, 조회, 존재 확인)
- Context 클래스: 엔티티 생성 및 관리
- Systems 클래스: 시스템 등록 및 라이프사이클 관리
🔄 시스템 라이프사이클
ISetupSystem: 초기화 시 한 번 실행ITickSystem: 매 프레임 실행ICleanupSystem: Tick 이후 정리 작업ITeardownSystem: 마무리 시 한 번 실행
🛠️ 개발자 친화적 기능
- 체이닝 메서드:
systems.AddSystem(sys1).AddSystem(sys2) - 타입 안전성: 제네릭을 활용한 컴파일 타임 타입 검사
- 학습 친화적: 복잡한 최적화 없이 ECS 개념에 집중
📦 설치 방법
Unity Package Manager에서 Git URL로 설치:
https://github.com/Overflower706/ecs.git?path=/Packages/com.ovfl.ecs#v1.0.0
🔧 시스템 요구사항
- Unity 2020.3 이상
- .NET Standard 2.1 호환
📚 사용 예시
// 컴포넌트 정의
public class HealthComponent : IComponent
{
public int Health { get; set; }
}
// 시스템 정의
public class HealthSystem : ITickSystem
{
public void Tick(Context context)
{
var entities = context.GetEntities();
// 로직 처리
}
}
// 사용
var context = new Context();
var systems = new Systems()
.AddSystem(new HealthSystem())
.Setup(context);
전체 변경사항은 [CHANGELOG.md]를 참고하세요.