패턴 만드는 프로그램하나 만들어볼까 하다가..

누군가 잘 만들어놨겠지..하면서 찾아보니.. 역시나 너무나 잘 만들어놨네요


일단, 여기 잘 정리가 되어있고...

https://www.whoishostingthis.com/resources/pattern-generators/





위 사이트 중 제일 맘에 들었던 곳 3군데만 올리겠습니다. (다른데도 괜찮은데 많네요.)


1. http://qrohlf.com/trianglify/

아.제가 만들려고 했던 딱 그 기능 ㅠㅠ 이런 패턴을 만들어줍니다.




2. http://btmills.github.io/geopattern/

타이핑을 하면, 그 글자에 맞는 패턴을 랜덤으로 생성해줍니다. (일종의 hash값으로 만드는...듯?)

같은 글자는 같은 패턴으로 만들어주므로, 기억하기도 좋습니다.




3. http://alssndro.github.io/trianglify-background-generator/

1번하고 유사한데, 역시나 제가 찾던 모델이어서.. 또 올립니다.




무시무시한게 소스까지 다 올려놨습니다.ㅠㅠb



GEMS 8


SECTION 01 프로그래밍 일반

1.1 인스턴싱을 이용한 빠른 글꼴 렌더링

1.2 화면 공간 주변광 차폐의 원리와 응용

1.3 다해상도 지연 셰이딩

1.4 DirectX 11에서 캐트멀-클라크 패치의 시야 절두체 선별

1.5 DirectX 11의 계산 셰이더를 이용한 주변광 차폐

1.6 비정형 그림자 매핑을 위한 시점 시야 픽셀 앨리어싱 제거

1.7 프로그래밍 가능한 그래픽 하드웨어에서의 중첩 실행

1.8 SPU들에서 정점, 단편 셰이딩을 효과적으로 수행하기 위한 기법들


SECTION 02 애니메이션과 물리

2.1 다용도, 상호작용적인 해부학적 인간 얼굴 모형

2.2 이음매 없는 캐릭터 애니메이션을 위한 곡선 경로

2.3 비반복, 닫힌 형태 역기구학(NCF IK) 사슬 해법

2.4 게임 프로그래밍 위한 입자 무리 최적화

2.5 해석적 기법들로 수치 적분 개선하기

2.6 대단한 항력: 사실적인 3차원 공기 및 유체 저항 모형

2.7 임의의 닫힌 메시에 준유체 동역학 적용하기

2.8 실시간 충돌 검출을 위한 근사 볼록꼴 분해


SECTION 03 인공지능

3.1 아주 큰 세계를 위한 AI 세부수준

3.2 모듈식 게임 AI를 위한 패턴 기반 접근방식

3.3 고급 성장 기반 기법들을 이용한 내비게이션 메시 자동 생성 

3.4 동물과 에이전트 이동을 위한 실용적인 공간 표현 아키텍처

3.5 제어 이론을 게임 AI와 물리에 적용하기 

3.6 1인칭 슈팅(FPS) 게임의 적응적 전술 선택

3.7 혼돈 이론 응용: 결정론적 시스템으로 이용해서 외관상의 예측불가능성 만들기

3.8 욕구 기반 AI

3.9 감정을 가진 디지털 배우를 위한 프레임워크 하나

3.10 규모가변적 대화 작성

3.11 MMORPG의 플레이어 궤적 분석을 위한 그래프 기반 자료


SECTION 04 프로그래밍 일반

4.1 빠른 Is-A 관계 판정

4.2 등록된 변수

4.3 효율적이고 규모가변적인 다중 코어 프로그래밍

4.4 메모리와 자료 접근의 관점에서 본 게임 최적화

4.5 스택 할당

4.6 게임 내 메모리 프로파일러의 설계와 구현

4.7 좀 더 많은 정보를 담은 오류 기록 생성

4.8 QA를 위한 코드 포괄도

4.9 게임 엔진 안의 영역 국한 언어

4.10 다종다양한 환경들을 위한 유연한 사용자 인터페이스 배치 시스템

4.11 투영 가능한 지형 메시를 위한 도로 생성

4.12 게임 개발에서 디지털 드로잉 태블릿 활용하기

4.13 Intel® TBB를 이용한 다중 스레드 행위자 기반 아키텍처 만들기


SECTION 05 네트워킹 및 다중 플레이어

5.1 보안 채널 통신

5.2 게임 속 사회망: Facebook 친구와 함께 놀기

5.3 규모가변적 게임 서버를 위한 비동기 I/O

5.4 MMOG에 3D 스트리밍 기술 도입하기


SECTION 06 오디오

6.1 실용적인 DSP 무선 통신 효과

6.2 음향 팀에 큰 힘을 주는 훌륭한 음향 엔진 하나

6.3 강체 효과음의 실시간 합성


SECTION 07 GPU 범용 컴퓨팅

7.1 이질적인 병렬 아키텍처들에서 OpenCL 활용하기

7.2 Batman: Arkham Asylum의 PhysX GPU 강체 시뮬레이션

7.3 PhysX를 이용한 빠른 GPU 유체 시뮬레이션



