ݺߣ

ݺߣShare a Scribd company logo
MGS 툴세미나
PHASE 1
게임개발자와 툴시스템
ONE 1
개발팀은 서로 말이 안통한다 ?
PHASE 1 게임개발자와 툴시스템
결론 없는 회의 , 게임개발에 대한 회의감
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
개발노하우의 공유가 없어 더욱 높아만 지는 파티션
과연 안되는지 진짜 안되는지 10 번 묻고 다짐받아도 믿기힘든 개발세태
이렇게 작업하면 안되요를 남발하는 프로그래머와 화장실서 들려오는 흐느낌
PHASE 1 게임개발자와 툴시스템
GIF 애니메이션 만드는 디자이너의 속사정
프로그래머에게 그냥 한번 보여주기 위한 일회성 지겨운 작업
좌표를 픽셀단위로 잡아놓아도 실제로 프로그래머는 눈짐작으로 판단할 뿐
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
구현의 갶ĵ성을 모르기 때문에 효과 넣는데 부쩍 소심해지는 디자이너
PHASE 1 게임개발자와 툴시스템
시키면 한다 ! 다만 품질은 책임 못 진다
맵데이타 , 대사글 , 공격레벨링 , UI 구성등은 모두 코딩하는 사람의 몫
GIF 애니메이션은 좋은데 , 정작 게임으로 나오면 어설퍼지는 동작들
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
알아서 정의해야 할 것이 워낙 많아 프로그래머에 따라 제각각 나오는 게임
TWO 2
개발자는 컴퓨터로 노가다한다 ?
PHASE 1 게임개발자와 툴시스템
누구에게도 말 못할 헥사덤프의 공포
몇달된 헥사덤프코드는 자신조차 손대지 못한다
4 비트씩 판단하기 위한 16 진수식 코딩과 부쩍 정이가는 윈도우계산기
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
배열제한이라는 헥사덤프의 막다른 골목과 잃어버린 시간
PHASE 1 게임개발자와 툴시스템
프로그래머가 가장 오랜 시간 쓰는 프로그램은 그림판
GIF 애니메이션을 하나하나 캡쳐해 일일이 그림판으로 확대하는 즐거움
캐릭터애니메이션 5 개정도의 위치를 땄을 뿐인데 업무종료
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
이미지의 위치와 크기를 조금씩 틀려주는 그림판식 센스
PHASE 1 게임개발자와 툴시스템
누구나 한번쯤 흐뭇해하는 자기 퇴사 후의 프로젝트
주석 안달다 그만 자신의 코드에 디버깅 되버린 K 씨
변수명을 죄다 한글이니셜로 코딩하는 L 씨
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
자기만 알아보는 툴을 만들어 놓고 암호로그인 처리까지 한 A 형 H 씨
THREE 3
이미지파일 / 사운드파일만 있으면 되나 ?
PHASE 1 게임개발자와 툴시스템
내 게임소스는 21 세기형 일회용 코드
다음 프로젝트에서도 유효한 것은 클리핑 처리되는 drawImage 뿐
갈고 닦을 시간이 없어 효율성 파악이 안된 코드와 무성한 소문의 진위
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를
건다 !
새로운 것을 부정하게 되는 보수성향과 발전없는 습관적 개발성향
PHASE 1 게임개발자와 툴시스템
아웃사이더로 전락한 기획자
기획서는 꼭 100 장이상 쓰는 기획자와 절대 2 장이상을 넘기지않는 프로그래
머
받아쓰기시간은 전체 프로젝트의 1/5 할애 , 그래도 오타는 항상 출시후에
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를
건다 !
현실적인 도움을 주지못해도 프로그래머와 함께 매일 밤새는 끝없는 출시임박
PHASE 1 게임개발자와 툴시스템
데이타리소스툴과 엔진형코드의 소박한 꿈
기획자는 프로그램 몰라 , 프로그래머는 기획력 부재 , 자사 툴개발 위해 퓨전
봄버맨 , 메가맨 같은 시리즈물과 엔진화에 의한 황금방석의 잊혀진 전설
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를
건다 !
악순환을 부르는 막코딩청탁과 지난해 문서를 그대로 복사해놓은 연봉계약서
FOUR 4
모바일은 게임성으로 승부를 건다 !
PHASE 1 게임개발자와 툴시스템
고민할 필요 없는 분업화된 체계
일의 끝이란 것이 존재하는 , 툴로 분업화된 업무체계
지루한 기다림의 계주가 아닌 각각 백미터 단독 질주
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
프로젝트는 공중분해 된다해도 체계화된 리소스는 홀로 살아남는다
PHASE 1 게임개발자와 툴시스템
프로그래머의 손을 떠난 철저한 게임성 조율
이미지 / 사운드를 제외한 게임리소스를 직접 제작하는 게임툴전문 기획자
툴에 의해 눈으로 체크되는 리소스조작과 컴파일없이 바로 재적용되는 게임엔진
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
물리적 에러는 내 책임 , 그 외 사항은 여러분의 몫입니다
PHASE 1 게임개발자와 툴시스템
나만의 데이타를 만들어 주는 툴시스템
버그신고 / 기능확장의 요구는 리퀘스트게시판 , 따로 리소스빌드추가는 견적의뢰로
빌드기능은 모두에게 공개된 기술의 마켓 , 인기있는 회사별 리소스와 엔진라이센스
개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건
다 !
모바일게임의 체계를 연구하는 집단과 플랫폼을 뛰어넘는 표준화된 연구성과의 즐거움
MGS 툴세미나
PHASE 2
MBM Class
ONE 1
PNG 의 구조
PHASE 2 MBM Class
4 가지요소의 청크화된 구조
사이즈 (4) | 청크명 (4) | 내용 ( 사이즈 ) | CRC 인증코드 (4)
89PNG : PNG 식별자
IHDR : 가로세로크기 , 압축레벨 / 인터레이스여부
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PLTE : 24 비트형 팔레트
tRNS : 팔레트별 투명도
IDAT : 픽셀별 색상정보 ( 인덱스번호 ), 유일한 압축청크
IEND : 청크종료
모바일환경에서 제외된 CRC 인증과 Adler 인증
CRC 코드 : 전 청크에서 사용되며 , 범용적인 Hash 테이블링 XOR 값
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
Adler 코드 : IDAT 에서만 유일하게 사용되며 , 픽셀 색상의 인증
TWO 2
PNGnc 의 발견
JAR 에서 빛이나는 None Compressed PNG
LBM8 -JAR 용량 : 225416Byte, - 로딩속도 : 4128ms
MBM8 -JAR 용량 : 240866Byte, - 로딩속도 : 4284ms
PNGnc8 -JAR 용량 : 279122Byte, - 로딩속도 : 4540ms
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
PNG8 -JAR 용량 : 355874Byte, - 로딩속도 : 6695ms
IDAT 의 열단위 비압축구간은 BMP 제어와 다를 것이 없다
국내 플랫폼은 CRC 코드와 Adler 코드 인증검사를 하지않음
인증검사를 한다해도 팔레트 / 이미지변환을 하지않으면 속도와 관계없음
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
블럭구간헤더 (1) + 블럭길이 (2) + 블럭길이검사 (2) + 필터 ID(1)
THREE 3
PNGnc 의 갶ĵ성
BREW, GVM/GNEX 계열을 제외한 모든 JAVA 계열 및 WIPI 플랫폼호환
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
JAR 압축을 통한 리소스다이어트 및 비압축방식에 의한 로딩스피드업
손실없는 TRUE 칼라 및 256 단계 투명도 지원
PHASE 2 MBM Class
BMP 구조 비압축에 의한 이미지생성 , 색변환 , 투명도변환 , 반전 / 확대 / 축소 /
회전
MBM 의 구조
FOUR 4
System.arraycopy() 를 이용한 구간복사식 PNGnc 생성
for 문을 이용한 byte 단위 대입의 약 700 배 속도증가
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
PNGnc 구성시 매번 메모리 생성 / 해제를 하지않는 방식
MBH 파일
헤더정보 (IHDR) 의 기본형
팔레트정보 (PLTE)
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
투명도정보 (tRNS)
MBM 파일
픽셀정보 (IDAT) 와
가로세로크기
헤더정보 (IHDR) 용 CRC 코드
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
PHASE 2 MBM Class
HotSpot 정보
MBM 의 기능
FIVE 5
독립적인 MBM 이미지생성 , MBM 간 이미지 / 스프라이트복사 , 사각형칠하기 가
능
좌우 / 상하 복합적인 반전 : HotSpot 정보도 변환
자율적인 확대 / 축소 : HotSpot 정보도 변환
자율적인 회전 (256 도 ) : HotSpot 기준의 Shift 연산의 256 체계 회전
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
색영역효과 : R, G, B 는 각각 0 에서 255 까지
PHASE 2 MBM Class
페이드효과 : Level 은 -256 에서 256 까지
셀로판효과 : Level 은 0 에서 256 까지
그레이효과 : 단계는 없음
반투명조정 : Level 은 0 에서 255 까지
빠른작업모드 : 클리핑없는 이미지 / 스프라이트복사 , 사각형칠하기
PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능
MBH/MBM 오픈 : 각종 정보오픈 및 배열제공에 의한 이미지의 사용자조작
PHASE 2 MBM Class
CRC/Adler 제공 : 해외폰용 게임이나 기타 필요한 상황을 위한 함수제공
MGS 툴세미나
PHASE 3
코드발상법
ONE 1
What's 코드발상법 ?
PHASE 3 코드발상법
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
대부분의 알고리즘에는 잘 벗어나지 않는 패턴 , 디자인패턴이란 것이 있다
디자인패턴은 노하우가 쌓인 구조를 지칭 , 코드발상법은 필요한 개개의 요소를 지칭
항상 해결책을 고려할 때 , 어떤 요소를 떠올려 어떤 틀에 맞출 지가 가장 중요
언어는 중요하지 않다 , 다만 알고리즘의 연마가 중요할 뿐
What's 코드최적화 ?
TWO 2
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
모듈화 , 객체화에 주로 신경 씀 : 1 단계
계산적인 최적화에 주로 신경 씀 : 2 단계
알고리즘상의 불필요한 계산을 제거함 : 3 단계
최고의 해답이 아닌 최적의 근사치 답에도 주목함 4 단계
PHASE 3 코드발상법
게임의 패턴이나 AI 방식 자체를 바꿈 ( 기획자의 영역 커트라인 ) 5 단계
애니메이션처리의 발상법
THREE 3
항상 게임타이머는 째깍째깍
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
전체 애니메이션의 등장과 퇴장을 스케줄링 함
PHASE 3 코드발상법
게임타이머의 강제조절로 항상 스킵을 할 수 있어야 함
하나의 정수로 모든 움직임을 기억
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
진행형 : 정지 (-1), 행동 (ex. A = A + 1), 게임타이머로써 진행속도 조절가능
싸이클형 : 정지 (-1), 행동 (ex. A = (A + 1) % B, A = (A + 1) & 0xff)
왕복형 : 행동시 싸이클형의 A 를 사용 (ex. C = ABS(A - B 절반 ))
발산형 : 행동시 진행형의 A 를 사용 (ex. B = A * A)
수렴형 : 고정점 C 에게 수렴 (ex. A = (A + C) / 2)
PHASE 3 코드발상법
난수개입형 : 상수로 초기화된 독립된 난수사용 (ex. A = (A % B)? 난수 : A + 1)
발생 / 진행 / 출력의 3 가지 잣대로 모든 움직임을 연상하고 설계
함
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
발생 : 키 입력 또는 게임타이머로써 애니메이션을 발생 ( 정지 상태를 해제 )
진행 : 매 프레임마다 무조건 불리어지는 함수 , 애니메이션을 진행
PHASE 3 코드발상법
출력 : 간단한 애니메이션 정수로써 위치 또는 상태를 최종적으로 계산 , 출력함
클리핑처리의 발상법
FOUR 4
클리핑이란 ?
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
PHASE 3 코드발상법
계산적으로 출력해야 할 영역을 미리 줄여놓는 방식
출력방식은 백버퍼방식과 플리핑방식
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
백버퍼방식 : LCD 와 같은 크기의 공간에서 그림을 미리 완성후 LCD 에 복사
클리핑처리에 적합 , 전 모바일플랫폼 공통사항
PHASE 3 코드발상법
플리핑방식 : LCD 공간 자체가 2 개이상 , 쉬는 공간에 그림을 완성후 V 포인터교체
매번 모든 것을 그려줘야 함 . 클리핑이 안되는 것은 아니나 부적
합
백버퍼방식의 출력절차는 2 단계
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
백버퍼출력 : Graphics g 에 그리는 단계 , 그리는 도중의 모습이 화면에 안 보
임
PHASE 3 코드발상법
LCD 에 출력 : flush() 와 같은 류의 처리 , 완성 된 백버퍼를 LCD 로 복사
합집합과 교집합
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
합집합 : 배경구성이 복잡하여 복원될 영역 , 출력한 영역을 합산하기 위하여 쓴다
교집합 : 메뉴나 윈도우속 출력을 스택식으로 클리핑할 때 쓴다
PHASE 3 코드발상법
출력할지 말지를 판단하지 말고 클리핑걸고 모두 출력하라
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
상황과 시점에 따라 출력여부를 판단하는 것은 논리적 버그의 위험한 도박
PHASE 3 코드발상법
재사용성을 고려한 융통성있는 코드의 구성을 위하여 통합적인 클리핑체계를 구성함
화면요소의 정의
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
통짜식배경 : 평소에 배경이 움직이지 않고 레이어가 없을 경우
구성식배경 : 레이어가 많거나 또는 매 프레임 배경을 그릴 필요가 없을 경우
고정요소 : 배경의 요소이지만 , 캐릭터보다 앞쪽에 위치한 경우
PHASE 3 코드발상법
오브젝트 : 캐릭터와 효과 , 총알등 움직이는 화면요소 , 클리핑시 영역관리필
요
클리핑방식과 장단점
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
백버퍼출력 : 개개의 오브젝트 영역으로 복원 ( 통짜식배경의 경우 )
오브젝트 합집합 영역으로 복원 ( 구성식배경의 경우 , LCD 클리핑에 용
이 )
PHASE 3 코드발상법
LCD 에 출력 : 복원된 총 영역 + 출력한 총 영역의 합집합식 클리핑
계산시간이 복잡하거나 , 비동기적 LCD 출력이라면 클리핑을 과감히 배제
메모리관리의 발상법
FIVE 5
메모리 아껴쓰기
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
계산에 의한 2 차 , 3 차 결과변수는 할당없이 필요할 때마다 직접 계산
PHASE 3 코드발상법
int 형은 short 형으로 , 배열의 차원수는 팍팍 줄이자
공용메모리의 사용
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
파일오픈 , 매핑배열 등을 위한 대형공용메모리의 확보
PHASE 3 코드발상법
빈번한 메모리 할당 / 해제는 gc() 의 호출에 의한 딜레이의 원인
로딩은 출력시 , 해제는 메모리부족시 오래된 것부터 !(RTLT 기법 )
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
메모리여분 판단 , 로딩시 메모리사용량 판단 , 시스템의 여유메모리 판단이
관건
적절한 로딩배분을 위한 화면구성으로 자연스러운 프레임유지
PHASE 3 코드발상법
로딩모드가 완전히 없어져 모드별 이미지를 따로 판단할 필요가 없음
SIX 6
KNOT 와 암호화의 발상법
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
관련자료 시연
PHASE 3 코드발상법
SEVEN 7
GW84 와 압축의 발상법
What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법
KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법
관련자료 시연
PHASE 3 코드발상법
MGS 툴세미나

