전체 글
-
OOP Design Pattern - Behavioral Pattern 1프로그래밍 언어 2024. 10. 14. 22:28
Chain of ResponsibilityChain-of-Responsibility PatternA behavioral design pattern consisting of a source of command objects and a series of processing objectsEach processing object contains logic that defines the types of command objects that it can handleThe rest are passed to the next processing object in the chainA mechanism exists for adding new processing objects to the end of this chainVar..
-
SynchronizationCS/OS 2024. 4. 21. 23:03
Race Condition Synchronization Solve problem causing by accessing to shared resources. Without synchronization, it lead to incorrect results, called race condition. A way to coordinate threads (or processes) that use shared resources or their execution for correctness. Goal of synchronization is ensuring correct operation of cooperating threads. Race Condition The result by threads accessing sha..
-
ThreadsCS/OS 2024. 4. 17. 15:44
Terminologies Concurrency (동시성 / 병행성) : the ability of two or more threads to execute in interleaving (overlapping) time periods and proceed at same time. Parallelism (병렬성) : the ability of two or more threads to execute in overlapping at same time. Porcess (Task) : the unit of resource ownership A compound entity (a set of threads + a collection of resource) Thread (Lightweight process) : The u..
-
Hitbox Controller Refactoring 및 Hitbox Debug Tool게임 클라이언트 개발/MakeDNF 2024. 4. 17. 00:48
이번 글에선 Hitbox Controller 클래스와 Hitbox 클래스를 리펙토링 한 내용과 플레이 모드 진입 시 설정된 Hitbox가 정상적으로 작동하는지 Scene에서 확인할 수 있는 Debugging 툴에 대해 작성하고자 한다. 너의 역할은? 히트 박스의 범위 및 충돌 로직이 작성되어 있는 Hitbox 클래스와 이를 관리하는 HitboxController 클래스를 통해 2.5D 좌표계에서의 충돌 시스템을 구현했었다. Hitbox 클래스에서 HitboxType, Size, Offset, Pivot 멤버 변수를 통해 히트 박스의 범위를 minHitboxPos, maxHitboxPos로 계산하고, AABB 충돌 알고리즘을 구현한 멤버 함수를 통해 히트 박스의 충돌 검사 로직을 수행했다. HitboxCo..
-
Animation Missing! 해결법게임 클라이언트 개발/Unity 2024. 4. 12. 20:04
유니티로 개발을 하면 Hierarchy 구조에 대해 많이 익숙할 것이다. 그리고 애니메이션을 제작할 때도 해당 Hierarchy 구조를 이용하여 각 오브젝트의 여러 Property를 설정하여 애니메이션 클립을 생성한다. MakeDNF 프로젝트에서도 2.5D를 위한 DNFTransform 컴포넌트를 구현하기 위해 Hierarchy 구조를 사용했었다. 하지만 DNFTransform 컴포넌트 최적화 과정에서 Hierarchy 구조를 수정하게 되었다. 구조를 수정한 이후, 애니메이션에 Missing!이란 문구와 함께 애니메이션 클립이 정상적으로 작동하지 않는 문제가 발생했다. 해당 문구는 오브젝트의 Hierarchy 구조에서 각 컴포넌트를 찾지 못했기 때문에 발생하는 문제로, 이전에는 문제가 있는 Propert..
-
스킬 스크립트... 매번 생성해야 하나...?게임 클라이언트 개발/MakeDNF 2024. 4. 10. 23:27
이번 글에선 스킬을 추가할 때마다 반복적인 작업을 해야하는 번거로움을 없애기 위해, 조금이라도 빠르게 스킬을 추가하기 위해, 스크립트를 설정한 값에 따라 자동으로 추가해주는 툴을 구현한 내용을 작성할 것이다. 스킬 추가할 때마다... 노가다...? 캐릭터의 스킬을 추가할 때 마다, 패시브 스킬은 스크립트를 하나만 추가해도 되지만, 액티브 스킬을 구현할때면 ActiveSkill 클래스를 상속받는 스킬 스크립트 1개, SkillState 클래스를 상속받는 스킬 상태 스크립트를 여러 개 작성해야 한다. 예를 들어, Ground Monk의 기본 공격의 경우, 1타부터 5타까지 총 5개의 상태가 존재한다. 이를 구현하기 위해선, ActiveSkill 클래스를 상속받는 BaseAttack 클래스 스크립트 한 개가 ..
-
Ground Monk게임 클라이언트 개발/MakeDNF 2024. 4. 10. 00:07
이번 글에선 지금까지 구현한 Ground Monk 캐릭터의 스킬을 작성할 것이다. Ground Monk는 던전 앤 파이터의 남 프리스트 인파이터를 모티브로 스킬을 구현했다. Ground Monk의 전투 영상 기본 공격 기본 공격은 총 5타로 이루어져 있다. 기본 공격 버튼(Default로 X키 지정)을 입력할 경우 연속적으로 기본 공격을 사용한다. 3타와 4타의 경우 방향키를 입력하지 않을 경우 약간 앞으로 전진하며, 캐릭터가 바라보는 방향의 반대 방향의 방향키를 입력할 경우, 움직이지 않고 사용 가능하다. (제자리 평타, 흔히 제평이라 부르는 기능) 이전에 구현했던 Fire Knight 캐릭터와 마찬가지로 추가 키 입력을 HitboxActive와 MotionInProgress 두 상태에서만 가능하도록 ..
-
[C#] Public Field vs Auto-Implemented Property프로그래밍 언어 2024. 4. 6. 22:41
유니티로 게임을 개발하다보면, Property를 자주 접하게 된다. 그런데 Public Field와 Auto-Implemented Property 중 어느 것을 사용해야하는지 매번 고민하게 된다. 이번 글에선 C#의 Property에 대해 알아보고, Property를 사용하는 이유는 무엇인지, Public Field와 Auto-Implemented Property의 차이점이 무엇인지에 대해 작성해보고자 한다. Property란? 객체 지향 프로그래밍에선 캡슐화는 매우 중요한 요소 중 하나이다. 클래스의 데이터를 외부 클래스로부터 보호하여, 의도치 않은 기능을 수행하지 않도록 각 객체의 데이터 오염을 방지한다. 예를 들어, 캐릭터를 구현한다고 가정해보자. 캐릭터 클래스는 캐릭터의 위치 정보를 갖고 있는 p..