프로그래밍2010.05.13 13:49
어느순간부터 VMware에서 Ubuntu 이미지를 로딩하면 다음과 같은 에러 메시지가 떴다.
"Exception Processing Message c00000a3 Parameters 764cbf7c 4 764cbf7c 764cbf7c"
에러가 떠도 사용하는데는 문제가 없어서 그냥 방치..
오늘 찾아낸 원인은..
내 컴퓨터에는 플로피디스크가 없었으나 VMware의 Ubuntu이미지 설정에는 플로피디스크를 자동인식하도록 되어 있어서였다.
처리방법은..
VMWare 메뉴 >> VM >> Settings >> Hardware 탭 >> Floppy 선택후 삭제.

신고
Posted by jujubong
프로그래밍2009.05.07 16:36
template< typename T >
inline void SAFE_DELETE( T & p ) { delete p; (p) = NULL; }

template< typename T >
inline void SAFE_DELETE_ARRAY( T & p ) { delete[] p; (p) = NULL; }

template< typename T >
inline void SAFE_DELETE_ARRAY_OBJ(T & p, int n) { if (p) { for (int i = 0; i < n; i++) { SAFE_DELETE((p)[i]); } delete[] (p); p = NULL; } }

template< typename T >
inline void SAFE_DELETE_ARRAY_ARRAY( T & p, int n ) { if (p) { for (int i = 0; i < n; i ++) { SAFE_DELETE_ARRAY((p)[i]); } delete[] (p); p = NULL; } }

=============================================================================================
#define 으로 구현한것 보다는 디버깅하기 쉽다.
신고
Posted by jujubong
이런저런 언어를 짬뽕하다 보니 매번 사이즈가 헷갈린다.

typedef unsigned char M_Boolean // unsigned 8bit. TRUE 또는 FALSE 를 CHECK 한다.
typedef unsigned int M_Uint32 // unsigned 32 bit type
typedef unsigned short M_Uint16 // unsigned 16bit type
typedef unsigned char M_Uint8 // unsigned 8bit type, unsigned char type
typedef signed int M_Int32 // signed 32bit type. signed int type
typedef signed short M_Int16 // signed 16bit type. signed short
typedef signed char M_Int8 // signed 8bit type. signed char
typedef char M_Char // char
typedef unsigned char M_Byte // unsigned 8bit type. unsigned char type
typedef signed long long M_Int64 // signed 64bit type. signed long long type
typedef unsigned long long M_Uint64 // unsigned 64bit type.unsigned long long type
typedef unsigned short M_Ucode // unsigned 16bit. unicode character
typedef signed long M_Sint31 // signed 32bit. singed long type
typedef signed short M_Sint15 // signed 16bit. signed short type
typedef M_Uint32 M_Addr // unsigned 32bit. unsigned int type
신고
Posted by jujubong
프로그래밍/C#2008.06.05 15:56

http://www.codeproject.com/KB/office/excelxmllibrary.aspx

 

XLS 관련된 소스들은 여기저기 널리있던데,,,

정작 필요한 .xml (xml spreadsheet) 관련 문서들은 별로 없더군요.

파싱코드를 직접 구현해야 하나 하다 한나절 여기저기 뒤지다 보니 다행히 수확이 있습니다. 오호~

꽤나 멋지게 구현되어 있고, 코드에 넣어보니 잘 돌아 갑니다.. 고마울 따름..

덕분에, 열심히 구현하고 있던 파싱소스는 삭제.. ㅋ~~

기존에 갖고있던 다양한 파일들로 테스트해보니 한두군데 제대로 처리하는 것도 있긴한데,, 뭐 아주 특이한 상황에서만 걸리는군요.

 

Yogesh.Extensions.zip : 여기엔 .dll 파일들이 들어있습니다.

Documentation.zip : 여기엔 help 파일..

 

아래 주소는 라이브러리 개발자의 블로그입니다.

http://yogesh.jagotagroup.com/blog/category/Excel-Xml-Library.aspx

신고
Posted by jujubong
프로그래밍/C#2008.06.01 17:40
C#은 기본적으로 UTF-8 을 지원한다. 근데 위피는 확장완성형만을 지원한다는거..
Encoding클래스에 EUC-KR이 상수로 정의되어 있지 않아서 어렵게 여기저기 뒤지고 다녔는데..

FileStream fsText = new FileStream("text.bin", FileMode.Create, FileAccess.ReadWrite);
StreamWriter writerText = new StreamWriter(fsText, Encoding.GetEncoding("EUC-KR"));


신고
Posted by jujubong
프로그래밍2008.05.23 13:32

엊그제 그동안 사용하던 파이어폭스 2.0에서 파이어폭스 3.0 rc1 버전으로 갈아탔다.

실행 속도도 엄청 빨라지고, IETab을 이용할 경우 몇몇사이트(은행)에서의 ActiveX도 제대로 동작해서 즐거웠는데..

어제,오늘 몇몇 사이트에서 이미지가 안나오는 현상이 발생했다.

 

-처리방법

IE에서 이미 UTF-8로 인한 비슷한 현상을 경험한 상태라.. 같은 문제로 결론...

파이어폭스 주소창에 about:config 를 입력하면 아래 화면처럼 나온다.

설정이름중에 network.standard-url.encode-utf8을 true 에서 false 로 바꿔주면 문제는 해결된다.

셋팅 바꾸는 방법은 해당 라인을 더블클릭하면 값이 바뀐다.

image

신고
Posted by jujubong
프로그래밍/SVN2008.05.14 11:22

몇개월간 SVN을 통해 프로젝트를 진행하곤 있지만, 솔직히 SVN서버는 소스백업 서버 정도로 사용하고 있는 상황이다.

가끔 필요한 기능만 살짝 검색해서 사용하곤 바로 땡~~~

여지껏 느끼는 장.단점 몇개를 정리해 봤다.

 

- 장점 -

1. 그래픽을 메신저를 통해서 받지는 않으니 일단 편하다. 예전에 메신저로 받고도 깜빡 넘어가는 경우가 있었다.

2. 집이나 사무실서 맘대로 소스작업이 가능하다. (commit 안해놓는 경우도 많아서 골치)

3. 소스 되돌리기가 가능하다. (현재로썬 가장 유용한 기능)

4. 소스 변경의 로그를 볼수있다.

 

- 단점 -

1. 이런저런 용어나 기능을 미리 공부해야 한다. (바쁜 프로젝트 상황에서 어쩔수 없다.)

2. 가끔 수정한 소스와 서버의 소스가 영켜 골치 아픈 경우 발생. (무지에 의한 실수라 해도 초보자에겐 발생할 수 밖에 없는 실수)

 

결론은,, 익숙해 지면 프로젝트 진행이 편해지지만, 익숙해 지는게 만만치는 않다. ㅋㅋ

신고
Posted by jujubong
프로그래밍/SVN2008.05.14 11:03

[ Subversion 정리 ]

1. Subversion 을 사용하는 3가지 방식

   1) 탐색기 방식
      Subversion을 윈도우즈 탐색기처럼 사용하도록 해주는 TortoiseSVN이 있다. 아래 링크를 통해 TortoiseSVN을 설치하여 사용한다.
http://tortoisesvn.tigris.org
   2) 웹 방식
      Apache 서버를 구축하고 Subversion과 ViewVC를 설치하면 익스플로러를 통해 웹처럼 접근할수 있다.
http://httpd.apache.org : Apache (apache_2.0.59-win32-x86.msi)
http://subversion.tigris.org : Subversion (svn-1.4.3-setup.exe)
http://www.viewvc.org : ViewVC (viewvc-1.0.3.zip)
      ViewVC를 사용하지 않을 경우에는 "지정 도메인"/"해당 저장소" 로 접근
    예) sample.com/repository

      ViewVC를 사용할 경우에는 "지정 도메인"/viewvc 로 접근
    예) sample.com/viewvc
   3) svn+ssh 방식
       ssh클라이언트 툴인 putty를 이용하여 ssh로 암호화 된 상태로 Subversion을 사용한다.

       개인마다 키를 생성하여 이용하는데........

2. Subversion 주요 명령어
   1) svnadmin create : 지정한 위치에 새로운 저장소(repository)를 생성한다.
       형식 - svnadmin create "dest"
       # svnadmin create /home/heyduk/repos
   2) svn import : 생성된 저장소에 프로젝트 파일을 넣는다.
       형식 - svn import "option" "source" "dest"

       # svn import -m "import first project" . file:///home/heyduk/repos/project1/trunk
         -m 옵션을 통해 import 할때의 메세지를 남기고 현재 디렉토리의 내용을 project1라는 별도의 디렉토리에 넣는다.
   3) svn checkout(co) : 저장소에 보관된 프로젝트 소스를 로컬 시스템의 작업 디렉토리로 복사하여 가져온다.
       형식 - svn co "source" "dest"
       # svn co file:///home/heyduk/repos/project1/trunk my_work
   4) svn commit : 지역 작업본의 변경한 내용들을 저장소에 저장하며 프로젝트를 새로 리비젼시킨다.
       형식 - svn commit(ci) "option"
       # svn commit -m "main() modified"

   5) svn status : 작업 복사본에서 변경된 이후 아직 저장소로 commit 되지 않은 내용을 확인한다.
       형식 - svn st "path"

       # svn status(st) main.c
         출력 내용 중 첫번째 문자를 통해 상태를 확인할 수 있는데 그중 몇가지 주요 내용은 다음과 같다.
         A : 추가됨
         C : 충돌됨
         D : 삭제됨
         M : 수정됨
         G : 병합됨

   6) svn diff : 저장소의 내용과 현재 작업 내용을 비교하여 변경한 부분(차이점)을 자세히 확인한다.
   저장소와의 네트워킹은 일어나지 않으므로 실시간 변경 내용은 반영되지 않는다.
      형식 - svn diff "path" , svn diff "option"

      # svn diff main.c
        저장소의 내용과 현재 작업내용 중 main.c 파일의 차이를 확인

      # svn diff -r 1:2
        리비전 1과 2의 차이를 확인

      # svn diff -r 1 main.c
        리비전 1과 현재 작업중인 main.c의 차이를 확인

      # svn diff -r 2
        리비전 2와 현재 작업중인 디렉토리의 파일내용 차이를 확인

   7) svn log : 특정 파일의 commit된 로그 메세지를 확인한다.
      형식 - svn log "path" , svn log "option"

      # svn log main.c
        main.c 파일이 commit 된 로그메세지를 출력

      # svn log -r 1:2
        리비젼1부터 2까지의 로그메세지를 출력
   8) svn update : 현재 작업디렉토리의 내용을 저장소의 최신 리비전으로, 또는 지정한 리비전으로 갱신한다.
      형식 - svn update(up) "option"

      # svn up
        현재 작업 내용을 최신내용으로 갱신

      # svn up -r 1
        현재 작업 내용을 리비전 1로 갱신(최신 리비전보다 이전으로 되돌리는 것도 가능하다.)

   9) svn add : 프로젝트에 파일이나 디렉토리를 추가한다.
      형식 - svn add "path"

      # svn add Makefile
        add로 추가한 경우 저장소에는 바로 반영되지 않기 때문에 commit 을 수행하여 새로운 리비전으로 갱신할 필요가 있다.
   10) svn revert : 지역 작업 복사본에서 수행한 변경들을 이전 상태로 복원(실행 취소)한다.
        형식 - svn revert "path"

        # svn revert main.c
           지역 복사본의 main.c 파일에 가했던 변경들을 모두 복원(취소)함

   11) svn merge : 저장소끼리, 또는 저장소와 지역 작업본간의 변경 내역을 작업본에 병합한다.
        형식 - svn merge "source1" "source2" "dest" : 다른 저장소끼리의 변경 사항을 지정한 작업 복사본으로 병합함
                  svn merge -r rev_num1:rev_num2 "dest" : 기본 저장소에 있는 두 리비전의 변경사항을 지정한 작업 복사본으로 병합함

       # svn merge file:///home/heyduk/repos/project1/trunk file:///home/heyduk/repos/project2/trunk my_work
           저장소의 project1과 project2간의 차이를 지역 작업본인 my_work에 병합함

        # svn merge -r 6:7 file;///home/heyduk/repos/trunk my_work
           저장소의 리비전 6~7의 변경내용을 지역 작업본인 my_work 에 병합함
출처 : http://blog.naver.com/heyduk?Redirect=Log&logNo=41990064

신고
Posted by jujubong
프로그래밍/SVN2008.05.14 11:01

가. Subversion(이하 SVN) Package 설치

01. Apache2가 설치되어있으므로 subversion, libapache2-svn을 설치 한다.
     아래와 같이 설치가 끝나면  subversion, svn module을 설치하고 나면 80포트를 통해 WebDAV를 사용할수 있다.

 $ sudo apt-get install subversion libapache2-svn

2. 설치된 모듈 확인

$ sudo a2enmod dav_svn
This module is already enabled!

03. 새로운 repository를 생성 및 권한 설정

$ sudo mkdir /home/svn
$ sudo chown -R www-data /home/svn
$ cd /home/svn                                                  - 이동
$ sudo svnadmin create --fs-type fsfs testproject1                 - 프로젝트 디렉토리 생성 
$ sudo chmod -R g+w testproject1                                   - 그룹쓰기 권한 설정
$ sudo chown -R www-data.www-data testproejct1                      - 아파치에서 액세스하기 위한 그룹 설정

04. 디폴트로 설치된 설정파일을 변경. (주석처리 된것들 주석을 빼준다.)

$ sudo vi /etc/apache2/apache2.conf 
LoadModule dav_module              mod_dav.so
LoadModule dav_svn_module        dav_svn.so
를 추가해준다. (만일 apache2 다시 시작할때 이미 되어 있다면 추가해주지 않아도 된다.)




$ sudo vi /etc/apache2/mods-enabled/dav_svn.conf

<Location /svn/testproject>
  DAV svn
  SVNPath /home/svn/testproject
</Location>

05. apache가 repository에 권한을 갖도록 그룹으로 변경

$ sudo chown -R www-data /home/svn

06. 패스워드 화일을 설정

$ sudo htpasswd -cm /etc/apache2/dav_svn.passwd 사용자아이디
New password: (암호)
Re-type new password: (암호)

07. 패스워드 인증

#htpasswd -c [패스워드파일] [유저아이디]
ex) #htpasswd -c /etc/apache2/dav_svn.passwd techbug

아파치 설정파일이 있는곳에서 위의 명령어를 하면 패스워를 입력받는다.
위의 명령어는 새로운 패스워를 만드는 경우고 사용자를 추가할 경우에는

#htpasswd [패스워드파일] [유저아이디]

의 형식으로 추가한다.. 아파치 설정파일(/etc/apache2/mods-enabled/dav_svn.conf)에 가서 아까 적어준 부분을 아래와 같이 수정

<Location /svn/testproject>
  DAV svn
  SVNPath /home/svn/testproject
  AuthType Basic
  AuthName "Subversion Repository testproject"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user
</Location>

그리고 checkout 모든 사용자들이 할 수 있지만 커밋 등의 쓰기동작은 지정된 사용자만이 할수있게 끔 하려면
<Location /svn/sample>
  DAV svn
  SVNPath /home/svn/project1
  AuthType Basic
  AuthName "Subversion Repository project1"
  AuthUserFile /etc/apache2/dav_svn.passwd
  <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
  </LimitExcept>
</Location>

이렇게 수정.

08. 아파치를 재시작

$ sudo /etc/init.d/apache2 restart

09./svn으로 위에서 설정한 아이디/패스워드 를 입력하면 내용확인

http://localhost/svn/ 

  참조 : http://davidwinter.me.uk/articles/2006/02/16/subversion-over-apache-2-on-ubuntu/

[출처]

Ubuntu SVN with Apache설치|작성자 데꾸벅

신고
Posted by jujubong
프로그래밍2008.04.21 14:01
프로그래밍2008.04.18 12:23

게임과 AI(Artificial Intelligence)

AI의 등장과 목적

  • 대부분의 사람들이 동의하듯이 게임의 목적이 ‘재미’라는 그 자체만으로 목적이 되는 순간부터 AI는 필연적으로 발생
  • AI의 발생이 필연적이라 할 수 있는 이유는 게임의 “재미” 자체가 자신외의 객체와의 커뮤니케이션에 기반하고 있기 때문
  • 여기서 객체라 함은 자신 이외의 플레이어(사람일수도 있고 AI일수도 있다), 게임 속의 세계, 게임 속에서 인정되는 유효사물(게임 속에서 게임 플레이에 영향을 미칠 수 있는 모든 사물)을 포괄하는 개념
  • 게임 플레이어는 게임 내에서 유효사물을 이용하여 게임 속의 세계가 정의하는 룰에 따라서 자신 이외의 플레이어와 커뮤니케이션을 통하여 유발될 수 있는 다양한 “재미”를 경험하게 되는 것
  • 전통적인 보드 게임의 관점에서 게임을 플레이할 수 있는 방법은 3가지
    • 첫째는 같이 플레이를 하고 싶어할만한 가족이나 친구 혹은 손님을 기다리는 것
    • 둘째는 같이 플레이를 하고 싶어할 만한 친구나 손님을 방문하는 것
    • 셋째 방법은 혼자서 하는 것
  • 이러한 전통적인 게임들이 컴퓨터라는 새로운 매체와 결합하면서 나타난 가장 큰 특징은 게임을 혼자서 플레이하게 되었다는 점
  • 앞에서 예를 든 바와 같이 약간의 위험과 수고를 감수한다면 전통적인 게임들 또한 혼자하기가 불가능하지는 않았지만 컴퓨터와 결합한 초기 게임들은 몇 가지 이유들(기술적 문제와 같은..) 때문에 “혼자하기(Single Play)” 형태로 구현
  • 게임을 혼자 하게 되면서 본격적으로 게임 속에 AI라 불리는 요소들이 등장하게 되었던 것
  • 물론 아주 당연하게도, AI의 등장은 혼자하기에서 유발되었지만 지금의 “여럿이하기(Multi Play)” 전용 게임에서도 AI는 필수요소
  • 핵심은 AI가 없이는 게임 내에서 커뮤니케이션이 불가능하다는 것
  • 협의적인 측면으로 국한해서 앞의 세 가지 요소 중에 다른 플레이어들만으로 생각한다고 해도 그 플레이어(AI 플레이어)는 우리의 사용자를 즐겁게 하기 위해서 우리의 사용자와 경쟁하거나 협력하거나 심지어는 훼방을 놓을 수 있어야 하는 것
  • 앞에서 언급했듯이 게임에서의 AI의 역할은 여러 가지
    • 첫째, 가장 중요한 것은 게임의 상대 역할을 수행하는 것
      • AI는 게이머에게 무조건 이기는 것이 목적이 아니라 유사한 수준의 상대 역할을 수행하는 것
    • 둘째, AI는 게임의 보조 역할을 수행한
      • 게임 내에서 플레이어의 보조 역할을 하는 캐릭터를 AI가 담당
    • 셋째, NPC의 역할을 담당
      • NPC는 주인공과 상호 작용을 하여 실제로 NPC는 지능적인 객체라는 인식을 게이머에게 심어주어야 함
    • 끝으로, AI는 애니메이션 동작의 제어를 담당
  • 본질적으로 AI는 사용자가 재미있는 커뮤니케이션을 경험하기 위한 도구이며 영리한 AI를 만드는 것뿐만 아니라 재미나는 AI를 만드는 것이 중요