GEMS 7


SECTION 1 프로그래밍 일반

1.1 연령 및 비용 측정을 통한 효율적인 캐시 교체

1.2 고성능 힙 할당자 

1.3 웹캠 기반 비디오 게임을 위한 광류 응용

1.4 다중 플랫폼 스레드 관리 엔진의 설계와 구현

1.5 꿀벌과 게이머를 위해: 육각 타일 다루기

1.6 세포자동차에 기초한, RTS 게임을 위한 스케치 기반 인터페이스

1.7 1인칭 슈팅 게임을 위한 발 기반 항행 기법

1.8 함수 지연 호출 시스템

1.9 다중 스레드 작업 및 의존성 시스템

1.10 고급 디버깅 기법들


SECTION 2 수학과 물리

2.1 난수 만들기

2.2 게임을 위한 빠른 범용 반직선 질의

2.3 최원 자질 맵을 이용한 빠른 강체 충돌 검출

2.4 투영 공간을 이용한 기하 계산의 정밀도 향상

2.5 XenoCollide: 복잡한 충돌을 간단하게 처리하기

2.6 변환 의미론을 이용한 효율적인 충돌 검출

2.7 삼각 스플라인

2.8 가우스 난수를 이용한 사실적인 탄도 다변화


SECTION 3 인공지능

3.1 행동방식 복제를 이용해서 흥미로운 에이전트 만들기

3.2 사실적이고 통합된 에이전트 감각 모형

3.3 AI 알고리즘 코드의 복잡도 다스리기: 일반적인 프로그래밍 접근방식

3.4 문제는 태도: 여론, 평판, NPC 개성의 구축요소

3.5 플레이어 궤적과 상호작용적 플레이어 그래프를 이용한 게임

3.6 목표지향적 계획 병합

3.7 A*를 넘어서: IDA*와 주변부 검색


SECTION 4 오디오

4.1 CPU 프로그램을 이용한 음향 신호 처리

4.2 MultiStream-차세대 음향 엔진 작성의 예술

4.3 게임 음향 환경에서 되풀이 없애기 및 사운드 설계에 대한 새로운 접근방식

4.4 실용적인 실시간 음향 효과

4.5 문맥 주도적인 계층적 믹싱


SECTION 5 그래픽

5.1 고급 입자 퇴적

5.2 골격 애니메이션의 누적 오차 줄이기

5.3 거친 재질을 위한 또 다른 분산광 셰이딩 모형

5.4 고성능 세분 표면

5.5 방사 기저 함수 텍스처를 이용한 부조 임포스터의 애니메이션

5.6 셰이더 모형 1.1 이상에서의 클립매핑

5.7 개선된 데칼 시스템

5.8 실외 지형 랜더링을 위한 대형 텍처스 맵핑

5.9 그래프탈 임포스터를 이용한 회화 기반 랜더링

5.10 동적 실시간 립싱크


SECTION 6 네트워크 및 다중 플레이어

6.1 게임 세계 동기화의 고수준 추상

6.2 온라인 게임의 인증

6.3 똑똑한 패킷 스니퍼를 활용한 게임 네트워크 디버깅


SECTION 7 스크립팅 및 자료주도적 시스템

7.1 자동 루아 바인딩 시스템

7.2 내부조사를 이용한 C++ 객체의 직렬화와 데이터베이스 저장

7.3 자료 운반체

7.4 그래픽 팀원들을 고려한 자료주도적 셰이더 시스템

7.5 Python의 AST 다루기 




GEMS 6

들어가며

서문

표지 그림에 대하여

저자 소개


SECTION 1 프로그래밍 일반


1.1 무잠금 알고리즘들

1.2 OpenMP를 이용한 다중 코어 프로세서 활용

1.3 OpenCV 라이브러리를 이용한 게임에서의 게임 컴퓨터 시각 활용

1.4 게임 객체의 지리 격자 등록

1.5 BSP 기법들

1.6 최근접 문자열 부합 알고리즘

1.7 CppUnit을 이용한 단위 검사 구현

1.8 저작권 침해의 억제 및 검출을 위한 출시전 빌드 지문 적용

1.9 접근 기반 파일 재배치를 이용한 빠른 파일 적재

1.10 빠른 반복을 위한 실행시점 자산 즉석 적재


SECTION 2 수학과 물리


2.1 부동소수점 비법들

2.2 동차 좌표를 이용한, 투영 공간 안에서의 GPU 계산

2.3 외적으로 1차 연립방정식 풀기

2.4 게임 개발을 위한 순차 색인 기법

2.5 다면체의 정확한 부력

2.6 강체와 상호작용하는 실시간 입자 기반 유체 시뮬레이션


SECTION 3 인공지능


3.1 모형 기반 의사결정 방법을 게임에 적용: Locust AI 엔진을 Quake III에 적용하기

3.2 자율 NPC들의 협동 구현

3.3 게임을 위한 행동 기반 로봇 아키텍처

3.4 퍼지 감지기, 유한상태 행동, 행동망으로 목표 지향적 Unreal Tournament 봇 만들기

