JS DEVLOG : Github 자세히보기

Unreal Engine

more

인디게임 개발자가 직접 경험한 게임 판매 세무 꿀팁

게임을 개발하는 것만으로도 바쁜데, 실제로 게임을 판매하기 시작하면 사업자등록부터 해외 매출, 부가가치세, 종합소득세까지 신경 써야 할 것이 굉장히 많습니다.국세청에서 연락오면 정신이 촥 하고 번쩍듭니다..저도 Steam과 국내 플랫폼을 통해 게임을 판매하면서 처음에는 무엇부터 준비해야 하는지 몰라 많이 헤맸습니다. 직접 사업자등록과 세금 신고를 진행하며 느낀 점을 기준으로 정리해 보겠습니다.1. 가능하다면 세무사를 이용하는 것이 가장 편하다게임 판매는 일반적인 국내 매출과 달리 Steam 같은 해외 플랫폼 매출, 환율, 해외 송금 수수료, 국내 플랫폼 정산금 등이 섞일 수 있습니다.특히 Steam 정산 내역에는 게임 판매금액, 플랫폼 수수료, 세금, 환율 등이 함께 표시되기 때문에 처음 사업을 시작한 ..

언리얼 엔진 5 2026.07.23 0

언리얼엔진5 C++로 정복하기(24) Fisher-Yates Shuffle로 데이터 테이블 무작위 확률 편향 해결

안녕하세요! 오늘도 구현해 둔 코드들을 복기하며 또 글을 끄적여 봅니다.이번에 다룰 주제는 게임 내 랜덤 이벤트 시스템을 만들면서 겪었던 확률 편향 문제와 이를 해결하기 위해 사용한 Fisher-Yates Shuffle(피셔-예이츠 셔플) 알고리즘의 C++ 구현 및 적용기입니다.현재 개발한 게임에는 총 4개의 이벤트가 있습니다. 1. 스테이지 시작시에 기습2. 스테이지 시작할때 계약3. 스테이지 종료 후 상인4. 스테이지 시작할 때 도전이 이벤트들은 언리얼 엔진의 데이터 테이블로 관리하며 총 4가지의 이벤트가 있습니다 처음에는 단순하게 구현하였지만,구현 후 테스트할때 모든 이벤트 확률을 100퍼로 해보았지만 모든 이벤트가 다 발생해야 정상이지만 두 가지의 문제가 있었씁니다. 이탈 문제: RollForEv..

언리얼 엔진 5 2026.06.05 0

언리얼엔진5 C++로 정복하기(23) 언리얼 5.5.4 DLSS 4.5 적용

게임의 비주얼 퀄리티와 프레임을 동시에 챙기기 위해 업스케일링 기술 적용에 대해 고민을 많이 했습니다. 기존의 TSR(Temporal Super Resolution)이나 기본적인 안티엘리어싱만 적용한 상태라면 프레임을 방어하기에는 괜찮겠지만, 그래픽 퀄리티를 올리기 위해 다이렉트X 12환경에서 레이 트레이싱, 루멘을 활성화하게 되면 성능 부하가 너무 늘어나게 됩니다. 현재 개발한 게임은 PVE 이긴 하나 플레이어의 패링이나 회피 반응이 중요한데, 그렇게 좋은 그래픽은 아니지만.. 높은 수준의 프레임을 유지하기 위해 DLSS 도입을 해봤습니다.엔비디아에서 제공하는 서드파티 SDK인 DLSS 4.5 버전을 프로젝트에 적용하고. 하드웨어 사양을 분석하여 구형 GTX 시리즈에서는 옵션을 활성화하지 못하도록 예외..

언리얼 엔진 5 2026.06.04 0

언리얼엔진5 C++로 정복하기(22) AI 학습 및 동적 난이도 조절 시스템

플레이어 대 플레이어 즉 PVP가 아닌 PVE에서 PVP를 하는것 같고 게임의 재미를 올리기 위해선 무슨 방법이 있을까 하는 생각을 했는데, 단순 레벨 스케일링은 플레이어의 레벨이나 스탯에 따라 적의 스탯과 레벨이 오르는거지 비슷한 패턴 거의 같은 패턴으로 여러번 플레이 하면 간파가 가능하며, 루즈해져 다회차 및 장시간 플레이가 많이 힘듭니다.이번에 소개해드릴 기능은 플레이어의 전투 성향을 실시간으로 분석하여 다음 라운드 마다 가중치와 스탯을 동적으로 변경하는 DDA 시스템에 대해 구현한 코드에 대해 간략히 설명드리겠습니다.1. 시스템 아키텍처 개요전체 데이터 흐름은 다음과 같습니다.1단계. 플레이중 (A -> B)주체: UTSPlayerPatternComponent (패턴 수집 컴포넌트)타이밍: 플레이..

언리얼 엔진 5 2026.06.04 0

TOOSIN : 투신 스팀 출시 및 공식 런치 트레일러 공개