AI의 적용 분야와 최적화 전략

  • AI의 적용 분야
    • 길찾기
      • 여러 장르의 게임에서 가장 흔히 접할 수 있는 문제는 타일 혹은 3D기반의 게임 환경(world)에서 목적지까지 이동할 수 있는 길(path)을 찾는 것
      • 길찾기 시스템은 캐릭터 행동의 특정 측면들을 보장하는 역할
        • 예를 들어서 캐릭터가 장애물들 사이에 끼어서 움직이지 못하는 상황이 벌어져서는 안 될 것
        • 또한 플레이어가 보기에는 너무 명확한 길을 캐릭터가 쓸데없이 멀리 돌아가는 일도 일어나서는 안 될 것
      • 길찾기는 많은 게임들에서 AI의 기초적인 기능이며 특히 전략시뮬레이션(Blizzard의 스타크래프트 게임과 같은..)과 같은 장르에서 목적지를 마우스로 알려주면 가장 빠른 길을 찾아 해당 장소로 이동해야하는 문제로, 거의 모든 게임에서 필요
      • 이에 대한 해법으로 A*알고리즘을 주로 사용하는데, 이는 경로 찾기 문제에서 비교적 빠른 시간에 목적지까지의 최적 경로를 찾아줌
      • 목적지까지 가는 도중에 게임 진행 중 발생할 수 있는 게임 환경(world)의 변경( 예를 들어, 유일한 경로에 플레이어가 건축물을 건설하여 경로를 차단하는 경우)되는 경우는 A* 알고리즘만으로는 모든 경로 찾기 문제를 해결 할 수 없으며 추가적인 방법이 요구
      • 그러나 대부분의 경우 A* 알고리즘과 다른 해법을 병행하여 해결 가능하며 또한 현재 가장 AI 분야에서 가장 많은 연구가 진행된 분야
      • 다음은 바닥 격자 공간에서의 간단한 길찾기 방법 예
        • ㉠ 각 격자 단위로 A* 알고리즘을 이용하여 이용 가능한 노드를 찾음
        • ㉡ 직선 이동을 위해 시작점에서부터 직선으로 갈 수 있는 최대 지점까지 노드를 검색해서 그 노드까지 직선으로 이동
        • ㉢ 쉽게 인근 구역(region)들을 찾기 위해 각 구역들의 연결 상태들을 구성
      • 다음은 Dijkstra 알고리즘(그래프 이론)을 이용한 최단거리 길찾기의 예
        • Dijkstra 알고리즘은 각각의 선분에 명백한 가중치를 적용하고, 시작 위치와 다른 모든 노드들에게 갈 수 있는 최단 경로를 제공
        • 이 알고리즘에 나타나는 그래프의 각 노드는 부모 노드와 최적 비용값을 데이터로 갖음
        • 최초에 모든 노드들을 위한 보무 값들은 올바르지 않은 값을 가지며 최적 비용은 무한대(infinity)로 설정되며 시작 노드의 최적 비용은 0으로 설정
        • 최적의 경로를 찾기 위한 방법
          • 우선 반복적으로 노드를 대기 행렬로부터의 가장 낮은 최소 비용으로 대체
          • 그리고 그것들의 각 선분에 대해서 어느 선분에 대한 목표 노드를 위한 현재의 최적 비용이 현재 노드의 비용에 선분의 비용을 더한 것보다 크면 목표 노드를 향한 더 나은 경로를 찾아낸 것
          • 그리하여 목표 노드에 대한 비용을 갱신하고 부모 노드의 정보를 갱신하며, 그들을 현재 노드로 향하게 함
          • 다음은 Dijkstra 알고리즘을 위한 의사코드
struct node
	vector< edge > edges
	node parent
	real cost

struct edge
	node dest
	real cost

while( priority_queue is not empty )
	node curr = priority_queue.pop
	for( all eges leaving curr )
		if( edge.dest.cost > curr.cost + edge.cost )
			edge.dest.cost = curr.cost + edge.cost
			edge.dest .parent = curr

          • 세부 과정은 SKIP
    • 지적 행동
      • 게임에서 지적인 행동을 일일이 정의 할 수는 없음
      • 그러나 앞서 언급한 길찾기 역시 게임에 등장하는 플레이 가능한 유닛들의 지적인 움직임을 위해 반드시 요구되는 부분 중 하나
      • 만약 이동 가능한 경로가 있음에도 불구하고 게이머가 원하는 위치로 유닛이 제대로 이동하지 못한다면 게이머는 더 이상 게임을 진행하고 싶지 않을 것
      • 또한, 게이머는 게임에서 상대편과 시시한 플레이를 하기를 원치 않을 것
      • 따라서 게임의 상대편이 지능적인 행동을 하도록 게임을 제작하여 게임에서 큰 즐거움을 느끼도록 해야함
      • 예를 들어, 레이싱 게임의 경우 나와 함께달리는 차량이 너무 느리다거나 너무 앞서 달린다거나 해서는 플레이어의 흥미를 유발할 수 없게 됨
    • 계획
      • 게임이 복잡해지고 고도의 지능화된 캐릭터가 등장할수록 캐릭터는 현재의 행동이 앞으로 어떠한 영향을 주는지를 감안하여 전체적인 계획을 세우고 진행
      • 예를 들어 전략시뮬레이션 게임에서 상대편이 취할 수 있는 행동(상대편의 종족 형태, 주 병력의 공격 유형 등)이나 특징을 감안하여 전체적인 대응 전략(상대편 주 병력의 취약 유형 등을 파악)을 계획하여야 함

  • AI 최적화 전략
    • 복잡한 AI는 상당한 연산 능력을 요구하며 수많은 자동화 에이전트들이 지능적으로 게임 세계에서 활동하도록 하려면 더욱 더 많은 연산 능력이 필요
    • 원래 게임은 기본적으로 실시간에 병렬적인 기능이 크게 요구되는 응용프로그램이지만 AI의 분야는 특히 요구 됨
    • 모든 AI 에이전트들이 동시에 자신의 생각을 가지고 움직이는 것처럼 보이게 하는 것은 여전히 어려운 문제이며 이를 위한 AI 최적화는 비교적 미개척 분야
    • 그러나 거꾸로 생각하면 이러한 어려움은 병렬성을 AI 분야의 새로운 영역으로 만드는 요인이라 할 수 있음
    • 이러한 병렬성은 AI 에이전트들의 다른 고유 특성들과 마찬가지로 AI에서 요구되는 최적화 대상이 될 수 있음

    • 전략 #1 : 폴링 대신 이벤트 주도적 행동을 사용
      • 이론적으로, 자동화 에이전트는 자신의 세계를 끊임없이 관찰하고 그에 맞게 행동해야 함
      • 게임이 진행되는 매 프레임마다 에이전트들은 자신이 반응해야 할 사건 또는 객체들을 감지
      • 이러한 접근 방식은 엄청난 양의 중복된 계산이 발생한다는 점
      • 즉 이러한 개별적인 폴링(polling)은 자원 낭비가 심하다고 말할 수 있음
      • 이에 대한 대안은 “이벤트 주도적(event-driven) 기법‘을 사용하는 것
        • 예로 골프게임을 들어보자. 골퍼가 버디샷을 준비하고 있으며, 이를 수백명의 관중들이 지켜볼 경우, 만약 공이 홀컵에 들어갔을 때 공이 ”나 들어갔어“라는 메시지를 보낸다고 하자
        • 이는 모든 관중이 공이 움직이는 내내 공을 주시하도록 하는 것 보다 훨씬 더 효율적
        • 만약 이렇게 하나의 공이 아닌 정말 많은 수의 객체가 동시에 발생할 경우(전투에서 수많은 병력이 전쟁을 할 경우와 같은..)엔 더더욱 큰 도움이 될 것
    • 전략 #2 : 중복된 계산을 줄임
      • 게임에는 수많은 AI 에이전트들이 존재하며, 그들은 수시로 아주 많은 계산을 수행한다. 이러한 독특한 환경에서의 속도 및 효율적인 AI 처리를 위해서는 고가의 하드웨어 장비가 지원되지 않는 이상 하드코딩으로 극복하거나 지능적 처리 방식을 사용해야 함
      • 실제로 이 전략의 목적은 AI 에이전트들이 자신의 계산, 처리 결과를 공유하도록 만들어 불필요한 중복 계산을 줄이는데 그 목표
      • AI 에이전트들 각각이 가지고 있는 정보를 공유할 수 있다면 계산 시간을 상당히 줄일 수 있을 것
      • 간단한 예로 길찾기
        • 전략 시뮬레이션 게임(예 : BLIZZARD의 스타크래프트)에서는 수많은 유닛들이 존재하며 플레이어는 이를 마우스와키보드를 이용해 제어하게 되며 이때 한꺼번에 많은 수의 유닛을 맵의 다른 한쪽으로 이동하도록 명령
        • 각각의 유닛들은 해당 명령에 따라 길찾기 수행을 통해 이동하게 되며 이때 모든 유닛이 길찾기를 수행하는 것 보다 한 유닛이 길찾기를 수행하고 나머지는 그 유닛의 뒤를 따라가는 것이 훨씬 더 효율적일 것
        • 이럴 경우 길찾기 수행의 횟수가 급감하여 계산상의 시간을 상당히 줄일 수 있음
    • 전략 #3 : 관리자를 통한 협동의 집중화
      • AI를 좀더 빠르고 간단하게 만들기 위한 방법의 하나로 게임내의 AI 에이전트들을 하나의 집단(Group)으로 묘사하는 것
      • 하나의 집단에는 그 집단을 이끄는 역할을 가진 관리자 에이전트가 있을 수 있으며 게임 흐름상의 일부(특히 각 집단별 행동이 요구되는 경우..) 결정권을 관리자에게 위임하는 것
      • 실제로 지시된 역할을 수행하는 것은 관리자 역할을 맡고 있는 에이전트의 AI가 판단하게 됨
      • 예를 들어, 축구 게임에서 “3-5-2” 시스템으로 진형을 갖춘다고 했을 때, 공격수(3)와 미드필드(5), 그리고 수비수(2) 역할의 에이전트가 존재하며, 이들이 효과적인 공격과 수비를 펼치기 위해 진형별 관리자를 둘 수 있음
      • 이와 같은 방법은 공격수가 공격에만 전담하도록 할 수 있으며 이를 통해 수비수나 미드필드와의 역할 혼동을 피할 수 있고 자칫공만을 쫓아 몰려다니는 “동네 축구”를 탈피할 수 있는 축구 게임을 만들 수 있음
    • 전략 #4 : 처리 부담을 여러 프레임들로 분산
      • 이 전략은 길찾기와 같은 CPU의 자원을 많이 소비하는 AI 부분에 사용하면 적절
      • 길찾기의 대상이 되는 검색 공간은 몇 프레임만에 크게 변하는 것이 아니므로 계산을 여러 프레임으로 나누어 수행 가능
      • 이러한 접근방식은 프레임 당 처리 부담을 줄이는데 효과적
    • 전략 #5 : 힘든 일은 미리 처리
      • 고도의 물리학 엔진이 탑재된 게임들이 대거 등장
      • 이러한 게임의 특징은 아주 많은 계산이 요구되는 동작을 주로 수행한다는 것
      • 비행 시뮬레이션이 그 대표적인 예
        • 이러한 게임은 종종 실시간으로 처리하기엔 너무 어려운 문제에 직면하기도 한함
        • 이러한 문제를 해결하기 위해 복잡한 계산을 미리 수행하여 테이블에 담아주고 참조하는 방식을 사용하는 등의 기법을 사용하여 실행 시점에서 단 한순간의 조회만으로 의사 결정과 판단에 필요한 정보를 얻을 수 있게 만드는 것이 가능
        • 이러한 전략은, 단 몇킬로바이트의 데이터로 엄청난 CPU 자원을 절약할 수 있게 해준다는 점에서 매우 강력한 최적화 전략이라 할 수 있음
    • 이 외에도 AI의 최적화를 위한 전략들은 아주 많음
    • 실제로 AI 시스템에서 직면할 수 있는 문제들을 최적화하려면 좀 다른 시각에서 문제를 바라보는 것이 도움이 될 것

AI 구현 기술

  • FSM과 FuSM
    • FSM(Finite State Machine)
      • FSM이라는 용어 그대로, 유한한 개수의 상태(state)들로 구성된 기계를 말하며, 가장 널리 사용되는 인공지능 처리 방식
      • 상태 기계(state machine) 즉, 정확히 말하면 유한 상태 머신(FSM)은 장치나 어떤 기술의 순차 로직 혹은 제어 기능에 단순하면서도 정확한 설계를 가능하게 함
      • FSM에 대한 아이디어는 유한한 상태(state)들을 가진 전자 제어 기계들로부터 얻어졌음
      • 여기서 상태(state)라는 말은 하나의 조건이라고 생각하면 됨
      • 놀라운 사실은, 그러한 대부분의 시스템(일종의 간단한 전등 스위치 혹은 게임 내의 지능적인 캐릭터들 등을 포함)들이 유한한 상태들로 표현 가능하다는 것
      • FSM의 알고리즘 자체는 간단하기는 하지만, 상태라는 말을 결코 간과해서는 안됨
      • 거의 모든 시스템들이 상태들로 표현될 수 있음
      • 그렇기 때문에 FSM은 시스템을 제어하는 알고리즘으로 간단하면서 가장 많이 사용됨
      • FSM은 하나의 입력(일반적으로 조건이 변화하는 것을 의미)을 받고 그에 의거해서 현재 상태로부터 다른 어떤 상태로 전이(transition)
      • 간단한 예로, 전등 스위치를 하나의 상태 기계라고 한다면, 스위치의 상태가 “ON"과 ”OFF" 상태가 있을 수 있으며, “Down" 또는 "Up" 이라는 입력이 들어가면 전등 스위치의 상태가 바뀌는 것
      • 게임에서 FSM을 사용할 경우
        • 우리가 알고있는 유명한 게임 중 퀘이크(Quake)도 NPC(Non Player Character)의 행동 제어에 FSM을 사용하였으며, 이와 같은 장르의 게임인 Half Life 역시 계층적 FSM(Hierachical FSM)을 사용한 것으로 알려져 있음
        • 일반적으로 게임 내에서 캐릭터의 행동이나 감정 상태등을 FSM으로 표현 가능
        • 여러 캐릭터 혹은 하나의 캐릭터에 대한 현재 상태가 주어지고 이후 외부의 자극등에 의하여 상태가 바뀔 경우 현재 상태에 따라 그에 대한 반응 방법이 결정
        • 자극과 같은 외부의 상황이 바뀌면 현재 상태가 다른 상태로 전이
        • 또한 전등 스위치에서와 같이 캐릭터는 특정 상태에 있을 경우에는 항상 같은 방식으로 행동
        • 여러 캐릭터가 몇 개의 상태로 주어질 때 캐릭터의 현재상태에 따라 외부에 대처하는 방식이 결정
        • 즉, 외부의 상황이 변화하게 되면 현재상태도 FSM에 의해 다른 상태로 전이
        • 또한, 캐릭터는 특정한 상태에 있을 경우 항상 같은 방식으로 행동
      • 결과적으로 FSM의 전반적인 아이디어는 매우 간단하고 단순하지만, 그 활용 범위와 용도는 너무나도 다양하다 할정도로 시스템 제어에 근본이 되는 알고리즘이라는 것을 알 수 있음
        • 실제로 단순히 switch() 구문 혹은 if 구문을 사용하여 프로그래밍되는 것이 전부
        • 그래서 FSM은 특별한 인공지능 기능을 요구하지 않는 게임에서 많이 사용하며 만약 설계/구현 과정에서 상태의 수가늘어나게 되면 switch() 구문을 사용하는 대신 배열을 사용하여 원하는 루틴에 빠르게 접근
        • FSM의 의사코드 구현