3.5 목표 지향적 Unreal 봇: 확장 행동망으로 목표 지향적 행동과 간단한 개성을 가진

게임 에이전트 만들기

3.6 지지 벡터 기계를 사용하는 단기 기억 모형

3.7 교전 분석에 정량 판정 모형 적용하기

3.8 플러그인 모듈식 다층 AI 엔진 설계

3.9 장면 복잡도 관리에 퍼지 제어 사용하기


SECTION 4 스크립팅 및 자료주도적 시스템


4.1 스크립팅 언어 개괄

4.2 C/C++ 객체와 루아의 바인딩

4.3 루아 코루틴을 이용한 고급 제어 메커니즘 구현

4.4 다중 스레드 환경에서 고수준 스크립트 실행 관리하기

4.5 비개입 대리자를 이용한 활동 객체 속성 노출

4.6 게임 객체 구성요소 시스템


SECTION 5 그래픽


5.1 상호작용 캐릭터를 위한 사실적인 유휴 동작 합성

5.2 적응형 이진 트리를 이용한 공간 트리

5.3 준 유향 경계상자를 이용한 개선된 객체 선별

5.4 최적의 렌더링을 위한 스킨 분할

5.5 GPU 지형 렌더링

5.6 상호작용적인 유체의 동역학 및 GPU 렌더링

5.7 빠른 픽셀 당 다중 광원 조명

5.8 도로 표지를 뚜렷하게 렌더링하기

5.9 게임을 위한 실용적인 하늘 렌더링

5.10 OpenGL 프레임 버퍼 객체를 이용한 HDR 렌더링


SECTION 6 오디오


6.1 변형 가능 메시에서 실시간으로 소리 내기

6.2 실시간 효과음을 위한 가벼운 음 합성기

6.3 실시간 버스 믹싱

6.4 잠재 가청 집합

6.5 저렴한 도플러 효과

6.6 실시간 DSP 효과 흉내내기


SECTION 7 네트워크 및 다중 플레이어


7.1 3D 캐릭터 애니메이션 자료 스트림의 동적 적응

7.2 대규모 다중플레이어 게임을 위한 복잡계 기반 고수준 아키텍처

7.3 게임 객체를 위한 전역 고유 식별자 생성

7.4 MMOG의 프로토타이핑: 세컨드라이프를 이용한 게임 개념 프로토타입 작성

7.5 NAT 구멍 뚫기와 신뢰성 있는 동급간 게이밍 TCP 연결


부록CD에 대하여



GEMS 5

Section 1 프로그래밍 일반


1.1 편집기를 위한 문맥 감지 HUD

1.2 게임 안에서 텍스트 자료 파싱하기

1.3 구성요소 기반 객체 관리 

1.4 템플릿을 이용한 C++ 반영 기능 구현

1.5 빠른 BSP를 위한 구 트리 

1.6 개선된 절두체 선별 

1.7 일반적 페이저 

1.8 대규모 스택 기반 상태기계

1.9 BSP 트리를 이용한 CSG 구축 

1.10 루아를 게임에 통합 

1.11 방침 기반 설계로 자유목록 개선하기

1.12 실시간 원격 디버그 메시지 기록기

1.13 투명한 클래스 저장 및 로딩 요령

1.14 효과적인 캐시 무관 ABT 트리 구현

1.15 상태기계의 시각적인 설계 

1.16 일반적 구성요소 라이브러리

1.17 선택의 문제 - 메뉴 시스템 하나



Section 2 수학


2.1 컴퓨터 그래픽에 기하대수 사용하기

2.2 최소 가속 에르미트 곡선 

2.3 스플라인 기반 애니메이션 제어 

2.4 근사를 이용한 더 빠른 사원수 보간 

2.5 최소최대 수치 근사 

2.6 거울과 포탈을 위한 비표준 시야 절두체 



Section 3 인공지능


3.1 네비게이션 메시를 이용한 자동적인 엄폐 찾기

3.2 인위적 퍼텐셜장을 이용한 빠른 대상 등급 평가 

3.3 랜체스터 소모 모형을 이용한 전투 결과 예측 

3.4 게임 AI를 위한 실용적인 계획수립 구현 

3.5 다중 스레드 아키텍처를 위한 의사결정 트리 질의 알고리즘의 최적화

3.6 PVM을 통한 병렬 AI 개발 

3.7 A*를 넘어서 

3.8 최소의 재계획 비용을 가진 개선된 길찾기: 동적 A*(D*) 



Section 4 물리


4.1 게임 물리를 위한 어림셈 공기역학 

4.2 동적인 풀 시뮬레이션 및 기타 자연 효과 

4.3 질량-용수철 모형을 이용한 사실적인 옷감 애니메이션 

4.4 게임 개발을 위한 실용적인 연체 애니메이션: 가압 연체 모형 

4.5 피드백 제어 시스템을 이용한 생동감 있는 헝겊인형 시뮬레이션

4.6 사전처방식 물리 시스템의 설계 

4.7 사전처방식 물리: 기법과 응용 

4.8 3차원 차량 시뮬레이션의 사실적인 카메라 움직임 