https://youtu.be/nkfCGh1Q-rE?si=l5XiJrztUAxLO6q1 TEAM NIRIZ1 like. "TOOSIN: 투신 - Official Gameplay Launch Trailer"www.youtube.comhttps://store.steampowered.com/app/4635530/TOOSIN/ TOOSIN : 투신 on SteamFace an AI that evolves by learning your combat patterns in real-time. TOOSIN is a roguelike action game where enemies analyze your habits to counter you. Strategically combine 100+ traits and weapo..

언리얼 엔진 5 2026.04.25 0

언리얼엔진 프로젝트 TOOSIN : 투신이 게임이 출시합니다!

https://store.onstove.com/ko/games/104376 Toosin : 투신 | STOVE 스토어언리얼 엔진 5로 구현한 1대1 투기장 로그라이크 액션. 플레이어의 패턴을 실시간 학습하고 적응하는 AI에 맞서 승리하세요.store.onstove.com텀블벅 후원이 성공적으로 종료되고스토브 인디에서 첫 출시합니다.출시 일정• 사전 판매: 2026년 4월 15일(수) 20:00 시작• 정식 발매: 2026년 4월 17일(금) 20:00 시작출시 후 이벤트도 진행할 예정이니, 많은 관심부탁드립니다.

언리얼 엔진 5 2026.04.15 1

언리얼엔진5 C++로 정복하기(21) 업적 시스템 만들기: 데이터 기반 설계부터 UI 시퀀싱까지

안녕하세요 오랜만에 정복하기 글을 써봅니다. 이제 최종 빌드를 하여 시간적 여유가 많이 생겨..이용등급 및 빌드 심사중이며 남는 시간에 차근차근 이번 Toosin: 투신 프로젝트를 개발하면서 블로그에 안쓴것들을 한번 써보고자 합니다.이번 글은 조금 긴데, 언리얼엔진의 데이터 테이블 활용법과 서브시스템 아키텍처, 로직과 UI를 분리하는 델리게이트 그리고 업적이 동시에 달성될 때 팝업을 뛰어주는 큐 시스템 까지 주제를 담았습니다. 1. 업적 시스템 왜 데이터 기반 설계 일까?언리얼 개발을 할때 초보자와 숙련자의 차이는 데이터와 로직을 얼마나 잘 분리하는가 라는 차이가 있다 생각합니다. 하드코딩 관련하여..만약 캐릭터 클래스에서 업적에 관련한 모든 로직을 체크한다면..? 저러한 코드들이 엄청나게 길어지면서 나..

언리얼 엔진 5 2026.04.09 3

언리얼엔진 5 TOOSIN : 투신의 공식 시네마틱이 공개되었습니다.

https://youtu.be/mr6uuFZbpm8?si=tRcVI1fh7EumCZ99시네마틱 기능을 오랜만에 쓰기도 하고 어렵네요~~ 그래픽 카드 메모리도 부족해서 4K는 추출도 안되고 타 게임들에 비해서 많이 부족하겠지만 많은 관심 부탁드립니다. https://tumblbug.com/teamtoosin_ 자가학습AI 투기장 1:1 로그라이크 게임자가학습 AI로 스스로 학습하는 적 AI와 싸우는 1:1 투기장 로그라이크 게임입니다.tumblbug.com 아직 후원기간도 조금 남았습니다.또한 앞으로의 로드맵을 공개하였습니다.많은 관심부탁드립니다!

언리얼 엔진 5 2026.04.03 0

언리얼엔진5 투신 : Toosin의 트레일러와 후원 페이지가 열렸습니다

https://airbridge.tumblbug.com/f3rckl 자가학습AI 투기장 1:1 로그라이크 게임머신러닝을 적용해 스스로 학습하는 적 AI와 싸우는 1:1 투기장 로그라이크 게임입니다.airbridge.tumblbug.comhttps://youtu.be/hxRHCSewN8A?si=ntTihBArnaH26oBz TOOSIN : 투신 GAMEPLAY VIDEO1인 개발로 제작 중인 게임이며, 투기장 1대1 자가학습AI와 싸우는 로그라이크 장르의 게임입니다. 6월 이내 스팀에 출시 예정입니다. 많은 관심 부탁드립니다.This is a solo-developed game scheduled for relwww.youtube.com후원페이지와 트레일러 영상입니다.모두와 함께 게임을 만들어 세상에 보여주..

언리얼 엔진 5 2026.03.13 1

언리얼엔진5로 개발한 게임이 출시 예정입니다.!

https://github.com/rhwjdtjs/Toosin_Public GitHub - rhwjdtjs/Toosin_Public: 스팀 및 스위치2로 출시 예정작인 언리얼 엔진 5로 만든 게임 투신의 개스팀 및 스위치2로 출시 예정작인 언리얼 엔진 5로 만든 게임 투신의 개발 현황 입니다.(no Code) - rhwjdtjs/Toosin_Publicgithub.comhttps://youtu.be/hxRHCSewN8A?si=8ZwLhGKpA7nD_lWA 트레일러 공개 및 텀블벅은 심사 진행중입니다.!많은 관심 부탁드립니다!

언리얼 엔진 5 2026.03.08 2

