본문 바로가기

전체 글

(144)
입력값 처리(숫자 반올림, 올림, 내림, 문자열 스트림, 진법 변환) 이 글에서 사용하는 연산들은 모두 cmath 헤더를 포함해야 한다.반올림(round)주어진 숫자를 가장 가까운 정수로 변환하는 것. round 함수를 사용한다.0.5인 경우 0에서 먼 쪽(그냥 절댓값 기준 큰 수라고 이해하면 될 듯)으로 반올림한다.ex) round(2.5) = 3, round(-2.5) = -3// 목적: C++에서 round 함수를 사용하여 소수점 숫자를 가장 가까운 정수로 반올림하는 예제// 동작: 소수점이 0.5 이상이면 올림, 아니면 내림#include #include using namespace std;int main(){ double num1 = 3.2; double num2 = 3.5; double num3 = 3.8; cout 올림(ceil = 천장)..
자주 하는 실수(단락 평가, off by one, 0으로 나누기, 중간 값의 오버플로) 단락 평가논리 연산자 AND(&&)와 OR(||)의 조건식에서 첫 번째 피연산자의 평가 결과만으로 전체 표현식의 값을 결정할 수 있는 경우 두 번째 피연산자를 평가하지 않는다. 이를 단락 평가라고 한다. 아래와 같은 경우에 단락평가가 발생한다.A && B에서 A가 false일 경우, B는 평가되지 않는다.-> 첫 번째 피연산자가 false 이면 전체 조건식은 무조건 false이기 때문이다.// 목적: A && B에서 A가 false일 경우 B는 평가되지 않음을 확인#include using namespace std;bool checkA() { cout A || B 에서 A가 true인 경우 B는 평가되지 않는다.-> 첫 번째 피연산자가 true이면 전체 조건식은 무조건 true가 되기 때문이다.//..
문자열 메서드(find, append, replace, substr 등) 문자열은 문자들이 연속적으로 나열된 데이터다.C++에서 문자열을 사용하기 위해 #include 헤더를 포함해야 한다.문자열 찾기(find)문자열에서 특정 문자 또는 문자열을 찾을 때는 find() 메서드를 사용한다.find 메서드는 find(찾으려는 문자열 또는 문자, 탐색 시작 위치)로 사용하고 만약 찾으면 문자열의 시작 위치를 인덱스로 반환하고 찾지 못했다면 string::npos라는 값을 반환한다.(탐색 시작 위치를 생략하면 처음부터 찾는다)find()메서드의 시간 복잡도는 O(N), N은 검색 대상이 되는 원래 문자열의 길이다.// 목적: 탐색 시작 위치를 지정하고, 찾지 못했을 경우 string::npos로 처리#include #include using namespace std;int main..
알고리즘 효율(연산, 빅오 표기법) 알고리즘의 성능을 측정하는 방법1. 절대 시간 측정하기 - 직접 초시계를 들고 경과 시간을 측정하기PC의 성능에 따라 수행 시간이 달라지므로 알고리즘 성능을 측정하기에는 적합하지 않음.2. 연산 횟수 측정하기 - 코드의 연산 횟수를 측정하기코드가 동일하다면 연산 횟수도 항상 일정하므로 적합함.-> 성능을 측정한다고 했을 때는 연산 횟수를 측정하는것.연산연산의 종류1. 반복문의 수행 횟수1부터 N까지 합 구하기(단일 반복문)-> 반복문이 N번 수행됨. 2차원 행렬(N*M 크기의 행렬)의 덧셈(중첩 반복문)-> 반복문이 N * M번 수행됨.2. 비교 / 대입/ 산술 연산자 사용 횟수값의 비교, 대입 또는 컨테이너(배열 벡터)의 비교, 대입단순 비교 대입은 연산에 큰 영향을 안끼칠것 같지만 데이터 크기가 큰 ..
언리얼C++ 11일차(파티클, 사운드) 파티클 시각 효과, 사운드 추가파티클은 게임 내에서 불꽃, 연기, 폭발, 먼지 등 다양한 시각적 효과를 구현하기 위한 시스템이다.다수의 작은 입자들이 모여 움직이면서 특정한 모양, 색상 혹은 애니메이션 효과를 만들어낸다.파티클 시스템에는 Cascade와 Niagara 방식이 있는데 아래와 같은 특징이 있다.Cascade vs. NiagaraCascade: 언리얼 엔진 3 시절부터 제공된 오래된 파티클 편집 툴입니다. 언리얼 엔진 4, 5에서도 여전히 호환되지만, 신규 기능 업데이트는 주로 Niagara 위주로 이루어지고 있습니다.초급자가 배우기에 상대적으로 간단하고 빠르게 결과를 볼 수 있음레거시 프로젝트나 기존 아티스트 툴체인에서 많이 사용복잡하거나 고급스러운 VFX 연출에는 한계Niagara: 언리얼..
언리얼C++ 10일차(UI 애니메이션, Widget Component) UI 애니메이션UMG에는 애니메이션 기능이 탑재되어 있다.이 기능을 사용하면 버튼이 클릭될 때 색이 바뀌거나 텍스트가 화면 위로 등장했다가 사라지는 등 다양한 연출을 구현할 수 있다.UMG 에디터 내에서 Window-Animations을 클릭하면 패널이 아래에 뜬다.새 애니메이션을 생성하거나 이미 만든 애니메이션을 선택해서 타임라인을 확인할 수 있다.Keyframe을 이용하여 특정 시간대에 UI속성(크기, 위치, 투명도, 색상 등)을 어떻게 바꿀지 기록할 수 있다. MainMenu UI에서 게임이 끝날 때 Game Over! 텍스트 위젯과 총 점수를 나타내는 Total Score 텍스트 위젯을 추가하고 화면 가운데에 오도록 배치한다. 색을 정하고 텍스트를 적어준다.GameOver와 TotalScore 텍..
언리얼C++ 10일차(메뉴 위젯, 게임 흐름에 따라 UI 생성하기) 저번 시간에 게임중 나오는 HUD위젯을 구현했다면 이번에는 게임을 중단하거나 시작 전 나오는 메뉴 위젯을 만들어본다.메뉴 위젯 만들기Widget Blueprint를 새로 만들어서 캔버스와 보더, 버튼 위을 배치한다.보더는 검은색을 주고 투명도를 조절하여 게임에서 일시정지 할 때 나오는거처럼 구현한다.버튼은 화면의 가운데에 오도록 앵커를 전체로 놓고 Offset을 0으로 두거나 해상도 절반씩 위치하도록 조절한다음 Alignment를 0.5씩 주면 가운데로 정렬이 된다.텍스트 위젯을 버튼에 드래그해서 놓고 텍스트를 Start로 변경한다흔히 게임 개발 시 메뉴 전용 맵을 만들어서 그 맵에서는 메뉴만 띄우도록 하고 실제 게임이 시작되면 게임 레벨로 넘어가도록 구현을 한다. 이 방식을 쓰면 Menu UI와 Gam..
언리얼C++ 9일차(UMG, UI, 바인딩, SetText) HUD(Heads-Up Display)는 게임 내에서 플레이어에게 정보를 제공하기 위한 화면이다.언리얼엔진에는 UMG 시스템이 있다.UMG (Unreal Motion Graphics)언리얼 엔진의 Widget Blueprint를 이용한 UI 시스템더 직관적이고 강력한 HUD 디자인 가능다양한 위젯(Text, Button, Image 등)을 사용하여 HUD를 제작Widget Blueprint언리얼 엔진에서 UI (User Interface)를 시각적으로 설계할 수 있도록 제공되는 에디터용 블루프린트입니다.개발자는 이 블루프린트 안에서 Text Block, Button, Image 등 다양한 UI 요소를 드래그 앤 드롭으로 간편하게 배치할 수 있습니다.이렇게 만든 Widget Blueprint는 게임 화면에..