Life Archive
article thumbnail
[P의 거짓] P기관 콘텐츠 분석 (1) - 생존 방법

P의 거짓에는 P기관이라는 패시브 스킬 시스템이 있습니다. 게임을 진행하며 "쿼츠"라는 아이템을 수집하고 쿼츠를 사용하며 스킬을 찍는 방식이죠. 1단계부터 7단계까지 있으며, 각 단계별로 4개의 스킬이 있습니다. 각 스킬 별로 하위에 2~4개 보조 스킬이 있으며, 보조 스킬을 모두 쿼츠를 사용하여 찍어야만 패시브 스킬이 활성화됩니다. 보조 스킬에는 공격/생존/능력/아이템 계열이 있어서 이 보조 스킬들도 패시브 스킬 단계에 맞춰서 해금이 되며, 플레이어가 선택할 수 있습니다. 즉, 단계가 올라갈수록 보조 스킬의 선택 영역이 넓어지는 거죠! 인게임에 다양한 전투 방식이 있고, 플레이어가 원하는 전투 방식 혹은 무기에 맞춰서 스킬을 찍으면 되며, 행여라도 잘못 찍었거나 전투 스타일을 변경하고 싶다면 챕터 7에..

article thumbnail
[퍼즈업 아미토이] NC의 신작 퍼즐게임!
게임 플레이 2023. 9. 28. 05:30

NC의 신작 퍼즐게임인 가 9월 26일 출시되었습니다! 모바일 3-match 퍼즐 게임이고, 이틀 동안 천천히 플레이해서 현재까지 나와있는 모든 레벨을 플레이해봤습니다! 일반 난이도는 중하 정도이고, 어려움/매우 어려움 단계는 중상 정도 되는 것 같아요! 현재까지 총 400개의 레벨이 있고, 저는 글로벌 랭킹 12위로 모두 플레이 완료했습니다! 그리고 출시 이후 클랜전이나 운명의 탑같은 추가 콘텐츠가 적용될 예정이라고 알고 있습니다. 클랜, 공성에 자신 있는 NC가 퍼즐 게임에서는 어떻게 잘 녹여낼 지 매우 궁금하기도 하네요! 몇 가지 아쉬운 점은, 아쉬운 점은 어려움과 매우 어려움 단계 사이의 격차를 좀 더 뒀으면 더 좋았을 것 같고, 게임을 급하게 낸 것 같다는 느낌이 듭니다..ㅠ 클랜전과 같은 콘텐..

[Unity] TimeCheck for Reset
게임 개발 학습/Unity 2023. 9. 26. 12:52

INTRO VR 전시 프로젝트를 진행하면서 5분 동안 유저의 이동이 없을 때 시작 Scene으로 이동하는 기능을 개발하게 되었다. 기존 Input System을 이용한다면 UnityEngine 내부에 있는 Input.anyKeyDown을 이용하면 간단히 구현할 수 있지만, XR Interaction Toolkit Package를 사용하면서 새로운 Input System에 대해서는 작동하지 않았다. 그래서 transform.position과 Coroutine을 이용하여 Input System없이 간단하게 구현해보았다. CONTENT 먼저, TimeSceneChagne.cs의 전체 코드는 아래와 같다. using System.Collections; using System.Collections.Generic;..

[Unity] Color 값 받아오고 설정할 때의 주의점
게임 개발 학습/Unity 2023. 9. 26. 12:51

