600 likes | 893 Views
정보과학회 춘계 튜토리얼 WIPI 게임 솔루션 GNEX 를 이용한 모바일 게임 제작 - Ⅰ. 2004. 04. 24. 목 차. GNEX 개발배경 무선 데이터 서비스 무선인터넷 시장 현황 모바일 게임 시장동향 및 전망 VM 방식 및 Native 방식의 이해 GNEX 소개 GNEX 개요 GNEX 특징. 무선인터넷 서비스 개요. 무선인터넷 서비스란 ? 단말기의 무선 네트웍을 통해 데이터 또는 프로그램을 다운로드하여 제공하는 서비스 무선인터넷 서비스의 기술 구성
E N D
정보과학회 춘계 튜토리얼 WIPI 게임 솔루션 GNEX를 이용한 모바일 게임 제작 -Ⅰ 2004. 04. 24.
목 차 • GNEX 개발배경 • 무선 데이터 서비스 • 무선인터넷 시장 현황 • 모바일 게임 시장동향 및 전망 • VM 방식 및 Native 방식의 이해 • GNEX 소개 • GNEX 개요 • GNEX 특징
무선인터넷 서비스 개요 • 무선인터넷 서비스란? • 단말기의 무선 네트웍을 통해 데이터 또는 프로그램을 다운로드하여 제공하는 서비스 • 무선인터넷 서비스의 기술 구성 • 저작도구 : PC 상에서 다운로드 데이터를 작성하는 저작도구 S/W 프로그램 • 다운로드 서버 : 무선으로 단말기에 컨텐츠를 다운로드 해주는 서버 • 서비스 솔루션 : 단말기에 탑재되어 컨텐츠를 다운로드 하고 실행하는 S/W 모듈 • 무선인터넷 서비스의 종류 • 다운로드 되는 미디어 데이터 및 프로그램을 통칭하여 “컨텐츠”라 함 • 데이터 다운로드 서비스 : 고정된 포맷의 미디어 데이터를 제공하는 서비스 • 프로그램 다운로드 서비스 : 미디어 데이터 및 알고리즘을 포함하는 프로그램을 제공 저작도구 다운로드 서버 솔루션 탑재 단말기
무선인터넷 서비스의 등장 배경 • 음성통화의 한계를 무선서비스로 대체 • 포화상태에 이른 음성 통신시장의 매출과 이익을 확장하기 위한 전략의 일환 • 향후의 Cash Cow, 장미 빛 미래, i-mode의 성공 사례 • 이동 중에 언제 어디서라도 인터넷에 접속하여 양질의 정보를 활용할 수 있다는 점 • 고객 Needs의 증대 • 환경 요소 : 99년부터 휴대폰 가입자가 유선전화 가입자수 능가 • 무선인터넷 가입자가 유선인터넷 능가
무선인터넷 서비스 진화 2G 2.5G 3G 1998 1999 2000 2001 2002 2003 2004 동영상 메일 화상전화 VOD AOD Photo Mail 캐릭터 벨소리 Game 음성 SMS 1999.08~ 2001.10~ 2002.02~ 2002.11~ n.TOP IS-95B IS-95B CDMA2000 1x CDMA2000 1x EV-DO 1999.10~ 2001.01~ 2001.11~ 2003.02~ PersNetⓝ IS-95B IS-95B CDMA2000 1x EV-DO CDMA2000 1x
컨텐츠 제공기술의 발전 • 단말기의 발전 및 무선네트웍의 고속화 컨텐츠 제공기술발전 2000 ~1999 2001 2002/3 네 트 웍 IS-95A <14.4kbps IS-95B <57.6kbps cdma2000-1x <144kbps 1xEv-DO <2M bps 단 말 기 65k color 40 poly MIDI 카메라폰 흑백LCD 1 poly sound 4Gray LCD 4poly MIDI 256 Color LCD 16 poly MIDI 멀티미디어化 트루칼라이미지 40poly벨소리 VOD 단순 Text 이모티콘(#^^#;;) 모노그래픽 단음벨소리 컨 텐 츠 칼라 Text 칼라이미지 16poly벨소리 단순Text 4Gray이미지 4poly벨소리 Text-based Multimedia
무선인터넷 시장 현황 [1/2] • 2년 연속 큰폭의 외형적 성장 • 무선인터넷 단말기 보급대수 3,100만 명으로 일본에 이어 보급율 세계 2위 • 데이터서비스 시장규모 2조원대 돌파, 전년대비 성장율 연 70% • cdma 2000 1x 가입자 → 2,482만(2003.12) 2003년 사업자별 무선인터넷 가입자 추이 국내 무선인터넷 시장규모 추이 (단위: 억원) (단위: 천명) [자료 : ATLAS Research Group, 2004.2]
무선인터넷 시장 현황 [2/2] • 새로운 성장동력으로 부상한 무선데이터 서비스 • EV-DO 서비스 출시 후 고기능 단말 보유자를 중심으로 데이터 ARPU 증가 • 이통사의 데이터서비스 매출 비중이 20% 수준에 육박 이통사별 무선인터넷 ARPU ’03 이통사별 무선인터넷 매출액 규모 [자료 : ATLAS Research Group, 2004.2]
모바일 게임 시장 동향 [1/3] • 게임 시장의 폭발적 성장 • 2003년 1,955억원 → 2004년 2,932억원 예상 (한국게임산업개발원 2003.7) • VM단말기의 보급 확대와 무선인터넷에 대한 인식의 확대로 인한 결과 • VM중심의 서비스 확대 • WAP, VM 공존체제 → VM중심의 서비스가 증가 • 컬러단말기와 고급 사양의 핸드폰 출시로 양적/질적으로 높은 퀄러티의 게임 서비스 제공 • 게임요금 부과형태의 다양화 • 기존의 다운로드당 과금 → 다양한 네트워크 게임의 출시로 정액과금, 판당과금, 패킷당 과금으로 다양화 무선데이터 서비스 이용율 [자료 : ATLAS Research Group, 2004.2]
모바일 게임 시장 동향 [2/3] • 모바일 게임 이용자의 선호게임 장르 • 보드게임이 가장 높은 비율 차지 [자료 : 2003게임백서, 한국게임산업개발원]
모바일 게임 시장 동향 [3/3] • 모바일 게임 이용자별 하루 평균 게임 이용시간 [자료 : 2003게임백서, 한국게임산업개발원]
모바일 게임 시장 전망 • 모바일 게임 구동환경의 진화 • 단말기의 최적화로 인해 데이터 전송속도가 빨라짐 • 가속화 칩이 부착된 단말 출시 • 멀티미디어 서비스 제공이나 네트워크 플레이가 원활하게 제공 • CP의 수익성 제고 및 시장 확대 • 모바일 게임의 이용자 확대 및 매니아 층 형성 • PC, 온라인, 아케이드 게임업체들의 모바일 게임 시장 진입 증가 • CP업체들은 웹과의 다양한 연동 서비스, 특화된 장르나 고유 캐릭터 등으로 차별화 전략을 펼칠 것으로 보임 • 모바일 게임의 해외 수출 증대 • 해외에서도 많은 나라가 VM 플랫폼을 탑재 → 경쟁력을 확보한 국내 업체들의 해외진출이 가속화될 전망 • 중국과 동남아에서 모바일 이용자가 폭발적으로 증가 → 온라인 게임에 익숙한 이용자들을 모바일 게임으로 끌어들일 수 있을 것으로 예상
Virtual Machine의 이해 • VM(Virtual Machine) 이란? • C, Java 프로그램을 컴파일 하여 중간언어(sgs, bytecode)를 생성하여중간언어 형식의 컨텐츠를 다운로드 하여 단말기에 탑재된 VM에서 실행 • H/W Processor(= Real Machine)의 동작을 시뮬레이션 하는 S/W으로서Application을 실행하는 VM 부분과 Application에 호출하는API Library로 구성됨 • 대표적인 VM으로 Java 언어를 사용하는 SUN Microsystems의 Java VM과C 언어를 사용하는 신지소프트의 GVM / GNEX가 있음 • VM 방식의 특징 • H/W 독립성 : H/W가 변경되더라도 그에 관계없이 동일한 VM Application 실행 • 안정성 : VM Application에 오류가 있어도시스템에 영향을 주지 않음 • 이식성 : S/W로 구현되어 있어 다양한 H/W에 쉽게 이식할 수 있음 • Native 방식에 비해 알고리즘 코드 부분의 실행 속도가 느림 VM Application VM (Native Application) API (Native Library) H/W Processor VM 방식의 구조
Native 방식의 이해 • Native 방식의 솔루션 • C 프로그램을 단말기 CPU에 맞는 컴파일러로 컴파일 하여 object를 생성하여단말기에 다운로드 하여 단말기 S/W의 일부로 로딩하여 실행 • 단말기 CPU로 Application을 실행하므로Application에서 호출하는 API Library 위주로 구성됨 • 대표적인 Native 방식 솔루션으로 Qualcomm의 BREW와 표준 플랫폼 WIPI가 있음 • Native 방식의 특징 • H/W 의존성 : 단말기 H/W와 OS의 특성에 따라 Application의 변경 필요 • 보안성 취약 : Application의 오류로 인해 시스템에 영향을 줄 수 있음 • VM 방식에 비해 알고리즘 코드 부분의 실행 속도가 빠름 Native Application API (Native Library) H/W Processor Native 방식의 구조
VM & Navite 실행 방식 비교 VM 방식 Native 방식 H/W 독립성 H/W 독립적 (H/W 변경시 컨텐츠수정 불필요) H/W 의존적 (H/W 변경시 컨텐츠 수정 필요) 시스템 보안성 보안성 확보됨 (컨텐츠가 시스템 메모리에 접근할 수 없음) 보안성 확보 안됨 (컨텐츠가 시스템 메모리에 접근할 수 있음) H/W 변경에 대한 확장성 우수함 (VM S/W 변경으로 확장 및 이식 용이) 확장성/ 이식성 H/W 변경에 대한 확장성 취약 코드 실행 부분을 H/W로 처리하여 복잡한 계산 실행 속도 빠름 실행성능 코드 실행 부분을 S/W로 처리하여 코드 부분의 실행 속도 느림 검증과정이 필요하므로 컨텐츠 시험에 많은 시간 소요 컨텐츠 개발 검증과정이 불필요하여 컨텐츠 개발 및 제공 용이 용도 안정성이 확보되고 개발이 용이하므로 실행속도에 문제가 없는 게임 등과 같은 End-User용 컨텐츠 개발에 적합 안정성 확보가 어렵지만 실행성능이 보장되므로 동영상 Codec 등과 같은 전문 솔루션 개발에 적합
다운로드 서버 (플랫폼 활용) GNEX 탑재 단말기 개발도구 “GNEX IDE” GNEX 개요 • 최초의 WIPI 게임 컨텐츠 솔루션: WIPI 어플리케이션 형태로 설계, 제작된 게임 서비스 어플리케이션 • GNEX 컨텐츠 개발도구로 게임 제작 • 플랫폼을 통해 무선으로 게임 다운로드 • 플랫폼에 탑재된 GNEX로 게임 실행 • 서비스 시나리오
GNEX컨텐츠 GPS Ext. Memory Ext. Device Serial Port GNEX 특징 [1/2] • 빠른 실행속도 • Mobile C 기반의 32bit Virtual Machine 채용 • 우수한 Code Optimization 성능 • 고속 이미지 출력 알고리즘 적용 • 더욱 화려해진 그래픽 구현 • 더욱 다양한 표현 능력의 2D Effect • OpenGL 3D 그래픽 라이브러리 • 고성능 게임 실행 가능 • 다양한 멀티미디어 솔루션 연동 기능 • GNEX 컨텐츠 내에서 SIS 애니메이션 재생 • 게임과 동영상을 오가는 멀티미디어 컨텐츠 구현 • 다양한 외부 접속 장치를 손쉽게 개발 가능
GNEX 특징 [2/2] • 더욱 강력해진 컨텐츠 제작 기능 • 컨텐츠 생산성을 향상시키는 통합 개발 도구 제공 • 크기 제한 해소로 대용량 컨텐츠 개발 가능 • 네트웍 기능 개선으로 손쉬운 유무선 연동 기능 구현 • WIPI를 통한 컨텐츠 실행 제어 • WIPI Event Manager를 통해 각종 이벤트 수신 • 단말기의 HW 또는 시스템 SW 실행 제어 • 단말기의 데이터를 이용할 수 있도록 하는 기능 제공 • 순수 국산 기술로 개발되어 해외에 로열티를 내지 않음 • 국내 기술로 개발된 MobileC 컴파일러 • 자체 기술로 개발된 VM Interpreter
정보과학회 춘계 튜토리얼 WIPI 게임 솔루션 GNEX를 이용한 모바일 게임 제작 -Ⅱ 2004. 04. 24.
목 차 • GNEX 구조의 이해 • GNEX 구조 • Event Handler • Core Engine • Mobile C 프로그래밍 • Mobile C 언어 – Feature • Language Specification • Programming Structure • Simple Example
GNEX Contents GVM Contents GNEX Engine Platform(WITOP,WIPI) Native S/W GNEX 구조 [1/2] • Platform • WITOP & WIPI • Execution • 하위 호환성을 위한 기존 컨텐츠 • GNEX로 구현된 컨텐츠 • GNEX Engine • Unix Level Socket 지원 • Long Key & Release Key Event 지원 • Camera & VOD API 지원 • Serial 통신 API • Agent 모드 실행 • 컨텐츠 처리 용량 확대 • 컨텐츠별 file system 지원 • Channel 기능 지원 • Ma5 음원 지원 Platform & Machine Independent Structure
GNEX 구조 [2/2] • GNEX Virtual Machine • 컨텐츠 해석 모듈 • 게임/멀티미디어에 특화 • 빠르고 안정적 실행환경 제공 • GNEX Kernel • 다양한 시스템 인터페이스 제공 • 메모리 매니저 탑재로 시스템 보호 • 컨텐츠 사이즈 및 Heap 메모리 제약해소 • GNEX Event Handler • 다양한 이벤트들을 처리할 수 있는 이벤트 처리기 탑재 • 고사양의 하드웨어 인터페이스도 쉽게 처리 • MIDD(Mobile Interface Device Driver) • 플랫폼 Function 함수 호출 및 결과 전달
GNEX Event *.sgs Event Translator GNEX Core Event 발생 Platform 관련 API 호출 GNEX Event Handler • GNEX Event 종류 • Start, End, TimeOut, KeyPress, RS, Result, SMS, Receive (2X Network 호환) Event • WITOP Platform Event • Application, CTL, Timer, KeyPress, Tel, Network, Sound, Serial, VOD Event • WIPI Platform Event • UI, Application Event, CallBack Function • Event Translator • 플랫폼 등 하단에서 올라오는 Event를 받아 GNEX Event로 변환 • GNEX Event를 처리할 수 있도록 GNEX Kernel에 Passing • Event Handling
GNEX Core Engine [1/2] • GNEX Core • GNEX Engine을 탑재 • Stack Machine • GVM Engine 호환 • 16bit machine • Contents size & Heap Memory Limited • Application Type(Free, Server, Stand Alone) • GNEX Engine • 32bit machine • Contents size & Heap memory Unlimited • Static Library 확장 용이 • Network Contents 개발 용이 • Extended VOD, Channel API 지원 • Camera API 지원 • Agent Type 추가 *.sgs Contents Loading Contents Loader Instruction Fetch Result GNEX Core
GNEX Core Engine [2/2] • SAL(Sinji Assembler Language) Instruction Set • 1byte OP Code + Operand • Stack OP Code • PUSHC, PUSHX, PUSHZ, POPX, POPIC etc • Calculation OP Code • INC, DEC, ADD, SUB, DIV, MOD, AND etc • Assign OP Code • SETX, SETI, SETC etc • Control OP Code • GTJP, UJP, CALL, CALLS etc • Indirect OP Code • STNX, STNI, LDRZ, IXA etc
Mobile C 언어 - Feature • Mobile C 란? • 표준 ANSI C 기반으로 단말기 환경에 최적화된 언어 • Feature • Machine Independent Language • 단말기용에 적합한 규격으로 실행 속도 빠름 • Event-Driven실행 모델 • 단말기의 Embedded System에 적합한 프로그래밍 모델 • Contents 개발에 용이한 static library 내장 • Graphic 관련 API, Network 관련 API, 하드웨어 구동 및 폰 정보 API 등 • 엄격한 Type Checking • Efficient & Compact Code Generation • Application Header Information 정의 기능 제공
Data Type 지원유무 Description 정수형 int O o 4byte signed integer 열거형 enum O o 열거형 변수 사용 불가 o 심볼로 정의되지 않는다. 상수형 const O o 상수형은 int형, media형, 정수형 배열, 미디어형 배열 등 모든 자료형에 대해 정의가능 하다. o 정수형 상수는 심볼로 정의되지 않는다. 실수형 float, double X 문자형 char X String 응용으로 처리가능 string str = "abc"; PutChar(str, 0, 'A'); 1,2차원 정수형 배열 O o Element수 최대 255개 o 로컬변수 선언시 초기치 정의 불가 o 함수의 매개변수 및 return type으로 사용불가 포인터 O o *연산자를 사용하여 단순변수와 1차원 배열의 정의가 가능하다. o &연산자를 이용하여 int형의 pointer의 초기화가 가능하다. o Pointer변수 사이의 연산이 가능하다. o 포인터변수의 Argument Passing이 가능하다. o 배열에 대한 Pointer로서 Access가 가능하다. o Pointer 주소연산이 가능하다. o Function Pointer를 지원하지 않는다. o malloc()함수를 지원하지 않는다. 구조체 struct O o struct tag형태 또는 tag가 없는 형태로 구조체 선언 가능 o 구조체 멤버로 단순변수, 배열, 포인터, 구조변수 사용 가능 o pointer와 value연산자는 한 expression에서 4번 이상 사용 불가 o 함수의 매개변수 및 return type으로 사용불가 o 구조배열의 경우 1차원 배열만 가능 유니온 union X Language Spec [1/4] • Data Type
Language Spec [2/4] • Extended Data Type Data Type Description string string strAddr, strName; const string str = "abc"; 문자열의 길이는 최대 65535로 제한한다. string 1차원 배열 const string str[] = { "Hello", "World" }; string 배열은 1차원 배열만 가능하다 배열의 Element수는 최대 65535개까지 가능하다. 배열의 초기값을 줄 수 있으며, 초기값의 개수로 배열의 크기를 정할 수 있다. image, sound, voc const image imagedata = {0x00, …}; const sound audiodata = {0x00, 0x02, …}; const voc vocdata = { 0x04, 0x02, …}; data의 내용은 0~255범위의 숫자 데이터의 나열로 나타난다. media data의 크기에 대한 제약은 없다. image, sound, voc 1차원 배열 const image imagedata[] = { { 0x00, …. }, { 0x00, …} }; const sound audiodata[] = { { 0x02, …. }, { 0x02, …} }; const voc vocdata[] = { { 0x04, …. }, { 0x04, …} }; Image, sound, voc 각각의 배열은 1차원 배열만 가능하다 배열의 Element수는 최대 65535개까지 가능하다. 배열의 초기값을 줄 수 있으며, 초기값의 개수로 배열의 크기를 정할 수 있다.
Language Spec [3/4] • Operator Operator 지원유무 Description 산술 연산자 O + – * / % 관계 연산자 O > >= < <= == != 논리 연산자 O && || ! 증가 및 감소 연산자 O ++ -- 비트 연산자 O & | ^ << >> ~ 배정 연산자 O = += -= *= /= %= 배열 연산자 O [ ] 함수 연산자 O () 콤마 연산자 X exp, exp 캐스트 연산자 X (자료형) 포인터 연산자 O * & 구조체 연산자 O –> . 크기 연산자 O sizeof object sizeof (type name) byte 단위로 계산된다. 조건식 연산자 O expr1 ? expr2 : expr3
Language Spec [4/4] • Statement Statement Description 배정문 i = j = k = 0; i += j; vector[i=100] = exp; matrix [i] [j – 1] = i * 10 + j; 조건문 If문, switch문 반복문 for문, while문, do-while문 분기문 goto, break, continue, return 혼합문 혼합문의 내부 블록에서의 지역변수 선언 불가 void main() { int i; string strTmp; for (i=0; i < 4; i++) { int a; a++; // 오류 발생 MakeStr1(strTmp, “cnt=%d”, a); DrawStr(0, a*10, strTmp); } Flush(); }
Mobile C 언어 –Programming Structure • Event-Driven 방식의 언어 • ANSI C : Procedure Language • Mobile C : Event-Driven Language • Event Handler 의 집합 • Programming Structure • Header Section • Program ID 지정 • 실행 환경 정의 • Data Section • Image, Audio file include • Variable 선언 • Code Section • Event Handler Set %{ #DEFINE PLAYERVER 4 #DEFINE LCDCLASS 255 #DEFINE IMAGETYPE 255 #DEFINE AUDIOTYPE 255 #DEFINE CARRIERTYPE 1 #DEFINE APPTYPE 1 #DEFINE APPCPID 1000 #DEFINE APPID 111 #DEFINE APPNAME “Hello World" #DEFINE COMPTYPE 0 #DEFINE AGENTTYPE 0 #DEFINE VALIDCOUNT 255 #DEFINE VALIDTERM 255 #DEFINE DIRECTRUN 0 #DEFINE APPVER 1 %} #include “..\Sscript.h” #include “Test_sound.ssd” int time = 0; string str; void main(){ ClearWhite(); PlaySound(song_ma1); DrawTextSolid(5,5,"Hello World!"); Flush(); }
Programming Structure - Header Section • Header Section • 프로그램 실행 환경 설정 • 소스 파일의 맨 윗부분에 정의 • “%{“와 “%}” 사이에 기술 Key Word Description PLAYERVER Application의 Target VM 버전 LCDCLASS Application의 Target LCD 크기 분류 IMAGETYPE Application의 Target LCD 색상 분류 AUDIOTYPE Application의 Target Audio type 분류 CARRIERTYPE Application Service 주체 정보 APPTYPE Application의 Run Type(StandAlone, Sever,Free) APPCPID Contnets Provider ID APPID Application ID APPNAME Application Name COMPTYPE Contents 압축 설정 여부 Contents 실행 방식 (Normal, Agent) AGENTTYPE VALIDCOUNT Contents 유효 실행 회수 VALIDTERM Contents 유효 실행 기간 DIRECTRUN Contents 저장 여부 결정 정보 APPVER Application 의 Version 정보
Programming Structure - Data Section • Data Section • File Include • Header File Include • Define 이나 자료형 선언된 파일 include • Resource File Include • Resource Editor를 통해 생성한 파일 include • Image Master : VDI 이미지 Data 파일 • Audio Master : Audio Data 파일 • MobileC File Include • SSL(Sinji Static Library) File Include • Variable 선언 • Global Variable 선언 및 초기화
Programming Structure –Code Section [1/2] • Code Section • Event handler implement • 단말에서 올라오는 이벤트를 처리하기 위한 함수 구현 • Application Start • EVENT_START() or main() • Key Event • EVENT_KEYPRESS() • TimeOut Event • EVENT_TIMEOUT() • Network Event • EVENT_NETWORK() • SMS Event • EVENT_SMSRECEIVE() • RS-232C EVENT • EVENT_RSEVENT(), EVENT_RSRECEIVE() • User-defined Function implement void EVENT_NETWORK(){ … } void EVENT_TIMEOUT()[ … } void EVENT_KEYPRESS(){ … } void EVENT_SMSRECEIVE(){ … } … int user_defined()( … } main(){ … }
Programming Structure –Code Section [2/2] void EVENT_KEYPRESS() { if( swData == SWAP_KEY_RELEASE ) return; switch (swData) { case SWAP_KEY_UP: case SWAP_KEY_STAR: MenuDisplay(); break; case SWAP_KEY_DOWN: case SWAP_KEY_SHARP: Testisplay(); break; case SWAP_KEY_0: case SWAP_KEY_OK: SubMenuDisplay(); break; case SWAP_KEY_1: action1(); break; case SWAP_KEY_2: action2(); break; } } void EVENT_NETWORK() { switch(swData) { case NETWORK_TYPE_CONNECT: TCPConnect(S_EVENT_NETWORK, swData); break; case NETWORK_TYPE_SEND: TCPDelay(S_EVENT_SEND, swData); break; case NETWORK_TYPE_RECV: TCPDelay(S_EVENT_RECEIVE, swData); break; case NETWORK_TYPE_DISCONNECT: switch(swData2) { case 0: DrawText(cX, cY, "Close Fail!"); Flush(); break; case 1: DrawText(cX, cY, "Close Success!"); Flush(); break; } } }
Simple Example [1/4] –Normal Contents %{ #DEFINE PLAYERVER 4 #DEFINE LCDCLASS 255 #DEFINE IMAGETYPE 255 #DEFINE AUDIOTYPE 255 #DEFINE CARRIERTYPE 1 #DEFINE APPTYPE 1 #DEFINE APPCPID 3000 #DEFINE APPID 311 #DEFINE APPNAME "00311_MMI" #DEFINE COMPTYPE 0 #DEFINE AGENTTYPE 0 #DEFINE VALIDCOUNT 255 #DEFINE VALIDTERM 255 #DEFINE DIRECTRUN 0 #DEFINE APPVER 1 %} int ax=0, ay=0, bx=1, by=30; void main() { ClearWhite(); Flush(); SetTimer(2000, 1); SetTimer1(250, 1); } void EVENT_TIMEOUT() { switch(swData){ case 0 : ax += 10; ay += 10; CopyImage(ax, ay, img_a); Flush(); break; case 1 : bx += 10; by += 10; CopyImage(bx, by, img_b); Flush(); break; } }
Simple Example [2/4] –Agent Contents #DEFINE PLAYERVER 4 #DEFINE LCDCLASS 255 #DEFINE IMAGETYPE 12 #DEFINE AUDIOTYPE 255 #DEFINE CARRIERTYPE 1 #DEFINE APPTYPE 1 #DEFINE APPCPID 3000 #DEFINE APPID 341 #DEFINE APPNAME "gt341_Agent" #DEFINE COMPTYPE 0 #DEFINE AGENTTYPE 1 #DEFINE VALIDCOUNT 255 #DEFINE VALIDTERM 255 #DEFINE DIRECTRUN 0 #DEFINE STORETYPE 0 #DEFINE APPVER 1 %} #include "..\common\sscript.h" #include "masi7_c.sbm" #include "sound_ma2.ssd" #include "Title1.sbm" static const int INITSpeed = 400; static const int Max_Time = 144; static const int Time_List[] = { 1,-999,1,2,1,1,1,-999,1,12,4,...}; int hwcfg[4]; int time_index; int lcd_cx, lcd_cy, tot_index; int temp1; string OutStr; void main() { GetHwConfig(hwcfg); SetKeyTone(0); ResetTimer(); ResetTimer1(); ResetTimer2(); lcd_cx = swWidth/2; lcd_cy = swHeight/2; time_index = -7; DrawMain(); SetTimer (INITSpeed, S_TM_REPEAT); } Void DrawMain() { … … … } void EVENT_TIMEOUT() { switch (swData) { case 0: Flush(); DrawMain(); break; } }
Simple Example [3/4] –Agent Contents Masi7_c.sbm Sound_ma2.ssd const sound baby7 = { 0x02, 0x00, 0x4D, 0x4D, 0x4D, 0x44, 0x00, 0x00, 0x06, 0x93, 0x43, 0x4E, 0x54, 0x49, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x32, 0x3A, 0x04, 0x2C, 0x4D, 0x54, 0x52, 0x01, 0x00, 0x00, 0x02, 0x9A, 0x00, 0x00, 0x02, 0x02, 0xAA, 0xAA, 0x4D, 0x73, 0x70, 0x49, 0x00, 0x00, 0x00, 0x10, 0x73, 0x74, 0x3A, 0x00, 0x00, 0x00, 0x03, 0x2C, 0x73, 0x70, 0x3A, 0x00, 0x00, 0x01, 0x81, 0x2C, 0x4D, 0x74, 0x73, 0x75, 0x00, 0x00, 0x00, 0xE7, 0xFF, 0xF0, 0x12, 0x43, 0x03, 0x00, 0x00, 0x50, 0x40, 0x01, 0x24, 0x3F, ……… 0xF2, 0x02, 0x00, 0x00, 0xCE, 0x00, 0xFA, 0x09, 0x2E, 0x00, 0x6C, 0x75, 0x24, 0x82, 0x05, 0x14, 0x00, 0x61, 0x81, 0x73, 0x00, 0x21, 0x02, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x61 } const image Sub_Image0[100] = { { 0x07, 0x78, 0x50, 0x3C, 0x28, 0x00, 0x01, 0x02, 0x03, 0x13, 0x14, 0x34, 0x3B, 0x56, ……… }, { 0x07, 0x3E, 0x4F, 0x1F, 0x28, 0x01, 0x02, 0x03, 0x13, 0x14, 0x34, 0x3B, 0x3C, 0x56, ……… }, ……… { 0x08, 0x78, 0x50, 0x3C, 0x28, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, ……… } }
Simple Example [4/4] –Agent Contents • Agent Contents 에뮬레이터 실행 예
정보과학회 춘계 튜토리얼 WIPI 게임 솔루션 GNEX를 이용한 모바일 게임 제작 - Ⅲ 2004. 04. 24
목 차 • GNEX 개발 도구 • GNEX IDE • GNEX Emulator • Resource Editor • GNEX 게임 개발 및 서비스 • GNEX 게임 제작 과정 • GNEX Contents Demo • SKT를 통한 상업 서비스 • GNEX 경쟁력 & 개발효과 • 향후 단말기 게임 시장 • Q&A
……. …….. …….. …….. ……… *.sal *.sgs GNEX Assembler GNEX Compiler MobileC program SGS Building Process GNEX 개발도구 [1/2] • Visual Studio 스타일의 통합 개발 환경 “GNEX IDE” • Project Manager : Contents project generation • Skeleton Generation • Automatic Build • Editor : MobileC program coding • Syntax Highlight • Builder • SGS file generation from MobileC program with GNEX Compiler and Assembler • Debugger • Break-Point • Source Tracer • Watch Source Editor [ GNEX IDE ]
GNEX 개발도구 [2/2] • GNEX Emulator • Skin 적용으로 단말기별 특성 표현 • LCD Type • Audio Type • Memory Size • GNEX Feature Selection • Resource Editor • Image Master • BMP를 읽어 VDI로 변환 • Block, Transparent 설정 • Audio Master • 각종 오디오 데이터를 읽어,GNEX Audio 데이터로 변환 • 미리 듣기 기능 • 3D Toolkit • 3D Object Animation, 3D Character Animation 구현
GNEX 게임 제작 과정 [1/3] • 시장 환경 분석 • 개발 환경 고려 • 컨텐츠 시장 규모 분석 • GNEX Feature 분석 • 현재 서비스 중인 컨텐츠 분석 • 현재 서비스중인 유사 컨텐츠의 시장 규모 파악 • 해당 통신사의 CP 정책 • 컨텐츠 선정 • 기술력(강점) 분석 → 컨텐츠의 장르 선정 • 현재 서비스되고 있는 유사 컨텐츠 분석 • 시장 규모 및 기능성 파악 • 동일 컨텐츠의 유무 What’s Kind of Contents?
GNEX 게임 제작 과정 [2/3] • 컨텐츠 기획 • 세부내용 기획 • 신규 컨텐츠 : 사업성 부각 중요 • 유사 컨텐츠 : 장점 및 차이점을 부각시킴 • 개발 환경(GNEX)의 고려 • Media 사운드(Ma5, Ma3, …) 및 이미지(사이즈 및 컬러) • Mobile C : 지원 API 고려 • GNEX Feature : 개발 컨텐츠의 GNEX 기능 고려 • VOD, VOD Data Control Support ? • CAM, Photo Data Control Support ? • Channel Sound Support ? • 3D Contents Support? How ?
Contents Server GNEX 게임 제작 과정 [3/3] • 컨텐츠 개발 • 리소스 생성 • Image Master, Audio Master, 3D Toolkit • GNEX IDE를 이용한 컨텐츠 개발 • Project Manager를 이용한 Project 생성 • Source Editor를 이용해 Mobile C로 컨텐츠 개발 • Compile & Assemble => sgs 파일 생성 • Emulator 를 이용한 테스트 • Debugger를 이용한 디버깅 • 단말 테스트 • GVM Club(www.gvmclub.com) 계정 신청 • WAP Page 제작 • 테스트 서버에 Upload • 실제 단말에서 테스트 서버에 접속하여 다운로드 및 실행 테스트
GNEX Contents Demo [1/2] • 2D Contents
GNEX Contents Demo [2/2] • 3D Contents
Service Scenario Download contents Request contents Execute contents WAP G/W Upload contents Download Server Develop contents Using GNEX IDE Terminal contents Provider
SKT를 통한 상업 서비스 • 컨텐츠 서비스를 위한 절차 CP 업체 게임제안 불채택 통보 수정.보완 게임평가단 품질/과금 메뉴(상.하위링크) skthost.com 채 택 양 호 검증 신청 N Y Y CP 업체 Y 서비스추가신청 SKT 담당 CRS에 신청 테스트 완료 CRS담당 메뉴추가신청 SKT검증담당 품 의 가승인 Service Open 승 인 게임 업로드