개발 고수(가 되고 싶은) 블로그
반응형

전체글 20

[언리얼 공부] 인터페이스(Interface) 와 컴포지션(Composition)

인터페이스 사용 이유어떤 객체가 반드시 구현해야할 행동을 지정하는데 활용다형성, 의존성 분리를 위해 사용한다. 특징인터페이스 생성시 두 개의 클래스가 생성U로 시작하는 타입클래스I로 시작하는 인터페이스 클래스 - 실질 클래스 구현하는 곳C++ 인터페이스 vs C# 인터페이스c# 에서는 추상 타입으로만 선언이 가능하지만 C++ 인터페이스는 선언하지 않고 로직을 구현할 수 있다.다만 구현하였을때 장점도 있지만 복잡해 질 수 있으므로 구현을 할예정이라면 차라리 그냥 일반 클래스를 상속받는것이 더 좋아보인다(굉장히 주관적)컴포지션is A 말고 Has A 를 구현하는 방법거대한 클래스를 효과적으로 설계하는데 유용하게 사용 가능언리얼 엔진에서 컴포지션 구현방법CDO (클래스 기본 객체) 에서 생성하는 방법.언리얼 ..

[언리얼 공부] 언리얼 리플렉션 시스템

유니티를 다뤄봤다면 리플렉션 이라는 것을 들어본 적이 있을것이다.  모던 객체지향의 정수라고 불리며 런타임중 자기 자신을 검사하고 조작할 수 있는 기능을 말한다. 이런 리플렉션을 적절히 활용하면 런타임중 클래스, 메서드, 필드등의 메타데이터를 동적으로 조회가 가능하다. 하지만 C++ 은 이전 글에서 다뤘듯이 리플렉션 시스템을 지원하지 않는다. 따라서 언리얼에서 독자적으로(*온몸비틀기를 통해) 리플렉션 시스템을 구축하였는데 오늘은 그 내용을 다뤄보고자 한다. 언리얼의 리플렉션 시스템이란?C++은 원래 리플렉션 지원하지 않는다. 하지만 UBT(Unreal Build Tool)와 UHT(Unreal Header Tool)를 이용하여 리플렉션 시스템이 구축되어있어 사용자는 편하게 사용할 수 있다.언리얼의 에디터..

[언리얼 공부] 언리얼 오브젝트 소개

언리얼의 C++ 은 기존 C++ 과 있어서 차이가 크다. 따라서 C++ 을 했던사람이라면 적응은 빠를 수 있다. 하지만 언리얼 오브젝트 없이 사용한다면 언리얼의 편리함은 가져가지 못한채로 오히려 예측할 수 없는 부분에서 오류가 나서 엉뚱한 부분을 수정하게되곤한다. 그래서 오늘은 언리얼의 특수성과 언리얼의 내부 컴파일 과정을 살펴보고자 한다.언리얼 C++ 이란?성능을 위해 C++을 포기할 수 없었던 언리얼은 C++ 을 사용하되 C# 과같은 모던 객체 지향을 추구하고자 하였다.그래서 언리얼에서는 기존 C++ 언어를 확장하여(온몸비틀기를 하여) 모던 객체 지향 설계를 가능하게 하는 새로운 시스템 구축하게 되었다 언리얼 오브젝트 VS 일반 C++ 오브젝트일반 C++ 오브젝트접두사 F 사용FCardData저수준의..

[언리얼 공부] 언리얼 C++ 기본타입과 문자열

언리얼 환경에서 알아두어야할 기본타입과 고려할 점C++ 를 사용하지만 기본타입을 사용하지 않는다.플랫폼 파편화 때문플랫폼 파편화란 ?특정 함수나 타입들이 기기마다 다르게 작동될 수 있는 현상C++ 최신 규약에서는 최소 32비트 보장 하지만 특정 플랫폼은 64 비트일 수도 있음 ( 빅엔디안, 리틀엔디안)단일 기기에서 최고의 성능을 뽑아내는 게임 프로그래밍에 치명적이다.데이터 타입의 애매 모호함은 게임 개발 시 문제를 일으킬 수 있다.네트워크 상에서 데이터 통신이 효율적이고 안정적이어야 한다.언리얼 엔진에서 사용하는 기본 타입bool보편적으로 1byte 로 알려져 있지만 처리하는 os 에 따라 달라질 수 있기때문에 위험하여 크기를 추론해서 사용하는 일은 없는게 안정성에 좋다.헤더에는 가급적 uint8 타입을..

Unity Shader 사용 방법

물체를 화면에 렌더링 하기 위해서는 Shader 를 거쳐 화면에 나타나게 된다. 유니티를 사용함에 있어서도 내장 쉐이더를 사용하거나 용도에 따라 새로 쉐이더를 만들어 사용하는 방법이 있다. 아웃라인 쉐이더를 만들고 싶어서 새로 쉐이더를 만들어보려 시도를 하는데 있는 것도 모르면서 새로 만드는건 건방진거같아서 우선 유니티에 있는 기본 Lit shader 에 대해 각 프로퍼티들의 역할을 공부해 보았다. 기본적으로 Lit Shader 은 빛의 영향을 받는 물리기반 렌더링( Physically Based Rendering )이고 URP 혹은 HDRP 에서 사용시 더 다양한 효과를 볼수 있다. URP 에 있는 기본 Lit shader 이다. 순서대로 설명해볼까 한다. 1. Base Map Diffuse Map, ..

