1. Quit(엑셀 종료하기)
1) Application.Quit
2. Path (기본 경로 알아내기)
1) Application.Path
① 엑셀이 설치되어 있는 경로
2) Application.StartupPath
① 엑셀에 설정된 시작 경로
3) Application.DefaultFilePath
① 엑셀 파일이 저장되는 기본 경로
4) ActiveWorkbook.Path
① 현재 사용중인 파일이 저장된 경로
3. SheetsInNewWorkbook(새 문서에 표시할 기본 시트 수 변경)
1) Application.SheetsInNewWorkbook = 5
2) Application.WorkBooks.Add
① 새 문서에 표시할 시트 수를 5로 설정 후 새로운 문서 생성
4. StandardFont(새 문서에 표시할 글꼴, 크기 변경)
1) Application.StandardFont = “궁서”
2) Application.StandardFontSize = “18”
5. StatusBar(상태 표시줄에 메시지 표시)
1) Application.DisplayStatusBar = True/False
① 상태 표시줄의 표시 여부 설정
2) Application.StatusBar = “작업 처리 중”
① 상태 표시줄에 해당 메시지를 출력
6. CurSor(마우스 포인터 모양 변경)
1) Applicton.Cursor = 모양 종류
2) 모양 종류
① xlNorthwestArrow: 화살표 모양 포인터
② xlWait: 모래 시계 모양
③ xlIBeam: I 모양
④ xlDefault: 기본 형태
7. DisplayAlerts(경고 메시지 표시 하지 않기)
1) Application.DisplayAlerts = False/True
① 특정 경고 메시지가 나타나거나 나타나지 않게 하기
8. CutCopyMode(복사 모드 해제)
1) Application.CutCopyMode = True/False
① 특정 셀 영역을 복사한 후 붙여 넣기를 실행하면 원본 영역의 선택이 유지되는데 이 복사하거나 잘라내기 흔적을 해제 한다.
9. WorkSheetFunction(프로시저에서 엑셀 함수 사용)
1) Application.WorksheetFunction.엑셀 워크시트 함수
① 엑셀 함수를 VBA 프로시저에서 사용한다.
10. ActivateMicrosoftApp(다른 MS 응용 프로그램 실행)
1) Application.ActivateMicrosoftApp 실행할 응용 프로그램명
2) 실행 프로그래명 종류
① xlMicrosoftWord
② xlMicrosoftPowerPoint
③ xlMicrosoftMail
④ xlMicrosoftAccess
⑤ xlMicrosoftFoxPro
⑥ xlMicrosoftProject
⑦ xlMicrosoftSchedulePlus
11. AddCustomList(사용자 정의 목록 추가)
1) Application.AddCustomList ListArray:=Array(“동”,”서”,”남”,”북”)
① 동,서,남,북을 자동 채우기 목록으로 추가한다.
2) Application.AddCustomList ListArray:=range(“C3:C10”)
① C3:C10에 입력된 데이터를 자동 채우기 목록으로 추가한다.
12. Dialogs(시트 배경에 그림 설정)
1) Application.Dialogs(xlDialogSetBackGroundPicture).Show
① 시트 배경으로 설정할 그림을 선택할 수 있는 대화상자를 화면에 표시
2) ActiveSheet.SetBackGroundPicture.Filename := “C:\Picture\배경.gif”
① 지정한 경로의 그림을 현재 작업중인 시트의 배경으로 설정
몬스터의 행동 패턴을 나누어보면 유저들이 할 수 있는 모든 행동 패턴들을 몬스터도 할 수 있다는 것을 알 수 있다. 즉, 현실적인 AI를 구현 할 수도 있다는 것이다. 하지만 MMORPG 뿐만 아니라 모든 장르에서는 현실적인 AI보다 재미를 줄 수 있는 AI를 구현 해야 하지 않을까 생각한다.
그렇다면 재미 있는 AI는 무었일까?
우선 첫째로 유저들이 생각하는 대로 움직여야 하지 않을까 한다. 다른 말로 콘셉에 맞는 행동을 해야 한다는 것이다. 기사형 몬스터가 마법을 사용 한다 던지 마법형 몬스터의 방어력이 높다 던지 등 말이다.
두 번째로 짜증을 유저들에게 주어서는 안 된다. 예로 몬스터의 HP를 5%까지 줄였는데 몬스터가 회복을 하여 50%의 HP를 채운다 던지 장시간 무적 상태가 되어서 어떤 공격도 할 수 없게 된 다던지 하는 경우가 있어서는 안 된다.
세 번째로 몬스터의 행동에 유저들이 관여를 할 수 있어야 한다. 이것은 두 번째와도 연관이 되는 부분이 많이 있다. 먼저 몬스터가 회복을 한다고 할 때 유저들이 그것에 대해 아무런 제약을 하지 못하게 되면 짜증을 불러 일으킬 수 밖에 없다. 또는 강력한 공격을 하려고 할 때 속수 무책으로 당할 수 밖에 없다고 한다면 이 역시 짜증을 유발 시킬 수밖에 없다. 이런 몬스터의 행동에 제약을 걸 수 있게 되면 짜증을 유발할 수 있는 행동 패턴들은 긴장감을 고조 시키고 행동 제약을 성공했을 때 유저들에게 희열을 느낄 수 있는 좋은 형태로 변형 시킬 수 있다고 생각한다.
나는 위 세 가지가 갖추어져야 재미 있는 AI라고 생각한다.
그리고 싱글과 파티일 경우 AI는 달라지게 되는데 그 중 제일 큰 부분을 차지하는 것은 어그로에 인한 AI 패턴 변화가 아닐까 한다. 기본적으로 싱글 일 때의 Ai와 다르게 파티와의 전투에서는 이 어그로의 설정이 제대로 이루어지지 않으면 전투가 싱거워지거나 너무 어려워지거나 하는 등의 문제들 일으킬 수 있다.
1. 게임에서의 AI
컴퓨터가 조종하는 상대가 똑똑하다고 반드시 게임이 더 재미 있는 것은 아니다.
어차피 플레이어가 이기도록 만들어지는 게 게임이다. 그러나 쉽게 이기게 만드는 것도 바람직하지 않다. 컴퓨터가 상대가 멍청하게 보이는 것을 피하면서도 플레이어게 승리의 기회를 부여할 수 있게 디자인 되어야 한다.
즉 궁극적인 목표인 게임을 재미있게 만든다는 것을 간과하지 말아야 한다.
정교한 AI의 목표는 플레이어를 죽이는데 있는 것이 아니라 긴장을 더하고 게임의 보조를 제어하고 NPC들에게 개성을 부여하는데 있다.
2. 몇 가지 요령들
1) 어떠한 경고도 주어지지 않은 상태에서 플레이어를 공격하지 않도록 해야 한다.
① 몬스터를 움직이기
2) 자신을 노출하라
① 적이 잘 보이도록 디자인 하라
3) 서투르게 조준하라
4) 첫발은 빗나가게
① 강한 것은 처음 빗나가게 하라
5) 플레이어에게 경고하라
① 애니메이션, 효과음 음성 등의 사용
6) 쿵푸 스타일의 공격
① 플레이어를 공격할 수 있는 적이 많아도 2~3명만 플레이어를 공격 하도록 한다.
7) 플레이어에게 자신의 의도를 알려주라
① 음성 등을 사용하여 현재 하려는 행동을 정확히 플레이어에게 알려준다.
8) 실수에 대처하라
① 뛰어난 AI도 실수가 일어 날 수 있다. 이를 인식하고 대처할 방법을 마련해야 한다.
9) 결정적 순간에 물러나라
① AI 의 목표는 플레이어에게 흥분과 긴장을 제공하는 것이다. 계속적으로 플레이어의 상태를 체크하여 막다른 골목으로 몰면서 플레이어가 한계에 다다르면 AI가 잠시 물러나면서 플레이어에 대한 공격 효율성을 증가 시킨다.
10) 의도적인 약점
① 플레이어로 하여금 적의 취약점을 발견할 수 있도록 한다.
3. Ai 종류
1) A* 길찾기
① 가장 비용이 싼 경로를 찾는 알고리즘
2) 명령 계통 구조
① 서로 다른 수준을 따라 간계적으로 내려가면서 일어나는 Ai
② 전략, 분대전술, 개별 전투
3) 추측 항법
① 플레이어의 현재 위치, 속도, 가속 등 정보에 근거해서 플레이어의 다음 위치 행동을 예측 하는 방법
4) 창발적 행동
① 저 수준 규칙들이 서로 상호작용해서 좀더 흥미롭고 복잡한 행동을 만들어내는 형태
② 무리짓기
5) 무리짓기
① 분리: 주변 다른 개체들과 너무 가까워 지지 않도록 한다
② 정합: 주변 다른 개체들과 평균적으로 같은 방향으로 이동한다.
③ 응집: 주변 다른 개체들과 평균적인 거리의 위치로 이동한다.
④ 물고기, 새 때들에 사용
6) 대형
① 각 유닛이 특정한 목표를 향해서 그리고 대형 안에서 자신의 위치에 기반해 이동 방향을 결정
7) 영향력 분포도
① 2차원 격자로 격자의 각 칸에 대해 칸에 있는 유닛들의 개수를 합한 것
8) 세부 수준 Ai
① LOD와 같이 플레이어가 인지하고 중요시 하는 부분은 상세히 수행하고 그렇지 않은 부분은 생략하거나 간단한 계산을 사용하는 것
9) 관리자 과제 부여
① 개별 개체가 과제를 선택하는 것이 아니라 관리자와 필수 과제들의 목록을 두고 관리자가 각 과제에 적합한 개체를 선택하는 방식
10) 장애물 회피
11) 스크립팅
12) 상태기계
① 유한 상태기계FSM 널리 쓰이는 소프트웨어 설계패턴의 하나 게임 AI의 초석으로 자립 잡음
13) 스택 기반 상태 기계
① 이전의 행동들을 스택에 저장해서 기억 한다.
14) 포섭 아키텍처
① 캐릭터의 행동을 병렬적으로 수행되는 FSM계층들로 분리된다.
② 아래 계층은 원조적 행동(장애물 회피)
③ 위쪽 계층 목표 결정이나 목표물 탐색 (정교한 행동)
④ 낮은 계층들의 우선순위가 높다.
15) 지형 분석
16) 트리거 시스템
① If/then 규칙들을 게임 객체나 세계 자체에 내장 시킬 수 있도록 하는 고도로 특화된 스크립팅 시스템
4. 기타
1) 어떤 패턴을 인식하게 되면 게임의 재미가 점점 감소한다.
2) 확률론
① 수학적 확률 (이론적 주사위 던지기 1/6),
② 경험적 확률(실제 주사위 던지기)
3) 이산 대 연속







Prev