Section 5 그래픽


5.1 최근 GPU 상에서의 사실적인 구름 렌더링 

5.2 눈과 비 내리기 

5.3 위짓: 빠르고 영속적인 군엽 렌더링 

5.4 사실적인 나무와 숲을 위한 2.5차원 임포스터 

5.5 격자 없는 제어 가능한 불 

5.6 빌보드 입자를 이용한 강력한 폭발 효과 

5.7 간단한 보석 렌더링 방법 

5.8 입체적 후처리 

5.9 절차적 레벨 생성 

5.10 조합식 셰이더 



Section 6 네트웍 및 멀티플레이어


6.1 대규모 다중 플레이어 온라인 게임의 대규모, 온라인, 영속성 유지

6.2 이음매 없는 세계 서버 구현 

6.3 비속어 걸러내기 시스템의 설계

6.4 빠르고 효율적인 원격 프로시저 호출 구현

6.5 동위간 통신에서 네트웍 주소 변환을 이겨내려면 

6.6 신뢰성 있는 메시징 프로토콜 

6.7 안전한 난수 시스템 

6.8 설계에 의한 보안 



Section 7 오디오


7.1 다중 스레딩 음향 프로그래밍 기법들 

7.2 그룹별 사운드 관리 

7.3 3차원 표면을 발음체로 사용하기 

7.4 되먹임 지연망에 근거한 빠른 환경 반향 

7.5 단일 화자 음성 인식 입문




GEMS 4

ection 1 프로그래밍 일반


소개


1.1 게임 디버깅의 과학

1.2 HTML 기반의 로깅 및 디버깅 시스템

1.3 클럭: 게임의 심장 박동

1.4 커다란 크로스플랫폼 라이브러리의 설계와 유지

1.5 자유목록 템플릿을 이용한 메모리 단편화 해결

1.6 C++ 일반 트리 컨테이너

1.7 약한 참조와 널 객체의 미덕

1.8 게임 개체 관리를 위한 시스템

1.9 Windows와 Xbox를 위한 주소 공간 관리식 동적 배열

1.10 임계 감쇠식 가속/감속 평활화

1.11 유연한 즉석 객체 관리자

1.12 커스텀 RTTI 속성을 이용한 객체 스트리밍과 편집

1.13 속도를 희생하지 않고 XML 사용하기



Section 2 수학

2.1 메르센느 트위스터를 이용한 조브리스트 해시

2.2 절두체와 카메라 정보 추출

2.3 커다란 세계 좌표의 정밀도 문제 해결

2.4 비균일 스플라인

2.5 공분산 행렬을 이용해서 좀 더 잘 들어맞는 경계입체 만들기

2.6 역기구학을 위한 야코비 전치법


Section 3 물리

3.1 죽음의 열 손가락: 전투 무력화 알고리즘들

3.2 CPU가 제한된 시스템을 위한 차량 물리 시뮬레이션

3.3 벌레뜨 기반 물리 엔진 작성

3.4 강체 동역학의 구속조건들

3.5 동역학 시뮬레이션을 위한 빠른 접촉 줄이기

3.6 상호작용적인 수면

3.7 다층 물리를 이용한 빠른 변형

3.8 빠르고 안정적인 변형을 위한 양상 해석


Section 4 인공지능

4.1 3인칭 카메라 네비게이션

4.2 이야기식 전투: AI를 이용해서 액션 게임의 긴장감 높이기

4.3 NPC 의사결정: 무작위성 다루기

4.4 객체지향적인 효용 기반 의사결정 아키텍처

4.5 분산 추론 투표 아키텍처

4.6 끌개와 밀개

4.7 RTS 게임을 위한 개선된 벽 건설

4.8 프로그래밍 가능한 그래픽 하드웨어를 이용한 인공 신경망 시뮬레이션




Section 5 그래픽

5.1 포스터 품질 스크린샷

5.2 닫히지 않은 메시를 위한 GPU 그림자 입체 구축

5.3 원근 그림자 맵

5.4 결합된 깊이 및 ID 기반 그림자 버퍼

5.5 정적 그림자를 기하구조에 새겨 넣기

5.6 그림자 입체와 최적화된 메시를 위한 실시간 조명 조정

5.7 실시간 망점처리: 빠르고 간단한 양식화된 셰이딩

5.8 3차원 모형에 팀 색상을 적용하는 기법들

5.9 빠른 세피아 색조 변환

5.10 표본화된 장면 휘도를 이용한 동적 감마 보정

5.11 열과 아지랑이 후처리 효과

5.12 사원수를 이용한 하드웨어 스키닝

5.13 모션 캡처 자료 압축

5.14 3차원 뼈대 기반 관절 캐릭터를 위한 빠른 충돌 검출

5.15 지평선을 이용한 지형 차폐 선별



Section 6 네트웍 및 멀티플레이어

6.1 일반적인 로비 설계와 개발

6.2 서버 당 수천의 클라이언트들

6.3 효율적인 MMP 게임 상태 저장

6.4 클라이언트-서버 환경에서 병렬 상태기계의 실용적인 적용 방법

