2. 1주차 진행사항
1. Editor UI
-
모든 에셋의 파일 저장/불러오기 구현 완료.
-
레벨 생성, 오브젝트 생성 및 배치, 컴포넌트 추가 기능 구현 완료.
-
기존 Collider2D 에서 담당하던 충돌 및 이벤트 처리를 전부 PhysX 기능으로 대체함.
-
새로운 에셋이나 타일 오브젝트를 생성하는 기능이 미흡함 - 2주차에 시작 및 스테이지 레벨을 제작하면서 보충 예정.
-
FSM 의 구조 설계 완료 - 실제 컴포넌트로 구현 예정.
2. PhysX 충돌 이벤트 구조
-
충돌 이벤트 함수는 PhysX Actor 컴포넌트에서 함수 포인터로 입력받아 저장하고, 실제 구현은 스크립트에 한다.
-
GameObject 가 PhysX Actor 컴포넌트와 스크립트를 모두 보유하면, 스크립트의 Tick 호출 시 함수를 PhysX Actor 컴포넌트에 최초 1회만 등록한다.
3. FSM 동작 구조
-
State 는 오브젝트의 특정 상태를 정의하는 추상 클래스이며, int, float, Vec4 등 여러 타입의 변수를 vector 컨테이너로 관리한다.
-
매 프레임마다 할 일을 정의하는 Tick 함수가 인터페이스로 있으며, 필요시 Begin/End 함수를 override 해 상태 전환 시 할 일을 정의할 수 있다.
-
FSM Component 는 State 전환 조건인 Trigger 함수와 대상 State 객체 2개를 하나의 구조체로, vector 컨테이너로 관리하며, FinalTick 시점에 모든 Trigger 를 순차적으로 검사한다.
-
스크립트에서 구현된 Trigger 함수를 스크립트의 Tick 에서 등록받아 저장한다.
0. 작업 목록
Object
작업 대상 | 작업 내용 | 작업 현황 |
---|---|---|
Object | 오브젝트를 레벨에 추가하는 기능 | ✅ Completed |
Object | 오브젝트와 프리펩 간 전환 | ✅ Completed |
Object | Object 데이터 및 컴포넌트 저장 및 불러오기 | ✅ Completed |
Asset
작업 대상 | 작업 내용 | 작업 현황 |
---|---|---|
모든 Asset | 파일 저장 및 불러오기 | ✅ Completed |
Mesh | 프리뷰 이미지에서 드래그로 프리뷰 카메라를 조작하는 기능 | ✅ Completed |
Graphic Shader | 셰이더의 각종 옵션(토폴로지, 렌더 도메인, 각 스테이트)을 변경하는 기능 | ✅ Completed |
Compute Shader | 컴퓨트 셰이더의 속성(텍스쳐 또는 상수 데이터) 조정 기능 | ❌ Incomplete |
Prefab | 기존 오브젝트를 프리펩으로 만드는 기능 | ✅ Completed |
Prefab | 프리펩을 레벨에 오브젝트로 배치하는 기능 | ✅ Completed |
Sprite | 새로운 스프라이트를 생성하거나 기존 스프라이트를 편집하는 기능 | ❌ Incomplete |
Flipbook | 플립북에 씬을 추가하거나 제거하는 기능 | ✅ Completed |
Level | 레벨을 새로 생성하고 오브젝트를 추가하는 기능 | ✅ Completed |
State | FSM 컴포넌트와 연계 | ❌ Incomplete |
Component
작업 대상 | 작업 내용 | 작업 현황 |
---|---|---|
모든 Component | 컴포넌트 저장 및 불러오기 | ✅ Completed |
모든 Component | 컴포넌트를 오브젝트에 추가하는 기능 | ✅ Completed |
Collider2D | 컴포넌트 제거 - 충돌 관련 기능 PhysX로 통합 | ✅ Completed |
PhysX | 액터의 각 물리적 속성을 편집하는 기능 | ✅ Completed |
PhysX | 충돌 이벤트 콜백 | ✅ Completed |
FlipbookRender | 플립북의 속성을 편집하는 기능 | ✅ Completed |
FSM | 각 상태와 상태 전환 조건을 편집하는 기능 | ❌ Incomplete |
FSM | State 스크립트를 FSM 에 등록하는 기능 | ❌ Incomplete |
Button | 버튼에 연결할 이벤트 함수를 스트립트로부터 설정하는 기능 | ❌ Incomplete |
기타 작업
작업 대상 | 작업 내용 | 작업 현황 |
---|---|---|
CodeGen | 코드 생성기 추가 - 스크립트 라이브러리의 스크립트 등록 함수 작성 자동화 | ✅ Completed |
Level | 레벨 저장/불러오기/복사 및 상태 전환 구현 | ✅ Completed |
Clone | 복사 생성자 구현 | ✅ Completed |
TileRender | 타일 렌더링 구조 변경 | ✅ Completed |
Transform | 회전 방식을 오일러 회전에서 쿼터니언 회전으로 변경 | ✅ Completed |
AssetMgr | 에셋 타입을 지정하여 파일로부터 직접 로드 해 주는 함수 추가 | ✅ Completed |
AssetMgr | FindAsset 을 Load 로 대체 | ❌ Incomplete |
현재 확인된 문제
오류 대상 | 오류 내용 | 해결 현황 |
---|---|---|
Particle | Play/Stop 전환 중 파티클이 비정상적으로 생성되는 현상 있음 | ❌ Incomplete |
Particle | m_MaxParticle 값이 같을 때 이전 파티클 데이터가 남아있음 | ❌ Incomplete |
Transform | 쿼터니언 회전 문제 - y축 회전 시 90도에서 매끄럽게 전횐되지 않음 | ❌ Incomplete |
ImGui | 다른 PC 에서 실행 시 UI 렌더링에 오차 발생 | ❌ Incomplete |
PhysX | 레벨 Play 도중 Level 변경 시 삭제된 이전 레벨의 오브젝트 충돌 ContactEnd 호출됨 | ❌ Incomplete |