본문 바로가기

게임 개발101

50. 몬스터 추가 및 비헤이비어 트리 개선 몬스터 추가 및 비헤이비어 트리 개선 - 내가 만드는 스테이지에 등장해야 할 몬스터들이 많이 있지만 가장 기본적인 몬스터 중 하나인 침식된 기사 라는 몬스터가 있다. - 이 몬스터는 이전에 만들었던 신병과 비슷하게 생겼지만 이동하는 모션이나 공격하는 모션이 다르고, HP를 모두 소모하면 그냥 죽는 게 아니라 자신이 있던 자리에 폭발을 일으키며 죽는다. - 기존에 상태 패턴을 이용하면 비슷하게 구현이 가능하겠지만, 패트롤할 때 랜덤하게 이동하거나 특정 상황에 추가적인 행동을 하는 등 디테일한 부분을 추가하려면 비헤이비어 트리를 사용해야 한다고 생각했고, 일단은 좌/우 랜덤하게 움직이는 것과, 공격할 때 앞으로 s의 속도로 l의 길이만큼 슬라이딩하는 부분들을 추가했다. - 폭발을 일으키는 부분 등 여러 부분.. 2023. 5. 18.
49. AbyssOrb Skill 구현 & Particle 상호작용 추가 AbyssOrb Skill 구현 - 게임 내의 스컬 중 하나인 대마도사 스컬의 스킬으로, 커다란 구체를 바라보는 방향으로 발사하는 스킬이다. - 구체는 부딪히는 적들에 대해 특정 간격으로 데미지를 입히고, 자신의 지속시간이 끝나면 폭발하여 데미지를 준다. - 이번 구현에 더 신경쓴 부분은 애니메이션과 더불어 특정 간격으로 데미지를 줄 때 물리 엔진에 의해 파티클들이 들썩거리도록 해서 원작의 느낌을 살리는 부분이다. - 특히나 마지막에 폭발할 때 큰 힘이 주어지고 파티클들이 강한 힘으로 솟구치게 되는데 원작을 플레이할 때 인상깊게 본 부분이라 꼭 구현하고 싶었다. (이전에 구현했던 Meteor도 마찬가지) Particle 상호작용 추가 - 위에서 언급했던 스킬과 스킬에 의해 파티클에 힘을 부여하는 종류의 .. 2023. 5. 16.
48. 데미지 Font 처리 & Particle 움직이는 로직 변경 데미지 Font 처리 - 데미지의 경우 기존에 구현해놨던(FW1FontWrapper 라이브러리를 이용한) Font 엔진을 토대로 처리했다. - 월드 좌표에 있는 물체의 위치를 스크린 좌표로 옮겨서 출력해줘야 했기 떄문에 월드 좌표에서 스크린 좌표로의 좌표 변환이 필요했고 아래와 같이 처리했다. Vec3 Scenes::WorldToScreenPosition(const Vec3& vPoint, shared_ptr pCamera) { int32 iWidth = g_pEngine->GetWidth(); int32 iHeight = g_pEngine->GetHeight(); Matrix matView = pCamera->GetViewMatrix(); Matrix matProjection = pCamera->Get.. 2023. 5. 15.
47. Light 및 Deco Object를 툴에 추가 Light 및 Deco Object를 툴에 추가 - Deco Object는 맵에 존재하는 탁자, 가로등과 같은 맵을 더 풍성하게 해주는 객체를 의미한다 - 이전까지는 맵을 구성하는 요소가 배경, 타일, 플레이어, 다음 던전으로 이동시켜주는 문, 던전 보상 등이다보니, 뭔가 심심한 느낌이 계속 들어서 알아낸 결론이 이런 전투씬에 관련된 객체들 뿐 아니라, 맵 자체를 꾸며주는 무언가가 필요하다는 생각이었다. - 또한 현재 작업 중인 스테이지 자체가 다크한 느낌의 스테이지라 빛을 잘 이용해야 하는데, 파일로부터 불러오는 던전 단위가 툴로 만들어지다보니, 던전마다 빛의 위치를 따로 적용시켜주기엔 무리가 있다고 판단해서. Deco Object라는 그룹을 통해 맵을 꾸며주도록 했다. - 가로등의 경우 빛을 가지고 .. 2023. 5. 14.