게임 수학 <이득우의 게임 수학>

more

수와 집합, 함수, 좌표계

마크 다운 문법으로 작성하여 게시글보다 깃허브에서 보시는게 더 이해가 잘되실겁니다. 📝 [기초 수학: 집합부터 좌표계까지]📅 공부한 날짜날짜: 2026-02-02 🚀 1. 학습 목표 (Objective)수와 집합의 개념을 이해하고 언리얼 엔진의 컨테이너(TSet, TArray)와 연결한다.함수의 종류와 합성/역함수 개념을 익히고 게임 로직(좌표 변환, 피킹)에 적용한다.공간좌표계와 벡터의 개념을 잡는다.💡 2. 핵심 개념 및 상세 내용 (Key Concepts & Details)2.1 수와 집합 (Numbers and Sets)1. 집합의 개념우리가 흔히 "모임"이라고 부르는 것을 수학적으로 명확하게 "집합"이라고 정의함.소박한 집합론 (Naive Set Theory): 명확한 기준만 있다면 어..

게임수학 2026.02.02 0

게임 수학 (3) 삼각 함수

한 각이 직각인 직각삼각형을 이루는 세 변은 각 위치에 따라 빗변,밑변,높이라고 부른다. 한각이 직각이므로 나머지 두 각의 합이 90도가 되어야한다. 빗변과 밑변의 사잇각은 θ를 이용해 표현한다. 직각삼각형을 구성하는 세 변에서 두 변을 뽑아 각각의 비례꽌계를 나타낸 것은 삼각비 라고 한다. 삼각비에는 여러 종류가 있지만 사인sine, 코사인Cosine, 탄젠트Tangent 세가지가 가장 대표적이다. 밑변의 길이를 a, 높이의 길이를 b, 빗변의 길이를 c, 빗변과 밑변과의 사잇각을 θ 라고 할때 sin θ  = b/ccos θ = a/ctan θ = b/a직각 삼각형에서 측정할 수 있는 사잇각은 0도 보다 크거나 90도 보다 작아야한다.직각삼각형을 데카르트 좌포계상에 배치하고 사잇각의 범위를 실수 전체..

게임수학 2024.09.20 0

게임 수학 (2) 벡터 스칼라

벡터: 평면에서 시각적으로 의미 있는 물체를 생성하려면 평면을 구성하는 원소를 정의해야한다. 이것을 벡터라고 한다. 데카르트 좌표계: 직선의 수 집합을 수직으로 배치해 평면을 표기하는 방식곱집합의 원어: 데카르트 곱->수평으로 배치한 첫 번째 실수 집합의 미지수를 x, 수직으로 배치한 두 번째 실수 집합의 미지수를 y로 표기하고 원점을 기준으로 x축의 오른편, y축의 위편을 양의 영역을 나타낸다.->데카르트 좌표계의 한 원소는 곱집합과 동일하게 순서쌍으로 표현하며 좌표라고 부른다(coordinate) 벡터 공간: 두 개 이상의 실수를 곱집합으로 묶어 형성된 집합을 공리적 집합론의 관점에서 규정한 것벡터: 벡터 공간의 원소->공리적 집합론의 관점에서 특정한 수 집합을 지칭하지 않고 연산이 갖는 성질만 다루..

게임수학 2024.09.03 1

게임 수학 (1) 수와 집합

