Life Archive
article thumbnail
[UE] Live Coding vs Hot Reload

IDE : Visual Studio Code Editor : UE 5.3 Hot Reload (핫 리로드) 핫 리로드 방식은, 기존 개발자에게 익숙한 방식이며 IDE에서 빌드하면 Editor에 바로 적용되는 기능이다. 혹은, Editor에서 하단 모양의 버튼을 클릭해서 컴파일할 수도 있다. IDE에서 수정한 내용을 Editor에서 컴파일하면 수정이 된다. Live Coding (라이브코딩) 라이브 코딩은 Editor, 즉, 엔진이 실행되고 있는 동안 C++ 코드를 리빌드하고 바이너리를 패치하는 시스템이다. IDE에서 수정한 내용을 빌드하려면 Editor를 반드시 종료해야하며, 종료를 하지 않고 Build를 하면 "Unable to build while Live Coding is active. Exit t..

[CS] Getter Setter
게임 개발 학습/CS 2023. 9. 25. 12:51

OOP로 개발을 하다보면 캡슐화가 매우 중요하다. 특히 게임개발을 하다보면 데이터 하나하나가 매우 중요한데 이런 데이터를 캡슐화하지 않게 되면 치명적인 오류를 발생시킬 수도 있다. (게임의 의도대로 진행이 안된다던지 등의 이슈) 그래서 한 클래스 내부에서 데이터를 Private 으로 설정하여 제한된 접근을 생성하며 캡슐화를 한다. 하지만 게임 로직 상 값이 수정돼야할 상황이 종종 발생하는데 이 때, Getter/Setter를 이용하여 좀 더 안전하게 값을 수정한다. protected static _language = Application.systemLanguage; // getter setter public static get Language() { if (this._language === 23) { r..

article thumbnail
[CS] Pure Function
게임 개발 학습/CS 2023. 9. 25. 12:50

UE5를 학습하던 도중 캡슐화를 하면서 Pure 체크박스에 체크를 하여 순수함수로 만들어줬었는데, 확실하게 순수함수에 대해 짚고 넘어가고자 학습하게 되었다. 순수 함수를 검색하면 아래와 같이 나온다. - 같은 입력를 넣으면, 항상 같은 출력이 나오는 함수 - 사이드이펙트(부작용)이 없는 함수 본격적으로 학습하기 전에, 함수에 대한 기본개념을 다시 숙지하자면, 함수는 아래와 같은 목적으로 사용된다. - Mapping : 주어진 입력을 원하는 출력으로 매핑해주는 기능 - Procedures : 함수는 순차적으로 처리하도록 실행될 때가 있는데, 이를 절차형 프로그래밍 (PP) 라고 부른다. - I/O : 다른 시스템과 소통하기 위해 존재하는 함수도 있다. 만약에 여러 개의 함수가 하나의 데이터를 동시에 수정하..

[CS] 객체 지향 설계 5원칙 (SOILD 원칙)
게임 개발 학습/CS 2023. 9. 25. 12:48