6.5 비트 패킹: 한 가지 네트웍 압축 기법

6.6 다중서버 기반 MMORPG를 위한 시간 및 일관성 관리


Section 7 오디오

7.1 OpenAL에 대한 간략한 소개

7.2 간단한 실시간 립싱크 시스템

7.3 동적 변수와 오디오 프로그래밍

7.4 오디오 스크립팅 시스템 만들기

7.5 EAX와 ZoomFX를 이용한 환경 음향 솔루션 구현

7.6 게임 물리에 기반한 실시간 음 합성 제어



GEMS 3

제1부 프로그래밍

1.1 게임 이벤트의 일정 관리

1.2 객체 조합식 게임 프레임웍

1.3 C 스타일 매크로의 새로운 가치를 찾아서

1.4 플랫폼 독립적인 함수 바인딩 코드 생성기

1.5 핸들 기반의 똑똑한 포인터

1.6 커스텀 STL 할당자

1.7 자동화된 게임 저장 구현

1.8 자동목록 설계 패턴

1.9 부동소수점 예외 처리

1.10 UML을 이용한, 게임 디자인을 따르는 엔진 프로그래밍

1.11 Lex와 Yacc로 커스텀 데이터 파일 파서 만들기

1.12 해외 시장을 위한 게임 개발

1.13 3D 게임에서의 실시간 입력 및 UI

1.14 자연 선택: 파이 메뉴의 진화

1.15 경량의 방침 기반 로깅

1.16 저널링 서비스

1.17 실시간 계통적 프로파일링


제2부 수학

2.1 로그와 난수 발생을 위한 빠른 기수 2 함수들

2.2 정확한 기하학을 위한 벡터 분수의 활용

2.3 좀더 정확한 삼각함수 근사

2.4 사원수의 압축

2.5 구속조건이 있는 역기구학

2.6 물리 모델링을 위한 세포 자동자

2.7 동역학 시뮬레이션에서 마찰 다루기


제3부 인공지능

3.1 GoCap을 이용한 최적화된 기계 학습

3.2 영역 네비게이션: 길찾기 패러다임의 확장

3.3 함수 포인터 기반의 내장형 유한상태기계

3.4 RTS에서의 지형 분석-숨겨진 거인

3.5 AI 에이전트, 객체, 퀘스트를 위한 확장성있는 트리거 시스템

3.6 A*를 이용한 전술적 길찾기

3.7 네비게이션 메시에 대한 한 가지 빠른 접근 방식

3.8 길찾기와 충돌 사이의 관계 선택


제4부 그래픽

4.1 T 접합부의 제거 및 재삼각화

4.2 빠른 높이필드 법선 계산

4.3 빠른 패치 법선

4.4 빠르고 간단한 차폐 제외 기법

4.5 삼각형 띠의 생성, 최적화, 렌더링

4.6 복잡한 데이터 집합에 대한 최적화된 그림자 입체의 계산

4.7 캐릭터 애니메이션을 위한 표면 분할

4.8 개선된 뼈대 변형

4.9 사실적인 캐릭터 움직임을 위한 하나의 틀

4.10 프로그래밍 가능한 정점 셰이더 컴파일러

4.11 빌보드를 이용한 광선 효과

4.12 아이소메트릭 엔진을 위한 3D 기법들

4.13 법선 맵을 이용한 곡면 흉내내기

4.14 동적이고 실사적인 지형 조명 방법

4.15 입방체 맵 조명 기법들

4.16 절차적 텍스처링

4.17 고유한 텍스처

4.18 픽셀 당 조명 계산을 위한 참조 테이블로서의 텍스처

4.19 수작업으로 만든 셰이딩 모형으로 렌더링하기


제5부 네트웍 및 멀티플레이어

5.1 실시간 전략 게임에서의 지연 최소화

5.2 실시간 전략 네트웍 프로토콜

5.3 대규모 멀티플레이어 게임을 위한 유연한 시뮬레이션 아키텍처

5.4 규모가변적인 멀티플레이어 서버

5.5 템플릿 기반 객체 직렬화

5.6 보안 소켓

5.7 네트웍 모니터링 및 시뮬레이션 도구

5.8 DirectPlay 8.1로 멀티플레이어 게임 만들기

5.9 Java Micro Edition을 이용한 무선 게임 개발


제6부 오디오

6.1 Ogg Vorbis를 이용한 오디오 압축

6.2 매력적인 3D 오디오 환경 만들기

6.3 축에 정렬된 경계상자를 이용한 음향 차단

6.4 겹이차 공명 필터의 활용

6.5 음성 압축 및 효과를 위한 선형 예측 코딩

6.6 복잡한 음의 확률론적 합성

6.7 게임을 위한 실시간 모듈식 오디오 처리



GEMS 2

1부 프로그래밍 일반

C++ 게임의 최적화

인라인 함수 대 매크로

추상 인터페이스를 이용한 프로그래밍

DLL로부터 C++ 클래스 내보내기

DLL 지옥과 존재하기 않는 OS 함수들에 대한 방어 전략

동적인 형 정보

