프로젝트 개요

엔진 유니티(6000.0.27f1 -보안이슈로 업그레이드→ 6000.2.8f1)
장르 2D 사이드뷰 액션
플랫폼 PC
시작일 2025.07.23

<aside> <img src="/icons/git_red.svg" alt="/icons/git_red.svg" width="40px" /> https://github.com/NonokEE/2D_SideView_Skeleton

</aside>

<aside> 💡 무료 한글 도트 폰트 : https://neodgm.dalgona.dev/

</aside>

목표

게임의 핵심적인 재미는 “플레이를 통한 성취의 재미” 여기서 “플레이”를 극대화 시킨다.

조작의 재미가 충실하다면 화려한 리소스가 없더라도 도전적이고 재밌는 게임이 될 수 있다는 발상. (리소스가 안중요한건 아닌데, 결국은 플레이가 재미있어야 게임이라고 당당하게 부를 수 있지 않겠나)

Skeleton인 이유는, 2D 사이드뷰 액션 게임에서 고려할 수 있는 내용을 전부 고려하여, 어떤 게임으로도 확장될 수 있는 “골격”을 만들고자 하기 때문임

LLM 적극 도입하여 코딩 시키기. 유니티 스크립팅 학습은 이미 충분히 했음. LLM을 통해서 개발 속도에 박차를 가하고, 구체적인 결과물을 내는데 집중하기. 바이브 코딩의 연습이라고도 볼 수 있겠음. 동시에 바이브 코딩의 한계 또한 느껴보자는 취지.

개발 방향

일단은 러프하게, 하고 싶은대로 구현 어차피 성격상 설계 안하고 들어갈 일은 없을 것이고, 설계를 아무리 해도 나중에 뜯어고치고 싶은 부분이 생김

구현 중에 개선점을 발견해도 우선은 최초 설계대로 구현하고, 개선점을 메모해두었다가, 리팩토링 하면서 반영하기


프로젝트 진행 상황

<aside> 🛠 현재 진행중인 태스크 : Entity 아키텍쳐 수정 - 적 인공지능

</aside>

<aside> 📝 작업 진행 메모

Sense는 매 프레임마다 작동한다 치고,

생각을 매 프레임마다 할 필요는 없잖아?

트루퍼 브레인 구조 설계하기

바디는 밀리자코 하나만 만들어도 될 것 같은데? 거기에 브레인 트루퍼, 코워드, 원더러, 카이터 다 끼울 수 있을 것 같음

브레인 시냅스 바디 어디다 끼울거임? Root가 가지고 있어야 하지 않나? ㄴㄴ 컨테이너 하나 더 만들고 바인딩을 하셈

누가 제일 중추고, 누가 프로퍼티 넣어줄거임? AIController라는걸 만들어서 걔가 제어

굳이? 걍 각자 바인딩하면 안됨? 그리고 위치만 알면 될텐데 굳이 바인딩 필요함? 어차피 자식 오브젝트로 들어갈건데?

Body - Synapse - Brain 구조

Body = Entity 행동을 정의함. 뇌가 없음. 그냥 할 수 있는 행동임. 뛰기 쏘기 날기 구르기 이런 행동들. 그 행동들을 언제 하는지는 모름.

Brain = Controller (기획 그 자체) 상황을 인식하고 원하는 의도를 반환함 Body가 뭘 할 수 있는지는 모름.

[저돌적인 뇌] 체력과 관계없이 목표를 쫓아감. (정확히는 “쫓아가고 싶어”라는 의도를 표시함) 일정 거리 안에 들어오면 “공격 의도”를 표시함

[겁쟁이 뇌] 체력과 관계없이 목표로부터 도망가고 싶어함.

Synapse = Body와 Brain의 중재자 Brain이 내린 결론을 Body의 행동과 맵핑함

점프점프 개구리 Body는 폴짝거리기()라는 함수로 이동, 날아다니는 새 Body는 날아가기()라는 함수로 이동

초기화 및 호출 구조 : 뇌가 판단하고 의도 표출

데미지 받았을 때 애니메이션 순서도 나중에 신경써야겠다. 지금 Die는 코루틴으로 처리되는데, Damage는 그냥 생으로 실행해서, Die랑 동시 실행될 수도 있음.

이후 고려 사항

기능 그룹별 namespace 분리

BulletDamageSource 너무 긴데 책임 분산을 좀 하는게 어떨까?

니가 봤을때 구조적으로 문제가 있는 코드가 있으면 몇개 골라봐. 책임이 과중된 클래스가 있는지 봐봐. 그리고 수정하자.

AnimationType이 있을 필요가 굳이 있나?

UI

데미지 관련 리워크(무기랑 SO랑 Weapon 중에 누가 데미지를 가져야 하는가?) 그리고 직격 데미지랑 폭발 데미지가 다른 경우엔 어떻게 할건지? 잔류 시간마다 데미지가 달라질 수도 있는데 이 경우는 어떻게 할건지?

BulletConfig에서 MovementTypeSpecific 이거 MovementType별로 필요할때만 나왔으면 좋겠다. Editor코드 써야되는거지?

BulletConfig를 BulletPhysicsConfig랑 BulletVisualConfig로 분리함(추후 VisualConfig 추가 필요)

지금 스페이스 체크리스트에 아마 플레이어 조작 고도화 없을거임.

간단한 적 공격 연출 바깥원 안쪽원 조금씩 커지고 작아지면서 만나다가, 완전히 만나면 빠르게 점멸 1초정도 하고 폭발

BaseEntity 너무 길어지면 Partial Class로 분리하거나, 적당히 스크립트 나눠달라고 하기

BaseEntity.CalculateHitInvincibilityDuration() 이거 관련해서 무적 관련 로직 조금 수정하기

</aside>

<aside> 🤖

예정 쿼리

<aside> ⚠️

프로젝트 주의사항

Destroy에서 Max Executions를 0으로 하면 파괴 안 됨

Enable Update꺼져있으면 작동 안하는 것 : 가속, MovementType별 특징적인 이동

</aside>

기획 - 계층구조&설계구조 메모

작업 현황