UnityEngine 내 Color를 사용할 때 주의해야할 점이 있다. 드로잉 월드를 제작하면서 로컬이 색깔을 선택하고 서버로 보낼 때, 선택한 색깔의 r,g,b,a 값을 number로 보냈다. 서버에서는 받은 data를 로컬을 제외한 다른 플레이어에게 보내며, 데이터를 받은 다른 플레이어들은 Color을 아래와 같이 설정했었다. Connector.Instance.DrawStartRes = (data: { sessionId: string; lineWidth: number; color_r: number; color_g: number; color_b: number; color_a: number; }) => { const line = Manager.Resource.Instantiate("Prefabs\\Lin..

article thumbnail
[Unity] Observer Pattern in Unity
게임 개발 학습/Unity 2023. 9. 26. 12:50

유니티에서 옵저버 패턴을 사용하여 프로그래밍한 것은 매우 중요한데, 만약 두 개의 컴포넌트가 서로의 정보(변수, 메서드 등)를 공유해야하는 상황에서 서로 결합(tightly-coupled)되어있다면, 서로가 영향을 미치기에 하나의 컴포넌트를 수정하면 다른 컴포넌트에서 에러가 발생하기에 수정에 불리하다. 이는 객체지향 원칙에 걸맞지 않는 상황인 것이다. 디자인 패턴 중 옵저버 패턴(Observer Pattern)은 시스템을 확장성(Scalable), 유지성(Maintainable), 비결합성(Loosely-coupled) 모두를 충족하게 만들어준다. OOP 코드를 작성할 때, 비결합(Decoupled)으로 코드를 작성해야 에러가 날 확률도 적고 모듈화하기도 쉬우며, 디버깅하기도 쉽다. 아래 코드는 싱글톤 ..

article thumbnail
[Unity] GameObject.FindWithTag Target Priority
게임 개발 학습/Unity 2023. 9. 26. 12:44

INTRO Unity AI Navigation을 이용하여 플레이어를 추적하는 몬스터 시스템을 Tag를 이용하여 구현하던 도중, 동일한 Tag의 플레이어가 다수일 경우 몬스터는 어떤 플레이어를 우선순위로 따라갈지 궁금해졌다. 여러 테스트를 통해 우선순위 기준이 Tag라는 시스템에 있었다는 것을 알았고, 그 과정에 대해 적어보려고 한다. CONTENT 우선 몬스터 Control에 대한 기본적인 코드를 첨부하면 아래와 같다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class MonsterCtrl : MonoBehaviour { private Transform..

[Unity] Interpolation
게임 개발 학습/Unity 2023. 9. 25. 12:59

INTRO Unity3D를 학습하다보면 이동(Translate)과 회전(Rotation)을 배우게 되는데, 이 때 보간법(Interpolation)을 배우게 된다. 원하는 시작 지점과 끝 지점 사이에 원하는 함수를 사용하여 함숫값이나 근삿값을 구하는 방법이다. 가장 기초적으로 배우는 보간법은 바로 선형 보간법(Linear Interpolation), Lerp이다. 말 그대로 선형, 직선 함수를 사용하여 두 지점 사이에 함숫값을 구하는 보간법인데, 실제로 유니티에서 구현하다보면 선형으로 변하는게 아닌 곡선으로 값이 나올 때가 있다. 의도적으로 그런 효과를 원한다면 괜찮겠지만, 선형(직선) 보간법을 사용한만큼 선형적으로 변해야만 정확하게 사용한 것이다. 언제 그렇고, 어떻게 코드를 작성하면 그런지, 그리고 ..

article thumbnail
[UE5] 장비 장착 스크립트 클래스 상속도

Base Equippable Actor Class : Implement functionality inside the base equippable actor that you want all equippable items to inherit. - Equip/Unequip functionality - Attach functionality 즉, 장착/미장착 여부와 장착 시 손에 붙이는 가장 베이스 역할을 한다. 아래 클래스들은 이 클래스를 상속받아서 실행한다. Base Weapon Actor Class : Inherits functionality of base equippable so that the functionality can be accessed or overriden. Implement function..

article thumbnail
[UE5] Lumen vs Lightmap

INTRO 언리얼 엔진 5의 Lighting을 학습하던 중 학습하면서, 이전 버전의 언리얼 엔진에서 사용한 Lighting과 Lumen을 비교하여 어떤 장단점이 있는 지 알아보았다. 그 전에 Lumen에 대하여 간단히 살펴보자면, 언리얼 엔진의 Global Illumination과 Reflection에서 추가된 기술로, 미리 Light을 Bake하여 Lightmap을 이용하는 방식이 아닌, Fully Dynamic Realtime Lighting 시스템이다. GPU 연산을 줄이기 위해, 대부분 Static Light로 사용할 수 밖에 없었던 이전과는 다르게 이제는 빛이 움직여도 실시간으로 랜더링되며 이전보다 퀄리티도 좋아지고 연산량도 줄어들게 되었다. 위와 관련된 내용을 직접 UE5의 Level에서 세팅..

article thumbnail
[UE5] Return Mesh Parameter는 Primitive Component ?

Skeletal Mesh와 Static Mesh를 Output으로 Return하려할 때는 반드시 Component를 Primitive Component로 설정해야한다. USkeletalMeshComponent와 UStaticMeshComponent가 모두 UPrimitiveComponent를 상속받은 SubClass Component기 때문이다.