범용 C++ 멤버 접근을 위한 속성 클래스

게임 개체 팩토리

C++를 위한 폐기 메커니즘의 구현

드롭-인 디버그 메모리 관리자

게임에 내장되는 프로파일링 모듈

윈도우즈 기반 게임을 위한 선형적 프로그래밍 모델

스택 와인딩

스스로 수정하는 코드

자원 파일을 이용한 파일 관리

게임 입력의 기록 및 재생

유연한 텍스트 파싱 시스템

범용 트위커

순정난수 생성

블룸 필터를 이용한 계산 성능의 향상

3ds Max 스킨 익스포터 및 애니메이션 툴킷

비디오 게임에서의 웹 카메라 활용


2부 수학

부동소수점 비법들 : IEEE 부동소수점을 통한 성능 향상

벡터와 평면 충돌 기법들

3D 선분에 대한 빠르고 충실한 교차 판정

역탄도 계산

평행 수송 프레임

매끄러운 C2 사원수 기반의 공간 이동 경로

재귀적 차원 클러스터링 : 충돌 검출을 위한 빠른 알고리즘

프랙탈의 프로그래밍


3부 인공지능

AI 최적화 전략들

게임 객체 AI를 위한 마이크로 스레드

마이크로 스레드를 통한 AI 관리

RTS 게임의 명령 큐잉을 위한 기반 구조

고성능 타일 기반 시선 및 검색 시스템

영향력분포도 기법

전략적 판단 기법

3D 액션 게임을 위한 지형 분석

가시점 길찾기를 위한 확장된 기하 구조

가시점 길찾기의 최적화

먹고 먹히는 플로킹 : 포식자와 먹이

C++로 구현한 범용 퍼지 상태 기계

퍼지 시스템에서 조합의 폭합적 증가를 방지하려면

게임에서의 신경망 활용 : 구체적인 예


4부 기하 관리

VIPM 방법들의 비교

맞물린 타일들을 이용한 단순화된 지형 시스템

빠른 가시성 제외, 레이 트레이싱, 범위 검색을 위한 구 트리

압축된 축 정렬 경계상자 트리

직접 접근 쿼드트리 참조

어항 굴절의 근사

인쇄 해상도의 스크린샷 만들기

임의의 표면에 데칼 적용하기

하늘 상자를 이용한 원경 렌더링

캐릭터 자신에 대한 그림자 만들기

명작 Super Mario 64의 3인칭 조종 및 애니메이션


5부 그래픽 디스플레이

카툰 랜더링 : 실시간 외곽선 변 검출 및 랜더링

텍스쳐 매핑과 프로그래밍 가능한 정점 셰이더를 이용한 카툰 렌더링

동적인 픽셀 당 조명 기법

3D 하드웨어를 이용한 절차적 구름 생성

빠른 렌즈 플레어를 위한 텍스쳐 마스킹

실용적인 우선순위 버퍼 그림자

임포스터 : 장면에 소품 추가하기

하드웨어 가속 절차적 텍스쳐 애니메이션을 위한 연산들


6부 오디오 프로그래밍

게임 오디오 설계 패턴

샘플 기반 신디사이저에서의 즉각적인 음성 재사용을 위한 기법

소프트웨어 기반 DSP 효과들

상호작용적인 디지털 오디오 처리 파이프라인

게임을 위한 기본적인 음악 시퀀서

게임을 위한 상호작용적 음악 시퀀서

저수준 사운드 API 



GEMS1


1. 프로그래밍 기법들

데이터 주도적 설계의 마법

객체 지향적 프로그래밍과 설계 기법

템플릿 메타프로그래밍을 이용한 빠른 수학 연산

자동적인 단일체 유틸리티

게임 프로그래밍에서의 STL 활용

일반화된 함수-바인딩 인터페이스

범용 핸들 기반 자원 관리자

자원과 메모리 관리

빠른 데이터 로드 기법

프레임 기반 메모리 할당

간단하고 빠른 비트 배열

온라인 게임을 위한 프로토콜

assert의 비법들

Stats: 실시간 통계와 게임 내 디버깅

실시간 게임 내 프로파일링


2. 수학

예측 가능한 난수

보간법

강체 운동 방정식들의 해법

삼각 함수들에 대한 다항식 근사

수치적 안정성을 위한 암묵적 오일러 해법

파형요소: 이론과 압축

상호 작용적인 수면 시뮬레이션

게임 프로그래밍을 위한 사원수(쿼터니언)

행렬-사원수 변환

사원수들의 보간

최단호 사원수


3. 인공지능

범용적이고 견고한 AI 엔진의 설계

유한 상태 기계 클래스

게임 트리

A* 길라잡이 알고리즘의 기초

A*의 미학적 최적화

A*의 속도 최적화

네비게이션 메시를 이용한 단순화된 3D 이동과 길찾기

플로킹: 집단 행동을 흉내내는 간단한 기법

비디오 게임을 위한 퍼지 논리

신경망 입문


4. 다각형 기법

OpenGL을 위한 정점 지정 최적화

정점의 투영 깊이값 조절

벡터 카메라

