분류 전체보기

개요양보하는 에이전트를 통해 길찾기 도중 에이전트끼리 겹치지 않게 한다.길찾기를 하는 에이전트끼리 겹치지 않게 하기위해 양보하는 방법을 선택하였다.결론만 말하자면 이는 실패한 방법이다. 어떤 아이디어로 개발을 했고, 어째서 실패한 알고리즘이라고 생각하는지 알아보자.설명어떤 알고리즘으로 에이전트의 겹침을 해결했는지 알아보자.길찾기 알고리즘을 통해 나온 결과만으로 에이전트를를 제어하면, 동일한 경로를 가진 에이전트끼리는 겹치게 된다.에이전트들의 경로가 겹치게 되면, 목적지인 하나의 타일위에 여러개의 에이전트끼리 뭉쳐지게 된다.이러한 현상을 회피하고자 필자가 선택한 방법은 ‘하나의 타일엔 하나의 에이전트만 올라갈 수 있다.’라는 전제를 설정하는 것이었다.하나의 타일엔 하나의 에이전트만 올라갈 수 있다타일에 ‘..
개요이동하면서 적을 회피하는 기능을 만들자아이디어원하는 기능은 이동하려는 경로에 장애물이 있을경우 장애물을 회피하며 이동하는 것이다.장애물이 가만히 있을경우엔, 지난 포스팅으로 해결되기 때문에, 장애물이 이동하는 경우를 가정해볼것이다.장애물이 이동중일때 회피하기 위해선 단순하게 장애물이 이동하고자 하는 위치와 가까워지면, 장애물이 이동하고자 하는 위와 반대로 이동하도록 구현을 해볼것이다.구현간단하게 테스트 해봤을땐 꽤 부드럽게 동작하는것으로 보인다.이 영상에서 돌아다니는 노란색의 장애물들은 가고자 하는 목표 위치가 명확하게 존재한다. 따라서 이동중에 장애물을 마주하면 잠시 피했다가 다시 자신이 가고자 하는 목표 위치로 이동한다.아직까지는 꽤나 괜찮게 움직이는것같다.문제점하지만 장애물이 명확한 목표없이 앞..
개요조종행동을 이용해서 장애물을 회피하는 AI를 만들자.지난번에 설명한 조종행동의 구조와 더불어 적을 회피하는 AI를 만들어보자.아이디어원하는 구현은 가만히 대기하고 있을경우, 아군이 지나가면 길을 비켜주고 적군이 지나가면 길을 막는다. 이동하고 있을 경우, 아군이나 적군이 지나가면 길을 지나친다. 길이 좁을경우엔 아군끼리는 조금 겹칠 수 있지만, 적군과 겹칠수는 없다.우선 대기하고 있을때 에이전트가 지나가면 길을 비켜주는 기능을 만들어보자.구현대기하고 있으며, 주변에 다른 유닛이 지나가면 비켜주는 행동을 만들어보자.비켜주기비켜주기의 아이디어는 간단하게 작성해보았다.주변에 다른 에이전트가 지나가면 그 에이전트로부터 피하는 방향으로 이동하는 힘을 주는것이다.초록색 원이 비켜주는 행동을 하는 에이전트이고, ..
개요조종행동을 이용해서 자연스럽게 동작하는 AI를 만들자.사이드 프로젝트인 EternalSmash를 제작하면서 적을향해 움직이는 AI가 필요했다.이동하다가 이동 경로에 장애물이 생기면 회피를 해야하는데, 자연스럽게 회피하는 것을 구현하기가 어려웠다.이 부분을 조종행동으로 해결할 수 있겠다는 생각이 들어서 직접 구현하게 되었다.조종행동조종행동은 어떠한 목표를 이루기 위해 주변 환경을 감지하여 상황에 맞는 행동들을 수행하여 목표를 이루는 자동적 에이전트를 만드는 방법이다.적을 따라가거나, 피하거나, 목표에 도착하는 등 여러 행동들을 상황에 맞게 조합해야한다.목표를 향해 이동하다가 적을 마주하면 회피하면서 주변 무리들로부터 너무 멀어지지 않게끔 조절해야한다.위의 내용을 구현하기 위해선 주변 환경을 감지하여 자..
CPU 스케줄링 개요CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU를 배분하는 것을 의미한다. 이는 컴퓨터 성능과 직결되는 대단히 중요한 문제이다. 제대로 배분하지 못하면 반드시 실행되어야 하는 프로세스가 실행되지 않거나, 당장 급하지 않은 프로세스들만 주로 실행되는 등 무질서한 상태가 발생할 수 있기 때문이다.프로세스 우선순위준비 상태의 프로세스가 서로 CPU를 사용하고 싶어할 때 어떻게 배분해야 프로세스들이 공정하게 CPU를 사용할 수 있을까?단순한 아이디어로는 요청한 순서대로 CPU를 이용하는 방법이 있을 것이다. 하지만 이는 좋은 방법이 아니다. 그 이유는 프로세스마다 우선순위가 다르기 때문이다. 우선순위가 높은 프로세스란 빨리 처리해야 하는 프로세스를 의미한다. 우선순위가 ..
프로세스 개요프로세스는 실행 중인 프로그램을 의미한다. 프로그램은 실행되기 전까지는 보조기억장치에 있는 데이터 덩어리 이지만, 실행하게된다면 메모리에 적재되면서 프로세스가 된다. 이 과정을 ‘프로세스를 생성했다’라고 표현한다.프로세스 직접 확인하기컴퓨터에는 다양한 프로세스가 실행되고있다. 각 프로세스는 운영체제의 도움을 받아 확인할 수 있다.실행중인 프로세스중에서 사용자가 볼 수 있는 공간에서 실행되는 프로세스와 그렇지 않은 프로세스가 있다. 사용자가 보는 앞에서 실행되는 프로세스를 포그라운드 프로세스(foreground process)라고 하고, 후자는 백그라운드 프로세스(background process)라고 한다.백그라운드 프로세스 중에는 사용자와 직접 상호작용할 수 있는 프로세스가 있고, 그렇지 ..
운영체제를 알아야 하는 이유운영체제란 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.운영체제도 프로그램이기 때문에 메모리에 적재되어야 한다. 다만 운영체제는 특별한 프로그램이기 때문에 컴퓨터가 부팅될 때 메모리 내 커널영역(kernel space)이라는 공간에 따로 적재되어 실행된다. 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역(user space)이라고 한다.운영체제는 사용자 영역에 프로그램을 적재해주는데, 메모리 주소가 겹치지 않도록 적당한 공간에 적재한다. 또 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리를 관리한다.프로그램이 실행되려면 반드시 CPU가 필요한데, 운영체제가 어느 ..
장치 컨트롤러와 장치 드라이버컴퓨터에는 CPU와 메모리만 존재하지 않는다. 스피커, 모니터, 키보드, 마우스 등 다양한 입출력 장치가 있는데, 이런 외부 장치들이 어떻게 내부와 소통하는지 알아보자.장치 컨트롤러입출력장치는 CPU, 메모리보다 다루기 까다롭다. 이유는 크게 두 가지가 있다.입출력장치의 종류가 많다입출력장치의 종류가 다양한 만큼 장치의 속도, 데이터 전송 형식도 다양하다.때문에 정보를 주고받는 방식을 규격화 하기도 어렵다.일반적으로 CPU와 메모리 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다전송률이란 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표이다. 전송률이 차이가 나면 병목현상으로 인해 통신이 어려워지게 된다.CPU와 메모리보다 전송률이 높은 입출력장치도 있지만, 결..
다양한 보조기억장치보조기억장치의 종류는 다양한데, 크게 하드 디스크와 플래시 메모리로 나눌 수 있다. 플래시 메모리는 USB 메모리, SD 카드, SSD와 같은 저장장치를 의미한다.하드디스크하드디스크(HDD; Hard Disk Drive)는 자기적인 방식으로 데이터를 저장하는 보조기억장치이다. 이 때문에 자기 디스크(magnetic disk)의 일종으로 지칭하기도 한다.하드디스크는 CD나 옛날 음향 장치인 LP와 비슷하게 동작한다. 동그란 원판에 데이터를 저장하고, 그것을 뾰족한 리더기로 데이터를 읽어내는 점이 비슷하다.하드디스크에 실질적으로 데이터가 저장되는 곳은 플래터이다. 플래터는 원판처럼 생겼으며, 자기물질로 덮여있기 때문에 수많은 N극과 S극을 저장할 수 있다. N극과 S극이 0과 1의 역할을 ..
RAM의 특징과 종류RAM의 특징RAM은 전원을 종료하면 저장된 명령어와 데이터가 모두 날아간다. 이런 특징을 휘발성 저장 장치라고 한다.반면, 전원을 종료해도 저장된 내용이 유지되는 저장장치를 비휘발성 저장장치라고 한다. HDD, SSD, CD-ROM이 여기에 해당된다.보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 보조기억장치에 직접 접근하지 못한다. 그래서 일반적으로 보조기억장치에는 ‘보관할 대상’을 저장하고, 주기억장치에는 ‘실행할 대상’을 저장한다.RAM의 용량과 성능프로그램을 실행하려면 보조기억장치에 있는 프로그램을 RAM으로 가져와야한다. 만약 동시에 여러개의 프로그램을 번갈아가면서 사용해야할 때 RAM의 용량이 작다면 보조기억장치에서 RAM으로 프로그램을 가져오는 횟수가 늘어나게 된..
라일라엘
'분류 전체보기' 카테고리의 글 목록