More Related Content

MGS 툴세미나

  • 3. ONE 1 개발팀은 서로 말이 안통한다 ?
  • 4. PHASE 1 게임개발자와 툴시스템 결론 없는 회의 , 게임개발에 대한 회의감 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 개발노하우의 공유가 없어 더욱 높아만 지는 파티션 과연 안되는지 진짜 안되는지 10 번 묻고 다짐받아도 믿기힘든 개발세태 이렇게 작업하면 안되요를 남발하는 프로그래머와 화장실서 들려오는 흐느낌
  • 5. PHASE 1 게임개발자와 툴시스템 GIF 애니메이션 만드는 디자이너의 속사정 프로그래머에게 그냥 한번 보여주기 위한 일회성 지겨운 작업 좌표를 픽셀단위로 잡아놓아도 실제로 프로그래머는 눈짐작으로 판단할 뿐 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 구현의 갶ĵ성을 모르기 때문에 효과 넣는데 부쩍 소심해지는 디자이너
  • 6. PHASE 1 게임개발자와 툴시스템 시키면 한다 ! 다만 품질은 책임 못 진다 맵데이타 , 대사글 , 공격레벨링 , UI 구성등은 모두 코딩하는 사람의 몫 GIF 애니메이션은 좋은데 , 정작 게임으로 나오면 어설퍼지는 동작들 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 알아서 정의해야 할 것이 워낙 많아 프로그래머에 따라 제각각 나오는 게임
  • 8. PHASE 1 게임개발자와 툴시스템 누구에게도 말 못할 헥사덤프의 공포 몇달된 헥사덤프코드는 자신조차 손대지 못한다 4 비트씩 판단하기 위한 16 진수식 코딩과 부쩍 정이가는 윈도우계산기 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 배열제한이라는 헥사덤프의 막다른 골목과 잃어버린 시간
  • 9. PHASE 1 게임개발자와 툴시스템 프로그래머가 가장 오랜 시간 쓰는 프로그램은 그림판 GIF 애니메이션을 하나하나 캡쳐해 일일이 그림판으로 확대하는 즐거움 캐릭터애니메이션 5 개정도의 위치를 땄을 뿐인데 업무종료 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 이미지의 위치와 크기를 조금씩 틀려주는 그림판식 센스
  • 10. PHASE 1 게임개발자와 툴시스템 누구나 한번쯤 흐뭇해하는 자기 퇴사 후의 프로젝트 주석 안달다 그만 자신의 코드에 디버깅 되버린 K 씨 변수명을 죄다 한글이니셜로 코딩하는 L 씨 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ? / 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 자기만 알아보는 툴을 만들어 놓고 암호로그인 처리까지 한 A 형 H 씨
  • 11. THREE 3 이미지파일 / 사운드파일만 있으면 되나 ?
  • 12. PHASE 1 게임개발자와 툴시스템 내 게임소스는 21 세기형 일회용 코드 다음 프로젝트에서도 유효한 것은 클리핑 처리되는 drawImage 뿐 갈고 닦을 시간이 없어 효율성 파악이 안된 코드와 무성한 소문의 진위 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건다 ! 새로운 것을 부정하게 되는 보수성향과 발전없는 습관적 개발성향
  • 13. PHASE 1 게임개발자와 툴시스템 아웃사이더로 전락한 기획자 기획서는 꼭 100 장이상 쓰는 기획자와 절대 2 장이상을 넘기지않는 프로그래 머 받아쓰기시간은 전체 프로젝트의 1/5 할애 , 그래도 오타는 항상 출시후에 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건다 ! 현실적인 도움을 주지못해도 프로그래머와 함께 매일 밤새는 끝없는 출시임박
  • 14. PHASE 1 게임개발자와 툴시스템 데이타리소스툴과 엔진형코드의 소박한 꿈 기획자는 프로그램 몰라 , 프로그래머는 기획력 부재 , 자사 툴개발 위해 퓨전 봄버맨 , 메가맨 같은 시리즈물과 엔진화에 의한 황금방석의 잊혀진 전설 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건다 ! 악순환을 부르는 막코딩청탁과 지난해 문서를 그대로 복사해놓은 연봉계약서
  • 16. PHASE 1 게임개발자와 툴시스템 고민할 필요 없는 분업화된 체계 일의 끝이란 것이 존재하는 , 툴로 분업화된 업무체계 지루한 기다림의 계주가 아닌 각각 백미터 단독 질주 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 프로젝트는 공중분해 된다해도 체계화된 리소스는 홀로 살아남는다
  • 17. PHASE 1 게임개발자와 툴시스템 프로그래머의 손을 떠난 철저한 게임성 조율 이미지 / 사운드를 제외한 게임리소스를 직접 제작하는 게임툴전문 기획자 툴에 의해 눈으로 체크되는 리소스조작과 컴파일없이 바로 재적용되는 게임엔진 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 물리적 에러는 내 책임 , 그 외 사항은 여러분의 몫입니다
  • 18. PHASE 1 게임개발자와 툴시스템 나만의 데이타를 만들어 주는 툴시스템 버그신고 / 기능확장의 요구는 리퀘스트게시판 , 따로 리소스빌드추가는 견적의뢰로 빌드기능은 모두에게 공개된 기술의 마켓 , 인기있는 회사별 리소스와 엔진라이센스 개발팀은 서로 말이 안통한다 ?/ 개발자는 컴퓨터로 노가다한다 ?/ 이미지파일 , 사운드파일만 있으면 되나 ?/ 모바일은 게임성으로 승부를 건 다 ! 모바일게임의 체계를 연구하는 집단과 플랫폼을 뛰어넘는 표준화된 연구성과의 즐거움
  • 21. ONE 1 PNG 의 구조
  • 22. PHASE 2 MBM Class 4 가지요소의 청크화된 구조 사이즈 (4) | 청크명 (4) | 내용 ( 사이즈 ) | CRC 인증코드 (4) 89PNG : PNG 식별자 IHDR : 가로세로크기 , 압축레벨 / 인터레이스여부 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PLTE : 24 비트형 팔레트 tRNS : 팔레트별 투명도 IDAT : 픽셀별 색상정보 ( 인덱스번호 ), 유일한 압축청크 IEND : 청크종료
  • 23. 모바일환경에서 제외된 CRC 인증과 Adler 인증 CRC 코드 : 전 청크에서 사용되며 , 범용적인 Hash 테이블링 XOR 값 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class Adler 코드 : IDAT 에서만 유일하게 사용되며 , 픽셀 색상의 인증
  • 24. TWO 2 PNGnc 의 발견
  • 25. JAR 에서 빛이나는 None Compressed PNG LBM8 -JAR 용량 : 225416Byte, - 로딩속도 : 4128ms MBM8 -JAR 용량 : 240866Byte, - 로딩속도 : 4284ms PNGnc8 -JAR 용량 : 279122Byte, - 로딩속도 : 4540ms PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class PNG8 -JAR 용량 : 355874Byte, - 로딩속도 : 6695ms
  • 26. IDAT 의 열단위 비압축구간은 BMP 제어와 다를 것이 없다 국내 플랫폼은 CRC 코드와 Adler 코드 인증검사를 하지않음 인증검사를 한다해도 팔레트 / 이미지변환을 하지않으면 속도와 관계없음 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class 블럭구간헤더 (1) + 블럭길이 (2) + 블럭길이검사 (2) + 필터 ID(1)
  • 27. THREE 3 PNGnc 의 갶ĵ성
  • 28. BREW, GVM/GNEX 계열을 제외한 모든 JAVA 계열 및 WIPI 플랫폼호환 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 JAR 압축을 통한 리소스다이어트 및 비압축방식에 의한 로딩스피드업 손실없는 TRUE 칼라 및 256 단계 투명도 지원 PHASE 2 MBM Class BMP 구조 비압축에 의한 이미지생성 , 색변환 , 투명도변환 , 반전 / 확대 / 축소 / 회전
  • 30. System.arraycopy() 를 이용한 구간복사식 PNGnc 생성 for 문을 이용한 byte 단위 대입의 약 700 배 속도증가 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class PNGnc 구성시 매번 메모리 생성 / 해제를 하지않는 방식
  • 31. MBH 파일 헤더정보 (IHDR) 의 기본형 팔레트정보 (PLTE) PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class 투명도정보 (tRNS)
  • 32. MBM 파일 픽셀정보 (IDAT) 와 가로세로크기 헤더정보 (IHDR) 용 CRC 코드 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 PHASE 2 MBM Class HotSpot 정보
  • 34. 독립적인 MBM 이미지생성 , MBM 간 이미지 / 스프라이트복사 , 사각형칠하기 가 능 좌우 / 상하 복합적인 반전 : HotSpot 정보도 변환 자율적인 확대 / 축소 : HotSpot 정보도 변환 자율적인 회전 (256 도 ) : HotSpot 기준의 Shift 연산의 256 체계 회전 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 색영역효과 : R, G, B 는 각각 0 에서 255 까지 PHASE 2 MBM Class 페이드효과 : Level 은 -256 에서 256 까지
  • 35. 셀로판효과 : Level 은 0 에서 256 까지 그레이효과 : 단계는 없음 반투명조정 : Level 은 0 에서 255 까지 빠른작업모드 : 클리핑없는 이미지 / 스프라이트복사 , 사각형칠하기 PNG 의 구조 / PNGnc 의 발견 / PNGnc 의 갶ĵ성 / MBM 의 구조 / MBM 의 기능 MBH/MBM 오픈 : 각종 정보오픈 및 배열제공에 의한 이미지의 사용자조작 PHASE 2 MBM Class CRC/Adler 제공 : 해외폰용 게임이나 기타 필요한 상황을 위한 함수제공
  • 39. PHASE 3 코드발상법 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 대부분의 알고리즘에는 잘 벗어나지 않는 패턴 , 디자인패턴이란 것이 있다 디자인패턴은 노하우가 쌓인 구조를 지칭 , 코드발상법은 필요한 개개의 요소를 지칭 항상 해결책을 고려할 때 , 어떤 요소를 떠올려 어떤 틀에 맞출 지가 가장 중요 언어는 중요하지 않다 , 다만 알고리즘의 연마가 중요할 뿐
  • 41. What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 모듈화 , 객체화에 주로 신경 씀 : 1 단계 계산적인 최적화에 주로 신경 씀 : 2 단계 알고리즘상의 불필요한 계산을 제거함 : 3 단계 최고의 해답이 아닌 최적의 근사치 답에도 주목함 4 단계 PHASE 3 코드발상법 게임의 패턴이나 AI 방식 자체를 바꿈 ( 기획자의 영역 커트라인 ) 5 단계
  • 43. 항상 게임타이머는 째깍째깍 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 전체 애니메이션의 등장과 퇴장을 스케줄링 함 PHASE 3 코드발상법 게임타이머의 강제조절로 항상 스킵을 할 수 있어야 함
  • 44. 하나의 정수로 모든 움직임을 기억 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 진행형 : 정지 (-1), 행동 (ex. A = A + 1), 게임타이머로써 진행속도 조절가능 싸이클형 : 정지 (-1), 행동 (ex. A = (A + 1) % B, A = (A + 1) & 0xff) 왕복형 : 행동시 싸이클형의 A 를 사용 (ex. C = ABS(A - B 절반 )) 발산형 : 행동시 진행형의 A 를 사용 (ex. B = A * A) 수렴형 : 고정점 C 에게 수렴 (ex. A = (A + C) / 2) PHASE 3 코드발상법 난수개입형 : 상수로 초기화된 독립된 난수사용 (ex. A = (A % B)? 난수 : A + 1)
  • 45. 발생 / 진행 / 출력의 3 가지 잣대로 모든 움직임을 연상하고 설계 함 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 발생 : 키 입력 또는 게임타이머로써 애니메이션을 발생 ( 정지 상태를 해제 ) 진행 : 매 프레임마다 무조건 불리어지는 함수 , 애니메이션을 진행 PHASE 3 코드발상법 출력 : 간단한 애니메이션 정수로써 위치 또는 상태를 최종적으로 계산 , 출력함
  • 47. 클리핑이란 ? What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 PHASE 3 코드발상법 계산적으로 출력해야 할 영역을 미리 줄여놓는 방식
  • 48. 출력방식은 백버퍼방식과 플리핑방식 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 백버퍼방식 : LCD 와 같은 크기의 공간에서 그림을 미리 완성후 LCD 에 복사 클리핑처리에 적합 , 전 모바일플랫폼 공통사항 PHASE 3 코드발상법 플리핑방식 : LCD 공간 자체가 2 개이상 , 쉬는 공간에 그림을 완성후 V 포인터교체 매번 모든 것을 그려줘야 함 . 클리핑이 안되는 것은 아니나 부적 합
  • 49. 백버퍼방식의 출력절차는 2 단계 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 백버퍼출력 : Graphics g 에 그리는 단계 , 그리는 도중의 모습이 화면에 안 보 임 PHASE 3 코드발상법 LCD 에 출력 : flush() 와 같은 류의 처리 , 완성 된 백버퍼를 LCD 로 복사
  • 50. 합집합과 교집합 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 합집합 : 배경구성이 복잡하여 복원될 영역 , 출력한 영역을 합산하기 위하여 쓴다 교집합 : 메뉴나 윈도우속 출력을 스택식으로 클리핑할 때 쓴다 PHASE 3 코드발상법
  • 51. 출력할지 말지를 판단하지 말고 클리핑걸고 모두 출력하라 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 상황과 시점에 따라 출력여부를 판단하는 것은 논리적 버그의 위험한 도박 PHASE 3 코드발상법 재사용성을 고려한 융통성있는 코드의 구성을 위하여 통합적인 클리핑체계를 구성함
  • 52. 화면요소의 정의 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 통짜식배경 : 평소에 배경이 움직이지 않고 레이어가 없을 경우 구성식배경 : 레이어가 많거나 또는 매 프레임 배경을 그릴 필요가 없을 경우 고정요소 : 배경의 요소이지만 , 캐릭터보다 앞쪽에 위치한 경우 PHASE 3 코드발상법 오브젝트 : 캐릭터와 효과 , 총알등 움직이는 화면요소 , 클리핑시 영역관리필 요
  • 53. 클리핑방식과 장단점 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 백버퍼출력 : 개개의 오브젝트 영역으로 복원 ( 통짜식배경의 경우 ) 오브젝트 합집합 영역으로 복원 ( 구성식배경의 경우 , LCD 클리핑에 용 이 ) PHASE 3 코드발상법 LCD 에 출력 : 복원된 총 영역 + 출력한 총 영역의 합집합식 클리핑 계산시간이 복잡하거나 , 비동기적 LCD 출력이라면 클리핑을 과감히 배제
  • 55. 메모리 아껴쓰기 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 계산에 의한 2 차 , 3 차 결과변수는 할당없이 필요할 때마다 직접 계산 PHASE 3 코드발상법 int 형은 short 형으로 , 배열의 차원수는 팍팍 줄이자
  • 56. 공용메모리의 사용 What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 파일오픈 , 매핑배열 등을 위한 대형공용메모리의 확보 PHASE 3 코드발상법 빈번한 메모리 할당 / 해제는 gc() 의 호출에 의한 딜레이의 원인
  • 57. 로딩은 출력시 , 해제는 메모리부족시 오래된 것부터 !(RTLT 기법 ) What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 메모리여분 판단 , 로딩시 메모리사용량 판단 , 시스템의 여유메모리 판단이 관건 적절한 로딩배분을 위한 화면구성으로 자연스러운 프레임유지 PHASE 3 코드발상법 로딩모드가 완전히 없어져 모드별 이미지를 따로 판단할 필요가 없음
  • 58. SIX 6 KNOT 와 암호화의 발상법
  • 59. What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 관련자료 시연 PHASE 3 코드발상법
  • 60. SEVEN 7 GW84 와 압축의 발상법
  • 61. What's 코드발상법 ? / What's 코드최적화 ? / 애니메이션처리의 발상법 / 클리핑처리의 발상법 / 메모리관리의 발상법 KNOT 와 암호화의 발상법 / GW84 와 압축의 발상법 관련자료 시연 PHASE 3 코드발상법