카메라 제어 기법

빠른 원동- 절두체 교차 판정

3D 충돌 검출

다해상도 맵을 이용한 충돌 판정

구역 안에서의 거리 계산

가려진 객체의 제외 기법

자연스러운 세부 수준 변화

옥트리의 구축

느슨한 옥트리

뷰 독립적인 점진적 메싱

보간을 이용한 3D 키프레임 애니메이션

빠르고 간단한 스키닝 기법

틈 매우기-스티칭과 스키닝을 이용한 고급 애니메이션

실시간 사실적 지형 생성

프랙탈 지형 생성-단층 변형

프랙탈 지형 생성 - 중점 높이 이동

프랙탈 지형 생성 - 입자 퇴적


5. 픽셀 효과

2D 렌즈 플레이

3D 하드웨어를 이용한 2D 스프라이트 효과

동기 기반 정적 조명

정점 색상 보간을 이용한 모의 실시간 조명

감쇠 맵

텍스처 좌표 생성을 이용한 고급 텍스처 기법

하드웨어 범프 매핑

기준 평면 그림자 효과

복잡한 객체에 대한 실시간적인 그림자 생성

광택성 사전 필터링과 프레넬 향을 이용한 개선된 환경 매핑 반사 효과

게임을 위한 그럴 듯한 유리 효과

용기에 담긴 액체를 위한 굴절 매핑


6. 부록

행렬 유틸리티 라이브러리

텍스트 유틸리티 라이브러리

부록 CD-ROM에 대해

애플 앱스토어의 리젝은 워낙 유명하기 때문에, 애플 리젝은 원,투 당해도 멘탈에 타격이 거의 없습니다만, 플레이스토어에서는 앱스토어보다 상대적으로 승인 요건이 덜 빡빡하기 때문에, 리젝당하면 역으로 받는 멘탈 충격이 큽니다.


그렇기 때문에, 최소한 앱을 개발한다면, 이러이러한 이유때문에 리젝될수 있다는 정도는 확인해두고 첨부터 기획을 하는게 좋을것 같습니다.

아래 개발자 정책센터의 내용을 꼭 한번은 일독할 필요가 있습니다.


https://play.google.com/intl/ko/about/developer-content-policy/#!?modal_active=none







참 힘든게 구글에서 딱 찝어서 뭐가 문제다라고 알려주지도 않습니다. 정책보고 이 분류에 대해서 위반했으니 확인하라 정도입니다.

웹앱의 경우 좀 조심해야할 것 같습니다. 실제 도메인의 소유자인지를 입증해야합니다. 또한 스크린샷이나 앱에다가 타사의 로고를 절대로 넣지 않도록합니다. 

제휴관계라면 제휴했다는 입증서류를 제출해야합니다. 별로 중요한게 아니라면 차라리 TEXT로 대체하는 것이 좋습니다.


다음카카오에 다니는 게임 퍼블리싱 관련일을 하는 친구녀석에 말로는, 앱에 유명캐릭터(예, 원피스)가 표시될 경우 설사 반다이남코사랑 제휴했더라도. 구글쪽에 별도의 입증서류가 들어가지 않으면 무조건 리젝이랍니다. 주의해야겠습니다.


복원을 위한 이의제기를 통해, 제휴 관련 서류, 사업자등록증등을 제출하여 해결을 할 수 있습니다. 이번 경우에는 관련 서류를 제출하여, 정지상태에서 삭제 상태로 (복원?)처리되었으며, 설명에 해당 로고등을 빼고 재 심사 신청을 하여 무사히 등록할 수 있었습니다.


확실히 영업시간기준 72내에 처리를 해주는군요.

카카오챗봇기능을 통해 간단하게 챗에 응답하는 챗봇을 제작할 수 있습니다.





기본적인 구성방법은 아래 링크를 참조하시면됩니다.

http://kjcoder.tistory.com/505


위 링크는 서버가 C#기준으로 되어있기 때문에 PHP로 구성하는 방법을 알려드립니다.


 운영 환경 

PHP 5.6 / NGINX 12.2 

 디렉토리

 [웹루트]/index.php





NGINX와 PHP-FPM 구성은 생략합니다. 

https://launchdog.wordpress.com/2016/04/22/centos7-nginx-php7-mariadb-%EC%84%A4%EC%B9%98-1/


위 링크에 설명을 잘해 놓았으니 참고하도록합니다. 

위 링크는 PHP7기준입니다. 참고로 저는 호환성을 위해 PHP5.6을 선택하였습니다.



kakao 챗봇 서비스를 위한 nginx 서버 설정

콘피그파일에 아래와 같이 구성합니다. (/etc/nginx/conf.d/default.conf 수정)


   location ~ /kakao   {

        try_files $uri $uri/ /index.php?/$request_uri;

    }



카카오에서 요청되는 주소는 http://[도메인]/kakao/keyboard 형식으로 호출되도록하기위해 위와 같이 구성합니다.

실제 실행파일은 웹루트/index.php 입니다. 

route를 rewrite시키는 효과를 냅니다.