Switch(creature_state)
	case STATE_ATTACK :
		플레이어 쪽으로 이동
		20%의 확률로 포 발사
	case STATE_RETREATE :
		플레이어와 반대 방향으로 이동

      • FSM도 표현해야할 상태수가 늘어나게 되면 몇가지 단점
        • FSM이 나타낼 수 있는 상태 수는 어느 정도 제한적이지만 사실상 그 수에 대한 제한은 없기 때문에 복잡하고 많은 수의 상태 표현을 요구하는 경우 상태 다이어그램을 정리하기가 어렵고 상태 변화를 가능하게 하는 외부 자극 처리가 복잡해지게 됨
        • 게다가 FSM을 사용한 게임 혹은 게임내의 캐릭터는 그 행동의 예측이 쉬우며 그렇게 될 경우 게임의 재미가 떨어지고, 게임의 난이도를 높이기 위해 FSM을 새로 확장 구현해야하는 결과를 초래
        • 실제로 게임 개발 도중 FSM은 빈번하게 진화, 확장되거나 계층적 FSM으로 다시 설계

    • FuSM(Fuzzy State Machine)
      • FuSM은 FSM의 단점을 개선하기 위한 방법으로 퍼지 이론을 FSM의 상태 전이를 위한 조건 판단에 응용한 것
      • FuSM은 상태의 입력과 출력에 퍼지 함수를 적용하여 랜덤 기능을 추가함으로써 동일한 입력에도 다른 상태로의 전이를 얻을 수 있는 방법
      • 따라서 퍼지 상태 기계는 “그렇다”와 “아니다”라는 이산적인 상태 대신 “매우 그렇다”, “그저 그렇다”, “다소 아니다”, “매우 아니다”와 같은 상태들을 표현
      • 이것은 하나의 (다분이 정량적이지만) 빛을 분산시키는 스팩트럼과 같은 원리라 보면 이해가 빠를 것
      • 실제로 FuSM을 게임에 이용한다면, 예를 들어 하나의 NPC(여기서는 자연 유닛이라 본다면) 는 플레이어에 대해 단순히 “귀찮다”, “조금 귀찮다”, “매우 귀찮다”와 같은 상태로의 전이가 가능한 것
      • 이는 또한 게임 안의 상태들이 반드시 구체적이고 이산적일 필요가 없음을 뜻하기도 함
      • 일반적으로 FuSM은 하나의 상태를 표현하기 위해 일정한 범위를 갖는 실수로 표현
      • 보통 실수의 범위는 0.0에서 1.0사이의 범위를 갖지만 이것이 퍼지 이론에서 말하는 퍼지의 값을 표현하기 위한 유일한 방법은 아님
      • 따라서 사용하고자 하는 수들을 퍼지 값이라고 규정짓고 사용할 수 있음
      • 그렇다면 왜 게임에서 FuSM을 사용하는가? 우리는 게임에 퍼지 논리를 적용시킴으로써 좀더 추상적인 개념을 표현할 수 있으며 이를 통해 게임내의 객체(NPC와 같은..)들로부터 좀더 재미있는 반응을 만들고 좀더 예측하기 힘들게 만듦으로써 게임 전체의 재미를 향상 시킬 수 있기 때문
      • 실제로 게임 플레이어는 마주치는 같은 종류의 NPC 혹은 몬스터(monster)들의 각기 다른 행동 패턴을 느낄 수 있게 되며 이로써 게임은 더욱 더 흥미진진해지는 것
      • 실제로도 같은 케릭터가 다르게 보이기도 함
      • 다양한 게임 장르들에서 FuSM은 유용하게 사용되고 있음
      • RPG 게임중 하나인 디아블(DIABLO)로에서 캐릭터는 적 유닛들로부터 입은 각종 공격 피해로 인해 행동이 느려진다거나 체력이 줄어든다거나 하는 변화를 수시로 겪음
      • 이는 상당히 많은 상태값을 요구하는데 실제로 적이 사용한 무기 혹은 마법의 능력치에 따라 피해의 크기와 지속 시간등이 다채롭게 변함
      • 레이싱 게임중 하나인 니드포스피드(Need for Speed)에선 경기 도중 코스 이탈을 하거나 차량이 부서지거나하면 피해 위치와 규모에 따라 게임의 속도와 핸들링 등에 다양한 영향을 주게 됨
      • 이는 게임의 진행을 좀더 신중하게 하게끔 유도하며 사실감을 더욱더 느끼는 효과까지 제공
      • 퍼지논리를 컴퓨터를 통해 게임에 적용하는 것은 그리 어려운 것이 아니며, 퍼지의 특성이 적용될 수 있는 다양한 상태의 결정이 요구되는 곳에서 퍼지 논리는 게임의 한 부분으로서 완벽하게 사용 가능

  • 결정 트리
    • 결정트리는 귀납적 학습을 위한 실용적인 방법으로 트리 모양의 구조로 결정의 셋을 나타냄
    • 이 결정트리는 데이터 셋의 분류를 위한 규칙을 생성
    • 또한 학습 과정을 거쳐 생성된 결정트리를 규칙의 집합으로 이해 가능
    • 앞서 설명한 FSM은 상태 수가 많아지면 여러 문제점이 나타남
    • 따라서 이를 극복하기 위한 간단하면서도 효과적인 방법이 요구되며, 이중 가장 널리 사용되는 방법이 결정트리
    • 결정트리는 현재 상태에 따라 수행할 기능을 트리 형태로 나누어 해당하는 행동을 처리하도록 하는 방법을 말함
    • 결정트리는 학습의 과정을 거쳐 트리를 생성하고 이를 규칙의 집합으로 사용하므로 미리 정해진 상태가 없기 때문에 매 프레임마다 게임 로직을 처리해야하는 부담이 있지만, 트리의 구조를 잘 선택하면 게임 로직에 사용되는 시간을 최소로 줄일 수 있기 때문에 널리 사용
    • 결정트리는 if then else 구문을 반복적으로 사용하므로 프로그래머의 이해가 빠르고 코딩의 어려움이 없음
    • 따라서 상태수의 제한이 없으나 비교적 적은 수의 환경변수를 사용할 때 편리
    • 또한 얻어진 결과가 하나 또는 아주 적은 수의 값만을 사용하는데 적합
    • 일반적으로, 결정트리는 FSM보다 많은 코딩을 요구하며 FSM 보다 CPU 점유율이 높음
    • 게다가 규칙을 만들기 위한 많은 사례를 미리 준비해야하는 단점이 있으며, 이후에 트리의 최적화 과정이 반드시 요구

  • 규칙 기반 시스템(Rule Based System)
    • 규칙 기반 시스템은 Allen Newell 과 Herb Simon의 기본 아이디어로부터 도출
    • 실제로 규칙기반 시스템은 전통적인 인공지능 학문에 기반을 둔 기법으로 전문가 시스템에 활용
    • 규칙 기반 시스템의 기본 개념은, 많은 규칙을 나열하고 현 상황에 해당하는 즉 현 상황에 가장 적합한 규칙을 골라 내어 이 규칙에 따른 결과를 얻는 것을 말함
    • 기본개념에서도 알 수 있듯이 어떠한 규칙이 가장 적합한 규칙인지 를 판단하는 것이 중요하며 또한 해당 규칙을 어떻게 생성하였느냐가 시스템의 중요 이슈
    • 규칙기반 시스템에서의 규칙 선택은 임의 함수를 조건으로 사용 시 Hashing 함수는 사용이 불가능하며 모든 규칙에 대해 차례로 테스트
    • 따라서, 가장 먼저 발견된 규칙을 선택하는 경우가 대부분이며 규칙을 매칭하기까지의 시간은 규칙의 수와 조건의 복잡도 그리고 매칭되지 않는 규칙의 수에 영향을 받음
    • 규칙기반 시스템은 FSM이나 결정트리에 비해 높은 지능을 구현할 수 있으며 인간의 사고방식을 그대로 적용 가능 하나 규칙의 수가 늘어날수록 해당 규칙을 찾아내는 매칭 기능에 많은 시간이 소요되므로 단순한 지능만으로 구현 가능한 게임보다는 복잡한 조합으로 이루어진 RPG 게임과 같은 장르에 필요한 시스템
    • 실제로 규칙 기반 시스템은 “Baldur‘s Gate"라는 게임의 Infinity 엔진에 처음 사용된 것으로 알려져 있음

  • 스크립트 언어
    • 게임 디자이너는 해당되는 인공지능 로직을 프로그래머에게 전달하여 이를 C/C 프로그램 언어를 이용하여 프로그램 코드에 포함
    • 이때 전체 프로그램 로직에 변화를 주지 않고 해당 캐릭터의 행동만을 바꾸고자할 경우가 생기며 이는 자칫 전체 프로그램을 다시 컴파일해야 할 필요성이 생김
    • 따라서 인공지능 구현 기능을 메인게임 프로그램에서 분리하여 스크립트 언어로 표현하는 방식이 등장
    • 앞서 설명한 바와 같이 UnrealScript라는 언어를 사용하여 엔진 이외의 코드를 프로그램 할 수 있도록 하였음
    • Quake-C는 단순화시킨 C언어와 같은 느낌인데 반하여 UnrealScript 언어는 Java 언어의 분위기를 풍김
    • 엔진 코드 개발에 사용한 C 언어는 인공지능 처리가 어렵다는 것
    • 인공지능 처리를 위한 코드는 한 프레임 진행시간에 처리할 수 없기 때문에 이러한 문제를 해결하기 위해서는 스파게티 같은 코딩을 하지 않을 수 없음
    • UnrealScript에서는 상태(state)라는 개념을 두어 특정 상태에서 처리해야 하는 루틴을 해당 상태에서 코딩 처리함
    • 이 코드는 하나의 프레임 진행시간 이상 수행할 수 있는 별도의 스레드를 사용하여 처리
    • 일반적인 스크립 언어는 기능을 단순하게 하기 위해 객체지향에서의 가장 큰 장점인 상속기능을 지원하지 않으나 UnrealScript는 상속 기능을 지원하여 여러 가지 인공지능이나 게임로직의 문제를 해결
    • 등장하는 캐릭터의 행동과 네트워크 프로토콜의 연결은 대부분 UnrealScript 언어를 사용
    • 특히 캐릭터의 특성을 상속할 수 있도록 하여 저급 수준의 캐릭터 코드를 보스급 몬스터가 상속하며 필요시 이를 오버라이드(Override) 할 수 있도록 하여 전체 코드 개발에 생산성을 높이고 에러 발생의 가능성을 줄이고 있음
    • 매우 발전된 수준의 Creature 나 Bots의인공지능을 처리하기 위해 스크립 언어가 설계되어 있어 Bots의 움직임과 무기 그리고 인벤토리를 어떻게 이용하는지 알고 있음
    • 그러나 Quake와 Unreal의 스크립트는 인공지능만을 위한 언어는 아니며 네트웍 지원을 기본 기능으로 하고 있어 엄밀한 의미의 인공지능 스크립언어로 보기는 어려움
    • 인공지능 기능만을 위한 스크립트 언어는 “Baldur‘s Gate"에서 사용된 스크립트 언어와 ”Age of Kings"에 사용된 스크립트 언어를 들 수 있음

  • 영향력 분포도(influence map) 기법
    • 영향력 분포도 기법은 전략적 판단을 내리는데 꼭 필요한 게임 AI 기법으로, 많은 게임들에서 유용함이 입증
    • 영향력 분포도는 주로 전략 게임에 쓰이나, 전술적 분석이 필요한 다른 종류의 게임들에서도 유용하게 쓰일 수 있음
    • 영향력 분포도란 AI 에이전트가 세계에 대해 지니고 있는 지식을 공간적으로 표한 것
    • 실제로 게임 환경의 물리적/지형적 표현과 현재의 게임 상태(유닛 및 조형물의 배치등)에 기반해서 전략적 결정에 필요한 정보만을 적절히 추출한 것이라 할 수 있음
    • 컴퓨터 플레이어는 영향력 분포도를 통해 자신의 유닛 배치와 적의 위치, 그리고 적과의 전선 및 전투하기 가장 적절한 곳이 어디인지 등을 파악할 수 있음
    • 영향력 분포도를 만들어 내는 방법은 여러 가지가 있으며 적용 방법 역시도 여러 가지가 있음
    • 여기서는 가장 간단한 수준에서 개념을 알아볼 것
    • 2차원 공간에서의 영향력 분포도
      • 영향력 분포도는 대부분의 게임 구조에 대해서도 적용 가능
      • 여러 가지 타일 기반의 격자(직사각형, 정사각형,육각형 등) 형태를 갖출 수 있으며 3D에서도 적용 가능
      • 여기서는 2차원 공간의 간단한 구조를 통해 이해를 돕겠음
        • 게임 세계는 사격형 칸들로 덮음
        • 그리고 각 칸들의 모든 영향력은 0으로 초기화
        • 그리고 각 칸이 가질 수 있는 영향력 값이 배정
        • 이때 영향력의 값의 기준은 전투 능력등으로 볼 수 있으며 아군은 양수, 적군은 음수의 값을 갖음
        • 하나의 타일로 이루어진 게인 세계에는 고유의 영향력을 갖는 아군과 적군이 공존하며, 이들의 영향력 값을 적절히 더하고 뺌으로써 각 타일에서의 유닛 전투 능력을 평가
        • 일단 각 유닛이 1이라는 전투 능력을 가진다고 하자.
        • 이제 각 칸의 영향력을 인접 칸들로 전파시켜야 함
        • 인접한 칸으로 전파될 때마다 세력(영향력)은 반으로 준다고 가정
        • 두 적군 유닛(비행기)들의 영향력 역시 동일하게 전파되며, 적 유닛의 영향력은 음의 값으로 나타나게 됨
        • 아군 유닛과 적 유닛의 의 영향력을 결합한 분포도를 통해 우리는 아군과 적군의 역관계를 확실히 알 수 있으며 타일 내의 영향력(양의 값과 음의값)을 이용하여 적들의 진형과 전선 형성등을 파악
        • 실제 게임에 쓰이는 분포도의 형태는 좀더 복잡
    • 실제 게임에서는 단지 각 칸에 영향력 값만이 아닌 게임의 세계에 대한 또 다른 정보( 전투능력, 지역 가시성, 전사자 수, 자원, 통행성 등)들을 함께 담는 경우가 많음
    • 이렇게 구성된 영향력 분포도는 하나의 데이터베이스가 되기도 함
    • 일반적으로, 게임에 참여한 플레이어들에게 각자에 해당하는 영향력 분포도가 주어지게 되고 이를 처리하기 위해 분포도를 병렬적으로 처리해야 함
    • 물론 모든 플레이어들에 대해 하나의 단일한 영향력분포도를 갱신하고 모든 AI플레이어들이 그것에 접근하게 만들 수도 있음
    • 이것은 치팅(cheating) 수단이 될 수 있음

  • 자원 배정 트리
    • 영향력 분포도기는 지형 차원의 전술적 자산(asset)을 얻기 위한 수단이라 할 수 있으나 앞으로 살펴볼 자원 배정 트리는 전략적 차원의 결정을 내리는데 사용되는 기법 중 하나라 볼 수 있음
    • 자원 배정트리는 플레이어의 제어 하에 있는 모든 자산들의 특정한 기능적 목적을 표현하는 하나의 트리 구조
    • 이 트리는 현재 플레이되고 있는 모든 유닛들과 자원들을 기능적 범주들의 계통구조로 조직화한 형태
    • 자원 배정 트리를 이용해 플레이어는 자신을 포함한 게임안의 모든 플레이어들의 전략적 강점과 약점을 알아내는 데 사용될 수 있음
    • 또한 이 트리는 다양한 범위의 경제적 생산 및 자원 배분 결정을 위해 사용 가능
    • 예를 들어 전투 유형에 따라 생산할 유닛을 결정한다든지, 그리고 어떠한 기능적 역할을 맡길 것인지를 판단하는데 사용
    • 자원 배정 트리는 기본적으로 어떤 새 유닛들을 생산할 것이며 기존 유닛들에게 어떤 역할을 맡길 것인지를 결정하는데 유용
    • 또한 플레이어의 독특한 개성을 창조하는 수단이 될 수도 있음
    • 즉 개성적인 AI 플레이어들을 만들어내는데 사용 가능
    • 개성적인 AI 플레이어들을 만들어내는 문제는 단지 트리 각 노드의 배분 비율등을 조절하여 해결 가능하며, 또한 각 노드들을 적절히 조절하므로써 전략적 비중을 변경하는 것 또한 가능

응용 사례

  • 게임 장르
    • 게임의 장르 분류에 있어서 현재 많은 혼동과 어려움이 뒤따르고 있음
    • 왜 그런지에 대한 타당한 이유와 근거를 제시하기엔 어려운 점이 많은 것도 사실
    • 현재 개발중인 대부분의 게임은 그 특징들이 너무나도 다양하며 어느 특정한 룰을 지키려는 의지 또한 부족한 것이 사실
    • 그렇다면 우리는 대략 어떠한 특징들을 가지고 게임의 장르를 분류할 수 있을까?
    • 게임의 장르는 대략 슈팅, 아케이드, 퍼즐, 어드벤처, 롤플레잉, 전략시뮬레이션, 조종시뮬레이션, 온라인 게임, MMORPG등으로 나눌 수 있음
    • 이것은 사전적인 분류는 아님
      • 슈팅 슈팅 게임
        • 말 그대로 플레이어의 민첩성에 기반한 회피, 그리고 막대한 화력에 기반한 대량 파괴에 플레이 초점이 맞춰져 있음
        • 목표물을 쏴서(shoot) 맞추는 게임 형태에서 그 명칭이 기원한 것으로 보임
        • 실제로 제비우스, 갤러그와 같은 쏴서 맞추는 형태의 게임에 대한 명칭에서 굳어진 것으로 보임
        • 이러한 슈팅 게임은 플레이어가 한번에 하나의 유닛만 조종해야 하거나, 일반적인 성취도를 점수(score)형태로 계산하여 순위를 부여하고 일반적으로 사냥과 같은 것이 주된 목적
      • 아케이드
        • 민첩성과 순발력에 기반한 캐릭터 조종과 약간의 퍼즐이 가미된 게임으로서 사실상 아케이드란 말은 올바른 명칭은 아님
        • 아케이드는 가정용 비디오 게임이나 PC 기반 게임과 구분이 되는 ‘업소용 게임“을 가리키는 용어
        • 그러나 모든 업소용 게임을 아케이드 게임이라고 칭하기엔 억지가 있음
        • 그래서 생긴 말이 ”액션 아케이드“
        • 그러나 현재는 ”액션“이라는 말이 많이 모호해져 있으며 그 장르를 구분 짓기 어려운 형편
        • 실제로 슈팅 게임의 기원과 같은 게임인 제비우스와 갤러그도 아케이드용 게임
      • 퍼즐
        • 컴퓨터 게임 이전부터 있던 게임의 명칭이 그대로 사용된 형태로 논리적 사고에 기반한 문제 해결이 플레이의 초점
        • 실제로 컴퓨터가 제시하는 문제를 풀이해 나가며 좀더 난이도 있는 문제(게임 진행 속도나 문제 자체의 난이도, 해결을 위한 제한 시간등의 변화를 통한 난이도 조절)를 해결하는 것이 목적
      • 어드벤처
        • 퍼즐에 기반한 스토리 진행형 게임
        • 게임의 진행 및 해결해야할 문제가 주어지는데 이는 모두 스토리에 기반
        • 보통 스토리에 따라서 게임의 목표가 있고, 그 목표를 달성하면 엔딩과 같은 결과물이 주어짐
        • 스토리르 진행해가며 다양한 아이템을 사용할 수 있으며 이러한 진행은 퍼즐과는 또 다른 플레이어의 판단력과 분석력을 요구
      • 롤플레잉
        • 어쩌면 어드벤처와 너무나도 유사한 특징을 가진 장르가 롤플레잉
        • 롤플레잉 역시 스토리와 캐릭터의 성장에 기반한 퀘스트(문제와는 조금 다름) 해결 또는 해결을 통한 캐릭터 성장을 초점
        • 일반적으로 캐릭터를 중심으로 게임이 진행되며 캐릭터를 성장시키는 과정에서 우리가 흔히 알고 있는 경험치나 아이템을 사용할 수 있음
        • 시나리오 중심적인 게임이라는 점에서 어드벤처와 유사하나 자유도의 보장이라는 측면이 강조된 형태를 띄고 있음
        • 롤플레잉 게임에서의 자유도는 “이동의 자유도”, “행동의 자유도”, “캐릭터 성장의 자유도”, “스토리 진행의 자유”, “문제 해결의 자유도”, “게임 진행의 자유도”등으로 대략적인 분류
        • 롤플레잉 게임에는 울티마온라인, 파이널판타지, 드래곤퀘스트등
      • 전략 시뮬레이션
        • 제한된 자원의 효율적 관리와 유닛 제어를 통해 전쟁등과 같은 상황을 재현/가정한 게임이
        • 우리가 흔히 알고 있는 스타크래프트, 워크래프트등이 전략 시뮬레이션의 대표적인 게임
        • 전략 시뮬레이션은 한쪽이 승리하거나 포기할 경우, 혹은 일정한 목표가 달성되면 게임이 종료
        • 대부분의 전략 시뮬레이션 게임은 리얼타임방식(실시간 전략시뮬레이tus : RTS)으로 진행
        • 리얼타임 방식은 턴 방식과 대조적인 것으로 순서에 관계없이 실시간으로 진행
      • 조종 시뮬레이션
        • 실존하는 기계적 시스템에 대한 가상 체험과도 같음
        • 플레이어는 조종 가능한 기체의 조작을 하게 되는데 이 기체는 실제 세계혹은 가상 세계에 이미 존재하는 탈 것을 그대로 재현한 것
        • 시뮬레이션의 가장 큰 특징은 사실적인 세계의 표현과 그리고 그를 위한 운용 역학, 동역학과 같은 자연적 물리적 법칙이 적용되거나 수정되어 구현된다는 것
    • 장르별 인공지능의 특징
      • 액션
        • 대상 캐릭터 : 플레이어
        • 처리 기능 : 공격 방어
        • 엔진 구현 : 스키립트
      • RPG
        • 대상 캐릭터 : 플레이어, 종속멤버, NPC
        • 처리 기능 : 그룹내의 개별 공격/방 대화 기능
        • 엔진 구현 : 규칙 기반 시스템
      • 실시간 전략
        • 대상 캐릭터 : 플레이어 그룹 유닛
        • 처리 기능 : 전략 목표 설정, 그룹 경로 계산 및 이동, 유닛 공격 및 방어
        • 엔진 구현 : 규칙 기반 시스템
    • 효율적인 인공지능을 구현하기 위해서 ADU 개념을 도입하여 인공지능의 기능을 확장
    • 여기서 ADU(Artificial Decision Unit)란 앞서 최적화 전략에서 언급했던 일종의 관리자 역할을 수행하는 유닛
    • RTS 게임의 경우 Master ADU는 전체적인 전략차원의 인공지능을 담당하도록 하며, 특정시간에 그룹으로 선택된 여러 가지의 유닛은 Group Commander ADU가 담당
    • 반면, 그룹내의 유닛이나 이 그룹에 속하지 않는 일반 유닛은 유닛별 ADU가 인공지능 기능을 담당
    • 다음은 인공지능 엔진의 장르별 ADU를 설명한 표
    • 인공지능 엔진의 장르별 ADU
      • 기본 모듈
        • FSM의 생성
        • State와 Transition의 추가 기능
      • 장르별 모듈
        • 액션
          • Master 기능 ADU
        • RPG
          • Master 기능 ADU
          • Slave 기능 ADU
          • NPC 기능 ADU
        • RTS
          • Master 기능 ADU
          • Group Commander 기능 ADU
          • Unit 기능 ADU
    • 예를 들어, FSM 모듈의 경우, 상태(State)의 수가 10개 미만의 경우에는 Switch 구문을 사용하여 현재의 상태를 검색한 후 이에 해당하는 코드를 수행하면 되지만, 상태의 수가 10개 이상 증가하면 처리속도 면에서 느려질 수 있으므로 ADU 클래스(Class)를 정의하고 여기에 상태나 전이Transition)를 추가하는 방식을 사용하여 문제점을 개선

  • 장르별 응용 사례
    • RPG 게임의 사례
      • RPG 게임에서 사용되는 대표적인 게임 엔진으로 Infinity 엔진
      • Infinity 엔진은 Bioware 사에서 개발한 RPG 전용엔진이며 Baldur's Gate 시리즈, Icewind Dale과 같은 게임에서 사용
      • Infinity 엔진은 대표적인 AI 기능만을 다루는 엔진 중 하나로서 AICompile 스크립트 언어를 이용하는 규칙 기반 시스템 구조를 갖고 있음
      • AICompile 언어는 IF<condition> THEN <response> END 로 표현되는 규칙 중 하나를 선택하도록 되어 있음
      • 규칙기반 시스템 구조
IF
	Condition1
THEN
	RESPONSE # weight
		Response1
	RESPONSE # weight
		Response2
END

IF
	Condition2
THEN
	RESPONSE # weight
		Response1
	RESPONSE # weight
		Response2
END

      • weight는 1에서 100사이의 정수이며 모든 Response의 Weight 합에서 해당되는 비율만큼의 확률로 Response가 이루어짐
      • 또한 Response는 Action의 OR 조합으로 이루어짐
      • 규칙기반 시스템 구조의 예