집합: 서로 구분되는 원소로 구성된 묶음 -> 소박한 집합론-> 자연수 N, 정수 Z, 유리수 U, 무리수, 실수 R, 복소수 C, 사원수 H공리: 명제 중에서 증명할 필요가 없는 기본명제->공리를 기반으로 대상을 구분하는 집합론->공리적 집합론이항 연산: 두개의 원소를 사용해 새로운 원소를 만들어냄-> 닫혀있다: 같은 집합에 속한 두 수를 투입한 이항 연산의 결과가 항상 투입한 집합에 속한다면...교환법칙: 임의의 두 수 A,B를 연산할 때 순서에 관게없이 항상 동일한 결과가 나올때A+B = B+A, A*B= B*A결합법칙: 연산이 두번이상 연속될때 앞의 연산을 먼저 계산한 결과와 뒤의 연산을 계산한 결과가 같은 성질(a+b)+C = A+(B+C), (A*B)*C= A*(B*C)분배법칙: (1) A*(..

게임수학 2024.08.28 3

C++

게임 클라이언트·임베디드 C++ 개발자 면접 복기

최근 두 차례의 개발자 면접을 보았다. 첫 번째는 6월 19일 게임 클라이언트 직무 면접이었고, 두 번째는 8월 19일 임베디드 관련 회사의 C++·리눅스 직무 면접이었다.시간이 지나면 어떤 질문을 받았는지뿐만 아니라 당시 무엇이 부족했는지도 흐릿해질 것 같아 기억나는 내용을 정리해 본다. 회사명과 일부 세부 내용은 공개하지 않았다.1. 6월 19일 게임 클라이언트 면접게임 클라이언트 면접은 코딩 테스트와 기술 면접으로 진행됐다.코딩 테스트에서는 알고리즘 한 문제와 언리얼 C++ 관련 네 문제가 출제됐다. 기술 면접에서는 C++, 자료구조, 그래픽스, 네트워크, 언리얼 엔진 등 게임 클라이언트 개발에 필요한 지식을 폭넓게 질문받았다.코딩 테스트코딩 테스트는 총 5문제였다.1번: 피보나치 수열 구현피보나치..

c++ 2026.08.25 1
C++ 개인 필기(15완) 복사

클래스 객체 생성시에 Warrior W -> 기본생성자 호출 Warrior W1=W ->만듦과 동시에 복사 (복사 생성자) Warrior W2 ->기본 W2=W -> 복사대입연산자 복사 생성자 + 복사 대입 연산자 -> 컴파일러가 암시적으로 만들어줌 (메모리에 있는 데이터 그대로 복사) class Warrior{ public: Sword SW; ->포인터로 하지 않을시 워리어와 검이 서로 일치하여 생성, 소멸이 같이됨. } 생명 주기 관리가 어려워진다. (클래스 내에 다른 클래스를 가질땐 포인터나, 참조 값 추천) 복사 생성자, 복사 대입 연산자 -> 주소값 즉 메모리 자체를 그대로 복사 (얕은 복사) 멤버 데이터를 비트열 단위로 복사 (메모리영역 그대로 복사) 포인터 주소값 -> 주소값을 복사 -> 동..

c++ 2024.03.04 0
C++ 개인 필기(14) 변환

타입 변환 유형(비트열 재구성 여부) 1. 값 타입 변환 (의미를 유지하기 위해, 원본 객체와 다른 비트열 재구성) int a=123456789 //2의 보수 float b= (float)a //부동소수점 ->1.234567e ... -> 메모리에 다른 값 구성 (비트열 재구성) 2. 참조 타입 변환 (비트열을 재구성 하지 않고 관점만 바꾸는것) int a= 123456789 ->메모리의 데이터는 같지만 (관점만 바뀌어) float b= (float)a ->엉뚱한 값 구성 ->참조 타입 변환은 포인터 타입 변환과 동일한 룰을 같는다. 안전도 분류 (1) 안전한 변환 특징) 의미가 항상 100프로 완전히 일치하는 경우 같은 타입이면서 크지만 더 큰 가방으로 이동 작은 가방 -> 큰 가방 good (업캐스팅..

c++ 2024.02.26 0
C++ 개인 필기(13) 동적 할당

HEAP -> 필요할대만 사용, 필요없으면 반낪 생성, 소멸시점 관리 동적 할당 : malloc, free / new, delete, /new[], delete[] //유저 영역 (메모장 or 게임)(독립적 실행) //커널영역 (운영체제의 핵심코드 실행) //유저 영역 [ ] malloc(sizeof(void ))를 통해 메모리 낭비 해결 ->메모리 할당 후 시작 주소를 가리키는 포인터를 반환 (메모리 부족시 NULL) void * ->포인터는 포인터, 포인터를 타고가면 뭐가 있는지 모르니깐 너가 적당히 변환해서 사용해라 -> Warrior *w1=(Warrior)ptr; w1->xx 처럼 할당 malloc/free 세트 ->free(ptr) 하지 않을 시에 메모리 누수 힙 오버 플로우->유효한 힙 범위..

c++ 2024.02.14 0
C++ 개인 필기(12) static

struct vs class c++ 에서 struct, class 는 종이 한장 차이 struct는 기본 접근 지정자= public, class 는 private 왜? c++은 c언어에서 파생되어 발전해서 호환성을 지키기 위해서.. struct는 그냥 구조체(데이터 묶음) 표현 class 객체 지향 프로그래밍의 특징 static 변수 -> 정적=고정된, 공통적으로 모든 객체가 같은 값을 가지면.. warrior, attack=1 static int attack; ->클래스 밖에 빼는 느낌 (전역 변수) AActor::attack=1; -> 외부선언 누구나 동일한 공격을 가진다. -> warrior 클래스의 종속적 함수에 static일때 초기화 하면 .data, 안하면 .bss 영역 static -> 생명..

c++ 2024.02.13 1
C++ 개인 필기(11) 클래스의 연산자

Class Position 이 있을때 Position pos3 = pos1 + pos2 -> 어떻게 해야할까? 연산자 vs 함수 -> 연산자는 피연산자의 개수/타입 고정 연산자 오버로딩 이란? 우리만의 클래스에 pos1+pos2 와 같은 연산자를 지원하게 만들고 싶을때 사용 1. 연산자 함수 정의 ->함수도 멤버함수와 전역함수가 있는 것처럼 연산자 함수도 2가지 방식 존재 pos1+pos2 만들기 Postion operator+() { Position pos , x=x1+x2, y=y1+y2, return pos;} pos3= pos1+pos2 == pos3=pos.operator+(pos2) 멤버 연산자 함수 a op b 형태에서 왼쪽을 기준으로 실행 (a가 클래스여야 가능 , a 를 기준 피연산자라함..

c++ 2024.02.07 0
C++ 개인 필기(10) 초기화 리스트

변수 초기화를 해야하는 이유 -> 초기화를 안하면 쓰레기값이 들어가기 때문 초기화 방법 1. 생성자 내에서 2. c++11 방법 -> 선언과 동시에 초기화 3. 초기화 리스트 ->선처리 영역에서 초기화 클래스 생성시 Warrior() 1순서 Warrior(AActor) 2순서 ~Warrior() 포함관계 -> 초기화 리스트를 사용해야 기타 생성자만 실행된다. 즉 초기화 리스트가 더 좋다. 정의함과 동시에 초기화가 필요한 경우 (참조, const) ->초기화 리스트에서 실행

c++ 2024.02.06 0
C++ 개인 필기(9) 은닉성 다형성

은닉성: 캡슐화 숨기는 이유 -> 위험하고 건드리면 안되는 경우, 다른 경료로 접근하길 원하는 경우 public, protected, private -> 멤버 접근 지정자 private -> class 내부에서만 class Warrior : public Player -> 상속 접근 지정자 protected -> class에 상속된 class에서만 사용이 가능하다. 상속 접근 지정자 -> 자식 class에 꼭 모든걸 물려줘야하는 것이 아니다. Warrior : protected Player -> public -> protected로 변환 부모는 public 자식은 protected // : priavte Player -> 부모만 public, 자식은 private-> 자식의 자식은 사용 불가능 다형성 ->..

c++ 2024.02.01 0
C++ 개인 필기(8) 객체지향 생성자

Player p=p1 -> 복사 생성자, const Player& p / 복사와 생성이 한번에 이루어짐 Player p2 -> 기본 생성자 p2=p1 -> 기본 생성자 *인자즐 한개만 받는 기타 생성자를 타입 변환 생성자라고도 한다. float f=(float)num -> 명시적 형변환 float f = num ->암시적 형변환 Player p; / Player(int id) p=1 -> 타입 변환 생성자로 인해 가능하다. (암시적 형변환) -> 암시적 부분은 오류 발생 가능 객체지향 (OOP , Object Orited Programming) -상속성 -은닉성 -다형성 -- 3대 속성-- 상속: Warrior : public Player Player 멤버 변수 -> id 4바이트 Warrior 멤버 변..

c++ 2024.01.31 0
C++ 개인 필기(7) 생성자 소멸자

멤버 변수 표기법(필수 아님) 예) UStaticmeshcomponent m_staticmesh this-> 사용 언리얼엔진5에서도 자기 자신을 가리킬때 특히 키 바인딩의 경우 BindAxis(FName("바인드이름"),this 시작을 알리는 특별한 함수 , 반환 타입이 없음, 오버로딩 가능 언리얼엔진에서는 기본생성자가 기본적으로 코드 생성시 생성됨. 생성자에 초기화를 할경우 에디터 상에서 게임이 실행되기전에 생성자가 실행됨. 소멸자(destructor) ->끝을 알리는 특별한 함수 소멸자는 오직 한개만 존제. (1) 기본 생성자 (인자가 없음) 예 ACHARACTER :: ACHARACTER() 일반 생성자 (2) 복사 생성자 : 자기자신의 참조값을 인자로 받음 예) speed=character.spe..

c++ 2024.01.26 1

개발 일지

more

언리얼엔진5 포트폴리오 개발일지#16 네트워크 Role , 동기화 정리

23년도에 대학교 수업 AI게임 프로그래밍을 하면서 유니티로 멀티게임을 개발하는데 포톤네트워크를 쓴적이 있다.https://github.com/rhwjdtjs/Unity_Flight_Fighter GitHub - rhwjdtjs/Unity_Flight_Fighter: For portfolio one vs one multyplay acade game using C# Unity he development period is twFor portfolio one vs one multyplay acade game using C# Unity he development period is two weeks. The png file is an in-game photo. - rhwjdtjs/Unity_Flight_Fight..

언리얼엔진5 포트폴리오 개발일지#15 파이어베이스 디비 구현

일단 결과먼저보면 파이어베이스 리얼타임데이터베이스에 킬할때마다 스팀 닉네임과 시간, 킬수가 업로드된다.UTFGameInstance에 파이어베이스 주소와 주 로직이 있는데, 파이어 베이스에는 킬수, 플레이어 이름, 업데이트 시간 순으로 저장된다.업로드 URL을 생성 하고 전송할 JSON Body를 구성한 후 HTTP 요청 생성 및 설정 -> 요청 객체 수명 관리 -> 콜백 처리 후 성공하면 HTTP 전송을 시작한다.로직은 되게 쉽다. 코드 자체도 쉽고.. 원래 처음에 Playfab으로 구현할려했었는데 엔진버전이 달라질때마다 코드가 항상 달라서 인터넷찾기도 힘들어서 구현하기도 매우어려웠고 그리고 분명히 맞는코드인데 왜 안될까 생각을 하다가 뭐 HTTP문제다 뭐다 인바운드 아웃바운드 문제다 해서 이것저것 설정..

언리얼엔진5 포트폴리오 개발일지#14 히트시 블러드 스크린 및 킬,데스 알림

이제 데모하고 친구들 요구사항죽에 누군가를 죽이거나 맞았을때 그러한 상황을 알고싶다해서 추가했다.기본적인 기능인데 개발하다 보면 까먹을 수도 있지 뭐..이게 블러드스크린BP인데 위젯블루프린트에 애니메이션을 적용해서 서서히 사라지게 페이드 아웃 애님을 넣었다.데미지를 받는 함수에서 맞았을때 블러드 스크린이 뜨게했다. 서버 본인과 그외에 피해를 받은 특정 클라이언트에게 UI가 뜨도록했고BloodScreen 함수는 블루프린트콜러블이라 블루프린트를 봐보면..이런식으로 되어있다. 블러드스크린 함수가 불러와질때 addviewport하고 애니메이션 재생되게..그러면 맞았을때 저런 이미지뜨고 서서히 페이드아웃되면서 사라진다.그리고 칼알림은 진짜 간단한데,플레이어가 제거되었을때 죽인사람한테는 killwidget 보여주고..

언리얼엔진5 포트폴리오 개발일지#13 킬로그,스코어보드 시스템

처음에 3인 데모 테스트할때 친구들이 문제삼았던게 내가 맞는상황을 모르겠다. 죽었는지 안죽었는데 잘 모르겠다 해서 넣은 기능이 킬로그,스코어보드,히트시 블러드 스크린,그리고 킬할시에 이미지 뜨는건데, 킬로그랑 스코어 보드 먼저 보자스코어보드 블루프린트그리고 스코어보드에 글자 표시해주는거그리고 킬로그는 캐릭터오버레이 BP에 있다. 일단 이게 킬로그로직인데 텍스트 생성하고 5초지나면 없애주고 5개 이상넘어가면 로그를 하나 삭제한다.로직은 되게 간단.. 뭐 코드만 보면 이해하기 쉬울정도그리고 게임모드에서 이터레이터 플레이어컨트롤러 순회해서 모두에게 전파하면 킬로그가 서버랑 클라 모두에게 표시된다.이런식으로 잘 표시되는데스코어보드는 TAB을 꾹누르면 표시되게했는데,Playerstate에서 일단 킬이나 데스 나오..

언리얼엔진5 포트폴리오 개발일지#12 와이어 액션 시스템

이번엔 게임 핵심 이동기중 하나인 와이어 액션 시스템을 만들었다.원래 언리얼엔진5에 로프컴포넌트인가 그거 있다고 하는데 그냥 나는 라인트레이스로하고 로프는 그냥 디버그 라인으로 만들었다.애초에 와이어액션 기능을 생각해보는데 라인트레이스로 하면되지않을까? 하고 밖에 생각안나더라고요..일단 와이어 끝지점 하고 와이어 걸려있는지 이거는 꼭 복제를 해야함 그래야지 서버 클라모두 연동이 되고..그래야지 애니메이션에서 부착됐구나 하고 모두에게 애니메이션 적용되고 보여짐솔직히 구현은 간단하다 날라갈때 걷기모드에서 Flying 모드로 바꾸고.. 만약 플라잉 모드로 안바꾸면 플레이어 점프같은 애니메이션 안하고 걷기 애니메이션하면서 날라간다라인트레이스 쏴서 안맞았으면 클라 rpc로 개인들한테(안맞은 특정플레이어니깐) 알림..

언리얼엔진5 포트폴리오 개발일지#11 채팅 시스템 구현

이번엔 인게임 채팅 시스템을 만들었다.FPS라서 채팅창을 뛰우면 카메라 움직임을 멈춰야하고, 방향키나 이것저것 동작이 불가능하게 해야한다.그리고 무엇보다 모든 클라이언트에게 보여줘야하고..또한 계속 남기면 안되고 일정시간뒤에 사라져야한다.일단 플레이어 인풋컴포넌트에 T키 채팅오픈 SUBMIT은 ENTER CANCEL은 버그 방지용으로 Y키를 넣자T키 입력할때 위젯없으면 생성하고 여는거다그다음 챗위젯 CPP 따로 만들어서 채팅로그에 메시지 추가하고 화면에 표시하는건데, NewObject로 새로운 텍스트 라인 만들고, SetText로 메시지 형식 만들고AddChild로 UI에 추가, 그리고 17초후에 종료하도록하는건데, 근데 이렇게하면 마지막 메시지를 보내고 17초뒤에 문자를 보낼때 17초쯤에 보내는사람이 ..

언리얼엔진5 포트폴리오 개발일지#9 재장전 시 피격 버그 수정

현재 재장전시에 피격을 당하게되면 격발 또는 재장전을 아예할 수 없는 버그가 생겼다.총도 주울수도 없고 아무것도 할 수 없어 죽기만을 기달려야 하는데..내가 생각하기에 원인은 재장전하다가 피격모션이 발동되어 재장전 모션이 아예 안끝나서 이런 버그가 생긴거 같다. 해결방법은 많이 있지만 가장 간단한것은 피격 모션은 몽타주로 진행하는데 해당 진행하는 함수내에서 재장전 중일때는 확인하여 return 을 하여 피격모션을 안주면 된다.이 함수에서 피격 모션을 발동하는데, 맨 위 if문에서 조건을 하나 추가해주면 된다.플레이어가 재장전 중일때 컴뱃스테이트 enum값을 ECS_Reloading으로 바꿔주므로 재장전상태일때는 return 을해주면 된다.라이브 코딩을 한 후에 테스트를 해보면바로 해결된것을 볼 수 있다.

언리얼엔진5 포트폴리오 개발일지#8 재장전 시 걷기 모션

현재 개발중인 게임에서 재장전을 하면 플레이어가 걷지를 않는 현상이 있다 재장전하면 문워크 느낌나게 다리가 아예 안움직인다..그래서 재장전하면서 걷이 모션을 재생할려면 Layered blend per bone 이라는 노드를 이용해 재장전할때 상체뼈만 이용하게 해주면 된다.일단 cached pose 장착은 총을 들었을때 플레이어가 움직이는 모션이다.현재 플레이어가 재장전하는 모션은 WeaponSlot에 되어 있다.슬롯에 ReloadSlot을 추가해주고 재장전 슬롯또한 추가한걸로 바꿔준다.해당 노드들은 캐시 포즈인 Full Body의 안으로 Spine1을 사용중인데, 상체의 뼈 명칭이며 , 캐시포즈인 에임오프셋은 플레이어 에임방향에 따라 같이 손이 움직이는 포즈이고무기사용은 장착시 움직이는 포즈인 장착 캐..

언리얼엔진5 포트폴리오 개발일지#7 OnRep_Score 콜백함수 스코어 서버에 적용 안되는 현상

플레이어가 적을 죽일때마다 점수를 1점씩 올려 각자 스크린 hud에 점수를 올려줘야하는데,웬일인지 클라이언트에만 점수오르고 서버에는 점수가 안올랐다.그리고 과거 언리얼엔진 버전에서는 PlayerState c++에서 Score이라는 내장된 변수가 원래 protected여서 함수내에서 Score를 불러와서 사용할 수 있었지만 현재 버전이 업데이트 되면서 보안문제로 Private로 바뀌어 Score는 사용을 하지못하고 GetScore(), SetScore() 함수로 사용가능하다.첫번째로는 이런식으로 코드를 적용했다.플레이어와 플레이어 컨트롤러를 캐스팅하였고, AddToScore 함수는 게임모드 cpp에서 플레이어가 제거 되었을때 불러온다.OnRep_Score() 함수는 score 변수의 값이 네트워크를 통해..

TEAM Hush

more

언리얼엔진5 개발 일지2#2 C++ 좀비 AI 만들기 및 디버깅 방법

PC버전으로 글 보실거를 추천합니다. (잘못만져서 모바일에서는 글씨가 흰색으로 나옵니다)언리얼 엔진5에서 C++ 로 Behavior Tree로 좀비 AI를 처음부터 끝까지 구현하는 과정입니다. **최종 목표**로는 멍청하지 않은 좀비를 만드는 것이다. 단순히 플레이어를 보면 쫒아오는 AI는 금방 만든다. 근데 만약 플레이어가 시야에서 사라지면-> 마지막으로 본 위치까지는 가야한다. -> 그리고 마지막 위치에 도착했는데 플레이어 없으면 -> 다시 IDLE OR 배회로 돌아가야한다. -> 만약 공격 범위에 플레이어가 있다면 공격을 하는데, 공격중에 이동을 하면 안된다. ( 애니메이션/판정/상태가 꼬인다. AI 동작 과정 (개발 목표) 1. 기본 상태: 랜덤 배회 (Wander)2. 플레이어 감지: 타겟 설..

언리얼엔진5 개발 일지2#1 GitBash로 협업하는 방법(차후 업데이트)

https://www.youtube.com/@TEAMHUSH-g4j TEAM HUSHwww.youtube.com개발상황을 알 수 있는 깃허브와 유튜브입니다. GitBash로 협업하는 방법에 대해서 알아보자면, 2명 기준으로 3명 이상으로 확장도 가능하다https://git-scm.com/ Gitgit-scm.com깃배쉬 설치는 위사이트에서 들어가면 됩니다.혼자 개발할때는 깃허브 데스크탑을 많이 사용했는데, 그래도 GUI보단 CLI가 팀 규칙을 지키고 문제를 빨리 파악하기위해선 더 나을거 같았다.현재 우리가 팀으로 하는 규칙은main dev Features/기능명 이런식으로 하고 있다. 해당 방식으로 하는 방법을 기술해보겠다. 브랜치 및 PR 기록이다. 현재는 기초 기능 구현때문에 본인만 브랜치에 올..

Unity

more

유니티 3D 간단한 RPG 게임 만들기 (5) - UI 및 간단한 스탯 만들기

다섯번째로는 UI와 스탯을 간단히 다뤄보도록 하겠습니다. 패널 생성후 우선 게임 화면에서 Display1 옆에 해상도를 FullHD로 해줍시다. 오브젝트 이름을 변경하고 Rect transfrom 위치 값을 변경해서 모양을 수정해줍시다. 컬러를 누른후에 투명도를 조절해줍시다. 텍스트를 생성해줍시다. 텍스트 생성후 텍스트 클릭후에 인스펙터창에서 텍스트 항목에서 수정할 수 있습니다. 이후로 텍스트를 생성하여 위 사진과 같이 만들어봅시다. 텍스트 2개와 UI -> SLIDER 생성하여 텍스트 옆에 각각하나씩 배치하도록 합시다. 이제 ui를 다룰수 있도록 스크립트를 생성해봅시다. 캔버스에 방금 작성한 스크립트를 추가해줍시다. 그리고 각각 항목에 맞는 오브젝트들을 추가해줍니다. R키를 누르면 플레이어 정보창이 나..

유니티 2023.06.13 0

유니티 3D 간단한 RPG 게임 만들기 (4) - 1인칭 및 플레이어 애니메이션

안녕하세요 이번 4번째 글에서는 1인칭 설정과 플레이어 애니메이션을 만들도록 하겠습니다. 1인칭으로 설정하기에 플레이어 애니메이션은 간단하게 만들도록 하겠습니다. 공격 애니메이션 https://assetstore.unity.com/packages/3d/animations/melee-warrior-animations-free-165785 검 https://assetstore.unity.com/packages/3d/props/weapons/shield-sword-spear-178481 Shield,Sword,Spear | 3D 무기 | Unity Asset Store Elevate your workflow with the Shield,Sword,Spear asset from Inari_Green. Find ..

유니티 2023.06.05 0

유니티 3D 간단한 RPG 게임 만들기 (3) - 플레이어 생성 및 이동

안녕하세요 세번째 글로 찾아뵙게 되었습니다. 우선 플레이어를 생성하기 전에 모델링을 찾아야합니다. 모델링은 유니티 에셋 스토어에서 구할 수 있습니다. https://assetstore.unity.com/ 에셋스토어 여러분의 작업에 필요한 베스트 에셋을 찾아보세요. 유니티 에셋스토어가 2D, 3D 모델, SDK, 템플릿, 툴 등 여러분의 콘텐츠 제작에 날개를 달아줄 다양한 에셋을 제공합니다. assetstore.unity.com 에셋 스토어에서 가볍게 하실거면 무료로 받으시는것을 추천드립니다. 그리고 에셋스토어에서 다운 받기전에 로그인하셔야합니다!! 이번 강의 사용 에셋은 유니티의 대표주자 유니티짱입니다. https://assetstore.unity.com/packages/3d/characters/unit..

유니티 2023.06.04 4

유니티 3D 간단한 RPG 게임 만들기 (2) - 유니티 기본적인 사용법

안녕하세요! 두번째 글로 찾아뵙게 되었습니다. 이번에는 유니티 엔진의 기본적인 사용법에 대해 알아보도록 합시다. 유니티 프로젝트를 만들고 저번 포스팅에서 끝냈는데, 막상 실행시키면 처음하시는분들은 뭘 만질지 잘 모르실 겁니다. 차근차근 하나하나 간단히 살펴보도록 하겠습니다. 우선 scene 화면입니다. scene 화면은 한마디로 월드의 모습을 자신이 마음대로 볼 수 있습니다. 우측 상단엔 나침반 표시가 있는데, x , y , z 값으로 각각의 위치를 알려줍니다. 예를들어 자기가 ui를 짜고 ui 위치를 조정한다거나, 한 3D 물체를 생성했는데, 그 위치를 조정 한다거나 그럴때 이 scene 화면이 쓰이며, 오브젝트를 배치할때 주로 많이 사용됩니다. 게임화면은 게임을 실행하면 활성화 되는 화면입니다. 게임..

유니티 2023.06.03 2

유니티 3D 간단한 RPG 게임 만들기 (1) - 유니티 설치하기

안녕하세요! 게임을 만들고 싶지만 막상 만들려다 보니 뭐부터 시작해야 할지 모르겠고 막막한데요 이번 TPS RPG 게임 만들기 시리즈를 통해 유니티 엔진의 기본적인 사용법과 유니티에서는 C# 문법을 어떻게 사용하는지에 대해서 알아보도록 해요. 기본적으로 자바나 C언어의 프로그래밍 지식이 있다면 코드를 짜고 이해하시는데 쉬우실거에요. 첫번째로 게임을 만들기 앞서 유니티사이트에서 회원 가입을 해줍니다. https://unity.com/kr Unity 실시간 개발 플랫폼 | 3D, 2D, VR 및 AR 엔진 업계를 선도하는 기업들이 실시간 3D 기술을 이용하여 어떻게 건물의 설계, 건축, 운영 방법을 바꾸고 있는지 알아보세요. unity.com 유니티 엔진을 사용하는데 무료지만 라이센스 그리고 에셋스토어에서 ..

유니티 2023.06.02 0