공격하는 Enemy AI의 수를 제한해보자 Enemy AI 를 만들었는데 Enemy가 10명이면 거리조건이 충족되는 모든 Enemy들이 나에게 달려들어서 공격을 하기 시작한다 근데 한 번에 10명이 달라붙어서 공격하면 나는 그냥 도망가거나 당하고 있는 수밖에 없다 ㅠㅠ 그래서 나를 공격하는 적의 수를 제한해보았다 Instance Synced란 언리얼 엔진 문서에 따르면 값을 동기화시키는 것을 말하는데 이 기능을 사용해보았다 Instance Synced는 같은 블랙보드를 사용하는 AI끼리 값을 공유하는 것을 말한다 언제 주로 사용하냐면 FPS게임에서 적 하나가 나를 발견했다고 가정한다 그리고 해당하는 적이 포함된 팀에게 나의 위치를 알려주고 곳곳에 퍼져있던 적 팀들이 나를 공격하게 만들고 싶을 때 이 In..
베지에 곡선을 사용해보았다 보통 화살의 궤적을 그릴 때 자연스러움을 위해서 많이 사용하는 것 같았다 나는 보스의 스킬을 만드는데 베지에 곡선을 사용했다 보스 스킬 중에 광범위 공격으로 해당 범위 내의 무작위 지점에 불덩이를 날리는 것이다 그 불덩이의 궤적을 베지에 곡선을 사용해서 구현했다 먼저 베지에 곡선에 대해서 공부할 필요가 있다 베지에 곡선 (Bezier Curve) 일단 곡선을 그리는 공식인데 매개 변수에 따라 그려지는 곡선이다 주어지는 특정한 점에 따라서 곡선이 그려지는 것이다 그래서 게임 프로그래밍에서는 원하는 궤적을 따라 물체를 움직이고 싶을 때 많이 사용된다 시작점과 끝점을 제외하고 주어지는 점의 개수에 따라서 n+1차 베지에 곡선이 된다 공식 몇 가지 나올건데 이 공식에서 t 는 시간 (..
캐시메모리(Cache Memory) 캐시 CPU와 주기억장치의 속도차이에 따른 성능 저하를 줄이기 위해 임시로 지역성을 만들어서 저장해두는것테이블 형태로 캐시 라인에 적재 블럭(Block) 캐시와 메모리 간의 데이터 교환 단위 Block이 클수록 지역성이 늘어난다 Mapping Function 어떤 주기억장치 블록들이 어느 캐시 라인을 공유할 것인지 결정하는 법 ( 어느 정보를 캐시에 넣을지 선택하는 것 ) 직접 사상캐시 라인의 위에서부터 차곡차곡 넣는 것 완전-연관 사상임의의 캐시 라인에 적재하는 것 세트(집합)-연관 사상직접 사상도 가능, 완전-연관 사상도 가능 Replace Algorithm 캐시가 꽉 찼을때 어떤 블록을 지울 것인지 RandomFIFO ( First In First O..
IPC (Inter Process Communication)프로세스들끼리 통신하는 기술 병렬 처리 병행성 (Concurrency)하나의 코어로 여러 프로세스를 처리 (1 코어 n 스레드)한 순간에 한 개의 프로그램만 처리문제점 : 프로세스 동기화해결방안 : 세마포어, 모니터(세마포어를 관찰하기 위한 알고리즘) 병렬성 (Parallelism)복수 프로세서로 여러 개 또는 한 프로그램의 분할된 부분을 동시에 처리한 순간에 두 개 이상의 프로그램 처리 여러 코어로 하나의 프로그램을 처리 (n 코어 n 스레드)멀티 스레드문제점 : 프로세서 동기화해결 방안 : 버스락, 스핀락, 베리어 메모리 공유 방식 - Flynn의 분류 SISD (Single Instruction Single Data)하나..
컴퓨터 시스템 구성 요소 하드웨어컴퓨터 정보들의 전송 통로(BUS)를 제공하고, 그 정보에 대한 처리가 실제 일어나게 해주는 물리적인 실체 소프트웨어정보들이 이동하는 방향과 정보 처리의 종류를 지정해주고, 그러한 동작들을 순서대로 배치하는 명령(command)들의 집합 컴퓨터 하드웨어 CPU (Central Processing Unit)중앙 처리 장치기억장치 - 주기억장치 (Ram, Rom), 보조기억장치(디스크)입출력장치 Ram (Radom Access Memory)어느 주소든 직접접근 가능, Ram의 크기는 CPU에 의존 코드 영역, 데이터 공용 영역, 상위 메모리(heap), 하위메모리(stack) Rom (Read Only Memory) CPU - Register, Decorder, A..