본문 바로가기

분류 전체보기29

project1 개발일지 - 4 [nav mesh agent] 몬스터 이동 시스템 설계 및 구현목표몬스터가 플레이어를 자연스럽게 추적할 수 있도록 NavMeshAgent 기반 이동 시스템을 도입했다.이 과정에서 **이동 타입(지상/비행)**에 따른 차별 처리와, 기존 스탯 시스템과의 연동도 함께 반영했다. 1. NavMeshAgent 도입 – 플레이어 추적 시스템 기반 구축navMeshAgent, obstacle 등으로 유니티에서 제공하는 ai를 사용할 수 있다.몬스터의 플레이어를 향한 길을 찾는 기능을 간단히 구현하기 위해 사용한다. 2. 전체 맵 NavMesh 베이크NavMeshAgent가 정상 작동하기 위해서는 탐색 가능한 영역을 미리 베이크(Bake) 해야 한다.Unity Navigation 창에서 Bake 메뉴 사용Walkable 영역 설정 후 전체 맵을 .. 2025. 7. 15.
project1 개발일지 - 3 [몬스터 스탯 설계] 스탯 시스템 설계 및 몬스터 데이터 연동목표플레이어, NPC, 몬스터 등 다양한 오브젝트가 공유할 수 있는 스탯 시스템을 설계하고, 몬스터 데이터를 JSON 기반으로 관리 및 코드에 연동하는 것이 이번 작업의 핵심이다. 1. 스탯 상속 구조 설계플레이어, 몬스터, NPC 등 다양한 오브젝트가 공통적으로 가지는 전투/생존 관련 스탯을 공유하되, 객체마다 다른 스탯은 개별로 확장할 수 있게 하기 위함. BaseStat(모든 체력 관련 오브젝트가 공통으로 가지는 스탯)- id- hp- maxHp- attackDamage- armor- speed- attackSpeed- attackRangePlayer- maxJumpCount- jumpPower- exp- gold- reviveCount- hpRegen- s.. 2025. 7. 14.
project1 개발일지 - 2 [Unity version control system] 📅 개발일지 - Unity Version Control 도입오늘은 팀 프로젝트 버전 관리를 위해 Unity Version Control (UVCS) 을 도입하게 된 계기와 과정에 대해 기록해본다.처음 프로젝트를 시작했을 때는 대부분의 개발자들이 그렇듯, 우리도 Git과 GitHub를 이용해 버전 관리를 해왔다. 익숙한 커맨드라인, 풍부한 자료, 그리고 브랜치 관리의 유연함 덕분에 큰 불편 없이 초기 개발을 진행할 수 있었다.하지만 개발이 진행되면서 몇 가지 문제점이 눈에 띄기 시작했다.특히 Unity 특성상 발생하는 바이너리 파일 충돌, 대용량 에셋 파일 관리의 불편함, 그리고 충돌 해결 과정에서 생기는 번거로움은 Git의 한계를 체감하게 만들었다. 그런 와중에 Unity 공식 문서를 통해 Unity .. 2025. 7. 13.
project1 개발일지 - 1 [프로젝트 목표, 역할분배] 🎮 project1 개발일지 #1 — 프로젝트 시작과 역할 정리📌 프로젝트 목표이번에 시작한 Super 프로젝트는 Unity를 활용한 팀 프로젝트로, 우리가 초반에 설정한 목표는 "Risk of Rain"을 참고한 로그라이크 액션 게임 개발이다.Risk of Rain은 빠르게 전투가 확장되며 다양한 몬스터와 전투하는 재미가 중심인 게임이다. 이를 참고해 우리 팀도 빠르게 성장하는 난이도, 랜덤 요소, 협동 전투 시스템을 주요 기획 요소로 설정했다.👤 내가 맡은 역할이번 프로젝트에서 나는 주로 몬스터 AI와 UI 시스템을 담당하게 되었다.몬스터 AI적이 플레이어를 감지하고 추격하거나 공격하는 기본 행동을 구현하고, 이후에는 보스 AI와 특수 패턴도 구현할 예정이다.UI 개발게임 내 체력바, 경험치 U.. 2025. 7. 13.
C++ 언어 소개 C++ 언어 소개C++는 강력한 성능과 유연성을 갖춘 프로그래밍 언어로, 다양한 분야에서 널리 사용되고 있다. 이 글에서는 C++의 역사, 언어적 특징, 그리고 프로그램 빌드 과정을 간단히 정리한다.1. C++ 언어의 역사C++는 1980년대 초반, 벨 연구소(Bell Labs)의 Bjarne Stroustrup이 개발하였다. 당시 Stroustrup은 C 언어의 성능과 하드웨어 제어 능력은 유지하되, 대규모 소프트웨어 개발에 적합한 객체지향 프로그래밍 개념을 도입하고자 했다.초기에는 **“C with Classes”**라는 이름으로 시작되었고, 이후 여러 기능이 추가되면서 1983년에 **C++**라는 이름이 붙었다. ‘++’는 C 언어에서 값을 증가시키는 연산자로, C에 기능이 추가되었다는 의미를 담.. 2025. 7. 13.
[게임 프로그래밍 패턴] 1. 구조, 성능, 게임 소프트웨어 구조혹시 정말 잘 짜여진 코드를 본 적이 있나?나는 학생 시절엔 그런 기회도, 볼 생각도 하지 않았다.과제를 제출할 때는 결과물만으로 평가받았다.코드의 질은 중요하지 않았고, 주어진 기능만 구현하면 좋은 점수를 받을 수 있었다.아래는 그 당시 제출했던 코드의 일부이다.for (int i = 0; i 지금 보면 의미를 알 수 없는 매직넘버와 변수명, 어떤 조건을 검사하는지조차 감이 오지 않는다.함수로 분리하지 않아 중복되는 코드가 많았고, 조건이 바뀔 때마다 모든 코드를 일일이 수정해야 했다.무려 2학년까지 이런 끔찍한 코드들을 작성했었다.2학년 말부터 프로젝트의 규모가 커지면서, 여러 서적과 강의를 접하고 나서야 비로소 이런 문제들을 깨닫기 시작했다.좋은 소프트웨어 구조좋은 소프트웨어 구조란,.. 2025. 5. 29.