· Portfolio
https://youtu.be/2MPlEhzdaec 제작 기간 12주 개발 환경 언리얼4 장르 액션 RPG email yeonjindo98@gmail.com
· DirectX
지금까지는 공간의 x, y좌표만 활용하여 2D공간처럼 만든 뒤 다양한 도형들을 띄워보는 작업을 했다 이제는 그 도형을 아주 많이 만들어서 Grid를 만들고, z좌표까지 활용하여 기본이 되는 바닥을 Grid 모양으로 짜고 카메라를 만들어 움직여보자 Gird - Wireframe 먼저 이전에도 했던 Wireframe Mode로 한 칸을 만들어보자 Vertex 4개를 잡아주고, Index는 6개를 잡아준 뒤 삼각형 두개를 그리기 순서에 맞춰 그려주면 된다 indices[0] = 0; indices[1] = 1; indices[2] = 2; indices[3] = 2; indices[4] = 1; indices[5] = 3; 그럼 다음으로 이 한 칸을 3 * 3으로 만들어보자 총 9개의 작은 사각형, 18개의 ..
· Unreal4 C++
공격하는 Enemy AI의 수를 제한해보자 Enemy AI 를 만들었는데 Enemy가 10명이면 거리조건이 충족되는 모든 Enemy들이 나에게 달려들어서 공격을 하기 시작한다 근데 한 번에 10명이 달라붙어서 공격하면 나는 그냥 도망가거나 당하고 있는 수밖에 없다 ㅠㅠ 그래서 나를 공격하는 적의 수를 제한해보았다 Instance Synced란 언리얼 엔진 문서에 따르면 값을 동기화시키는 것을 말하는데 이 기능을 사용해보았다 Instance Synced는 같은 블랙보드를 사용하는 AI끼리 값을 공유하는 것을 말한다 언제 주로 사용하냐면 FPS게임에서 적 하나가 나를 발견했다고 가정한다 그리고 해당하는 적이 포함된 팀에게 나의 위치를 알려주고 곳곳에 퍼져있던 적 팀들이 나를 공격하게 만들고 싶을 때 이 In..
· > CS
Vector접근성이 좋다임의 접근이 가능하다중간 삽입/삭제는 리소스의 낭비가 발생한다 임의 접근이 가능하다는 뜻은 vector v; 가 있을 때  v[3]으로 접근이 가능하다는 뜻이다   List주소값으로 연결되어있다중간 삽입/삭제가 용이하다순차 접근만 가능하다 (임의 접근 불가능)   -> Sort()로 정렬 불가능  Map레드 블랙 트리로 되어있고, 시간복잡도는 logN자료들이 자동으로 정렬되어 저장된다검색이 용이하다Key-Value로 이루어져있다빈번한 삽입/삭제는 부적합하다중복키 사용 불가능하다  Unordered_map / Hash map 자동으로 정렬되지 않는다Map보다 검색 속도가 빠르다Key값이 길고 복잡하거나 유사한 값이 많은 경우 해시 충돌이 발생할 수 있다  SetKey만 저장한다중복키..
2022 KAKAO BLIND RECRUITMENT   문제가 길다간단히 하면fees라는 배열에 기본시간, 기본요금, 단위시간, 단위요금이 int로 주어지고records라는 배열에 입력된 시간, 차량 번호, 입차/출차 가 string으로 주어진다 이를 통해서 차량의 총 누적 시간에 따른 주차요금을 계산하여 배열로 반환하면 되는 문제 #include #include #include #include #include using namespace std;int Calculate(int bT, int bF, int pT, int pTF, int tT){ int fee = 0; //요금계산 if (tT bT) //기본시간 초과 { fee += bF; tT -= bT; fee += tT / pT * pTF; ..
플러그인을 사용해서 메시를 저장하고 불러오는 것을 구현해보자 먼저 Static Mesh를 클릭했을 때 등장하는 디테일창에Mesh에 관련된 버튼을 만들어본다       월드에 카메라가 있다C++클래스로 Actor 하나를 생성해주고 블루프린트를 생성하여 카메라 메시를 입혀주었다   액터를 클릭하면 디테일창이 뜬다이 디테일창에 나만의 카테고리를 추가하고필요한 기능들을 프로퍼티에 추가해보는 작업을 할 예정이다            먼저 플러그인 모듈 쪽에 Property Editor를 등록해준다 IDetailCustomization을 상속받는 클래스 FStaticMesh_Detail에IDetailCategoryBuilder& mesh = DetailBuilder.EditCategory("Mesh");  Mesh라..
· > CS
IPC (Inter Process Communication)프로세스들끼리 통신하는 기술  병렬 처리 병행성 (Concurrency)하나의 코어로 여러 프로세스를 처리 (1 코어 n 스레드)한 순간에 한 개의 프로그램만 처리문제점 : 프로세스 동기화해결방안 : 세마포어, 모니터(세마포어를 관찰하기 위한 알고리즘)  병렬성 (Parallelism)복수 프로세서로 여러 개 또는 한 프로그램의 분할된 부분을 동시에 처리한 순간에 두 개 이상의 프로그램 처리 여러 코어로 하나의 프로그램을 처리 (n 코어 n 스레드)멀티 스레드문제점 : 프로세서 동기화해결 방안 : 버스락, 스핀락, 베리어         메모리 공유 방식 - Flynn의 분류  SISD (Single Instruction Single Data)하나..
EQS 란? 언리얼 엔진의 EQS는 Environment Query System의 약자로 Behavior Tree내에서 다양한 테스트를 통해 환경을 조사하고 테스트 결과를 바탕으로 어떻게 진행할 것인지 결정하는 시스템을 말한다 Querier는 질의자로, 해당 EQS를 실행하게 될 객체를 의미한다 주로 적 AI에게 Behavior Tree를 주고 그 안에서 Run EQS 를 하게 되니 Querier는 적AI가 되게 된다 Debug EQS가 잘 돌아가고 있는지 디버깅 하려면 실행 후 플레이어에 빙의한 뒤 ' (단따옴표) 키를 눌러 디버깅 모드로 들어가고 키패드에 3번을 누르면 EQS디버깅 모드가 된다 디버깅 모드 우측 상단에 Debug Actor가 뜨는데 내가 확인하고 싶은 AI가 Deubg Actor로 잘..
· Unreal4 C++
공격하는 Enemy AI의 수를 제한해보자 Enemy AI 를 만들었는데 Enemy가 10명이면 거리조건이 충족되는 모든 Enemy들이 나에게 달려들어서 공격을 하기 시작한다 근데 한 번에 10명이 달라붙어서 공격하면 나는 그냥 도망가거나 당하고 있는 수밖에 없다 ㅠㅠ 그래서 나를 공격하는 적의 수를 제한해보았다 Instance Synced란 언리얼 엔진 문서에 따르면 값을 동기화시키는 것을 말하는데 이 기능을 사용해보았다 Instance Synced는 같은 블랙보드를 사용하는 AI끼리 값을 공유하는 것을 말한다 언제 주로 사용하냐면 FPS게임에서 적 하나가 나를 발견했다고 가정한다 그리고 해당하는 적이 포함된 팀에게 나의 위치를 알려주고 곳곳에 퍼져있던 적 팀들이 나를 공격하게 만들고 싶을 때 이 In..
· Unreal4 C++
베지에 곡선을 사용해보았다 보통 화살의 궤적을 그릴 때 자연스러움을 위해서 많이 사용하는 것 같았다 나는 보스의 스킬을 만드는데 베지에 곡선을 사용했다 보스 스킬 중에 광범위 공격으로 해당 범위 내의 무작위 지점에 불덩이를 날리는 것이다 그 불덩이의 궤적을 베지에 곡선을 사용해서 구현했다 먼저 베지에 곡선에 대해서 공부할 필요가 있다 베지에 곡선 (Bezier Curve) 일단 곡선을 그리는 공식인데 매개 변수에 따라 그려지는 곡선이다 주어지는 특정한 점에 따라서 곡선이 그려지는 것이다 그래서 게임 프로그래밍에서는 원하는 궤적을 따라 물체를 움직이고 싶을 때 많이 사용된다 시작점과 끝점을 제외하고 주어지는 점의 개수에 따라서 n+1차 베지에 곡선이 된다 공식 몇 가지 나올건데 이 공식에서 t 는 시간 (..
· > CS
캐시메모리(Cache Memory) 캐시 CPU와 주기억장치의 속도차이에 따른 성능 저하를 줄이기 위해 임시로 지역성을 만들어서 저장해두는것테이블 형태로 캐시 라인에 적재   블럭(Block) 캐시와 메모리 간의 데이터 교환 단위 Block이 클수록 지역성이 늘어난다    Mapping Function 어떤 주기억장치 블록들이 어느 캐시 라인을 공유할 것인지 결정하는 법 ( 어느 정보를 캐시에 넣을지 선택하는 것 ) 직접 사상캐시 라인의 위에서부터 차곡차곡 넣는 것 완전-연관 사상임의의 캐시 라인에 적재하는 것 세트(집합)-연관 사상직접 사상도 가능, 완전-연관 사상도 가능   Replace Algorithm 캐시가 꽉 찼을때 어떤 블록을 지울 것인지 RandomFIFO ( First In First O..
연Gennie
Do 겜프