IF
	Class(LastAttackerOf(Myself().MAGE)
	HPGT(Myself.50)
THEN
	RESPONSE # 80
		Attack(LastAttackerOf(Myself).MELEE)
	RESPONSE # 40
		Help()
		RunAway()
END

      • 위 예에서 자신을 공격한 적의 Class가 MAGE이고 자신의 건강(HP : Health Power)가 50 이하일 경우 80/(80+40)의 확률로 MELEE 방식으로 적을 공격(Attack)하거나 40/(80+40)의 확률로 도움(Help)을 요청하고 도피(RunAway)하는 것을 나타냄
      • 이는 원하는 상황에서의 캐릭터의 동작을 쉽게 표현할 수 있는 장점
    • RTS(Real-Time Strategy : 실시간 전략게임)의 사례
      • RTS 장르의 대표적 게임인 AOK(Age of Kings : Ensemble Studio 사)는 인공지능 처리를 위해 스크립트 언어를 사용
      • 앞서 살펴본 Infinity 엔진의 스크립트 언어와 유사하지만 다른 표현 방식을 사용
      • AOK 인공지능 처리 스크립트 언어
(def_rule
(current-age == castle-age)
(building-type-count castle == 1)
=>
(set-goal GOTO_NEXT_AGE TRUE)
(chat-local-to-self "Trying to get to the Imperial Age*)
(set-goal CAN_ATTACKFALSE)
(disable-self)

(def_rule

(food-amount<=400)
(can-buy-commodity food)
(goal GOING_FOR_WONDER FALSE)
(goal GOTO_NEXT_AGE FALSE)
=>
(set-goal RESOURCE_STATE
RESOURCE_STATE_NEEDFOOD)
(chat-local-to-self *Need Food!*)

      • 위 스크립트 언어에서 사용되는 예약어 중 goal은 게임의 전략 목표를 지정하는 boolean 형 변수값이며, 이를 지정하기 위해 set-goal이라는 예약어를 사용
      • 위 스크립트 중 두 번째 규칙 정의에서 food의 양이 400보다 작거나 같을 경우 생필품으로 음식을 살 수 있으며 goal은 ONDER 상태로 가거나 다음 AGE로 가는 것을 FALSE로 처리하고 set-goal을 통해 “Need Food!" 메시지를 보내는 것을 나타낸 것

    • 기타 장르
      • 사실상 어떤 게임은 그 장르를 명확히 구분 지을 수 없음
      • 그 대표적인 예로 B&W(Black and White)를 들 수 있음
      • 이 게임에 등장하는 캐릭터는 에이전트 기능이 포함되어 있으며 이 에이전트는 어떠한 원인에 의해 특정한 행동을하도록 함
      • 대부분의 RPG 게임에 등장하는 캐릭터가 이유 없이 주인공을 해치려 하는 것과 같은 무의미한 행동은 없어야 함
      • 다음은 B&W의 에이전트가 갖고 있는 학습기능의 특징
        • 플레이어의 피드백으로부터 학습
        • 플레이어로부터 주어진 직접 명령을 학습
        • 다른 캐릭터로부터 학습
        • 외부의 반응으로부터 캐릭터 자체가 학습
      • B&W에서는 믿음(Belief), 욕망(Desire), 의도(Intention)와의 관계를 설정하고 캐릭터의 계획된 행동을 얻음
      • 또한 아키택쳐의 구현을 위해 동적인 결정트리를 사용
      • 외부로부터의 반응에 따라 얻어지는 피드백을 보관하고 이러한 데이터를 바탕으로 결정트리를 게임 도중에 변경하는 방법을 사용하여 학습 기능을 구현

최신 기술의 전망

  • 신경망(NN : Neural Network)
    • 신경망은 인간의 신경세포 동작을 모방해서 외부 입력에 따른 결과를 출력하는 방법으로, 여러 입력에 적당한 가중치를 주어 얻어진 결과에 따라 행동을 결정하는 방법
    • 신경망은 위 그림에서와 같이 외부 입력을 입력단에 있는 퍼셉트론에서 받아 출력단에 있는 퍼셉트론에 적당한 가중치를 주어 전달하는 방식으로 진행되며 결과가 촉발되는 경우에 이를 사용하는 방식
    • 신경망은 완전한 하나의 연산 시스템
    • 이것은 충분한 노드와 선분만 주어진다면 그것들이 컴퓨터가 할 수 있는 어떠한 계산도 할 수 있다는 것
    • 신경망의 가장 중요하고 흥미로운 기능중의 하나는 망을 훈련받을 수 있고 자율적으로 학습
    • 그러나 자율적으로 학습할 경우 우리는 그것이 이용하고 있는 결과들을 검사할 방법이 없으며 이러한 유형의 망은 훈련받은 망보다 훨씬 더 느리게 학습
    • 게임에서의 신경망은 다음과 같은 경우에 이용 가능
    • 우리가 어떠한 상태에 이르면 개체는 에너지를 찾아 지금의 위치로부터 이동하게 하는 어떤 상태를 가지고 있다고 할 경우, 우리는 근처에 강한 적이 있을 때 에너지를 찾아 지금의 이동하기를 원할 것
    • 아니면 적당히 강한 적이 근처에 있고 나의 에너지가 적을 경우도 마찬가지 일 것
    • 이러한 경우는 아주 많이 존재 할 수 있으며 우리는 이것을 다른 기법을 이용하여 작성할 수 있지만 신경망을 이용하여 작성 가능
    • 신경망으로의 입력 값이 되는 입력 상태 값으로 가지고 있다가 촉발되었을 때 우리의 개체를 에너지를 향해 움직이게 할 수 있는 어떠한 결과 값을 가질 수 있음
    • 이 경우, 행동은 입력에 대한 수백만의 조합 중에서 나오게 됨
    • 충분한 요인들이 목표 상태를 이끈다면 그것은 촉발 할 것
    • 신경망을 사용하고자 하는 아이디어 및 연구는 많이 진행되고 있지만 그 진행 과정상 처리 속도가 느리며 앞서 제시하였던 방법보다 눈에 띄는 결과를 얻기 어렵기 때문에 아직은 연구 대상으로서 남아 있는 부분이 많음

  • 인공 생명 (AI-Life)
    • 인공생명의 아이디어는 2001년부터 GDC(Game Developers Conference)에서 시도되고 있음을 알 수 있음
    • 이전의 여러 다른 인공지능 기법이 시도되었으나 성공하지 못한 것에 비해 인공생명 기술은 가능성이 있는 것으로 판정받고 있음
    • Half-Life와 Unreal과 같은 게임에서 Flocking 이론을 사용하여 게임에 등장하는 몬스터의 움직임을 구현한 것으로 발표되고 있음
    • Flocking 기법은 네가지의 간단한 규칙을 이용하여 실제 생물체와 유사한 결과를 얻어낼 수 있다는 장점을 가지고 있음
      • 분리(Separation) : 주변 보이드들과 충돌하지 않도록 방향을 돌림
      • 정렬(Alignment) : 주변 보이드들과 같은 방향을 가리키도록 함
      • 응집(Cohesion) : 주변 보이드들과의 평균 위치 쪽으로 방향을 돌림
      • 회피(Avoidance) : 주변의 장애물이나 적과 충돌하는 것을 피함
    • 크레이그 레이놀즈가 만든 보이드(Boid)는 새떼나 물고기떼, 또는 벌떼와 비슷한 집단 행동처럼 보이도록 1987년 SIGGRAPH에 제출된 논문에서 처음 등장한 기법
    • 각각의 보이드는 매 순간마다 자신의 주변을 다시 평가할 뿐, 무리에 대한 정보는 가지고 있지 않음
    • 무리의 보이드들은 어디로 가는지에 대해서 전혀 알지 못하지만, 모든 보이드들은 하나의 무리로서 움직이고, 장애물과 적들을 피하며, 다른 보이드들과 보조를 맞춰서 유동적으로 이동하게 됨

  • 인공 감정 (Artificial Emotion)
    • 인공 감정 AE : 감정과 성격의 모방
      • 진짜 같은 환경을 구현하는 데 있어서 감정이 살아있는 캐릭터는 결정적인 역할
      • 특히 그 캐릭터가 실제로 정을 가지고 있는 사람들과 상호작용을 할 때에는 더욱 그렇다
      • 감정은 로봇같이 기계적인 행동과 살아있는 사람같은 행동의 차이를 가져오는 필수적인 요소
      • 전통적으로 애니메이터들은 이미 정해진 룰에 따른 행동을 어렵게 구현
      • 이러한 접근으로 각각 고유한 성격과 감정을 가진 자율적이고 인터액티브한 캐릭터를 만들어 내는 것은 불가능
      • 진정으로 인터액티브한 캐릭터는 인공 감정(AE) 이라고 부르는 것에 기반한 기술을 이용하여 자율적인 행동이 이루어지게 할 수있어야 함
      • 몇몇 작품을 제외하고는 현재의 게임 산업에서 유의미한 정도의 깊이를 지닌 자율적인 AE를 거의 찾아볼 수가 없음
      • 현재 게임 산업은 플레이어가 게임을 하는 과정에서 모든 것을 죽이거나 정복해야 하는 장르들이 압도적인 우세에 있음
      • 상대방은 감정이 거의 필요 없으며, 단지 어느 정도의 공포나 단순한 이동 패턴을 드러내는 공격만이 요구
      • 인터액티브 게임에서 감정은 사회적인 기능을 수행
      • 정서적인 반응은 우리가 만나게 될 캐릭터들을 실제같고 매력적이게 하기 위해 쓰임
      • 예를 들어, 만약 우리가 가상의 술집에 들어갔고, 술집 안에 있는 모든 캐릭터들이 분명한 성격을 가진다면, 그 장면은 매우 매력적이고 실제 같은 사회적인 상황이 연출 될 것
      • 만약 캐릭터들이 아무런 감정을 보이지 않는다면, 허구에 대한 우리의 몰입은 깨지게 되고, 우리는 우리만의 환상적인 세상이 아닌 컴퓨터로 생성된 가상의 세계에 있다는 것을 상기하게 될 것
      • 인공 감정의 결과로는 두 가지
        • 행동
          • 일반적인 범주에 속하며 캐릭터가 존재하는 상황의 맥락에 의존
          • 시뮬레이션의 행동 시스템에서 AE는 행동을 선택하고 (또는 선택하거나) 수정하기 위해 사용
          • 행동을 선택할 때, AE는 어떠한 행동이 캐릭터의 성격과 현재의 기분에 적합한 행동인지를 지시해 줌
          • 예를 들어 겁이 많은 캐릭터는 공격적인 행동은 전혀 하지 않으려고 하게 됨
          • 행동을 수정할 때 AE는 행동을 어떻게 이행하는지에 도움이 됨
          • 아주 내성적인 캐릭터라면 그러지 않겠지만, 사교적이고 외향적인 캐릭터라면 행동을 아주 적극적으로 표현할 것
        • 그러나 1차적인 AE의 사용은 손짓과 몸짓, 그리고 얼굴 표현 등의 활발한 제스처
        • 제스처
          • 우리의 감정을 바깥 세상에 알리는 하나의 방법
          • 제스처 없이 우리는 차갑고 단조롭고 감정이 없어 보일 것
          • AE에 의한 제스처들은 우리의 캐릭터들의 성격과 정서에 직접적으로 연결되어 있고, 일정한 패턴을 따르기 마련
          • 이러한 몸동작(또는 Body Language)은 캐릭터의 행동에 또 다른 입체감을 주며, 독특한 성격을 가진 자율적인 캐릭터의 창조에 생기와 깊이를 불어넣어 줄 것

  • 유전자 알고리즘(Genetic Algorithm)
    • 많은 게임 인공지능 담당자들은 유전자 이론의 가능성은 있으나, 아직은 게임에 사용할 수 없다는 생각지 지배적
    • 여러 유전자 관련 기법들은 다음과 같은 핵심 내용을 다룸
      • 첫 번째로는 표현형을 어떠한 압축적이고 간결한 '코드'들로 기술한다는 것
        • 즉, 체력(HP : Health Power), 마법력(MP : Magic Power), 속도, 크기, 모습 등등을 보통은 클래스나 구조체의 어떤 변수들로 저장하지만, 유전자 기법에서는 그것들을 어떠한 일련의 바이트 배열이나 숫자 배열로 표현
        • 또한 그 배열들을 적절히 복사, 교환, 변형(돌연변이)함으로써 새로운 표현형을 얻게 됨
        • 유전자 관련 기법들은 대부분 유전자 코드의 그러한 조작 방법에 기반
      • 두번째는 유전자들의 교환, 변형을 반복함으로써 개발자도 놀라게 할만한(즉 미리 구현되지 않은) 새로운 어떠한 특성이나 해법이 생겨난다는 점이 '진화'라는 관점에서 본 유전자 기법의 강점
        • 게임 프로그래밍에 유전자 기법을 도입할 때, 첫 번째 부분은 별 무리가 없으나, 두 번째 부분은 다음과 같은 이유로 문제가 발생
        • 학술적 측면의 유전자 알고리즘은 사용자와 상호 작용하는 실시간 애플리케이션을 만드는 것이 아니기 때문에 진화의 세대수가 그리 중요하지 않음
        • 따라서, 연구 목적의 GA에서는 수천 수만 세대가 지나서야 원하는 해답을 얻었다고 해도, 그것이 기존 알고리즘으로 해답을 얻는 것보다 효율적이기만 하면 됨
        • 그러나 게임에서는 그것이 불가능
        • 간단히 말하면, 어떤 몬스터의 진화를 뚜렷이 느낄 수 있으려면 게임을 엄청나게 반복해야 하는 문제점이 발생하기 때문
        • 그렇다면 '신의 손'을 개입시키거나 하는등의 진화를 촉진시키는 과정을 적용한다면 가능할까?
        • 이것은 GA의 원래 의도를 지키면서 진화를 촉진시키는 것은 매우 어려운 문제
        • 자칫 GA의 적용 보다는 그냥 시간이 지날 수록 HP나 공격력이 증가하는 것뿐일 수도 있게 되어 버리기 때문
        • 유전자 알고리즘의 원래 의미는 작은 알고리즘 조각(유전자)들이 서로 교배하면서 세대를 거듭하고, 그 과정 동안 효율적인 알고리즘은 살아남고 효율적이지 못한 알고리즘은 대가 끊기고, 그럼으로써 가장 효율적인 알고리즘이 '튀어 나오게' 하는 것일 것
        • 이것을 게임에 적용시킨다면, 예를 들어 유전자는 빌드오더(Build Order : RTS에서의 빌딩 건설 순서로 봐도 무관)를 의미하고, 싸움에 이긴 빌드오더만이 대를 잇게 함으로써 효율적인 빌드오더를 찾는 것이 될 수도 있겠음
        • 그러나 얼마나 반복해야 뚜렷한 진화가 나타나는가 라는 문제를 해결하지 않는 한 게임 플레이에 적용하기란 한계가 있음
        • 그래서 유전자 알고리즘을 게임 플레이에 적용하기보다는 게임 개발 도중 게임의 밸런스를 조정하는데 적용하는 시도 있으나 큰 성과는 없는 것으로 알려지고 있음

  • LOD(Level-Of-Detail)
    • LOD이라는 개념은 그래픽 이외의 분야에서도 많이 쓰이는 최적화 방법
    • LOD는 3D 그래픽의 랜더링 관련 기술로서 현재 대부분의 게임 엔진들이 멀리 떨어져 있는 객체를 빠르게 랜더링하는데 사용되고 있음
    • LOD의 개념은 생각보다 간단하여, 카메라로부터 멀리 떨어져 있는 객체는 다각형 수가 적은 모델을 사용(다각형의 수를 줄이는 등의 과정을 거쳐)하고, 객체가 카메라와 가까울수록 다각형 개수가 많은 모델을 사용한다는 것
    • 이는 게임의 시각적 품질을 유지하면서 랜더링 속도를 개선함으로써 게임 전체의 퍼포먼스를 향상시키는 결과를 얻을 수 있음
    • 최근 들어 이러한 개념을 AI 분야에서도 적용할 수 있다는 사실이 인식되고 있음
    • AI를 위한 LOD 기법의 전략
      • 에이전트와 카메라나 플레이어와의 거리 또는 연관성에 따라 AI의 처리 빈도 변화
      • 연관성에 따라 에이전트 알고리즘의 복잡성의 변경
      • 여러 에이전트들의 개별적 특성이 플레이어에게 미치는 영향에 따른 알고리즘 선택
    • 결과적으로 플레이어의 주목을 끌지 못하는(화면상에 보이지 않거나 전혀 다른 세계에 있는 경우) 부분에 대한 부담을 줄여 작업을 최소화하는 것
신고
Posted by jujubong
프로그래밍2008.04.18 12:01

http://deadwi.jaram.org/wiki/wikka.php?wakka=PathFinding

Path Finding

A* Algorithm

  • BFS 와 비슷하지만 heuristic 가이드를 사용하여 길을 찾는다.
  • In the standard terminology used when talking about A*
    • g(n) : 시작 위치에서 어떤 위치(vertex) n까지 걸리는 비용
    • h(n) : 위치 n 에서 완료 지점(goal)까지 heuristic 추측 비용
    • 위치 n 이 가지는 최하값 f(n) = g(n) + h(n)
    • 즉, f(n) 기준으로 BFS 한다.
  • Heuristics
    • grid maps
      • Manhattan distance
        • h(n) = D * (abs(n.x-goal.x) + abs(n.y-goal.y))
      • Diagonal distance
        • h(n) = D * max(abs(n.x-goal.x), abs(n.y-goal.y))
        • h_diagonal(n) = min(abs(n.x-goal.x), abs(n.y-goal.y))
        • h_straight(n) = (abs(n.x-goal.x) + abs(n.y-goal.y))
        • h(n) = D2 * h_diagonal(n) + D * (h_straight(n) - 2*h_diagonal(n)))
          • 향상
      • Euclidean distance
        • h(n) = D * sqrt((n.x-goal.x)^2 + (n.y-goal.y)^2)
      • Euclidean distance, squared
        • h(n) = D * ((n.x-goal.x)^2 + (n.y-goal.y)^2)
      • 등등
  • Implementation notes
  • Variations of A*
  • Dealing with moving obstacles
  • Space used by precalculated paths

Link


Comment

  • A* Algorithm 은 위 Amit's A* Pages를 정리한 것입니다.
신고
Posted by jujubong
프로그래밍2008.04.16 15:41

// Queue.h /////////////////////////////////////////////////////////////////
#ifndef	_Queue_h_
#define	_Queue_h_

class Queue
{
public:
	//
	// Constructors/Destructor
	//
	Queue();
	~Queue();

	//
	// Queue access
	//
	void push(void *obj);
	void *peek();
	void *pop();
	int Size() {return size;}

	//
	// Queue destruction
	//
	void destroy();

protected:
	//
	// These variables are to keep track of the linked list
	//
	void *head;
	void *tail;

	int size;
};

#endif
 
// Queue.cpp ///////////////////////////////////////////////////////////////
#include "Queue.h"

struct Queuenode
{
	Queuenode	*next;
	void		*obj;
};

//***************************************************************************
// Queue::Queue()
//
Queue::Queue()
{
	head = tail = 0;
	size = 0;
}

//***************************************************************************
// Queue::~Queue()
//
Queue::~Queue()
{
	destroy();
}

//***************************************************************************
// void Queue::destroy()
//
void Queue::destroy()
{
	while (head)
	{
		void	*obj = pop();
		delete obj;
	}
	size = 0;
	head = tail = 0;
}

//***************************************************************************
// void Queue::push(void *obj)
//    Push an object onto the Queue.
//
void Queue::push(void *obj)
{
	Queuenode	*node = new Queuenode;

	node->obj = obj;
	node->next = 0;
	if (tail)
		((Queuenode *) tail)->next = node;
	tail = node;
	if (!head)
		head = tail;
	size++;
}

//***************************************************************************
// void *Queue::pop()
//    Return the object at the head of the Queue and remove it
//
void *Queue::pop()
{
	if (size == 0)
		return 0;

	Queuenode	*node = (Queuenode *) head;
	void		*obj = node->obj;
	head = (void *) node->next;
	delete node;
	size--;

	if (!head)
		tail = 0;
	return obj;
}

//***************************************************************************
// void *Queue::peek()
//    Return the object at the top of the Queue.
//
void *Queue::peek()
{
	if (size == 0)
		return 0;

	return ((Queuenode *)head)->obj;
}
 
신고
Posted by jujubong
프로그래밍2008.04.12 09:46

http://wiki.kldp.org/wiki.php/DocbookSgml/Vim-KLDP?action=edit


생각해보니 나도 vi 써온지 한참되었구나. 95년부터 접하기 시작했으니 14년째인가..

군대에서 절반의 시간을 이녀석과 보낸거 같기도 하다.

직업이 모바일쪽으로 넘어와 버리니, 지금은 1년에 몇번 안 만지는거 같다.

가끔 서버작업할 때 잠깐 사용하는 정도가 전부...  무척 좋아하던 녀석인데..

다시 써볼까 했더니 기억이 가물가물..  다시 공부해보자구. ㅋ

신고
Posted by jujubong

#include "WIPIHeader.h"

MC_GrpContext cxt;

MC_GrpFrameBuffer bpl;

M_Int32 width;
M_Int32 height;

// 응용 프로그램 컨택스트 식별자
MC_UicApplicationContext ac;

// 컴포넌트 식별자 : TEXT CONTROL
MC_UicComponent cText;

// 커서의 위치
M_Int32 idx;

startClet(int argc, char* args[])
{

MC_grpInitContext(&cxt);
bpl = MC_grpGetScreenFrameBuffer(0);
width = MC_GRP_GET_FRAME_BUFFER_WIDTH(bpl); 
height = MC_GRP_GET_FRAME_BUFFER_HEIGHT(bpl);
// 전경(for-ground)의 색을 RGB 0x777777값으로 변경한다.
// 수정되었음.....
MC_grpSetContext(&cxt, MC_GRP_CONTEXT_FG_PIXEL_IDX, (void *)MC_grpGetPixelFromRGB(0x77, 0x77, 0x77));
// 지정된 프레임 버퍼 bpl에 cxt가 지정하는 색상과 투명정도/그리고 모드로 사각형을 칠한다 
MC_grpFillRect(bpl, 0, 0, width, height, &cxt); 
// 프레임 버프 bpl을 LCD화면에 출력한다.
MC_grpFlushLcd(0, bpl, 0, 0, width, height);

// 응용프로그램 컨텍스트를 생성한다.
ac = MC_uicCreateApplicationContext();

// MC_UIC_LABEL_COMPONENT에 해당하는 콤포넌트 구조체를 가져와서 콤포넌트를 생성한다.
// 수정되었음.
cText = MC_uicCreate(&ac, MC_uicGetClass(MC_UIC_TEXT_COMPONENT));

// 커서의 위치를 초기화
idx = 0;
// 컴포넌트의 크기와 위치를 지정한다.
MC_uicConfigure(cText, 10, 5, 100, 30, MC_UIC_POS_MASK|MC_UIC_SIZE_MASK);

// 라벨콤포넌트의 문자열 정렬방식을 설정합니다.
MC_uicSetLabelAlignment(cText, MC_ALIGN_CENTER);

MC_uicSetEnable(cText, TRUE);

}

void pauseClet()
{ }

void destroyClet()
{ }

void resumeClet()
{ }

void paintClet()
{
// 텍스트 컴포넌트를 그린다. 
MC_uicPaint(cText, &cxt); 
MC_grpFlushLcd(0, bpl, 0, 0, width, height);
}

void handleCletEvent(int type, int param1, int param2)

char strText[256];

MC_uicHandleEvent(cText, type, param1, param2);

if(type == MV_KEY_RELEASE_EVENT)
{
  switch(param1)
  {
  case -5: // OK 버튼
   MC_uicGetText(cText, 0, strText, MC_uicGetTextSize(cText));
   MC_grpDrawString(bpl, 0, height / 2, strText, MC_uicGetTextSize(cText), &cxt);
   MC_grpFlushLcd(0, bpl, 0, 0, width, height);
   break;
  }
}
}

신고
Posted by jujubong

http://ko.wikipedia.org/wiki/%ED%95%9C%EA%B8%80_%EC%83%81%EC%9A%A9_%EC%A1%B0%ED%95%A9%ED%98%95_%EC%9D%B8%EC%BD%94%EB%94%A9


상용 조합형에서는 한글을 2바이트 코드로 표현하며, 최상위 비트는 1로 설정하고 초성, 중성, 종성에 각각 5비트씩 할당하여 차례로 조합한다.


코드 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
초성 - 채움 - - - - - - - - - - -
중성 - - 채움 - - - - - -
종성 - 채움 -

KSSM 조합형에는 표준 KS 조합형과 달리 , , , 와 같은 한글 고어도 포함되어 있으며, 특수 문자의 배열은 다르다.

특수문자와 한자는 위와 같이 조합되는 한글을 피하기 위하여 별도의 계산 과정을 거친다. 이는 Shift_JIS와 그 방법이 비슷하다.

  1. 행 번호에 0x191(특수문자의 경우, 0x30행 미만) 또는 0x176(한자의 경우, 0x4A행 이상)을 더한다. 이 값을 2로 나눈 몫을 첫번째 바이트로 한다.
  2. 1에서 나온 값이 짝수인가 홀수인가에 따라, 열 번호에 0x3D를 더하거나(홀수) 0x21을 뺀다(짝수).
  3. 2에서 나온 값이 0x4E보다 작으면 0x31을 더하고, 아니면 0x43을 더해서 두번째 바이트로 한다.

예를 들어 "위"는 초성·중성·종성 코드가 13, 23, 1이 되고, 2진법으로는 1 01101 10111 00001이 되므로 B6 E1이 라는 두 바이트로 표현된다. 그리고 "∞"는 KS X 1001에서 0x21행 0x44열에 있는 특수문자이므로, 첫째 단계에서 0x21 + 0x191 = 0x1B2, 둘째 단계에서 0x44 - 0x21 = 0x23, 셋째 단계에서 0x23 + 0x31 = 0x54가 되어 최종적으로 D9 54라는 두 바이트로 표현된다.

신고
Posted by jujubong

코드:

┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A1A0│       、 。 · ‥ … ¨ ­­­­­­­­­〃 ­­­­­­­­­­-  ― ∥ \ ∼ ‘ ’│
│A1B0│ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】 ± ×│
│A1C0│ ÷ ≠ ≤ ≥ ∞ ∴ ° ′ ″ ℃ Å ¢ £ ¥ ♂ ♀│
│A1D0│ ∠ ⊥ ⌒ ∂ ∇ ≡ ≒ § ※ ☆ ★ ○ ● ◎ ◇ ◆│
│A1E0│ □ ■ △ ▲ ▽ ▼ → ← ↑ ↓ ↔ 〓 ≪ ≫ √ ∽│
│A1F0│ ∝ ∵ ∫ ∬ ∈ ∋ ⊆ ⊇ ⊂ ⊃ ∪ ∩ ∧ ∨ ¬   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A2A0│    ⇒ ⇔ ∀ ∃ ´ ~ ˇ ˘ ˝ ˚ ˙ ¸ ˛ ¡ ¿│
│A2B0│ ː ∮ ∑ ∏ ¤ ℉ ‰ ◁ ◀ ▷ ▶ ♤ ♠ ♡ ♥ ♧│
│A2C0│ ♣ ⊙ ◈ ▣ ◐ ◑ ▒ ▤ ▥ ▨ ▧ ▦ ▩ ♨ ☏ ☎│
│A2D0│ ☜ ☞ ¶ † ‡ ↕ ↗ ↙ ↖ ↘ ♭ ♩ ♪ ♬ ㉿ ㈜│
│A2E0│ № ㏇ ™ ㏂ ㏘ ℡  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│A2F0│  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A3A0│    ! " # $ % & ' ( ) * + , - . /│
│A3B0│ 0 1 2 3 4 5 6 7 8 9 : ; < = > ?│
│A3C0│ @ A B C D E F G H I J K L M N O│
│A3D0│ P Q R S T U V W X Y Z [ ₩ ] ^ _│
│A3E0│ ` a b c d e f g h i j k l m n o│
│A3F0│ p q r s t u v w x y z { | }  ̄   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A4A0│     ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│A4B0│  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│A4C0│  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│A4D0│  ?  ?  ?  ? ㅤ ㅥ ㅦ ㅧ ㅨ ㅩ ㅪ ㅫ ㅬ ㅭ ㅮ ㅯ│
│A4E0│ ㅰ ㅱ ㅲ ㅳ ㅴ ㅵ ㅶ  ? ㅸ ㅹ ㅺ ㅻ ㅼ ㅽ ㅾ ㅿ│
│A4F0│ ㆀ ㅇ ㆂ ㆃ ㆄ ㆅ ㆆ ㆇ ㆈ ㆉ ㆊ ㆋ ㆌ ㆍ ㆎ   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A5A0│    ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ  ?  ?  ?  ?  ?│
│A5B0│ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ  ?  ?  ?  ?  ?  ?│
│A5C0│  ? Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο│
│A5D0│ Π Ρ Σ Τ Υ Φ Χ Ψ Ω  ?  ?  ?  ?  ?  ?  ?│
│A5E0│  ? α β γ δ ε ζ η θ ι κ λ μ ν ξ ο│
│A5F0│ π ρ σ τ υ φ χ ψ ω  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A6A0│    ─ │ ┌ ┐ ┘ └ ├ ┬ ┤ ┴ ┼ ━ ┃ ┏ ┓│
│A6B0│ ┛ ┗ ┣ ┳ ┫ ┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝ ┰ ┥ ┸│
│A6C0│ ╂ ┒ ┑ ┚ ┙ ┖ ┕ ┎ ┍ ┞ ┟ ┡ ┢ ┦ ┧ ┩│
│A6D0│ ┪ ┭ ┮ ┱ ┲ ┵ ┶ ┹ ┺ ┽ ┾ ╀ ╁ ╃ ╄ ╅│
│A6E0│ ╆ ╇ ╈ ╉ ╊  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│A6F0│  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A7A0│    ㎕ ㎖ ㎗ ℓ ㎘ ㏄ ㎣ ㎤ ㎥ ㎦ ㎙ ㎚ ㎛ ㎜ ㎝│
│A7B0│ ㎞ ㎟ ㎠ ㎡ ㎢ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰│
│A7C0│ ㎱ ㎲ ㎳ ㎴ ㎵ ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎄ ㎺ ㎻│
│A7D0│ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔ Ω ㏀ ㏁ ㎊ ㎋ ㎌ ㏖│
│A7E0│ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏓ ㏃ ㏉ ㏜ ㏆│
│A7F0│  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A8A0│    Æ Ð ª Ħ  ? IJ  ? Ŀ Ł Ø Œ º Þ Ŧ Ŋ│
│A8B0│  ? ㉠ ㉡ ㉢ ㉣ ㉤ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭ ㉮│
│A8C0│ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉵ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻ ⓐ ⓑ ⓒ│
│A8D0│ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ│
│A8E0│ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨│
│A8F0│ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│A9A0│    æ đ ð ħ ı ij ĸ ŀ ł ø œ ß þ ŧ ŋ│
│A9B0│ ʼn ㈀ ㈁ ㈂ ㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎│
│A9C0│ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ⒜ ⒝ ⒞│
│A9D0│ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮│
│A9E0│ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼│
│A9F0│ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ¹ ² ³ ⁴ ⁿ ₁ ₂ ₃ ₄   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│AAA0│    ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く│
│AAB0│ ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た│
│AAC0│ だ ち ぢ っ つ づ て で と ど な に ぬ ね の は│
│AAD0│ ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み│
│AAE0│ む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ│
│AAF0│ ゐ ゑ を ん  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│ABA0│    ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク│
│ABB0│ グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ│
│ABC0│ ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ│
│ABD0│ バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ│
│ABE0│ ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ│
│ABF0│ ヰ ヱ ヲ ン ヴ ヵ ヶ  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│ACA0│    А Б В Г Д Е Ё Ж З И Й К Л М Н│
│ACB0│ О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э│
│ACC0│ Ю Я  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?│
│ACD0│  ? а б в г д е ё ж з и й к л м н│
│ACE0│ о п р с т у ф х ц ч ш щ ъ ы ь э│
│ACF0│ ю я  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?  ?   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B0A0│    가 각 간 갇 갈 갉 갊 감 갑 값 갓 갔 강 갖 갗│
│B0B0│ 같 갚 갛 개 객 갠 갤 갬 갭 갯 갰 갱 갸 갹 갼 걀│
│B0C0│ 걋 걍 걔 걘 걜 거 걱 건 걷 걸 걺 검 겁 것 겄 겅│
│B0D0│ 겆 겉 겊 겋 게 겐 겔 겜 겝 겟 겠 겡 겨 격 겪 견│
│B0E0│ 겯 결 겸 겹 겻 겼 경 곁 계 곈 곌 곕 곗 고 곡 곤│
│B0F0│ 곧 골 곪 곬 곯 곰 곱 곳 공 곶 과 곽 관 괄 괆   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B1A0│    괌 괍 괏 광 괘 괜 괠 괨 괬 괭 괴 괵 괸 괼 굄│
│B1B0│ 굅 굇 굉 교 굔 굘 굡 굣 구 국 군 굳 굴 굵 굶 굻│
│B1C0│ 굼 굽 굿 궁 궂 궈 궉 권 궐 궜 궝 궤 궷 귀 귁 귄│
│B1D0│ 귈 귐 귑 귓 규 균 귤 그 극 근 귿 글 긁 금 급 긋│
│B1E0│ 긍 긔 기 긱 긴 긷 길 긺 김 깁 깃 깅 깆 깊 까 깍│
│B1F0│ 깎 깐 깔 깖 깜 깝 깟 깠 깡 깥 깨 깩 깬 깰 깸   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B2A0│    깹 깻 깼 깽 꺄 꺅 꺌 꺼 꺽 꺾 껀 껄 껌 껍 껏│
│B2B0│ 껐 껑 께 껙 껜 껨 껫 껭 껴 껸 껼 꼇 꼈 꼍 꼐 꼬│
│B2C0│ 꼭 꼰 꼲 꼴 꼼 꼽 꼿 꽁 꽂 꽃 꽈 꽉 꽐 꽜 꽝 꽤│
│B2D0│ 꽥 꽹 꾀 꾄 꾈 꾐 꾑 꾕 꾜 꾸 꾹 꾼 꿀 꿇 꿈 꿉│
│B2E0│ 꿋 꿍 꿎 꿔 꿜 꿨 꿩 꿰 꿱 꿴 꿸 뀀 뀁 뀄 뀌 뀐│
│B2F0│ 뀔 뀜 뀝 뀨 끄 끅 끈 끊 끌 끎 끓 끔 끕 끗 끙   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B3A0│    끝 끼 끽 낀 낄 낌 낍 낏 낑 나 낙 낚 난 낟 날│
│B3B0│ 낡 낢 남 납 낫 났 낭 낮 낯 낱 낳 내 낵 낸 낼 냄│
│B3C0│ 냅 냇 냈 냉 냐 냑 냔 냘 냠 냥 너 넉 넋 넌 널 넒│
│B3D0│ 넓 넘 넙 넛 넜 넝 넣 네 넥 넨 넬 넴 넵 넷 넸 넹│
│B3E0│ 녀 녁 년 녈 념 녑 녔 녕 녘 녜 녠 노 녹 논 놀 놂│
│B3F0│ 놈 놉 놋 농 높 놓 놔 놘 놜 놨 뇌 뇐 뇔 뇜 뇝   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B4A0│    뇟 뇨 뇩 뇬 뇰 뇹 뇻 뇽 누 눅 눈 눋 눌 눔 눕│
│B4B0│ 눗 눙 눠 눴 눼 뉘 뉜 뉠 뉨 뉩 뉴 뉵 뉼 늄 늅 늉│
│B4C0│ 느 늑 는 늘 늙 늚 늠 늡 늣 능 늦 늪 늬 늰 늴 니│
│B4D0│ 닉 닌 닐 닖 님 닙 닛 닝 닢 다 닥 닦 단 닫 달 닭│
│B4E0│ 닮 닯 닳 담 답 닷 닸 당 닺 닻 닿 대 댁 댄 댈 댐│
│B4F0│ 댑 댓 댔 댕 댜 더 덕 덖 던 덛 덜 덞 덟 덤 덥   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B5A0│    덧 덩 덫 덮 데 덱 덴 델 뎀 뎁 뎃 뎄 뎅 뎌 뎐│
│B5B0│ 뎔 뎠 뎡 뎨 뎬 도 독 돈 돋 돌 돎 돐 돔 돕 돗 동│
│B5C0│ 돛 돝 돠 돤 돨 돼 됐 되 된 될 됨 됩 됫 됴 두 둑│
│B5D0│ 둔 둘 둠 둡 둣 둥 둬 뒀 뒈 뒝 뒤 뒨 뒬 뒵 뒷 뒹│
│B5E0│ 듀 듄 듈 듐 듕 드 득 든 듣 들 듦 듬 듭 듯 등 듸│
│B5F0│ 디 딕 딘 딛 딜 딤 딥 딧 딨 딩 딪 따 딱 딴 딸   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B6A0│    땀 땁 땃 땄 땅 땋 때 땍 땐 땔 땜 땝 땟 땠 땡│
│B6B0│ 떠 떡 떤 떨 떪 떫 떰 떱 떳 떴 떵 떻 떼 떽 뗀 뗄│
│B6C0│ 뗌 뗍 뗏 뗐 뗑 뗘 뗬 또 똑 똔 똘 똥 똬 똴 뙈 뙤│
│B6D0│ 뙨 뚜 뚝 뚠 뚤 뚫 뚬 뚱 뛔 뛰 뛴 뛸 뜀 뜁 뜅 뜨│
│B6E0│ 뜩 뜬 뜯 뜰 뜸 뜹 뜻 띄 띈 띌 띔 띕 띠 띤 띨 띰│
│B6F0│ 띱 띳 띵 라 락 란 랄 람 랍 랏 랐 랑 랒 랖 랗   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B7A0│    래 랙 랜 랠 램 랩 랫 랬 랭 랴 략 랸 럇 량 러│
│B7B0│ 럭 런 럴 럼 럽 럿 렀 렁 렇 레 렉 렌 렐 렘 렙 렛│
│B7C0│ 렝 려 력 련 렬 렴 렵 렷 렸 령 례 롄 롑 롓 로 록│
│B7D0│ 론 롤 롬 롭 롯 롱 롸 롼 뢍 뢨 뢰 뢴 뢸 룀 룁 룃│
│B7E0│ 룅 료 룐 룔 룝 룟 룡 루 룩 룬 룰 룸 룹 룻 룽 뤄│
│B7F0│ 뤘 뤠 뤼 뤽 륀 륄 륌 륏 륑 류 륙 륜 률 륨 륩   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B8A0│    륫 륭 르 륵 른 를 름 릅 릇 릉 릊 릍 릎 리 릭│
│B8B0│ 린 릴 림 립 릿 링 마 막 만 많 맏 말 맑 맒 맘 맙│
│B8C0│ 맛 망 맞 맡 맣 매 맥 맨 맬 맴 맵 맷 맸 맹 맺 먀│
│B8D0│ 먁 먈 먕 머 먹 먼 멀 멂 멈 멉 멋 멍 멎 멓 메 멕│
│B8E0│ 멘 멜 멤 멥 멧 멨 멩 며 멱 면 멸 몃 몄 명 몇 몌│
│B8F0│ 모 목 몫 몬 몰 몲 몸 몹 못 몽 뫄 뫈 뫘 뫙 뫼   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│B9A0│    묀 묄 묍 묏 묑 묘 묜 묠 묩 묫 무 묵 묶 문 묻│
│B9B0│ 물 묽 묾 뭄 뭅 뭇 뭉 뭍 뭏 뭐 뭔 뭘 뭡 뭣 뭬 뮈│
│B9C0│ 뮌 뮐 뮤 뮨 뮬 뮴 뮷 므 믄 믈 믐 믓 미 믹 민 믿│
│B9D0│ 밀 밂 밈 밉 밋 밌 밍 및 밑 바 박 밖 밗 반 받 발│
│B9E0│ 밝 밞 밟 밤 밥 밧 방 밭 배 백 밴 밸 뱀 뱁 뱃 뱄│
│B9F0│ 뱅 뱉 뱌 뱍 뱐 뱝 버 벅 번 벋 벌 벎 범 법 벗   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BAA0│    벙 벚 베 벡 벤 벧 벨 벰 벱 벳 벴 벵 벼 벽 변│
│BAB0│ 별 볍 볏 볐 병 볕 볘 볜 보 복 볶 본 볼 봄 봅 봇│
│BAC0│ 봉 봐 봔 봤 봬 뵀 뵈 뵉 뵌 뵐 뵘 뵙 뵤 뵨 부 북│
│BAD0│ 분 붇 불 붉 붊 붐 붑 붓 붕 붙 붚 붜 붤 붰 붸 뷔│
│BAE0│ 뷕 뷘 뷜 뷩 뷰 뷴 뷸 븀 븃 븅 브 븍 븐 블 븜 븝│
│BAF0│ 븟 비 빅 빈 빌 빎 빔 빕 빗 빙 빚 빛 빠 빡 빤   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BBA0│    빨 빪 빰 빱 빳 빴 빵 빻 빼 빽 뺀 뺄 뺌 뺍 뺏│
│BBB0│ 뺐 뺑 뺘 뺙 뺨 뻐 뻑 뻔 뻗 뻘 뻠 뻣 뻤 뻥 뻬 뼁│
│BBC0│ 뼈 뼉 뼘 뼙 뼛 뼜 뼝 뽀 뽁 뽄 뽈 뽐 뽑 뽕 뾔 뾰│
│BBD0│ 뿅 뿌 뿍 뿐 뿔 뿜 뿟 뿡 쀼 쁑 쁘 쁜 쁠 쁨 쁩 삐│
│BBE0│ 삑 삔 삘 삠 삡 삣 삥 사 삭 삯 산 삳 살 삵 삶 삼│
│BBF0│ 삽 삿 샀 상 샅 새 색 샌 샐 샘 샙 샛 샜 생 샤   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BCA0│    샥 샨 샬 샴 샵 샷 샹 섀 섄 섈 섐 섕 서 석 섞│
│BCB0│ 섟 선 섣 설 섦 섧 섬 섭 섯 섰 성 섶 세 섹 센 셀│
│BCC0│ 셈 셉 셋 셌 셍 셔 셕 션 셜 셤 셥 셧 셨 셩 셰 셴│
│BCD0│ 셸 솅 소 속 솎 손 솔 솖 솜 솝 솟 송 솥 솨 솩 솬│
│BCE0│ 솰 솽 쇄 쇈 쇌 쇔 쇗 쇘 쇠 쇤 쇨 쇰 쇱 쇳 쇼 쇽│
│BCF0│ 숀 숄 숌 숍 숏 숑 수 숙 순 숟 술 숨 숩 숫 숭   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BDA0│    숯 숱 숲 숴 쉈 쉐 쉑 쉔 쉘 쉠 쉥 쉬 쉭 쉰 쉴│
│BDB0│ 쉼 쉽 쉿 슁 슈 슉 슐 슘 슛 슝 스 슥 슨 슬 슭 슴│
│BDC0│ 습 슷 승 시 식 신 싣 실 싫 심 십 싯 싱 싶 싸 싹│
│BDD0│ 싻 싼 쌀 쌈 쌉 쌌 쌍 쌓 쌔 쌕 쌘 쌜 쌤 쌥 쌨 쌩│
│BDE0│ 썅 써 썩 썬 썰 썲 썸 썹 썼 썽 쎄 쎈 쎌 쎙 쏘 쏙│
│BDF0│ 쏜 쏟 쏠 쏢 쏨 쏩 쏭 쏴 쏵 쏸 쐈 쐐 쐤 쐬 쐰   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BEA0│    쐴 쐼 쐽 쑈 쑤 쑥 쑨 쑬 쑴 쑵 쑹 쒀 쒔 쒜 쒸│
│BEB0│ 쒼 쓩 쓰 쓱 쓴 쓸 쓺 쓿 씀 씁 씌 씐 씔 씜 씨 씩│
│BEC0│ 씬 씰 씸 씹 씻 씽 아 악 안 앉 않 알 앍 앎 앓 암│
│BED0│ 압 앗 았 앙 앝 앞 애 액 앤 앨 앰 앱 앳 앴 앵 야│
│BEE0│ 약 얀 얄 얇 얌 얍 얏 양 얕 얗 얘 얜 얠 얩 어 억│
│BEF0│ 언 얹 얻 얼 얽 얾 엄 업 없 엇 었 엉 엊 엌 엎   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│BFA0│    에 엑 엔 엘 엠 엡 엣 엥 여 역 엮 연 열 엶 엷│
│BFB0│ 염 엽 엾 엿 였 영 옅 옆 옇 예 옌 옐 옘 옙 옛 옜│
│BFC0│ 오 옥 온 올 옭 옮 옰 옳 옴 옵 옷 옹 옻 와 왁 완│
│BFD0│ 왈 왐 왑 왓 왔 왕 왜 왝 왠 왬 왯 왱 외 왹 왼 욀│
│BFE0│ 욈 욉 욋 욍 요 욕 욘 욜 욤 욥 욧 용 우 욱 운 울│
│BFF0│ 욹 욺 움 웁 웃 웅 워 웍 원 월 웜 웝 웠 웡 웨   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C0A0│    웩 웬 웰 웸 웹 웽 위 윅 윈 윌 윔 윕 윗 윙 유│
│C0B0│ 육 윤 율 윰 윱 윳 융 윷 으 윽 은 을 읊 음 읍 읏│
│C0C0│ 응 읒 읓 읔 읕 읖 읗 의 읜 읠 읨 읫 이 익 인 일│
│C0D0│ 읽 읾 잃 임 입 잇 있 잉 잊 잎 자 작 잔 잖 잗 잘│
│C0E0│ 잚 잠 잡 잣 잤 장 잦 재 잭 잰 잴 잼 잽 잿 쟀 쟁│
│C0F0│ 쟈 쟉 쟌 쟎 쟐 쟘 쟝 쟤 쟨 쟬 저 적 전 절 젊   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C1A0│    점 접 젓 정 젖 제 젝 젠 젤 젬 젭 젯 젱 져 젼│
│C1B0│ 졀 졈 졉 졌 졍 졔 조 족 존 졸 졺 좀 좁 좃 종 좆│
│C1C0│ 좇 좋 좌 좍 좔 좝 좟 좡 좨 좼 좽 죄 죈 죌 죔 죕│
│C1D0│ 죗 죙 죠 죡 죤 죵 주 죽 준 줄 줅 줆 줌 줍 줏 중│
│C1E0│ 줘 줬 줴 쥐 쥑 쥔 쥘 쥠 쥡 쥣 쥬 쥰 쥴 쥼 즈 즉│
│C1F0│ 즌 즐 즘 즙 즛 증 지 직 진 짇 질 짊 짐 집 짓   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C2A0│    징 짖 짙 짚 짜 짝 짠 짢 짤 짧 짬 짭 짯 짰 짱│
│C2B0│ 째 짹 짼 쨀 쨈 쨉 쨋 쨌 쨍 쨔 쨘 쨩 쩌 쩍 쩐 쩔│
│C2C0│ 쩜 쩝 쩟 쩠 쩡 쩨 쩽 쪄 쪘 쪼 쪽 쫀 쫄 쫌 쫍 쫏│
│C2D0│ 쫑 쫓 쫘 쫙 쫠 쫬 쫴 쬈 쬐 쬔 쬘 쬠 쬡 쭁 쭈 쭉│
│C2E0│ 쭌 쭐 쭘 쭙 쭝 쭤 쭸 쭹 쮜 쮸 쯔 쯤 쯧 쯩 찌 찍│
│C2F0│ 찐 찔 찜 찝 찡 찢 찧 차 착 찬 찮 찰 참 찹 찻   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C3A0│    찼 창 찾 채 책 챈 챌 챔 챕 챗 챘 챙 챠 챤 챦│
│C3B0│ 챨 챰 챵 처 척 천 철 첨 첩 첫 첬 청 체 첵 첸 첼│
│C3C0│ 쳄 쳅 쳇 쳉 쳐 쳔 쳤 쳬 쳰 촁 초 촉 촌 촐 촘 촙│
│C3D0│ 촛 총 촤 촨 촬 촹 최 쵠 쵤 쵬 쵭 쵯 쵱 쵸 춈 추│
│C3E0│ 축 춘 출 춤 춥 춧 충 춰 췄 췌 췐 취 췬 췰 췸 췹│
│C3F0│ 췻 췽 츄 츈 츌 츔 츙 츠 측 츤 츨 츰 츱 츳 층   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C4A0│    치 칙 친 칟 칠 칡 침 칩 칫 칭 카 칵 칸 칼 캄│
│C4B0│ 캅 캇 캉 캐 캑 캔 캘 캠 캡 캣 캤 캥 캬 캭 컁 커│
│C4C0│ 컥 컨 컫 컬 컴 컵 컷 컸 컹 케 켁 켄 켈 켐 켑 켓│
│C4D0│ 켕 켜 켠 켤 켬 켭 켯 켰 켱 켸 코 콕 콘 콜 콤 콥│
│C4E0│ 콧 콩 콰 콱 콴 콸 쾀 쾅 쾌 쾡 쾨 쾰 쿄 쿠 쿡 쿤│
│C4F0│ 쿨 쿰 쿱 쿳 쿵 쿼 퀀 퀄 퀑 퀘 퀭 퀴 퀵 퀸 퀼   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C5A0│    큄 큅 큇 큉 큐 큔 큘 큠 크 큭 큰 클 큼 큽 킁│
│C5B0│ 키 킥 킨 킬 킴 킵 킷 킹 타 탁 탄 탈 탉 탐 탑 탓│
│C5C0│ 탔 탕 태 택 탠 탤 탬 탭 탯 탰 탱 탸 턍 터 턱 턴│
│C5D0│ 털 턺 텀 텁 텃 텄 텅 테 텍 텐 텔 템 텝 텟 텡 텨│
│C5E0│ 텬 텼 톄 톈 토 톡 톤 톨 톰 톱 톳 통 톺 톼 퇀 퇘│
│C5F0│ 퇴 퇸 툇 툉 툐 투 툭 툰 툴 툼 툽 툿 퉁 퉈 퉜   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C6A0│    퉤 튀 튁 튄 튈 튐 튑 튕 튜 튠 튤 튬 튱 트 특│
│C6B0│ 튼 튿 틀 틂 틈 틉 틋 틔 틘 틜 틤 틥 티 틱 틴 틸│
│C6C0│ 팀 팁 팃 팅 파 팍 팎 판 팔 팖 팜 팝 팟 팠 팡 팥│
│C6D0│ 패 팩 팬 팰 팸 팹 팻 팼 팽 퍄 퍅 퍼 퍽 펀 펄 펌│
│C6E0│ 펍 펏 펐 펑 페 펙 펜 펠 펨 펩 펫 펭 펴 편 펼 폄│
│C6F0│ 폅 폈 평 폐 폘 폡 폣 포 폭 폰 폴 폼 폽 폿 퐁   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C7A0│    퐈 퐝 푀 푄 표 푠 푤 푭 푯 푸 푹 푼 푿 풀 풂│
│C7B0│ 품 풉 풋 풍 풔 풩 퓌 퓐 퓔 퓜 퓟 퓨 퓬 퓰 퓸 퓻│
│C7C0│ 퓽 프 픈 플 픔 픕 픗 피 픽 핀 필 핌 핍 핏 핑 하│
│C7D0│ 학 한 할 핥 함 합 핫 항 해 핵 핸 핼 햄 햅 햇 했│
│C7E0│ 행 햐 향 허 헉 헌 헐 헒 험 헙 헛 헝 헤 헥 헨 헬│
│C7F0│ 헴 헵 헷 헹 혀 혁 현 혈 혐 협 혓 혔 형 혜 혠   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│C8A0│    혤 혭 호 혹 혼 홀 홅 홈 홉 홋 홍 홑 화 확 환│
│C8B0│ 활 홧 황 홰 홱 홴 횃 횅 회 획 횐 횔 횝 횟 횡 효│
│C8C0│ 횬 횰 횹 횻 후 훅 훈 훌 훑 훔 훗 훙 훠 훤 훨 훰│
│C8D0│ 훵 훼 훽 휀 휄 휑 휘 휙 휜 휠 휨 휩 휫 휭 휴 휵│
│C8E0│ 휸 휼 흄 흇 흉 흐 흑 흔 흖 흗 흘 흙 흠 흡 흣 흥│
│C8F0│ 흩 희 흰 흴 흼 흽 힁 히 힉 힌 힐 힘 힙 힛 힝   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CAA0│    伽 佳 假 價 加 可 呵 哥 嘉 嫁 家 暇 架 枷 柯│
│CAB0│ 歌 珂 痂 稼 苛 茄 街 袈 訶 賈 跏 軻 迦 駕 刻 却│
│CAC0│ 各 恪 慤 殼 珏 脚 覺 角 閣 侃 刊 墾 奸 姦 干 幹│
│CAD0│ 懇 揀 杆 柬 桿 澗 癎 看 磵 稈 竿 簡 肝 艮 艱 諫│
│CAE0│ 間 乫 喝 曷 渴 碣 竭 葛 褐 蝎 鞨 勘 坎 堪 嵌 感│
│CAF0│ 憾 戡 敢 柑 橄 減 甘 疳 監 瞰 紺 邯 鑑 鑒 龕   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CBA0│    匣 岬 甲 胛 鉀 閘 剛 堈 姜 岡 崗 康 强 彊 慷│
│CBB0│ 江 畺 疆 糠 絳 綱 羌 腔 舡 薑 襁 講 鋼 降 鱇 介│
│CBC0│ 价 個 凱 塏 愷 愾 慨 改 槪 漑 疥 皆 盖 箇 芥 蓋│
│CBD0│ 豈 鎧 開 喀 客 坑 更 粳 羹 醵 倨 去 居 巨 拒 据│
│CBE0│ 據 擧 渠 炬 祛 距 踞 車 遽 鉅 鋸 乾 件 健 巾 建│
│CBF0│ 愆 楗 腱 虔 蹇 鍵 騫 乞 傑 杰 桀 儉 劍 劒 檢   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CCA0│    瞼 鈐 黔 劫 怯 迲 偈 憩 揭 擊 格 檄 激 膈 覡│
│CCB0│ 隔 堅 牽 犬 甄 絹 繭 肩 見 譴 遣 鵑 抉 決 潔 結│
│CCC0│ 缺 訣 兼 慊 箝 謙 鉗 鎌 京 俓 倞 傾 儆 勁 勍 卿│
│CCD0│ 坰 境 庚 徑 慶 憬 擎 敬 景 暻 更 梗 涇 炅 烱 璟│
│CCE0│ 璥 瓊 痙 硬 磬 竟 競 絅 經 耕 耿 脛 莖 警 輕 逕│
│CCF0│ 鏡 頃 頸 驚 鯨 係 啓 堺 契 季 屆 悸 戒 桂 械   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CDA0│    棨 溪 界 癸 磎 稽 系 繫 繼 計 誡 谿 階 鷄 古│
│CDB0│ 叩 告 呱 固 姑 孤 尻 庫 拷 攷 故 敲 暠 枯 槁 沽│
│CDC0│ 痼 皐 睾 稿 羔 考 股 膏 苦 苽 菰 藁 蠱 袴 誥 賈│
│CDD0│ 辜 錮 雇 顧 高 鼓 哭 斛 曲 梏 穀 谷 鵠 困 坤 崑│
│CDE0│ 昆 梱 棍 滾 琨 袞 鯤 汨 滑 骨 供 公 共 功 孔 工│
│CDF0│ 恐 恭 拱 控 攻 珙 空 蚣 貢 鞏 串 寡 戈 果 瓜   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CEA0│    科 菓 誇 課 跨 過 鍋 顆 廓 槨 藿 郭 串 冠 官│
│CEB0│ 寬 慣 棺 款 灌 琯 瓘 管 罐 菅 觀 貫 關 館 刮 恝│
│CEC0│ 括 适 侊 光 匡 壙 廣 曠 洸 炚 狂 珖 筐 胱 鑛 卦│
│CED0│ 掛 罫 乖 傀 塊 壞 怪 愧 拐 槐 魁 宏 紘 肱 轟 交│
│CEE0│ 僑 咬 喬 嬌 嶠 巧 攪 敎 校 橋 狡 皎 矯 絞 翹 膠│
│CEF0│ 蕎 蛟 較 轎 郊 餃 驕 鮫 丘 久 九 仇 俱 具 勾   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│CFA0│    區 口 句 咎 嘔 坵 垢 寇 嶇 廐 懼 拘 救 枸 柩│
│CFB0│ 構 歐 毆 毬 求 溝 灸 狗 玖 球 瞿 矩 究 絿 耉 臼│
│CFC0│ 舅 舊 苟 衢 謳 購 軀 逑 邱 鉤 銶 駒 驅 鳩 鷗 龜│
│CFD0│ 國 局 菊 鞠 鞫 麴 君 窘 群 裙 軍 郡 堀 屈 掘 窟│
│CFE0│ 宮 弓 穹 窮 芎 躬 倦 券 勸 卷 圈 拳 捲 權 淃 眷│
│CFF0│ 厥 獗 蕨 蹶 闕 机 櫃 潰 詭 軌 饋 句 晷 歸 貴   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D0A0│    鬼 龜 叫 圭 奎 揆 槻 珪 硅 窺 竅 糾 葵 規 赳│
│D0B0│ 逵 閨 勻 均 畇 筠 菌 鈞 龜 橘 克 剋 劇 戟 棘 極│
│D0C0│ 隙 僅 劤 勤 懃 斤 根 槿 瑾 筋 芹 菫 覲 謹 近 饉│
│D0D0│ 契 今 妗 擒 昑 檎 琴 禁 禽 芩 衾 衿 襟 金 錦 伋│
│D0E0│ 及 急 扱 汲 級 給 亘 兢 矜 肯 企 伎 其 冀 嗜 器│
│D0F0│ 圻 基 埼 夔 奇 妓 寄 岐 崎 己 幾 忌 技 旗 旣   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D1A0│    朞 期 杞 棋 棄 機 欺 氣 汽 沂 淇 玘 琦 琪 璂│
│D1B0│ 璣 畸 畿 碁 磯 祁 祇 祈 祺 箕 紀 綺 羈 耆 耭 肌│
│D1C0│ 記 譏 豈 起 錡 錤 飢 饑 騎 騏 驥 麒 緊 佶 吉 拮│
│D1D0│ 桔 金 喫 儺 喇 奈 娜 懦 懶 拏 拿 癩 羅 蘿 螺 裸│
│D1E0│ 邏 那 樂 洛 烙 珞 落 諾 酪 駱 亂 卵 暖 欄 煖 爛│
│D1F0│ 蘭 難 鸞 捏 捺 南 嵐 枏 楠 湳 濫 男 藍 襤 拉   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D2A0│    納 臘 蠟 衲 囊 娘 廊 朗 浪 狼 郎 乃 來 內 奈│
│D2B0│ 柰 耐 冷 女 年 撚 秊 念 恬 拈 捻 寧 寗 努 勞 奴│
│D2C0│ 弩 怒 擄 櫓 爐 瑙 盧 老 蘆 虜 路 露 駑 魯 鷺 碌│
│D2D0│ 祿 綠 菉 錄 鹿 論 壟 弄 濃 籠 聾 膿 農 惱 牢 磊│
│D2E0│ 腦 賂 雷 尿 壘 屢 樓 淚 漏 累 縷 陋 嫩 訥 杻 紐│
│D2F0│ 勒 肋 凜 凌 稜 綾 能 菱 陵 尼 泥 匿 溺 多 茶   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D3A0│    丹 亶 但 單 團 壇 彖 斷 旦 檀 段 湍 短 端 簞│
│D3B0│ 緞 蛋 袒 鄲 鍛 撻 澾 獺 疸 達 啖 坍 憺 擔 曇 淡│
│D3C0│ 湛 潭 澹 痰 聃 膽 蕁 覃 談 譚 錟 沓 畓 答 踏 遝│
│D3D0│ 唐 堂 塘 幢 戇 撞 棠 當 糖 螳 黨 代 垈 坮 大 對│
│D3E0│ 岱 帶 待 戴 擡 玳 臺 袋 貸 隊 黛 宅 德 悳 倒 刀│
│D3F0│ 到 圖 堵 塗 導 屠 島 嶋 度 徒 悼 挑 掉 搗 桃   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D4A0│    棹 櫂 淘 渡 滔 濤 燾 盜 睹 禱 稻 萄 覩 賭 跳│
│D4B0│ 蹈 逃 途 道 都 鍍 陶 韜 毒 瀆 牘 犢 獨 督 禿 篤│
│D4C0│ 纛 讀 墩 惇 敦 旽 暾 沌 焞 燉 豚 頓 乭 突 仝 冬│
│D4D0│ 凍 動 同 憧 東 桐 棟 洞 潼 疼 瞳 童 胴 董 銅 兜│
│D4E0│ 斗 杜 枓 痘 竇 荳 讀 豆 逗 頭 屯 臀 芚 遁 遯 鈍│
│D4F0│ 得 嶝 橙 燈 登 等 藤 謄 鄧 騰 喇 懶 拏 癩 羅   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D5A0│    蘿 螺 裸 邏 樂 洛 烙 珞 絡 落 諾 酪 駱 丹 亂│
│D5B0│ 卵 欄 欒 瀾 爛 蘭 鸞 剌 辣 嵐 擥 攬 欖 濫 籃 纜│
│D5C0│ 藍 襤 覽 拉 臘 蠟 廊 朗 浪 狼 琅 瑯 螂 郞 來 崍│
│D5D0│ 徠 萊 冷 掠 略 亮 倆 兩 凉 梁 樑 粮 粱 糧 良 諒│
│D5E0│ 輛 量 侶 儷 勵 呂 廬 慮 戾 旅 櫚 濾 礪 藜 蠣 閭│
│D5F0│ 驢 驪 麗 黎 力 曆 歷 瀝 礫 轢 靂 憐 戀 攣 漣   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D6A0│    煉 璉 練 聯 蓮 輦 連 鍊 冽 列 劣 洌 烈 裂 廉│
│D6B0│ 斂 殮 濂 簾 獵 令 伶 囹 寧 岺 嶺 怜 玲 笭 羚 翎│
│D6C0│ 聆 逞 鈴 零 靈 領 齡 例 澧 禮 醴 隷 勞 怒 撈 擄│
│D6D0│ 櫓 潞 瀘 爐 盧 老 蘆 虜 路 輅 露 魯 鷺 鹵 碌 祿│
│D6E0│ 綠 菉 錄 鹿 麓 論 壟 弄 朧 瀧 瓏 籠 聾 儡 瀨 牢│
│D6F0│ 磊 賂 賚 賴 雷 了 僚 寮 廖 料 燎 療 瞭 聊 蓼   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D7A0│    遼 鬧 龍 壘 婁 屢 樓 淚 漏 瘻 累 縷 蔞 褸 鏤│
│D7B0│ 陋 劉 旒 柳 榴 流 溜 瀏 琉 瑠 留 瘤 硫 謬 類 六│
│D7C0│ 戮 陸 侖 倫 崙 淪 綸 輪 律 慄 栗 率 隆 勒 肋 凜│
│D7D0│ 凌 楞 稜 綾 菱 陵 俚 利 厘 吏 唎 履 悧 李 梨 浬│
│D7E0│ 犁 狸 理 璃 異 痢 籬 罹 羸 莉 裏 裡 里 釐 離 鯉│
│D7F0│ 吝 潾 燐 璘 藺 躪 隣 鱗 麟 林 淋 琳 臨 霖 砬   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D8A0│    立 笠 粒 摩 瑪 痲 碼 磨 馬 魔 麻 寞 幕 漠 膜│
│D8B0│ 莫 邈 万 卍 娩 巒 彎 慢 挽 晩 曼 滿 漫 灣 瞞 萬│
│D8C0│ 蔓 蠻 輓 饅 鰻 唜 抹 末 沫 茉 襪 靺 亡 妄 忘 忙│
│D8D0│ 望 網 罔 芒 茫 莽 輞 邙 埋 妹 媒 寐 昧 枚 梅 每│
│D8E0│ 煤 罵 買 賣 邁 魅 脈 貊 陌 驀 麥 孟 氓 猛 盲 盟│
│D8F0│ 萌 冪 覓 免 冕 勉 棉 沔 眄 眠 綿 緬 面 麵 滅   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│D9A0│    蔑 冥 名 命 明 暝 椧 溟 皿 瞑 茗 蓂 螟 酩 銘│
│D9B0│ 鳴 袂 侮 冒 募 姆 帽 慕 摸 摹 暮 某 模 母 毛 牟│
│D9C0│ 牡 瑁 眸 矛 耗 芼 茅 謀 謨 貌 木 沐 牧 目 睦 穆│
│D9D0│ 鶩 歿 沒 夢 朦 蒙 卯 墓 妙 廟 描 昴 杳 渺 猫 竗│
│D9E0│ 苗 錨 務 巫 憮 懋 戊 拇 撫 无 楙 武 毋 無 珷 畝│
│D9F0│ 繆 舞 茂 蕪 誣 貿 霧 鵡 墨 默 們 刎 吻 問 文   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DAA0│    汶 紊 紋 聞 蚊 門 雯 勿 沕 物 味 媚 尾 嵋 彌│
│DAB0│ 微 未 梶 楣 渼 湄 眉 米 美 薇 謎 迷 靡 黴 岷 悶│
│DAC0│ 愍 憫 敏 旻 旼 民 泯 玟 珉 緡 閔 密 蜜 謐 剝 博│
│DAD0│ 拍 搏 撲 朴 樸 泊 珀 璞 箔 粕 縛 膊 舶 薄 迫 雹│
│DAE0│ 駁 伴 半 反 叛 拌 搬 攀 斑 槃 泮 潘 班 畔 瘢 盤│
│DAF0│ 盼 磐 磻 礬 絆 般 蟠 返 頒 飯 勃 拔 撥 渤 潑   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DBA0│    發 跋 醱 鉢 髮 魃 倣 傍 坊 妨 尨 幇 彷 房 放│
│DBB0│ 方 旁 昉 枋 榜 滂 磅 紡 肪 膀 舫 芳 蒡 蚌 訪 謗│
│DBC0│ 邦 防 龐 倍 俳 北 培 徘 拜 排 杯 湃 焙 盃 背 胚│
│DBD0│ 裴 裵 褙 賠 輩 配 陪 伯 佰 帛 柏 栢 白 百 魄 幡│
│DBE0│ 樊 煩 燔 番 磻 繁 蕃 藩 飜 伐 筏 罰 閥 凡 帆 梵│
│DBF0│ 氾 汎 泛 犯 範 范 法 琺 僻 劈 壁 擘 檗 璧 癖   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DCA0│    碧 蘗 闢 霹 便 卞 弁 變 辨 辯 邊 別 瞥 鱉 鼈│
│DCB0│ 丙 倂 兵 屛 幷 昞 昺 柄 棅 炳 甁 病 秉 竝 輧 餠│
│DCC0│ 騈 保 堡 報 寶 普 步 洑 湺 潽 珤 甫 菩 補 褓 譜│
│DCD0│ 輔 伏 僕 匐 卜 宓 復 服 福 腹 茯 蔔 複 覆 輹 輻│
│DCE0│ 馥 鰒 本 乶 俸 奉 封 峯 峰 捧 棒 烽 熢 琫 縫 蓬│
│DCF0│ 蜂 逢 鋒 鳳 不 付 俯 傅 剖 副 否 咐 埠 夫 婦   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DDA0│    孚 孵 富 府 復 扶 敷 斧 浮 溥 父 符 簿 缶 腐│
│DDB0│ 腑 膚 艀 芙 莩 訃 負 賦 賻 赴 趺 部 釜 阜 附 駙│
│DDC0│ 鳧 北 分 吩 噴 墳 奔 奮 忿 憤 扮 昐 汾 焚 盆 粉│
│DDD0│ 糞 紛 芬 賁 雰 不 佛 弗 彿 拂 崩 朋 棚 硼 繃 鵬│
│DDE0│ 丕 備 匕 匪 卑 妃 婢 庇 悲 憊 扉 批 斐 枇 榧 比│
│DDF0│ 毖 毗 毘 沸 泌 琵 痺 砒 碑 秕 秘 粃 緋 翡 肥   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DEA0│    脾 臂 菲 蜚 裨 誹 譬 費 鄙 非 飛 鼻 嚬 嬪 彬│
│DEB0│ 斌 檳 殯 浜 濱 瀕 牝 玭 貧 賓 頻 憑 氷 聘 騁 乍│
│DEC0│ 事 些 仕 伺 似 使 俟 僿 史 司 唆 嗣 四 士 奢 娑│
│DED0│ 寫 寺 射 巳 師 徙 思 捨 斜 斯 柶 査 梭 死 沙 泗│
│DEE0│ 渣 瀉 獅 砂 社 祀 祠 私 篩 紗 絲 肆 舍 莎 蓑 蛇│
│DEF0│ 裟 詐 詞 謝 賜 赦 辭 邪 飼 駟 麝 削 數 朔 索   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│DFA0│    傘 刪 山 散 汕 珊 産 疝 算 蒜 酸 霰 乷 撒 殺│
│DFB0│ 煞 薩 三 參 杉 森 渗 芟 蔘 衫 揷 澁 鈒 颯 上 傷│
│DFC0│ 像 償 商 喪 嘗 孀 尙 峠 常 床 庠 廂 想 桑 橡 湘│
│DFD0│ 爽 牀 狀 相 祥 箱 翔 裳 觴 詳 象 賞 霜 塞 璽 賽│
│DFE0│ 嗇 塞 穡 索 色 牲 生 甥 省 笙 墅 壻 嶼 序 庶 徐│
│DFF0│ 恕 抒 捿 敍 暑 曙 書 栖 棲 犀 瑞 筮 絮 緖 署   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E0A0│    胥 舒 薯 西 誓 逝 鋤 黍 鼠 夕 奭 席 惜 昔 晳│
│E0B0│ 析 汐 淅 潟 石 碩 蓆 釋 錫 仙 僊 先 善 嬋 宣 扇│
│E0C0│ 敾 旋 渲 煽 琁 瑄 璇 璿 癬 禪 線 繕 羨 腺 膳 船│
│E0D0│ 蘚 蟬 詵 跣 選 銑 鐥 饍 鮮 卨 屑 楔 泄 洩 渫 舌│
│E0E0│ 薛 褻 設 說 雪 齧 剡 暹 殲 纖 蟾 贍 閃 陝 攝 涉│
│E0F0│ 燮 葉 城 姓 宬 性 惺 成 星 晟 猩 珹 盛 省 筬   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E1A0│    聖 聲 腥 誠 醒 世 勢 歲 洗 稅 笹 細 說 貰 召│
│E1B0│ 嘯 塑 宵 小 少 巢 所 掃 搔 昭 梳 沼 消 溯 瀟 炤│
│E1C0│ 燒 甦 疏 疎 瘙 笑 篠 簫 素 紹 蔬 蕭 蘇 訴 逍 遡│
│E1D0│ 邵 銷 韶 騷 俗 屬 束 涑 粟 續 謖 贖 速 孫 巽 損│
│E1E0│ 蓀 遜 飡 率 宋 悚 松 淞 訟 誦 送 頌 刷 殺 灑 碎│
│E1F0│ 鎖 衰 釗 修 受 嗽 囚 垂 壽 嫂 守 岫 峀 帥 愁   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E2A0│    戍 手 授 搜 收 數 樹 殊 水 洙 漱 燧 狩 獸 琇│
│E2B0│ 璲 瘦 睡 秀 穗 竪 粹 綏 綬 繡 羞 脩 茱 蒐 蓚 藪│
│E2C0│ 袖 誰 讐 輸 遂 邃 酬 銖 銹 隋 隧 隨 雖 需 須 首│
│E2D0│ 髓 鬚 叔 塾 夙 孰 宿 淑 潚 熟 琡 璹 肅 菽 巡 徇│
│E2E0│ 循 恂 旬 栒 楯 橓 殉 洵 淳 珣 盾 瞬 筍 純 脣 舜│
│E2F0│ 荀 蓴 蕣 詢 諄 醇 錞 順 馴 戌 術 述 鉥 崇 崧   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E3A0│    嵩 瑟 膝 蝨 濕 拾 習 褶 襲 丞 乘 僧 勝 升 承│
│E3B0│ 昇 繩 蠅 陞 侍 匙 嘶 始 媤 尸 屎 屍 市 弑 恃 施│
│E3C0│ 是 時 枾 柴 猜 矢 示 翅 蒔 蓍 視 試 詩 諡 豕 豺│
│E3D0│ 埴 寔 式 息 拭 植 殖 湜 熄 篒 蝕 識 軾 食 飾 伸│
│E3E0│ 侁 信 呻 娠 宸 愼 新 晨 燼 申 神 紳 腎 臣 莘 薪│
│E3F0│ 藎 蜃 訊 身 辛 辰 迅 失 室 實 悉 審 尋 心 沁   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E4A0│    沈 深 瀋 甚 芯 諶 什 十 拾 雙 氏 亞 俄 兒 啞│
│E4B0│ 娥 峨 我 牙 芽 莪 蛾 衙 訝 阿 雅 餓 鴉 鵝 堊 岳│
│E4C0│ 嶽 幄 惡 愕 握 樂 渥 鄂 鍔 顎 鰐 齷 安 岸 按 晏│
│E4D0│ 案 眼 雁 鞍 顔 鮟 斡 謁 軋 閼 唵 岩 巖 庵 暗 癌│
│E4E0│ 菴 闇 壓 押 狎 鴨 仰 央 怏 昻 殃 秧 鴦 厓 哀 埃│
│E4F0│ 崖 愛 曖 涯 碍 艾 隘 靄 厄 扼 掖 液 縊 腋 額   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E5A0│    櫻 罌 鶯 鸚 也 倻 冶 夜 惹 揶 椰 爺 耶 若 野│
│E5B0│ 弱 掠 略 約 若 葯 蒻 藥 躍 亮 佯 兩 凉 壤 孃 恙│
│E5C0│ 揚 攘 敭 暘 梁 楊 樣 洋 瀁 煬 痒 瘍 禳 穰 糧 羊│
│E5D0│ 良 襄 諒 讓 釀 陽 量 養 圄 御 於 漁 瘀 禦 語 馭│
│E5E0│ 魚 齬 億 憶 抑 檍 臆 偃 堰 彦 焉 言 諺 孼 蘖 俺│
│E5F0│ 儼 嚴 奄 掩 淹 嶪 業 円 予 余 勵 呂 女 如 廬   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E6A0│    旅 歟 汝 濾 璵 礖 礪 與 艅 茹 輿 轝 閭 餘 驪│
│E6B0│ 麗 黎 亦 力 域 役 易 曆 歷 疫 繹 譯 轢 逆 驛 嚥│
│E6C0│ 堧 姸 娟 宴 年 延 憐 戀 捐 挻 撚 椽 沇 沿 涎 涓│
│E6D0│ 淵 演 漣 烟 然 煙 煉 燃 燕 璉 硏 硯 秊 筵 緣 練│
│E6E0│ 縯 聯 衍 軟 輦 蓮 連 鉛 鍊 鳶 列 劣 咽 悅 涅 烈│
│E6F0│ 熱 裂 說 閱 厭 廉 念 捻 染 殮 炎 焰 琰 艶 苒   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E7A0│    簾 閻 髥 鹽 曄 獵 燁 葉 令 囹 塋 寧 嶺 嶸 影│
│E7B0│ 怜 映 暎 楹 榮 永 泳 渶 潁 濚 瀛 瀯 煐 營 獰 玲│
│E7C0│ 瑛 瑩 瓔 盈 穎 纓 羚 聆 英 詠 迎 鈴 鍈 零 霙 靈│
│E7D0│ 領 乂 倪 例 刈 叡 曳 汭 濊 猊 睿 穢 芮 藝 蘂 禮│
│E7E0│ 裔 詣 譽 豫 醴 銳 隸 霓 預 五 伍 俉 傲 午 吾 吳│
│E7F0│ 嗚 塢 墺 奧 娛 寤 悟 惡 懊 敖 旿 晤 梧 汚 澳   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E8A0│    烏 熬 獒 筽 蜈 誤 鰲 鼇 屋 沃 獄 玉 鈺 溫 瑥│
│E8B0│ 瘟 穩 縕 蘊 兀 壅 擁 瓮 甕 癰 翁 邕 雍 饔 渦 瓦│
│E8C0│ 窩 窪 臥 蛙 蝸 訛 婉 完 宛 梡 椀 浣 玩 琓 琬 碗│
│E8D0│ 緩 翫 脘 腕 莞 豌 阮 頑 曰 往 旺 枉 汪 王 倭 娃│
│E8E0│ 歪 矮 外 嵬 巍 猥 畏 了 僚 僥 凹 堯 夭 妖 姚 寥│
│E8F0│ 寮 尿 嶢 拗 搖 撓 擾 料 曜 樂 橈 燎 燿 瑤 療   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│E9A0│    窈 窯 繇 繞 耀 腰 蓼 蟯 要 謠 遙 遼 邀 饒 慾│
│E9B0│ 欲 浴 縟 褥 辱 俑 傭 冗 勇 埇 墉 容 庸 慂 榕 涌│
│E9C0│ 湧 溶 熔 瑢 用 甬 聳 茸 蓉 踊 鎔 鏞 龍 于 佑 偶│
│E9D0│ 優 又 友 右 宇 寓 尤 愚 憂 旴 牛 玗 瑀 盂 祐 禑│
│E9E0│ 禹 紆 羽 芋 藕 虞 迂 遇 郵 釪 隅 雨 雩 勖 彧 旭│
│E9F0│ 昱 栯 煜 稶 郁 頊 云 暈 橒 殞 澐 熉 耘 芸 蕓   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│EAA0│    運 隕 雲 韻 蔚 鬱 亐 熊 雄 元 原 員 圓 園 垣│
│EAB0│ 媛 嫄 寃 怨 愿 援 沅 洹 湲 源 爰 猿 瑗 苑 袁 轅│
│EAC0│ 遠 阮 院 願 鴛 月 越 鉞 位 偉 僞 危 圍 委 威 尉│
│EAD0│ 慰 暐 渭 爲 瑋 緯 胃 萎 葦 蔿 蝟 衛 褘 謂 違 韋│
│EAE0│ 魏 乳 侑 儒 兪 劉 唯 喩 孺 宥 幼 幽 庾 悠 惟 愈│
│EAF0│ 愉 揄 攸 有 杻 柔 柚 柳 楡 楢 油 洧 流 游 溜   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│EBA0│    濡 猶 猷 琉 瑜 由 留 癒 硫 紐 維 臾 萸 裕 誘│
│EBB0│ 諛 諭 踰 蹂 遊 逾 遺 酉 釉 鍮 類 六 堉 戮 毓 肉│
│EBC0│ 育 陸 倫 允 奫 尹 崙 淪 潤 玧 胤 贇 輪 鈗 閏 律│
│EBD0│ 慄 栗 率 聿 戎 瀜 絨 融 隆 垠 恩 慇 殷 誾 銀 隱│
│EBE0│ 乙 吟 淫 蔭 陰 音 飮 揖 泣 邑 凝 應 膺 鷹 依 倚│
│EBF0│ 儀 宜 意 懿 擬 椅 毅 疑 矣 義 艤 薏 蟻 衣 誼   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│ECA0│    議 醫 二 以 伊 利 吏 夷 姨 履 已 弛 彛 怡 易│
│ECB0│ 李 梨 泥 爾 珥 理 異 痍 痢 移 罹 而 耳 肄 苡 荑│
│ECC0│ 裏 裡 貽 貳 邇 里 離 飴 餌 匿 溺 瀷 益 翊 翌 翼│
│ECD0│ 謚 人 仁 刃 印 吝 咽 因 姻 寅 引 忍 湮 燐 璘 絪│
│ECE0│ 茵 藺 蚓 認 隣 靭 靷 鱗 麟 一 佚 佾 壹 日 溢 逸│
│ECF0│ 鎰 馹 任 壬 妊 姙 恁 林 淋 稔 臨 荏 賃 入 卄   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│EDA0│    立 笠 粒 仍 剩 孕 芿 仔 刺 咨 姉 姿 子 字 孜│
│EDB0│ 恣 慈 滋 炙 煮 玆 瓷 疵 磁 紫 者 自 茨 蔗 藉 諮│
│EDC0│ 資 雌 作 勺 嚼 斫 昨 灼 炸 爵 綽 芍 酌 雀 鵲 孱│
│EDD0│ 棧 殘 潺 盞 岑 暫 潛 箴 簪 蠶 雜 丈 仗 匠 場 墻│
│EDE0│ 壯 奬 將 帳 庄 張 掌 暲 杖 樟 檣 欌 漿 牆 狀 獐│
│EDF0│ 璋 章 粧 腸 臟 臧 莊 葬 蔣 薔 藏 裝 贓 醬 長   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│EEA0│    障 再 哉 在 宰 才 材 栽 梓 渽 滓 災 縡 裁 財│
│EEB0│ 載 齋 齎 爭 箏 諍 錚 佇 低 儲 咀 姐 底 抵 杵 楮│
│EEC0│ 樗 沮 渚 狙 猪 疽 箸 紵 苧 菹 著 藷 詛 貯 躇 這│
│EED0│ 邸 雎 齟 勣 吊 嫡 寂 摘 敵 滴 狄 炙 的 積 笛 籍│
│EEE0│ 績 翟 荻 謫 賊 赤 跡 蹟 迪 迹 適 鏑 佃 佺 傳 全│
│EEF0│ 典 前 剪 塡 塼 奠 專 展 廛 悛 戰 栓 殿 氈 澱   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│EFA0│    煎 琠 田 甸 畑 癲 筌 箋 箭 篆 纏 詮 輾 轉 鈿│
│EFB0│ 銓 錢 鐫 電 顚 顫 餞 切 截 折 浙 癤 竊 節 絶 占│
│EFC0│ 岾 店 漸 点 粘 霑 鮎 點 接 摺 蝶 丁 井 亭 停 偵│
│EFD0│ 呈 姃 定 幀 庭 廷 征 情 挺 政 整 旌 晶 晸 柾 楨│
│EFE0│ 檉 正 汀 淀 淨 渟 湞 瀞 炡 玎 珽 町 睛 碇 禎 程│
│EFF0│ 穽 精 綎 艇 訂 諪 貞 鄭 酊 釘 鉦 鋌 錠 霆 靖   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F0A0│    靜 頂 鼎 制 劑 啼 堤 帝 弟 悌 提 梯 濟 祭 第│
│F0B0│ 臍 薺 製 諸 蹄 醍 除 際 霽 題 齊 俎 兆 凋 助 嘲│
│F0C0│ 弔 彫 措 操 早 晁 曺 曹 朝 條 棗 槽 漕 潮 照 燥│
│F0D0│ 爪 璪 眺 祖 祚 租 稠 窕 粗 糟 組 繰 肇 藻 蚤 詔│
│F0E0│ 調 趙 躁 造 遭 釣 阻 雕 鳥 族 簇 足 鏃 存 尊 卒│
│F0F0│ 拙 猝 倧 宗 從 悰 慫 棕 淙 琮 種 終 綜 縱 腫   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F1A0│    踪 踵 鍾 鐘 佐 坐 左 座 挫 罪 主 住 侏 做 姝│
│F1B0│ 胄 呪 周 嗾 奏 宙 州 廚 晝 朱 柱 株 注 洲 湊 澍│
│F1C0│ 炷 珠 疇 籌 紂 紬 綢 舟 蛛 註 誅 走 躊 輳 週 酎│
│F1D0│ 酒 鑄 駐 竹 粥 俊 儁 准 埈 寯 峻 晙 樽 浚 準 濬│
│F1E0│ 焌 畯 竣 蠢 逡 遵 雋 駿 茁 中 仲 衆 重 卽 櫛 楫│
│F1F0│ 汁 葺 增 憎 曾 拯 烝 甑 症 繒 蒸 證 贈 之 只   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F2A0│    咫 地 址 志 持 指 摯 支 旨 智 枝 枳 止 池 沚│
│F2B0│ 漬 知 砥 祉 祗 紙 肢 脂 至 芝 芷 蜘 誌 識 贄 趾│
│F2C0│ 遲 直 稙 稷 織 職 唇 嗔 塵 振 搢 晉 晋 桭 榛 殄│
│F2D0│ 津 溱 珍 瑨 璡 畛 疹 盡 眞 瞋 秦 縉 縝 臻 蔯 袗│
│F2E0│ 診 賑 軫 辰 進 鎭 陣 陳 震 侄 叱 姪 嫉 帙 桎 瓆│
│F2F0│ 疾 秩 窒 膣 蛭 質 跌 迭 斟 朕 什 執 潗 緝 輯   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F3A0│    鏶 集 徵 懲 澄 且 侘 借 叉 嗟 嵯 差 次 此 磋│
│F3B0│ 箚 茶 蹉 車 遮 捉 搾 着 窄 錯 鑿 齪 撰 澯 燦 璨│
│F3C0│ 瓚 竄 簒 纂 粲 纘 讚 贊 鑽 餐 饌 刹 察 擦 札 紮│
│F3D0│ 僭 參 塹 慘 慙 懺 斬 站 讒 讖 倉 倡 創 唱 娼 廠│
│F3E0│ 彰 愴 敞 昌 昶 暢 槍 滄 漲 猖 瘡 窓 脹 艙 菖 蒼│
│F3F0│ 債 埰 寀 寨 彩 採 砦 綵 菜 蔡 采 釵 冊 柵 策   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F4A0│    責 凄 妻 悽 處 倜 刺 剔 尺 慽 戚 拓 擲 斥 滌│
│F4B0│ 瘠 脊 蹠 陟 隻 仟 千 喘 天 川 擅 泉 淺 玔 穿 舛│
│F4C0│ 薦 賤 踐 遷 釧 闡 阡 韆 凸 哲 喆 徹 撤 澈 綴 輟│
│F4D0│ 轍 鐵 僉 尖 沾 添 甛 瞻 簽 籤 詹 諂 堞 妾 帖 捷│
│F4E0│ 牒 疊 睫 諜 貼 輒 廳 晴 淸 聽 菁 請 靑 鯖 切 剃│
│F4F0│ 替 涕 滯 締 諦 逮 遞 體 初 剿 哨 憔 抄 招 梢   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F5A0│    椒 楚 樵 炒 焦 硝 礁 礎 秒 稍 肖 艸 苕 草 蕉│
│F5B0│ 貂 超 酢 醋 醮 促 囑 燭 矗 蜀 觸 寸 忖 村 邨 叢│
│F5C0│ 塚 寵 悤 憁 摠 總 聰 蔥 銃 撮 催 崔 最 墜 抽 推│
│F5D0│ 椎 楸 樞 湫 皺 秋 芻 萩 諏 趨 追 鄒 酋 醜 錐 錘│
│F5E0│ 鎚 雛 騶 鰍 丑 畜 祝 竺 筑 築 縮 蓄 蹙 蹴 軸 逐│
│F5F0│ 春 椿 瑃 出 朮 黜 充 忠 沖 蟲 衝 衷 悴 膵 萃   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F6A0│    贅 取 吹 嘴 娶 就 炊 翠 聚 脆 臭 趣 醉 驟 鷲│
│F6B0│ 側 仄 厠 惻 測 層 侈 値 嗤 峙 幟 恥 梔 治 淄 熾│
│F6C0│ 痔 痴 癡 稚 穉 緇 緻 置 致 蚩 輜 雉 馳 齒 則 勅│
│F6D0│ 飭 親 七 柒 漆 侵 寢 枕 沈 浸 琛 砧 針 鍼 蟄 秤│
│F6E0│ 稱 快 他 咤 唾 墮 妥 惰 打 拖 朶 楕 舵 陀 馱 駝│
│F6F0│ 倬 卓 啄 坼 度 托 拓 擢 晫 柝 濁 濯 琢 琸 託   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F7A0│    鐸 呑 嘆 坦 彈 憚 歎 灘 炭 綻 誕 奪 脫 探 眈│
│F7B0│ 耽 貪 塔 搭 榻 宕 帑 湯 糖 蕩 兌 台 太 怠 態 殆│
│F7C0│ 汰 泰 笞 胎 苔 跆 邰 颱 宅 擇 澤 撑 攄 兎 吐 土│
│F7D0│ 討 慟 桶 洞 痛 筒 統 通 堆 槌 腿 褪 退 頹 偸 套│
│F7E0│ 妬 投 透 鬪 慝 特 闖 坡 婆 巴 把 播 擺 杷 波 派│
│F7F0│ 爬 琶 破 罷 芭 跛 頗 判 坂 板 版 瓣 販 辦 鈑   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F8A0│    阪 八 叭 捌 佩 唄 悖 敗 沛 浿 牌 狽 稗 覇 貝│
│F8B0│ 彭 澎 烹 膨 愎 便 偏 扁 片 篇 編 翩 遍 鞭 騙 貶│
│F8C0│ 坪 平 枰 萍 評 吠 嬖 幣 廢 弊 斃 肺 蔽 閉 陛 佈│
│F8D0│ 包 匍 匏 咆 哺 圃 布 怖 抛 抱 捕 暴 泡 浦 疱 砲│
│F8E0│ 胞 脯 苞 葡 蒲 袍 褒 逋 鋪 飽 鮑 幅 暴 曝 瀑 爆│
│F8F0│ 輻 俵 剽 彪 慓 杓 標 漂 瓢 票 表 豹 飇 飄 驃   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│F9A0│    品 稟 楓 諷 豊 風 馮 彼 披 疲 皮 被 避 陂 匹│
│F9B0│ 弼 必 泌 珌 畢 疋 筆 苾 馝 乏 逼 下 何 厦 夏 廈│
│F9C0│ 昰 河 瑕 荷 蝦 賀 遐 霞 鰕 壑 學 虐 謔 鶴 寒 恨│
│F9D0│ 悍 旱 汗 漢 澣 瀚 罕 翰 閑 閒 限 韓 割 轄 函 含│
│F9E0│ 咸 啣 喊 檻 涵 緘 艦 銜 陷 鹹 合 哈 盒 蛤 閤 闔│
│F9F0│ 陜 亢 伉 姮 嫦 巷 恒 抗 杭 桁 沆 港 缸 肛 航   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│FAA0│    行 降 項 亥 偕 咳 垓 奚 孩 害 懈 楷 海 瀣 蟹│
│FAB0│ 解 該 諧 邂 駭 骸 劾 核 倖 幸 杏 荇 行 享 向 嚮│
│FAC0│ 珦 鄕 響 餉 饗 香 噓 墟 虛 許 憲 櫶 獻 軒 歇 險│
│FAD0│ 驗 奕 爀 赫 革 俔 峴 弦 懸 晛 泫 炫 玄 玹 現 眩│
│FAE0│ 睍 絃 絢 縣 舷 衒 見 賢 鉉 顯 孑 穴 血 頁 嫌 俠│
│FAF0│ 協 夾 峽 挾 浹 狹 脅 脇 莢 鋏 頰 亨 兄 刑 型   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│FBA0│    形 泂 滎 瀅 灐 炯 熒 珩 瑩 荊 螢 衡 逈 邢 鎣│
│FBB0│ 馨 兮 彗 惠 慧 暳 蕙 蹊 醯 鞋 乎 互 呼 壕 壺 好│
│FBC0│ 岵 弧 戶 扈 昊 晧 毫 浩 淏 湖 滸 澔 濠 濩 灝 狐│
│FBD0│ 琥 瑚 瓠 皓 祜 糊 縞 胡 芦 葫 蒿 虎 號 蝴 護 豪│
│FBE0│ 鎬 頀 顥 惑 或 酷 婚 昏 混 渾 琿 魂 忽 惚 笏 哄│
│FBF0│ 弘 汞 泓 洪 烘 紅 虹 訌 鴻 化 和 嬅 樺 火 畵   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│FCA0│    禍 禾 花 華 話 譁 貨 靴 廓 擴 攫 確 碻 穫 丸│
│FCB0│ 喚 奐 宦 幻 患 換 歡 晥 桓 渙 煥 環 紈 還 驩 鰥│
│FCC0│ 活 滑 猾 豁 闊 凰 幌 徨 恍 惶 愰 慌 晃 晄 榥 況│
│FCD0│ 湟 滉 潢 煌 璜 皇 篁 簧 荒 蝗 遑 隍 黃 匯 回 廻│
│FCE0│ 徊 恢 悔 懷 晦 會 檜 淮 澮 灰 獪 繪 膾 茴 蛔 誨│
│FCF0│ 賄 劃 獲 宖 橫 鐄 哮 嚆 孝 效 斅 曉 梟 涍 淆   │
└──┴────────────────────────┘
┌──┬────────────────────────┐
│    │ 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F│
├──┼────────────────────────┤
│FDA0│    爻 肴 酵 驍 侯 候 厚 后 吼 喉 嗅 帿 後 朽 煦│
│FDB0│ 珝 逅 勛 勳 塤 壎 焄 熏 燻 薰 訓 暈 薨 喧 暄 煊│
│FDC0│ 萱 卉 喙 毁 彙 徽 揮 暉 煇 諱 輝 麾 休 携 烋 畦│
│FDD0│ 虧 恤 譎 鷸 兇 凶 匈 洶 胸 黑 昕 欣 炘 痕 吃 屹│
│FDE0│ 紇 訖 欠 欽 歆 吸 恰 洽 翕 興 僖 凞 喜 噫 囍 姬│
│FDF0│ 嬉 希 憙 憘 戱 晞 曦 熙 熹 熺 犧 禧 稀 羲 詰   │
└──┴────────────────────────┘

신고
Posted by jujubong
프로그래밍2008.03.28 11:22
000000 black 검정
2f4f4f darkslategray 어두운푸른빛회색
708090 slategray 푸른빛회색
778899 lightslategray 밝은푸른빛회색
696969 dimgray 칙칙한회색
808080 gray 회색
a9a9a9 darkgray 어두운회색
c0c0c0 silver 은색
d3d3d3 lightgrey 밝은회색
dcdcdc gainsboro
ffffff white 백색
fff5ee seashell 바다조가비
fffafa snow 설백
f8f8ff ghostwhite 허깨비백색
fffaf0 floralwhite 꽃의백색
f5f5f5 whitesmoke 백색연기
f0f8ff aliceblue 엷은잿빛바탕에푸른빛
f0ffff azure 하늘색
fdf5e6 oldlace 낡은끈
f5fffa mintcream 박하크림
ffefd5 papayawhip 열대아메리카산과수매질
ffdab9 peachpuff 복숭아빛불기
faf0e6 linen 리넨
eee8aa palegoldenrod 옅은국화과의다년초
ffe4e1 mistyrose 짙은장미빛
ffe4b5 moccasin 사슴가죽의구두
ffdead navajowhite 나바호족백색
d2b48c tan 볕에탄빛깔
f5deb3 wheat 밀
fafad2 lightgoldenrodyellow 밝은국화과다년초노랑
ffffe0 lightyellow 밝은노랑
fff8dc cornsilk 옥수수명주실
faebd7 antiquewhite 옛날의백색
f5f5dc beige 엷은갈색
fffacd lemonchiffon 레몬빛가볍고얇은직물
fffff0 ivory 상앗빛
f0e68c khaki 누른빛에엷은다색이섞인빛깔
e6e6fa lavender 연한자주색
fff0f5 lavenderblush 연한자주빛붉기
ffe4c4 bisque 분홍빛이도는검은빛을띤누른빛
ffebcd blanchedalmond 희어진엷은황갈색
deb887 burlywood 튼튼한목재
cd853f peru 남미서부의공화국
00ced1 darkturquoise 어두운푸른빛녹색
00bfff deepskyblue 짙은하늘파랑
7fffd4 aquamarine 엷은푸른빛녹색
1e90ff dodgerblue옥수수빵파랑
00ffff cyan 푸른정도
f0fff0 honeydew 식물의잎에서나는단물
87cefa lightskyblue 밝은하늘파랑
afeeee paleturquoise 옅은푸른빛녹색
e0ffff lightcyan 밝은푸른정도
add8e6 lightblue 밝은파랑
b0c4de lightsteelblue 밝은철강빛파랑
40e0d0 turquoise 푸른빛녹색
48d1cc mediumturquoise 중간의푸른빛녹색
00ffff aqua 엷은푸른빛녹색
7b68ee mediumslateblue 중푸른빛회색파랑
191970 midnightblue 깜깜한파랑
6495ed cornflowerblue 옥수수꽃파랑
0000cd mediumblue 중간의파랑
6a5acd slateblue 푸른빛회색파랑
4682b4 steelblue 철강빛파랑
0000ff blue 파랑
483d8b darkslateblue 어두운푸른빛회색파랑
5f9ea0 cadetblue 이하의파랑
87ceeb skyblue 하늘파랑
4169e1 royalblue 황실의파랑
b0e0e6 powderblue 가루파랑
000080 navy 짙은검은빛을띤남빛
00008b darkblue 어두운파랑
8a2be2 blueviolet 파란제비꽃색
8b008b darkmagenta 어두운짙은분홍색
9932cc darkorchid 어두운연보라색
9400d3 darkviolet 어두운제비꽃색
ff00ff magenta 짙은분홍색
ff00ff fuchsia 붉은빛깔이나는자줏빛
c71585 mediumvioletred 중제비꽃빨강
ba55d3 mediumorchid 중간의연보라색
9370db mediumpurple 중간의자줏빛
dc143c crimson 짙게붉은색깔
ff1493 deeppink 짙은연분홍색
ffb6c1 lightpink 밝은연분홍색
ff69b4 hotpink 강렬한연분홍색
ffc0cb pink 연분홍색
dda0dd plum 짙은 보라색
800080 purple 자줏빛
ee82ee violet 제비꽃색
d8bfd8 thistle 엉겅퀴
da70d6 orchid 연보라색
4b0082 indigo 남색
a52a2a brown 갈색
e9967a darksalmon 어두운주황색
f08080 lightcoral 밝은산호빛
cd5c5c indianred 인디언빨강
ffa07a lightsalmon 밝은주황색
db7093 palevioletred 옅은제비꽃빨강
f4a460 sandybrown 엷은갈색
fa8072 salmon 주황색
ff6347 tomato 토마토색
ff4500 ornagered
ff0000 red 빨강
800000 maroon 붉은빛을띤갈색
8b0000 darkred 어두운빨강
b22222 firebrick 내화
d2691e chocolate 갈색
8b4513 saddlebrown 안장갈색
a0522d sienna 붉은빛을띤갈색
bc8f8f rosybrown 장미빛갈색
ff7f50 coral 산호빛
ff8c00 darkorange 어두운붉은빛을띤누른색
ffa500 orange 붉은빛을띤누른색
b8860b darkgoldenrod 어둔운국화과의다년초
ffd700 gold 금빛
ffff00 yellow 노랑
7fff00 chartreuse 연두색
7cfc00 lawngreen 잔디녹색
00ff00 lime 열대산의레몬비슷한과일
32cd32 limegreen 라임녹색
00ff7f springgreen 봄녹색
3cb371 mediumseagreen 중간의바다녹색
adff2f greenyellow 녹색의노랑
8fbc8f darkseagreen 어두운바다녹색
90ee90 lightgreen 밝은녹색
98fb98 palegreen 옅은녹색
2e8b57 seagreen 바다녹색
00fa9a mediumspringgreen 중봄녹색
20b2aa lightseagreen 밝은바다녹색
66cdaa mediumaquamarine 중엷은청록색
228b22 forestgreen 숲녹색
008b8b darkcyan 어두운푸른정도
008080 teal 암록색을띤청색
006400 darkgreen 어두운녹색
556b2f darkolivegreen 어두운올리브녹색
008000 green 녹색
808000 olive 물푸레나뭇과의상록교목
6b8e23 olivedrab 올리브엷은갈색
bdb76b darkkhaki 어두운누른빛에엷은다색
daa520 goldenrod 국화과의다년초
신고
Posted by jujubong
프로그래밍2008.03.28 11:16
모바일쪽에서 일하다 보니 이쪽에 C++ 라이브러리에 별 관심이 없었는데,,
요즘들어 알고리즘들을 직접 만들려고 보니 STL 을 자꾸 참고하게 된다.
STL관련 사이트를 뒤지다가 제법 괜찮은 사이트 발견..

http://www.cplusplus.com/

영문사이트이긴해도 라이브러리 참고하기엔 괜찮아 보인다. ^^
신고
Posted by jujubong
http://www.policyalmanac.org/games/aStarTutorial.htm

길찾기 알고리즘 (A*)
대학시절 네트워크 시간에 배우긴 했지만 가물가물 ^^;
길찾기 알고리즘을 고민중에 써먹기로 해봤지만 Recursive 형태로 되어 있는것 문제다.
벌써부터 메모리의 압박이 들어오는 상황에서 메모리 사용을 예측하기 힘든 부분은 되도록 피하고 싶다구..
결국은 기본 구조정도만 응용하기로 결정...
뭐, 너무 똑똑한 AI도 게임에선 문제가 있을듯하고 처리시간 대비 꽤 괜찮게 작동하듯 도 하다. ^^
신고
Posted by jujubong

티스토리 툴바