객체 지향 설계 5원칙 (SOILD 원칙) SRP (Single Responsibility Principle) - 모든 클래스는 각각 하나의 책임만 가져야한다. 클래스는 그 책임을 완전히 캡슐화해야함을 말한다. (캡슐화 : 객체지향프로그래밍에서의 중요한 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것이며, 데이터를 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한 수식자의 기능을 제공한다. OCP (Open Closed Principle) - 확장에는 열려있고 수정에는 닫혀있는, 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계까 되어야한다는 원칙을 말한다. LSP (Liskov Substitution Principle) - 자식 클래스는 언제나..

article thumbnail
[CS] OOP 스터디 (설계 5원칙과 Layer)
게임 개발 학습/CS 2023. 9. 25. 12:41

객체 지향 설계 원칙 총정리 응집도를 높인다 1-1. 단일 책임 원칙 하나의 클래스는 하나의 기능만 가져야 한다. 그렇지 않다면 클래스를 분리한다 분리된 클래스끼리 위계 관계가 있다면 있다면 상속한다 1-2. 인터페이스 분리 원칙 특정 클라이언트는 클래스의 특정 기능만을 사용해야 한다 따라서 특정 클라이언트를 위한 특정 인터페이스를 정의한다 그리고 특정 클라이언트는 특정 인터페이스로 객체를 선언한다 객체 생성시에 구체 클래스를 쓰거나 추상 클래스를 쓴다 결합도를 낮춘다 2-1은 2-2와 2-3의 조합 즉, 추상성과 다형성으로 성취될 수 있다 2-1. 개방 폐쇄의 원칙 변경을 최소화하고 동시에 확장이 가능한 설계를 고려한다 이를 위해서 추상성과 다형성을 활용해야 한다 이를 통해서 결합도를 낮춘다 2-2. ..

[CS] 핵심 디자인 패턴 6가지
게임 개발 학습/CS 2023. 9. 25. 12:39

핵심 디자인 패턴 6가지 싱글톤 패턴 전략 패턴 팩토리 패턴 어댑터 패턴 프록시 패턴 옵저버 패턴 싱글톤 패턴 프로그램 실행 중에 최대 하나만 있어야 할 경우나 전역적으로 접근이 가능한 개체여야 할 경우, 어떤 클래스에서 만들 수 있는 인스턴스 수를 하나로 제한하기 위해서 사용한다. static 변수를 직접 쓰는 대신 대신 굳이 싱글톤 패턴을 쓰는 이유는 static 변수는 전역 변수에 가깝지만 싱글톤 객체는 객체지향 패러다임에 맞기 때문 싱글톤은 객체이므로 생성자로 생성 시점을 제어할 수 없다. 전략 패턴 간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴입니다. 예를 들어, 기차( Tra..

article thumbnail
[Unity] LookAtConstraint Class 구현 및 비교
게임 개발 학습/Unity 2023. 9. 25. 12:26

INTRO Unity XR Interaction Toolkit을 공부하던 중 LeftHand Direct Interactor에 Kill Log나 HP 등을 표시할 UI를 부착해보기로 했습니다. 이전 제페토 월드를 제작할 때 말풍선에 사용했던 코드를 비교하면서 새로운 방법과 기존 방법과의 차이를 비교해보려고 합니다. CONTENT 미리 Prefab화 해둔 UI Offset를 Hierachy에 Instantiate하고 LeftHand Direct Interactor의 Child로 넣어주었습니다. 중요한 것은 UI의 Rotation이 플레이어의 카메라 Rotation에 맞춰 실시간으로 변해야 한다는 것이죠 제페토 프로젝트를 진행하면서 NPC의 말풍선에도 똑같은 기능을 적용시켜야 했으며, 그 당시에는 LookA..

article thumbnail
[P의 거짓] 2회차 완료! 국산 소울라이크.. 감동 그 자체
게임 플레이 2023. 9. 25. 12:15

지금까지 플레이한걸로 간략하게만 평가하자면, 스토리 : ★★★★☆ (흠.. 뭔가 5개를 주기에는 뭔가 결여된? 스토리같아요... 아니면 익숙한? 예측하기 쉬운 스토리네요. 자세한 내용은 분석할 때 정리해봐야겠군요) 그래픽 : ★★★★★ (역시 언리얼! 그리고 아트팀이 디테일에 신경을 쓴 흔적이 진짜 많이 보이네요) 사운드 : ★★★★★ (요즘 게임들 BGM/SFX 미쳤어요 진짜..) 레벨 디자인 : ★★★☆☆ (평가 중에 딱 와닿는 말이 ㅋㅋ 개발자가 불편함과 어려움을 구분하지 못한다.. 라는 말 ㅋㅋ..) 전투 디자인 : ★★★★☆ (매력적인 전투가 많지만, 퍼펙트 가드에 너무 의존하는 전투다ㅠㅠ) 무기 디자인 : ★★★☆☆ (디렉터님이 밸런스 조정 중에 있다고 하심!) 지금까지 가장 인상 깊은 보스는..

(정리중) 자주 사용되는 속성과 대미지/디버프 연결 리스트

행 : 속성 열 : 대미지/디버프 독 행 - 지속 대미지(중독), 전이 -> 확장 : 부식/방사능/화학무기 불 행 - 지속 대미지(화상), 즉시 대미지 -> 확장 : 폭발 물 행 - 즉시 대미지, 지속 대미지(동상), 슬로우(각종 속도 감소, 공격속도/이동속도 등), 익사 -> 확장 : 물 빛 행 - 즉시 대미지, 시야 제한(실명), 스턴 -> 확장 : 번개 대지 행 - 즉시 대미지, 스턴, 슬로우, 밀쳐냄 -> 확장 : 돌, 기계 바람 행 - 즉시 대미지, 스턴, 무작위 이동, 시야 제한(실명과 유사) -> 확장 : 폭풍 어둠 행 - 즉시 대미지, 지속 대미지(ex. 던파 소울브링어 스킬), 시야 제한 자연 행 - 치유, 즉시 대미지, 지속 대미지(ex. 덩굴)

article thumbnail
뽑기(가챠) 시스템에 다른 시스템을 병합한다?? 왜 안할까?

일반적인 수집형 게임들을 둘러보면, 가챠를 통해 얻는 아이템들은 일단 뽑기만 하면 사용에는 제한이 없습니다. 예시로 붕괴 : 스타레일의 캐릭터 워프를 한 번 보자면, 워프를 통해 얻는 캐릭터를 일단 뽑으면, 사용에 제약이 없죠. 개척 레벨과 같은 다른 시스템과 병합하여 사용에 제약을 걸어둔다면, 게임 플레이타임을 늘릴 수 있지 않았을까? 왜 도입하지 않았을까?를 정말 단순하게 생각해봤고, 생각을 정리하고 글을 작성하게 되었습니다. 게임에서는 유저의 플레이 타임이 BM만큼 중요하기에, 위와 같은 추가 조건이 있다면 캐릭 사용을 위해 플레이어는 어쩔 수 없이 오래 플레이하지 않을까? 당연히 매우 단순하고 순수한 생각이었고, 이 생각이 왜 틀렸는 지, 왜 타게임들은 이 방법을 사용안하는 지를 여러 게임을 분석..