1) 이번 주 가장 인상 깊었던 배움
- 디자인 패턴 학습
옵저버 패턴, 팩토리 패턴, 이벤트 버스, 상태 패턴(FSM 비교 포함), 커맨드 패턴, 전략 패턴, 중재자 패턴을 Unity 예시 코드로 구현하며 개념과 활용 방법을 정리했다.
특히 상태 패턴과 FSM의 차이를 직접 코드로 확인하며, 상황별로 어떤 구조를 쓰는 것이 유지보수와 확장성 측면에서 유리한지 감을 잡았다. - Unity Input System 이해 심화
InputAction.CallbackContext.phase가 입력 상태 변화 시점에만 호출된다는 점을 이해했고, 지속적인 행동(달리기, 스태미나 소모)은 Update()와 상태 플래그로 처리해야 한다는 것을 알게 됐다.
이를 1인칭 이동 시스템과 3인칭 오비트 카메라 전환 작업에 적용했다. - 플레이어 컨트롤 시스템 개선
카메라 피벗과 캐릭터 회전을 분리해 스트레이프 이동이 가능하도록 변경했고, 마우스로만 시야를 제어하도록 구현했다.
1인칭 시점에서 3인칭 시점으로 전환하며 줌, 카메라 충돌 보정, 시야각 제한 등 다양한 기능을 적용했다. - 현대세계: 최후의 궁수 프로젝트 마무리
팀 프로젝트의 마지막 주로, 스킬/업그레이드 시스템과 몬스터 스폰 매니저 구현을 마무리했다.
각 기능을 통합하고 최종 버그 수정, UI/사운드 조정까지 완료하며 빌드 테스트까지 진행했다.
프로젝트를 마치면서 협업 과정에서의 커뮤니케이션과 GitHub 브랜치 전략의 중요성을 다시 한번 느꼈다.
2) 그 배움을 얻기까지 어떤 어려움이 있었나요?
- 디자인 패턴 적용의 난이도
패턴 자체 개념은 이해했지만, Unity 환경에서 구체적으로 적용하려다 보니 GameObject, 컴포넌트 구조와 어떻게 결합해야 하는지가 쉽지 않았다.
특히 상태 패턴과 FSM을 비교하며 설계하려니, 상태 전환 로직과 Update 흐름 관리에서 혼동이 있었다. - Input System의 한계 이해
기존에는 OnRun 같은 콜백 메서드 안에서만 처리하려다 보니, Shift를 누른 순간 한 번만 실행되고 계속된 입력이 반영되지 않는 문제가 있었다.
이 구조를 개선하려고 상태 플래그 + Update() 방식을 도입하는 과정에서 입력 상태 관리 코드를 전반적으로 수정해야 했다. - 1인칭 → 3인칭 전환 시 충돌
카메라 전환 후에도 기존 1인칭 로직이 일부 남아 있어, 캐릭터가 이동할 때 카메라도 같이 회전해 버리는 문제가 있었다.
이를 해결하려면 이동과 시야 제어를 완전히 분리해야 했고, 관련 코드를 리팩토링하는 데 시간이 꽤 걸렸다. - 팀 프로젝트 막바지 통합 작업
현대세계: 최후의 궁수 프로젝트의 마지막 빌드 과정에서, UI와 사운드 타이밍이 어긋나거나 몬스터 스폰 타이밍이 잘못되는 문제가 발생했다.
각자 구현한 기능을 통합하면서 충돌이 많았고, GitHub 브랜치 병합 후 테스트 과정에서 예상치 못한 버그를 여러 번 수정해야 했다.
3) 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었나요?
- 개념 이해보다 적용이 더 어렵다는 걸 다시 한번 느꼈다. 디자인 패턴이나 Input System 같은 기술은 책이나 문서로만 볼 때는 단순해 보이지만, 실제 프로젝트 상황에 맞게 녹여내는 과정에서 많은 변수가 생긴다.
- 특히 Unity에서는 객체지향 설계와 게임 오브젝트 구조가 맞물려야 유지보수하기 좋은 코드가 된다는 걸 배웠다. 단순히 “작동하는 코드”가 아니라, 앞으로도 수정하기 편한 코드를 만드는 것이 중요하다고 생각하게 됐다.
- Input System 문제를 해결하면서, 프레임 기반(Update) 처리와 이벤트 기반 처리의 차이를 명확히 구분하게 됐다. 덕분에 앞으로는 입력 구조를 설계할 때 이 두 가지 흐름을 처음부터 고려할 수 있을 것 같다.
- 팀 프로젝트 막바지에는 기능을 붙이는 것보다 협업과 조율이 더 어렵다는 걸 실감했다. 기능을 합칠수록 충돌이 많아지고, 의도치 않은 버그가 생기는 과정에서 팀원과의 소통이 정말 중요했다.
- 마지막 빌드를 마쳤을 때, 아쉬움도 있었지만 “이제는 이런 규모의 프로젝트를 처음부터 끝까지 완주할 수 있다”는 자신감이 생겼다.
4) 메모 (느낀 점, 다짐)
이번 주는 새로운 기술을 배우는 것보다 배운 것을 실제로 녹여내고 마무리하는 주였다.
디자인 패턴, Input System, 카메라 전환 등 각각 따로 보면 어렵지 않아 보이지만,
실제 프로젝트 상황에 맞춰 적용하려니 예상치 못한 문제와 구조상의 제약이 많았다.
특히 팀 프로젝트를 완주하면서, 기능 구현보다 중요한 건 협업과 일정 관리라는 걸 다시 느꼈다.
코드 품질과 구조 설계를 미리 잘 잡아놓아야 막판 통합 과정에서 버그와 충돌을 최소화할 수 있다는 교훈도 얻었다.
다음 주에는 이번에 익힌 구조와 패턴을 개인 프로젝트에도 적극적으로 적용해,
기능뿐 아니라 유지보수성과 확장성을 갖춘 코드를 작성하는 습관을 들이고 싶다.
“빨리”보다 “오래” 가는 개발을 목표로 한 주를 보내겠다. 💪
📅이번주 TIL 목록
내일배움캠프 26일차 TIL [팀프로젝트(Archero)]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 11:00 : StageChangeTrigger 조건문 로직 디버깅11:00 ~ 12:30 : MonsterSpawnManager 개선 (스폰 포인트별로 몬스터 순차 소환 / 프리팹 랜덤)🍽️ 점심시간13:00 ~ 14:00 : 점심시
dev-jen.tistory.com
내일배움캠프 27일차 TIL [팀프로젝트 마무리 + 발표]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 13:00 :프로젝트 시연 영상 2종 촬영GitHub README 파일 최종 수정결과보고서 최종 점검프로젝트 기능 최종 확인 및 점검최종 발표 준비 진행🍽️ 점심시간13:00 ~ 14:
dev-jen.tistory.com
내일배움캠프 28일차 TIL [Input System과 디자인 패턴 정리]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 10:00 : 팀원들과 나머지 인사 및 소통 시간10:00 ~ 10:30 : Unity 숙련 주차 발제 강의 수강10:30 ~ 11:00 : 팀원들과 추가 인사 및 친목 시간11:00 ~ 13:00 : 개인 프로젝트 3D_
dev-jen.tistory.com
내일배움캠프 29일차 TIL [인벤토리 시스템 구현]
🗓️ 오늘 하루 일정✅ 오전09:00 ~ 13:00 : 3D 서바이벌 프로젝트 진행 (인벤토리 시스템 구현 및 디버깅)ItemData 구조 점검[System.Serializable] 누락 문제 해결inventoryWindow.activeInHierarchy 활용한 UI 상태 확
dev-jen.tistory.com
내일배움캠프 30일차 TIL [Project_Up]
📝 TIL - 2025년 8월 8일 (금)🗓️ 오늘 하루 일정✅ 오전09:00 ~ 13:00 : 3D 서바이벌 프로젝트 개발플레이어 애니메이션 시스템 설계 및 구현Blend Tree 애니메이션 전환 테스트 및 디버깅PlayerAnimation, Pla
dev-jen.tistory.com
📅이번주 Study 목록
Unity - Unity의 메인 카메라(Main Camera) & Projection
🎥 Unity의 메인 카메라(Main Camera)란?✅ 1. 기본 정의Unity 씬(Scene)에서 **플레이어가 보는 시점(Viewport)**을 결정하는 렌더링 카메라기본적으로 Main Camera 태그를 가진 GameObject로 자동 생성됨Camera.main
dev-jen.tistory.com
프로젝트 소개 - 「현대세계 최후의 궁수」
🎮 1. 게임 소개이번 프로젝트는 '궁수의 전설(Archero)'에서 영감을 받아 제작한 탑다운 슈팅 기반의 액션 게임입니다.현대 세계를 배경으로, 마지막 남은 궁수가 되어 적들을 물리치고 스테이지
dev-jen.tistory.com
Unity - Input System - InputAction
🎮 Unity Input System - InputAction 완전 정복1. 🧭 InputAction이란?InputAction은 Unity의 새 Input System에서 사용자의 입력을 추상화하여 "행동" 단위로 정의하는 구성 요소입니다.예를 들어 Jump, Move, Shoot 같은
dev-jen.tistory.com
DesignPattern - 옵저버(Observer) 패턴
🔭 Unity 디자인 패턴 - 옵저버(Observer) 패턴1. 옵저버 패턴이란?옵저버(Observer) 패턴은 어떤 객체의 상태가 변경될 때, 그 객체를 "구독"하고 있는 다른 객체들에게 자동으로 알림을 보내는 구조입
dev-jen.tistory.com
DesignPattern - 팩토리(Factory) 패턴
🏭 Unity 디자인 패턴 - 팩토리(Factory) 패턴1. 팩토리 패턴이란?팩토리(Factory) 패턴은 객체의 생성 과정을 감추고, 생성 책임을 별도의 팩토리 클래스에 위임하는 디자인 패턴입니다. Unity에서는 다
dev-jen.tistory.com
DesignPattern - 이벤트 버스(Event Bus) 패턴
📡 Unity 디자인 패턴 - 이벤트 버스(Event Bus) 패턴1. 이벤트 버스란?이벤트 버스(Event Bus) 패턴은 객체 간 직접적인 참조 없이, 전역 이벤트 허브를 통해 메시지를 주고받는 구조입니다."A가 B를 직
dev-jen.tistory.com
DesignPattern - 상태 패턴(State Pattern) vs FSM
🔄 Unity 디자인 패턴 - 상태 패턴(State Pattern) vs FSM1. 상태를 관리하는 두 가지 방식게임 캐릭터의 행동이나 UI의 전환처럼 상태에 따라 동작이 달라져야 할 때, 우리는 다음 두 가지 접근 방식을
dev-jen.tistory.com
DesignPattern - 커맨드(Command) 패턴
🎮 Unity 디자인 패턴 - 커맨드(Command) 패턴1. 커맨드 패턴이란?커맨드(Command) 패턴은 요청(행동)을 하나의 객체로 캡슐화하여,나중에 실행하거나취소하거나저장하거나여러 명령을 큐에 쌓아두었
dev-jen.tistory.com
DesignPattern - 전략(Strategy) 패턴
🧠 Unity 디자인 패턴 - 전략(Strategy) 패턴1. 전략 패턴이란?전략(Strategy) 패턴은 행동(알고리즘)을 객체로 분리하여, 런타임에 자유롭게 교체할 수 있도록 하는 패턴입니다."동일한 행동 인터페이
dev-jen.tistory.com
DesignPattern - 중재자(Mediator) 패턴
🧩 Unity 디자인 패턴 - 중재자(Mediator) 패턴1. 중재자 패턴이란?중재자(Mediator) 패턴은 객체 간의 직접적인 소통을 피하고, 모든 통신을 중앙 관리자(중재자)를 통해 진행하도록 설계하는 패턴입니
dev-jen.tistory.com
Unity - Unity의 TryGetComponent
🎯 Unity의 TryGetComponent 제대로 알기Unity 개발을 하다 보면 오브젝트의 컴포넌트를 가져와야 할 일이 자주 있습니다. 이때 흔히 사용하는 방식이 GetComponent()입니다. 하지만 이 방식은 컴포넌트가
dev-jen.tistory.com
Unity - Inventory 인벤토리 시스템 구현 정리
🎒 Unity 3D 서바이벌 게임 개발: 인벤토리 시스템 구현 정리 Unity로 서바이벌 게임을 만들면서 인벤토리 시스템을 구현해봤습니다. 생각보다 복잡했지만, 구현하면서 많이 배운 기능이라 정리해
dev-jen.tistory.com
Unity - 3D Survival Game(인벤토리 기능)
# 🧭 3D Survival Game (Unity Project)Unity를 사용하여 제작한 3D 생존 게임입니다. 플레이어는 자원을 수집하고, 적과 전투하며, 아이템을 활용해 생존을 이어갑니다. **불, 날씨, 사운드 등 환경 요소까
dev-jen.tistory.com
'스파르타 코딩클럽 > WIL작성' 카테고리의 다른 글
WIL - 본 캠프 5주차(25.07.28~08.01) (3) | 2025.08.04 |
---|---|
WIL - 본 캠프 4주차(25.07.21~07.25) (2) | 2025.07.27 |
WIL - 본 캠프 3주차(25.07.14~07.18) (4) | 2025.07.19 |
WIL - 본 캠프 2주차(25.07.07~07.11) (6) | 2025.07.13 |
WIL - 본 캠프 1주차(25.06.30~07.05) (1) | 2025.07.05 |