2024/11 23

[내배캠][Unity6기][TIL] Behavior Tree 구조 설계 (2)

오늘은 개인 일정이 있어 거의 진행을 못했다 ㅠ어제 작성해 둔 코드 로직 한번 더 검토하고 다시 나가봐야한다...조건 분기가 많아 Condition을 주로 사용하게 될 줄 알았는데 직접 구현해보니 Sequence와 Selector만 사용하게 되었다.이부분은 테스트 진행하면서 제대로 로직상 상태가 변경되어야 하는 부분 있으면 트리 구조 스크립트만 수정하면 되므로 차차 다듬어나가면 될 것 같다. 기본 노드는 튜터님이 참고하라고 공유해주신 블로그 자료를 베이스로 작성되었다.Condition과 Action은 지금 당장 사용하지는 않는데, 혹시 나중에 사용될 수도 있어서 만드는 김에 미리 작성했다.INodepublic enum NodeState { Success, Failure, Running }public in..

[내배캠][Unity6기][TIL] Behavior Tree 구조 설계 (1)

유니티에는 언리얼처럼 내장으로 Behavior Tree를 비주얼 스크립팅할 수 있는 툴이 없어서... 코드로 해야한다!물론 쉽게 추가할 수 있는 API와 무료 or 유료 에셋들을 사용하여 만들 수도 있다.선배 기수님 프로젝트 중에 UnityEditor.Experimental.GraphView를 이용해 BT를 비주얼 스크립팅하신 분이 계셔서 찾아보니 이것도 괜찮을 것 같다. 그런데 공식문서를 확인해보니 변경되거나 사라질 수 있다고 경고창...?이 떠서 보류해야겠다.일단 코드로 기본 구현을 해보는 것을 권장하셔서 코드로 노드부터 만들어보려고 한다. 머릿속으로 전체 구조를 잡는 것보다는 눈에 보이게 뭐든 문서화나 그림을 그리는 것이 더 좋다!지능 이슈로 뇌내 빅픽쳐를 그리기 힘들어서도 있지만... 누군가에게 ..

[내배캠][Unity6기][TIL] 캐릭터 행동 구현 설계

게임에서 적의 AI를 구현하는 방식은 매우 다양하다.우리 게임에서 어떤 방식으로 구현해야 적합할지 모르겠어서 우선 행동 양식을 분석했다.그런데... 더 알 수가 없어져서 튜터님 조언을 받고 일단은 Behavior Tree로 구현하기로 했다.Behavior Tree...공부하면 할수록 스스로 불러온 재앙이라는 느낌을 지울 수 없는데 이왕 하기로 한거 열심히 해보는 수밖에!  그리고 분석하고 설계하는데 너무 많이 고민할 필요는 없고, 이정도면 일단 구현을 해보면서 수정하고 방향을 잡아가는게 좋을 것 같다고 말씀해주셔서 내일부터는 본격적으로 구현에 들어갈 예정이다.이론적으로 좋은 설계와 이상향을 목표하고 시작해도 작업하다보면 어쩔 수 없이 처음 계획과 다르게 수정되기 때문에 너무 처음부터 각잡고 이렇게 해야겠..

[내배캠][Unity6기][TIL] ObjectPool

생성과 삭제가 빈번한 오브젝트는 풀링이 반드시 필요하므로 인간을 만들기 전에 ObjectPool 프레임워크부터 설계했다.오브젝트 풀은 어떻게 사용할지에 따라 구현 방법이 다양해지기 때문에 여기저기에서 많은 레퍼런스를 참고하고 우리 게임에 최적화하는 방식으로 설계하고자 했다. [ 고려했던 사항 ]1. Unity에서 제공하는 Pool 사용 or 직접 구현?=> 직접 구현! Unity Pool 활용하려면 내부 코드를 잘 알아야 유연하게 활용할 수 있는데 내부 코드 분석이 아직은 어려워서 직접 구현한 ObjectPool을 사용하는 것이 더 낫다고 판단했다. 무엇보다 문제가 발생했을 때 디버깅이 어려울 것 같았다! Unity 제공 Pool은 나중에 더 공부해서 개인 프로젝트에 활용해보거나 테스트 해볼 생각이다. ..

[내배캠][Unity6기][TIL] 최종 프로젝트 기획

오늘은 초기 기획을 더욱 구체적으로 디벨롭하였고 세부 구현사항을 리스트업하여 역할을 분배했다. 내가 맡은 역할은 인간 생성 및 관리 로직이다.구현 토대를 잡기 위해 오늘은 오브젝트 풀 생성 작업을 진행했고 내일 완성할 예정이다. 이미지 출처: Kingdom Rush 킹덤 러쉬 전략형 타워 디펜스(Ironhide Games) 인게임 화면작업 환경: Figma

