분류 전체보기(34)
-
[ EDGE 개발 기록 ] 플젝 개요와 Enemy AI SO분리 시스템
개요Edge가 무엇인가.. 그것은 동계 게임잼 프로젝트에서 기원한 게임인 것이다.(이때 만든 게임인.) [ 팀 프로젝트 후기 ] 동계 게임잼 시즌2를 마치며왜 시즌 2냐면 올해 1월에도 동계 게임잼을 했었다.그때는 고1 신분으로 참여하게 된 행사이지만 같은 해인 2024년 진행했기 때문에 이번에 한 게 시즌2라고 볼 수 있다.12월 18~20 일까지 동계 게임dev-vcs.tistory.com 여러 프로젝트들을 끝내고 나서. " 아 나중에 다시 리메이크해야지 "라는 생각을 해왔고.실제로 프로젝트를 파기까지는 성공한 프로젝트들이 수두룩 하지만.진심으로 개발을 지속한 프로젝트는 거의 없었다. 하지만 동계 게임잼 프로젝트였던 Edge? 게임성도 좋았고. 실제로 결과도 좋았던 프로젝트였기 때문에,여기다 시간을..
2025.04.23 -
[ 개발 잡소리 ] StringBuilder를 사용해보자
StringBuilder를 알고 있는가?StringBuilder는 문자열을 효율적으로 다루기 위한 C# 내장 클래스이다.간단히 말해서 문자열을 반복적으로 수정하거나 추가할 때에 StringBuilder를 사용하면 성능이 훨씬 좋아진다.그냥 String을 쓰면 안 되나??string을 쓰면 안 되는 게 아니다. 일반적인 경우에서는 그냥 string을 넣는 게 맞다.다만. 몇 가지 경우에 string을 쓰는 것이 엄청난 오버헤드가 발생한다. C#에서 string은 불변(immutable) 객체이기 때문에. 기존 문자열을 수정하면, 기존 문자열을 바꾸는 게 아니라새로운 문자열을 새로 만들고 기존의 문자열은 버리는 식으로 작동한다.string result = "";for (int i = 0; i 내부적으로 매..
2025.04.09 -
[ 졸업작품 개발 기록 ] 로프 스윙과 벡터 내적
졸업작품은 돌고 돌아 누구나 개발하기를 꿈꾸는 2D 플랫포머 액션 게임을 만들게 되었다. 그중에서도 레퍼런스 게임은 2D 플랫포머액션 개발의 진입장벽을 무자비하게 올려버린바로 산나비라는 게임이다. 이 게임은 로프액션이라는 신박한 이동방식과 이를 이용한 속도감 있고타격감 있는 전투를 진행하는 게임이다. 정말 재미있게 플레이한 게임이고 그렇다 보니 비슷한 메커니즘의 게임을 너무나 만들고 싶었다. 그를 위해 필요했던 여러 시스템중 고민이 되던 부분이 있다.그것은 로프 체공 중에 스윙방향을 연산하여 그 방향으로 가속을 하는 시스템이다.이런 연산을 해주지 않으면옆으론 비교적 빠르게 스윙하는데 위로는 속도가 엄청 안 나오는 그냥 구린 조작감이 탄생한다.그리고 특정 위치에서 스윙을 사용할 때 의도되지 않은 이동을 하..
2025.03.26 -
[ 게임 개발 ] Caster 시스템 - Damage, Knockback
요즘 게임 코드 구조들을 짤 때 유니티 컴포넌트 시스템을 적극 활용하여기능분할과 깔끔한 종속성 구조를 만드는 것을 즐기고 있다. 그중에서 제일 실용적으로 쓸만하고 마음에 드는 구조가 이 Caster라는 놈인데현 졸업 작품 개발에도 활용하고 있는 기능이다. 말은 뭐 되게 대단한 거 소개하는 뉘앙스인데 꽤 간단하다이런 식으로 각각 물리 캐스팅을 통해 감지했던 캐스트 구조를 이런 식으로 감지는 Caster가 하고 기능별로 필요한 기능은 기능 캐스터들이감지된 Target에 대한 정보만 받아 처리하는 방식이다. 그래서 이런 식으로 Caster구조를 만들어두면기능에 따라 깔끔하게 분할된다. 캐스팅 시에 기능을 추가하고 싶다면 아래에기능 캐스터들만 추가로 달아주기만 하면 되는 것이다. 이제 구현을 해볼..
2025.03.05 -
[ 게임 개발 ] Normal 벡터, Normal Map은 무엇일까
Normal벡터를 알고 있는가?평범함, 보통을 의미하는 Normal이 아닌 조금 더 수학과 게임 개발에 관련된 개념이라 볼 수 있다. Normal은 국산말로 법선이라고 한다.법선? 물리나 기하학 혹은 선형 대수학을 공부해 보았다면 기억에 남을 수도 있다. 쉽게 설명하자면 어떤 면이 바라보고 있는, 즉 평면에 수직인 벡터를 의미한다. 꽤 익숙하지 않은가? 물리시간에 했던 입사각, 반사각사이의 법선이라는 개념이 존재하는데이 법선과 같은 것이다. Blender에서 노말벡터를 Gizmos로 그려주는 기능이 있는데 이것으로 정육면체를 보면이런 식으로 표시된다.이 면에 대한 Normal은 외적을 통해 구할 수 있는데.삼각형을 나누고 각 삼각형에서 두 벡터를 만들어 외적을 해주면 그 삼각형에 대한 Normal이 나..
2025.02.03 -
[ 게임 개발 ] 유니티 쉐이더 그래프 4 - 버텍스 쉐이더로 파도 만들기
버텍스 쉐이더는 무엇일까?이것을 알아보기 위해서는 '버텍스' ( '정점'이라고도 한다)가 무엇인지 알 필요가 있는데이는 이전 글에서 설명했었으니 관련 정보를 습득하고 읽는 것을 추천.Vertex 관련 글 [ 게임 개발 ] 정점? Vertex? 가 무엇인Vertices는 무엇일까? (Vertex의 복수형인.) 보통 3D 모델을 어떻게 저장할까? 를 생각해 본다면 그 속에서 답을 얻을 수 있다.컴퓨터는 모델의 구성요소와 파일 형식에 따라 조금씩 차이가 있지만 공dev-vcs.tistory.com 대충 우리가 사용하는 오브젝트 모델링과 2D패널 들은 모두 아래와 같은 단계로 나누어져이루어져 있다.결론적으로는 모든 오브젝트들은 이 Vertex라는 점들로 이루어져 있는데이 버텍스를 가지고 움직이거나 어떻게 수학..
2025.01.27 -
[ 게임 개발 ] FSM 구조와 이벤트 호출에 대한 고찰
최근 여러 게임잼들을 겪으며 Player구동 로직으로 FSM을 아주 애용을 했었다.또한 그런 로직을 통해 외부의 이벤트를 호출할 일이 많았다. 이건 왜 그러냐 하면 Feedback이라는 Create 핸들함수를 실행시키면 정해진 동작,사운드 재생, VFX 재생, 카메라 효과, 볼륨 효과들을 컨트롤하는 기능들을 수행해 주는데이 Create함수를 발행할 때 UnityEvent가 쓰였기 때문이다. 그런데 기존에 사용 중인 FSM은 MonoBehaviour기반이 아니기 때문에 이벤트고 뭐고직렬화가 되어있지 않아 직렬화된 다른 대상을 매개로 이벤트를 Invoke 해주어야만 했다.그 매개의 대상이 마침 모든 State들이 가지고 있는 Player였다.그러다 보니 Player에 모든 Event들이 다 박혀있고, Pl..
2025.01.11 -
[ 팀 프로젝트 후기 ] 동계 게임잼 시즌2를 마치며
왜 시즌 2냐면 올해 1월에도 동계 게임잼을 했었다.그때는 고1 신분으로 참여하게 된 행사이지만 같은 해인 2024년 진행했기 때문에 이번에 한 게 시즌2라고 볼 수 있다.12월 18~20 일까지 동계 게임잼을 진행했다. 주제는 무제한 (무하한 아님)내게 있어 팀 편성이라는 재앙은 11월 초인가 중순쯤에 일어났다. 12월 17일 주제를 발표하고 개발에 들어갔고 마지막날인 20일 금요일은 아침 8시 제출이었기에사실상 17 ~ 19 게임잼이라고 봐도 무방하다. 기간이 약 3일이지만 실질적인 개발기간은 2일 정도였고 시간 동안 약 5시간을 수면한 것 같다.작업을 그렇게까지 힘들게 했어야 했나라고 생각할 수 있는데. 우리 팀의 포지션을 생각하면 당연한 것이다.우리 팀은 아무리 좋게 봐도 개발역향이 떨어지는 팀이..
2024.12.23 -
[ 게임 개발 ] 정점? Vertex? 가 무엇인
Vertices는 무엇일까? (Vertex의 복수형인.) 보통 3D 모델을 어떻게 저장할까? 를 생각해 본다면 그 속에서 답을 얻을 수 있다.컴퓨터는 모델의 구성요소와 파일 형식에 따라 조금씩 차이가 있지만 공통되는 부분은수학적(기하학적) 데이터와 메타데이터들을 통해 모델의 구조와 모양을 데이터로써 가지고 있는다. 그 데이터의 기하학적 데이터 내에 Vertex가 있다. 정점(Vertex)은 하나의 점,이를 이어 붙여서 선(Edge)을 만들고,선을 또다시 모아 면(Face)을 이룬다. 더 나아가서 면을 모아 모아 하나의 메쉬 덩어리를 이루게 된다.앞서 말한 점, 선, 면은 결론적으로 모두 메쉬의 구성요소들인 것이다. 유니티에서는 Scene창에서 Wireframe을 활성화하면 이것들을 좀 더 가시적으로 볼..
2024.11.16