[미드저니] 알아두면 꼭 쓰는 미드저니 명령어 몇 가지

미드저니를 쓰다보면 현란하게 -- 를 붙여 쓰는 사람들이 많다. 저게 무슨 말이지 싶지만 해당 명령어를 쓰면 좀더 일관성 있게, 혹은 더 특이하게 등 원하는 이미지로 만들기 쉽다. 일단 가장 많이 사용하는 명령어를 표로 정리해보았다. 단어 의미 사용예시 --ar 비율을 설정 할 수 있다 -- ar 1:2 --no 제거하고 싶은 오브젝트를 제거 할 수 있다. --no human --style 원하는 스타일로 그림을 뽑아낼수있다. 사용가능한 스타일은 cute, expressive, original, or scenic --style cute --s 입력값이 작을수록 현실에 가까워지고 입력값이 클수록 비현실적이게 된다. 0~ 1000 사이로 입력 가능. 며칠 미드저니를 구경해보니 niji 모델 사용하는 사람들은..

생성형 AI 2023.12.16

[미드저니] 블로그에 쓸만한 심플한 그림 그리기

블로그 글을 쓰다보면 원하는 그림이 있는데 구글링 해보면 잘 나오지도 않고 이거 블로그글에 써도 되나 싶은 저작권들도있다. 하지만 미드저니라면! 원하는 그림을 그려볼 수 있다! 1. 원하는 내용을 생각한다. - 일단 나는 프로그래밍 블로그니까 뭔가 코드를 짜는 프로그래머 이미지가 필요하다고 가정! Back view of a programmer wearing a hoodie writing code 로 일단 결정 이것만으로 한 번 돌려보자! 하지만 블로그 스타일이라면 조금더 실사보다는 일러스트나 낙서 같은 느낌이 중요하다고 생각한다. 밑줄친 부분을 추가해서 낙서 스타일이되 좀더 심플하도록 요청해보았다. Back view of a programmer wearing a hoodie writing code, si..

생성형 AI 2023.12.10

[미드저니] 미드저니 이미지 불러와서 명령어 입력해서 그림그리기

미드저니 오늘 처음 써봤는데 너무 신기하다. 그림을 되게 잘 그린다. 다시 제목으로 돌아와서 설명하자면 명령어만 입력하는 방법도 있지만 이미지를 참조해서 그렸으면 하는 부분이 있는데 몰라서 헤메이는 분들을 위해 이미지 참조해서 그리도록 하는 방법을 설명하고자 한다. 1. 이미지를 아무 디스코드에나 올린다. 2. 링크 복사하기를 누른다. https://cdn.discordapp.com/attachments/1034769339330605126/1182688852784185344/20181228_195243_-803990022.png?ex=65859bd3&is=6573 ... 등 굉장히 긴 하이퍼링크가 나오는데 png 이후 글자들을 모두 삭제해 준다. https://cdn.discordapp.com/attac..

생성형 AI 2023.12.09

transfrom.Find("name") vs Inspector 에서 GameObject 넣기

우선 프로그래밍적 관점에서 게임이란 간단히 정의하자면 가상의 세계 속에서 물체가 상호작용하는 것을 말한다. 상호작용이 사용자와의 상호작용이거나 물체와 물체 간의 상호작용일 수도 있다. Unity에 있어서 물체를 GameObject로 정의하고 GameObject는 유니티 내의 모든 요소를 표현하는 기본적인 개체 단위를 말한다. 눈에 보이든 보이지 않든 모든 Scene 위의 것은 GameObject로 표현된다. GameObject는 게임의 구성요소를 가지고 있는 컨테이너 역할을 하고 Gameworld에서 위치를 가지고 다른 GameObject와 상호작용을 하면서 게임을 구성한다. GameObject는 다양한 컴포넌트를 가지고 있고 컴포넌트를 이용해 게임오브젝트의 상호작용을 제어할 수 있다. Unity에서 S..

변수명 짓는 방법: 코드 가독성을 높이는 핵심 요소

클라, 서버, 백엔드, 프런트엔드 구분 없이 프로그래밍의 가장 큰 난제는 누가 뭐라 해도... 변수명 짓기이다. 변수명이 뭐가 중요하냐! 돌아가는 코드만 잘짜면 되는 게 아니냐! 할 수도 있지만 생각보다 중요하다. 네이밍 규칙을 정의 하고 코드를 짜는 가장 큰 이유는 해당 변수가 어떤 역할을 하는지 한눈에 알도록 하고 협업 시 읽기 편하게 하는 것이다. 마치 소설을 보는데 다른사람이 썼다고 중간에 문체가 바뀌면 이질감이 드는 것처럼 코드도 마찬가지다. 통일하지 않은 코드 규칙은 어떻게 동작하는지 파악하는데 시간이 더 오래걸리기 때문에 전체 생산성과도 관련이 있다. 물론 맞춤법처럼 획일화된 기준은 없다. 그래서 어떤 방식으로 지어도 괜찮지만 일관된 방식이 가장 중요하다. 쓸때 고려하는 형식과 관련된 3가지..

반응형