참고로 PHP 스크립트 설정은 아래와 같이 하였습니다.(php-fpm/nginx 설정시 미리 하기도 합니다.)



  location ~ \.php$ {

        root           /var/www/html;

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

    }





    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    location ~ \.php/([a-zA-Z0-9_]+)/([0-9]+)$ {

        root           /var/www/html;

        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

    }



static 파일 서비스는 아래와 같구요..

    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
        expires 12M;
        access_log off;
        add_header Cache-Control "public";
    }

    location ~* \.(?:css|js)$ {
        expires 1y;
        access_log off;
        add_header Cache-Control "public";
    }



그 다음 index.php 파일 내용입니다.

단촐합니다.



<?php

header('Content-Type: application/json');

$uri = $_SERVER["REQUEST_URI"];


if($uri=='/kakao/keyboard') {

//if(!is_kakao_server()) return; #호출 서버가 카카오서버가 아니면 실행안되도록 함.

$data = array();

$data['type'] = 'text';

echo json_encode($data);

return;

}


if($uri=='/kakao/message') {

//if(!is_kakao_server()) return;  #호출 서버가 카카오서버가 아니면 실행안되도록 함.

$postdata = file_get_contents("php://input");

$message = json_decode($postdata);

//$message->content

//$message->user_key

//$message->type  

// 위 변수로 접근 가능하다. 적절하게 처리.


###  적절한 처리..


$data = array('message'=>array('text'=>'잘 처리되었어요.~등등등'));   //메시지 응답을 한다.

echo json_encode($data);

return;

}



#끝~

아 참고로 is_kakao_server()는 카카오서버의 요청만 처리하도록 확인하는 함수입니다.

function is_kakao_server()
{
$kakao_server = array('110.76.143.234','110.76.143.235','110.76.143.236');
return in_array($_SERVER['REMOTE_ADDR'], $kakao_server);
}

요렇게 구성하시면 됩니다.




개발시, 오류수정은, 오류를 찾는것이 90%요. 나머지 고치는것이 10%입니다.

로그는 한 줄기의 빛...!


안드로이드 앱 개발시 APK패키징 이후, APK 수동 배포시 알 수 없게도. 아래와 같이 오류메시지를 뱉고는 더이상 진행 불가했습니다.



이렇게 될 경우, 안드로이드 스튜디오와 같은 개발툴에 연결된 상태도 아니기 때문에 딱히 왜 그런지에 대한 이유도 얻기 힘듭니다.

구글링 해보니, manifest 파일이 잘 못되었거나, 패키지명이 잘못되었거나. 지웠던파일이 지워지지 않고 남아있었다. 라던가.. 

다양한 이유가 있다고합니다.

저의 경우는 모두 아니였습니다.


결론 부터 이야기하자면, 제 경우는 앱 패키징할 때, 

아래와 사이닝 옵션창에서 V2만 체크되어서 그러한 문제가 발생했던 것이었습니다.


V1, V2모두 체크해야 한다.

V1, V2모두 체크해야 한다.


안드로이드 7.0에서는 APK설치시 문제없었으나, 6.0에서 설치시 말썽을 일으키더군요.

아래는 Gradle 빌드 설정 정보입니다.




build.gradle 파일 내용 -------------


android {
compileSdkVersion 27
buildToolsVersion "27.0.0"
defaultConfig {
applicationId "com.myapp"
minSdkVersion 17
targetSdkVersion 27
versionCode 1
versionName "1.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ext {
supportLibraryVersion = '27.0.0'
playServicesVersion = '11.0.4'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

# 이하 중략 #

2017.11.19 기준.최신 SDK입니다.



포스팅 하려는 이유는 이 같은 문제로만 한정하지 않고, 설치 오류가 보다 더 다양한 문제가 있을 수 있다고 생각이 들었습니다.

그 경우, 원인을 찾아야 해결 할 수 있으므로 원인 찾는 법에 대해서 이야기하고자 합니다.


우선 테스트 기기를 PC에 꽂아 주고, CMD창에서 adb shell logcat 명령어로 기기의 상태를 볼 수 있습니다.

물론 Android SDK가 path 걸려 있어야지요.

거기다가 필터를 걸어 볼 수 있는데 대략 이런 식입니다.

adb shell logcat [보고자하는TAG:디버그이상은 D, (E,I,W.등등)] *:S    #*:S 를 넣어줘야 그외는 다 제외시켜주고 보여줍니다.


자세한 설명은 https://developer.android.com/studio/command-line/logcat.html?hl=ko 에 있습니다.

설치와 관련된 경우 PackageManager 태그를 통해 정보를 보여주니까 이렇게 필터를 걸면 되겠습니다.





아래는 필터를 걸지 않고 그냥 봤는데, 아무튼 설치오류와 관련된 정보를 알 수 있었습니다.


재미있는 것이. 어찌 E(Error) 표시가 아니고 W(Warning)으로 표시됩니다.


오류메시지를 확인했으니, 해결방법은 금방 찾죠.

https://stackoverflow.com/questions/44386464/android-app-installation-failed-package-com-my-app-has-no-certificates-at-entry



+ Recent posts