[내배캠][Unity6기][TIL] 11.15 최종 프로젝트 시작 전, 알아두면 좋을 것들 특강(스탠다드) (1)

Preview- Vector- 스크립트 간 연결- 메서드 사용- MonoBehaviour- Unity Thread- ReflectionVector- 개념: 크기(길이)와 방향을 나타내는 요소- 위치는 상관 x, 모든 시작점이 원점(0,0,0) 이라고 가정하고 계산하여 좌표로 표현 [ Vector의 활용 ]1) 위치 표현: 특정 시작점으로부터 크기와 방향에 따라 어디에 위치하는지 표현2) 물리 표현: 특정 시작점으로부터 크기와 방향에 따라 얼마나 이동해야 하는지 표현Vector 연산덧셈: x좌표끼리 더하고, y좌표끼리 더함          ex) A(1, 3), B(3, 1) => C(4, 4)뺄셈: x좌표끼리 빼고, y좌표끼리 뺌                 ex) A(-2, 3), B(-3, -3) =..

[내배캠][Unity6기][TIL] 최종 프로젝트 시작

8주간의 최종 프로젝트가 시작되었다.장르는 타워 디펜스, 2D 도트 아트이고 모바일 플랫폼을 대상으로 한다.레퍼런스 게임은 '킹덤 러쉬 전략형 타워 디펜스' 이다.스토리라인과 컨셉은 '몬스터 주식회사'에서 가져올 예정이다. 타워 디펜스류 게임을 해본 적이 없어서 기획부터 어려운 부분이 있지만 팀원들과 소통하고 레퍼런스 게임을 플레이 해보면서 조금씩 대략적으로 틀이 잡히는 것 같다.개발 일정이 촉박하다보니 최대한 게임 사이클 구현을 빨리 마치고 작은 볼륨에서 패치하듯이 크기를 키워나가야겠다.

[내배캠][Unity6기][TIL] 11.22 최종 프로젝트에 임하는 자세

최종 프로젝트 타임라인1주차: 기획4주차: 중간발표 및 발표 준비~ 유저테스트 진행~6주차: 게임 완성 및 배포해서 피드백 받기7, 8주차: 피드백 바탕으로 업데이트 및 QA가이드라인장르 선정 > 레퍼런스 확보 > 공통 부분 정리 > 중추 작업 > 세부 작업최종 정리1. 팀원들 존중하고 배려하며 의사소통2. TIL 반드시 작성3. 최종 프로젝트 잘하기3.1) 레퍼런스 조사해서 프레임워크부터 완성3.2) 게임 사이클 최대한 빨리 완성3.3) 규모 작게 만들고 패치하듯 추가4. 신입, 개발자로서 어필할 수 있도록 집중5. 매일 2회 스크럼하고 일지 기록6. 공식 문서 참고하는 습관 들이기(블로그, chat GPT 지양) 추가로 고려해야 할 사항취업에서-  내 실력에 집중하게 만들기 & 나를 평가할 수 있는 ..

[길찾기 알고리즘] 2. 그래프 (2) 그래프 기본 개념

그래프- 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현- 정점, 간선으로 이루어짐- 방향과 가중치 유무에 따라 종류가 다양 - Vertex(정점) : 데이터를 표현 (사물, 개념 등)- Edge(간선) : 정점들을 연결하는데 사용 [ 그래프 예시]- 일반 그래프 : SNS 관계도- 가중치 그래프 (Weighted Graph) : 지하철 노선도- 방향 그래프 (Directed Graph) : 일방통행 포함된 도로망 * 특징 : 언어 차원에서 지원하는 Collection 없음- 종류가 매우 다양하므로 상황에 맞는 그래프를 사용자가 직접 구현하여 사용코드로 만들기인스턴스로 생성하는 방법- 각 정점마다 객체로 생성해 연결using System;using System.Collections.Generi..

C# 2024.11.23

[길찾기 알고리즘] 2. 그래프 (1) Stack & Queue

- using System.Collections.Generic; 추가Stack- 후입선출- LIFO(Last In First Out) [ 함수 ]- Push : Stack에 값을 저장- Pop : Stack에서 값을 삭제- Peek : Stack 최상단의 값을 확인Stack stack = new Stack();stack.Push(101);stack.Push(102);stack.Push(103);stack.Push(104);stack.Push(105);// 빈 stack에 pop이나 peek하면 에러if (stack.Count > 0){ int data = stack.Pop(); // 105 int data2 = stack.Peek(); // 104}Queue- 선입선출- FIFO(F..

C# 2024.11.19