2004. 04. 24

59
WIPI 게게게게게 2004. 04. 24. 정정정정정 정정 정정정정 WIPI 정정 정정정 GNEX 정 정정정 정정정 정정 정정 -

Upload: frayne

Post on 12-Jan-2016

47 views

Category:

Documents


0 download

DESCRIPTION

정보과학회 춘계 튜토리얼 WIPI 게임 솔루션 GNEX 를 이용한 모바일 게임 제작 - Ⅰ. 2004. 04. 24. 목 차. GNEX 개발배경 무선 데이터 서비스 무선인터넷 시장 현황 모바일 게임 시장동향 및 전망 VM 방식 및 Native 방식의 이해 GNEX 소개 GNEX 개요 GNEX 특징. 무선인터넷 서비스 개요. 무선인터넷 서비스란 ? 단말기의 무선 네트웍을 통해 데이터 또는 프로그램을 다운로드하여 제공하는 서비스 무선인터넷 서비스의 기술 구성 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

2004. 04. 24.

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 -Ⅰ

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 -Ⅰ

Page 2: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

목 차목 차목 차목 차

GNEX 개발배경무선 데이터 서비스무선인터넷 시장 현황모바일 게임 시장동향 및 전망VM 방식 및 Native 방식의 이해

GNEX 소개GNEX 개요 GNEX 특징

Page 3: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

무선인터넷 서비스 개요무선인터넷 서비스 개요무선인터넷 서비스란 ?

단말기의 무선 네트웍을 통해 데이터 또는 프로그램을 다운로드하여 제공하는 서비스

무선인터넷 서비스의 기술 구성저작도구 : PC 상에서 다운로드 데이터를 작성하는 저작도구 S/W 프로그램다운로드 서버 : 무선으로 단말기에 컨텐츠를 다운로드 해주는 서버 서비스 솔루션 : 단말기에 탑재되어 컨텐츠를 다운로드 하고 실행하는 S/W 모듈

무선인터넷 서비스의 종류다운로드 되는 미디어 데이터 및 프로그램을 통칭하여 “컨텐츠”라 함데이터 다운로드 서비스 : 고정된 포맷의 미디어 데이터를 제공하는 서비스프로그램 다운로드 서비스 : 미디어 데이터 및 알고리즘을 포함하는 프로그램을 제공

저작도구 다운로드 서버 솔루션 탑재 단말기

Page 4: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

무선인터넷 서비스의 등장 배경무선인터넷 서비스의 등장 배경음성통화의 한계를 무선서비스로 대체

포화상태에 이른 음성 통신시장의 매출과 이익을 확장하기 위한 전략의 일환향후의 Cash Cow, 장미 빛 미래 , i-mode 의 성공 사례

이동 중에 언제 어디서라도 인터넷에 접속하여 양질의 정보를 활용할 수 있다는 점고객 Needs 의 증대

환경 요소 : 99 년부터 휴대폰 가입자가 유선전화 가입자수 능가무선인터넷 가입자가 유선인터넷 능가

Page 5: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

무선인터넷 서비스 진화무선인터넷 서비스 진화

1998 1999 2000 2001 2002 20033G

2G

캐릭터벨소리

Game PhotoMail

2.5G

화상전화동영상메일

VODAOD

2004

SMS음성

1999.10~

PersNetⓝ

IS-95B

2001.01~

IS-95B

2001.11~ 2003.02~

CDMA2000 1x EV-DO

CDMA2000 1x

n.TOP

IS-95B IS-95B

1999.08~ 2001.10~

CDMA2000 1x

2002.02~ 2002.11~

CDMA2000 1x EV-DO

Page 6: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

컨텐츠 제공기술의 발전컨텐츠 제공기술의 발전단말기의 발전 및 무선네트웍의 고속화 컨텐츠 제공기술발전

네트웍

~1999 2000 2001 2002/3

단말기

컨텐츠

IS-95A

<14.4kbps

IS-95B

<57.6kbps

cdma2000-1x

<144kbps

1xEv-DO

<2M bps

흑백 LCD

1 poly sound

4Gray LCD

4poly MIDI

256 Color LCD

16 poly MIDI

65k color

40 poly MIDI

카메라폰

단순 Text

이모티콘 (#^^#;;)

모노그래픽단음벨소리

단순 Text

4Gray 이미지4poly 벨소리

칼라 Text

칼라이미지16poly 벨소리

멀티미디어化트루칼라이미지40poly 벨소리VOD

Text-based Multimedia

Page 7: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

무선인터넷 시장 현황 [1/2]무선인터넷 시장 현황 [1/2]2 년 연속 큰폭의 외형적 성장

무선인터넷 단말기 보급대수 3,100 만 명으로 일본에 이어 보급율 세계 2 위데이터서비스 시장규모 2 조원대 돌파 , 전년대비 성장율 연 70% cdma 2000 1x 가입자 → 2,482 만 (2003.12)

[ 자료 : ATLAS Research Group, 2004.2]

15,492

16,104

16,532

16,998

10,220

10,308

10,267

10,267

4,061

4,033

4,072

4,165

0 5,000 10,000 15,000 20,000

3월

6월

9월

12월

SKT KTF LGT

2003 년 사업자별 무선인터넷 가입자 추이

2003 년 사업자별 무선인터넷 가입자 추이

13,304

22,595

36,429

0

5,000

10,000

15,000

20,000

25,000

30,000

35,000

40,000

2002년 2003년 2004년

( 단위 : 천명 )

국내 무선인터넷 시장규모 추이국내 무선인터넷 시장규모 추이

( 단위 : 억원 )

Page 8: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

무선인터넷 시장 현황 [2/2]무선인터넷 시장 현황 [2/2]새로운 성장동력으로 부상한 무선데이터 서비스

EV-DO 서비스 출시 후 고기능 단말 보유자를 중심으로 데이터 ARPU 증가이통사의 데이터서비스 매출 비중이 20% 수준에 육박

사업자 2002.12 2003.12

SKT 5,569 원 (12%) 7,766 원 (17%)

KTF3,268 원(10.4%)

3,832 원(12.4%)

LGT 2,498 원 (7.8%) 2,820 원 (8.1%)

사업자 매출액 성장률

SKT 1 조 3,201 억원 80 %

KTF 3,618 억원 28 %

LGT 1,469 억원 29 %

이통사별 무선인터넷 ARPU이통사별 무선인터넷 ARPU ’03 이통사별 무선인터넷 매출액 규모’03 이통사별 무선인터넷 매출액 규모

[ 자료 : ATLAS Research Group, 2004.2]

Page 9: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

모바일 게임 시장 동향 [1/3]모바일 게임 시장 동향 [1/3]게임 시장의 폭발적 성장

2003 년 1,955 억원 → 2004 년 2,932억원 예상 ( 한국게임산업개발원 2003.7)VM 단말기의 보급 확대와 무선인터넷에 대한 인식의 확대로 인한 결과

VM 중심의 서비스 확대WAP, VM 공존체제 → VM 중심의 서비스가 증가컬러단말기와 고급 사양의 핸드폰 출시로 양적 / 질적으로 높은 퀄러티의 게임 서비스 제공

게임요금 부과형태의 다양화기존의 다운로드당 과금 → 다양한 네트워크 게임의 출시로 정액과금 , 판당과금 , 패킷당 과금으로 다양화

서비스 구분 이용경험

문자메시지 98.6%

무선인터넷 서비스 73.9%

게임 다운로드 50.3%

멀티미디어 서비스 25.9%

무선데이터 서비스 이용율무선데이터 서비스 이용율

[ 자료 : ATLAS Research Group, 2004.2]

Page 10: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

모바일 게임 시장 동향 [2/3]모바일 게임 시장 동향 [2/3]모바일 게임 이용자의 선호게임 장르

보드게임이 가장 높은 비율 차지

1.7%

5.0%

3.3%

16.7%

1.7%

3.3%

3.3%

25.0%

1.7%

5.0%

1.7%

8.3%

5.0%

3.3%

15.0%

0% 5% 10% 15% 20% 25% 30%

기타

아동용게임

커뮤니티게임

베팅게임

경품게임

슈팅게임

스포츠게임

보드게임

교육용에듀게임

롤플레잉

어드벤처

액션대전게임

체감 시뮬레이션

/ 경영 육성 시뮬레이션

전략시뮬레이션

[ 자료 : 2003 게임백서 , 한국게임산업개발원 ]

Page 11: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

모바일 게임 시장 동향 [3/3]모바일 게임 시장 동향 [3/3]

44.1%

20.6%

23.5%

0.0%

5.9%

2.9%

2.9%

0% 5% 10% 15% 20% 25% 30% 35% 40% 45% 50%

30 분 미만

30 -1 분 시간 미만

1 -2 시간 시간 미만

2 -3 시간 시간 미만

3 -4 시간 시간 미만

4 -5 시간 시간 미만

5 시간 이상

[ 자료 : 2003 게임백서 , 한국게임산업개발원 ]

모바일 게임 이용자별 하루 평균 게임 이용시간

Page 12: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

모바일 게임 시장 전망모바일 게임 시장 전망모바일 게임 구동환경의 진화

단말기의 최적화로 인해 데이터 전송속도가 빨라짐가속화 칩이 부착된 단말 출시멀티미디어 서비스 제공이나 네트워크 플레이가 원활하게 제공

CP 의 수익성 제고 및 시장 확대모바일 게임의 이용자 확대 및 매니아 층 형성PC, 온라인 , 아케이드 게임업체들의 모바일 게임 시장 진입 증가 CP 업체들은 웹과의 다양한 연동 서비스 , 특화된 장르나 고유 캐릭터 등으로 차별화 전략을 펼칠 것으로 보임

모바일 게임의 해외 수출 증대해외에서도 많은 나라가 VM 플랫폼을 탑재 → 경쟁력을 확보한 국내 업체들의 해외진출이 가속화될 전망중국과 동남아에서 모바일 이용자가 폭발적으로 증가 → 온라인 게임에 익숙한 이용자들을 모바일 게임으로 끌어들일 수 있을 것으로 예상

Page 13: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Virtual Machine 의 이해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 방식에 비해 알고리즘 코드 부분의 실행 속도가 느림

H/W Processor

VM (Native Application)

API(Native Library)

VM 방식의 구조

VM Application

Page 14: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Native 방식의 이해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 방식에 비해 알고리즘 코드 부분의 실행 속도가 빠름

H/W Processor

API(Native Library)

Native 방식의 구조

Native Application

Page 15: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

VM & Navite 실행 방식 비교VM & Navite 실행 방식 비교

안정성 확보가 어렵지만 실행성능이보장되므로 동영상 Codec 등과 같은

전문 솔루션 개발에 적합

안정성이 확보되고 개발이 용이하므로실행속도에 문제가 없는 게임 등과 같은

End-User 용 컨텐츠 개발에 적합용도

보안성 확보 안됨( 컨텐츠가 시스템 메모리에 접근할 수 있음 )

보안성 확보됨( 컨텐츠가 시스템 메모리에 접근할 수 없음 )

시스템 보안성

검증과정이 필요하므로컨텐츠 시험에 많은 시간 소요

검증과정이 불필요하여컨텐츠 개발 및 제공 용이컨텐츠 개발

코드 실행 부분을 H/W 로 처리하여복잡한 계산 실행 속도 빠름

코드 실행 부분을 S/W 로 처리하여코드 부분의 실행 속도 느림실행성능

H/W 변경에 대한 확장성 취약H/W 변경에 대한 확장성 우수함(VM S/W 변경으로 확장 및 이식 용이 )

확장성 /이식성

H/W 의존적(H/W 변경시 컨텐츠 수정 필요 )

H/W 독립적(H/W 변경시 컨텐츠수정 불필요 )

H/W 독립성

Native 방식VM 방식

Page 16: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 개요GNEX 개요

최초의 WIPI 게임 컨텐츠 솔루션: WIPI 어플리케이션 형태로 설계 , 제작된 게임 서비스 어플리케이션

GNEX 컨텐츠 개발도구로 게임 제작플랫폼을 통해 무선으로 게임 다운로드플랫폼에 탑재된 GNEX 로 게임 실행

서비스 시나리오

개발도구“GNEX IDE”

GNEX 탑재 단말기

다운로드 서버( 플랫폼 활용 )

Page 17: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 특징 [1/2]GNEX 특징 [1/2]

빠른 실행속도Mobile C 기반의 32bit Virtual Machine 채용우수한 Code Optimization 성능고속 이미지 출력 알고리즘 적용

더욱 화려해진 그래픽 구현더욱 다양한 표현 능력의 2D EffectOpenGL 3D 그래픽 라이브러리고성능 게임 실행 가능

다양한 멀티미디어 솔루션 연동 기능GNEX 컨텐츠 내에서 SIS 애니메이션 재생게임과 동영상을 오가는 멀티미디어 컨텐츠 구현다양한 외부 접속 장치를 손쉽게 개발 가능

GPS Ext.Memory

Ext.Device

Serial Port

GNEX 컨텐츠

Page 18: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 특징 [2/2]GNEX 특징 [2/2]

더욱 강력해진 컨텐츠 제작 기능컨텐츠 생산성을 향상시키는 통합 개발 도구 제공크기 제한 해소로 대용량 컨텐츠 개발 가능네트웍 기능 개선으로 손쉬운 유무선 연동 기능 구현

WIPI 를 통한 컨텐츠 실행 제어WIPI Event Manager 를 통해 각종 이벤트 수신 단말기의 HW 또는 시스템 SW 실행 제어단말기의 데이터를 이용할 수 있도록 하는 기능 제공

순수 국산 기술로 개발되어 해외에 로열티를 내지 않음국내 기술로 개발된 MobileC 컴파일러자체 기술로 개발된 VM Interpreter

Page 19: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

2004. 04. 24.

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 -Ⅱ

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 -Ⅱ

Page 20: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

목 차목 차목 차목 차

GNEX 구조의 이해GNEX 구조Event Handler

Core Engine

Mobile C 프로그래밍Mobile C 언어 – Feature

Language Specification

Programming Structure

Simple Example

Page 21: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 구조 [1/2]GNEX 구조 [1/2]

PlatformWITOP & WIPI

Execution하위 호환성을 위한 기존 컨텐츠GNEX 로 구현된 컨텐츠

GNEX EngineUnix Level Socket 지원Long Key & Release Key Event 지원Camera & VOD API 지원Serial 통신 APIAgent 모드 실행컨텐츠 처리 용량 확대컨텐츠별 file system 지원Channel 기능 지원Ma5 음원 지원

Native S/WNative S/W

Platform(WITOP,WIPI)Platform(WITOP,WIPI)

GNEX EngineGNEX Engine

GNEX Contents

GVM Contents

Platform & Machine Independent StructurePlatform & Machine Independent Structure

Page 22: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 구조 [2/2]GNEX 구조 [2/2]GNEX Virtual Machine

컨텐츠 해석 모듈게임 / 멀티미디어에 특화빠르고 안정적 실행환경 제공

GNEX Kernel다양한 시스템 인터페이스 제공메모리 매니저 탑재로 시스템 보호컨텐츠 사이즈 및 Heap 메모리 제약해소

GNEX Event Handler다양한 이벤트들을 처리할 수 있는 이벤트 처리기 탑재고사양의 하드웨어 인터페이스도 쉽게 처리

MIDD(Mobile Interface Device Driver)플랫폼 Function 함수 호출 및 결과 전달

Page 23: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX Event HandlerGNEX Event Handler

GNEX Event 종류Start, End, TimeOut, KeyPress, RS, Result, SMS, Receive (2X Network 호환 ) EventWITOP Platform Event

Application, CTL, Timer, KeyPress, Tel, Network, Sound, Serial, VOD Event WIPI Platform Event

UI, Application Event, CallBack FunctionEvent Translator

플랫폼 등 하단에서 올라오는 Event 를 받아 GNEX Event 로 변환GNEX Event 를 처리할 수 있도록 GNEX Kernel에 Passing

Event Handling

PlatformPlatform

Event TranslatorEvent Translator

*.sgs*.sgs

GNEX CoreGNEX Core Event 발생

GNEX Event

관련 API 호출

Page 24: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX Core Engine [1/2]GNEX Core Engine [1/2]

GNEX CoreGNEX Engine 을 탑재Stack MachineGVM Engine 호환

16bit machineContents size & Heap Memory LimitedApplication Type(Free, Server, Stand Alone)

GNEX Engine32bit machineContents size & Heap memory Unlimited Static Library 확장 용이Network Contents 개발 용이Extended VOD, Channel API 지원Camera API 지원Agent Type 추가

*.sgs*.sgs

GNEX CoreGNEX Core

InstructionFetch

Result

Contents LoaderContents Loader

ContentsLoading

Page 25: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX Core Engine [2/2]GNEX Core Engine [2/2]

SAL(Sinji Assembler Language) Instruction Set1byte OP Code + OperandStack OP Code

PUSHC, PUSHX, PUSHZ, POPX, POPIC etcCalculation OP Code

INC, DEC, ADD, SUB, DIV, MOD, AND etcAssign OP Code

SETX, SETI, SETC etcControl OP Code

GTJP, UJP, CALL, CALLS etcIndirect OP Code

STNX, STNI, LDRZ, IXA etc

Page 26: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Mobile C 언어 - FeatureMobile 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 정의 기능 제공

Page 27: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Language Spec [1/4]Language Spec [1/4]Data Type

상수형 상수형 constconst OO

1,21,2 차원 정수형 배열차원 정수형 배열 OO

실수형 실수형 float, doublefloat, double XX

문자형 문자형 charchar XX

Data TypeData Type 지원유무지원유무

열거형 열거형 enumenum OO

구조체 구조체 structstruct OO

유니온 유니온 unionunion XX

정수형 정수형 intint OO

포인터포인터 OO

o o 상수형은 상수형은 intint 형형 , media, media 형형 , , 정수형 배열정수형 배열 , , 미디어형 배열 등미디어형 배열 등 모든 자료형에 대해 정의가능 하다모든 자료형에 대해 정의가능 하다 ..o o 정수형 상수는 심볼로 정의되지 않는다정수형 상수는 심볼로 정의되지 않는다 ..

o Elemento Element 수 최대 수 최대 255255 개개o o 로컬변수 선언시 초기치 정의 불가로컬변수 선언시 초기치 정의 불가o o 함수의 매개변수 및 함수의 매개변수 및 return typereturn type 으로 사용불가으로 사용불가

String String 응용으로 처리가능응용으로 처리가능 string str = "abc"; string str = "abc"; PutChar(str, 0, 'A');PutChar(str, 0, 'A');

DescriptionDescription

o o 열거형 변수 사용 불가열거형 변수 사용 불가o o 심볼로 정의되지 않는다심볼로 정의되지 않는다 ..

o struct tago struct tag형태 또는 형태 또는 tagtag가 없는 형태로 구조체 선언 가능가 없는 형태로 구조체 선언 가능o o 구조체 멤버로 단순변수구조체 멤버로 단순변수 , , 배열배열 , , 포인터포인터 , , 구조변수 사용 가능구조변수 사용 가능o pointero pointer와 와 valuevalue 연산자는 한 연산자는 한 expressionexpression에서 에서 44번 이상 사용 불가번 이상 사용 불가o o 함수의 매개변수 및 함수의 매개변수 및 return typereturn type 으로 사용불가으로 사용불가o o 구조배열의 경우 구조배열의 경우 11 차원 배열만 가능 차원 배열만 가능

o 4byte signed integero 4byte signed integer

o *o *연산자를 사용하여 단순변수와 연산자를 사용하여 단순변수와 11 차원 배열의 정의가 가능하다차원 배열의 정의가 가능하다 ..o &o &연산자를 이용하여 연산자를 이용하여 intint 형의 형의 pointerpointer의 초기화가 가능하다의 초기화가 가능하다 ..o Pointero Pointer 변수 사이의 연산이 가능하다변수 사이의 연산이 가능하다 ..o o 포인터변수의 포인터변수의 Argument PassingArgument Passing이 가능하다이 가능하다 ..o o 배열에 대한 배열에 대한 PointerPointer로서 로서 AccessAccess가 가능하다가 가능하다 ..o Pointer o Pointer 주소연산이 가능하다주소연산이 가능하다 ..o Function Pointero Function Pointer를 지원하지 않는다를 지원하지 않는다 ..o malloc()o malloc() 함수를 지원하지 않는다함수를 지원하지 않는다 ..

Page 28: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Language Spec [2/4]Language Spec [2/4]

Extended Data Type

Data TypeData Type

stringstring

string 1string 1 차원 배열차원 배열

image, sound, vocimage, sound, voc

image, sound, vocimage, sound, voc11 차원 배열차원 배열

DescriptionDescription

string strAddr, strName;string strAddr, strName;const string str = "abc";const string str = "abc";

문자열의 길이는 최대 문자열의 길이는 최대 6553565535 로 제한한다로 제한한다 ..

const string str[] = { "Hello", "World" };const string str[] = { "Hello", "World" };

string string 배열은 배열은 11 차원 배열만 가능하다차원 배열만 가능하다배열의 배열의 ElementElement 수는 최대 수는 최대 6553565535 개까지 가능하다개까지 가능하다 ..배열의 초기값을 줄 수 있으며배열의 초기값을 줄 수 있으며 , , 초기값의 개수로 배열의 크기를 정할 수 있다초기값의 개수로 배열의 크기를 정할 수 있다 ..

const image imagedata = {0x00, …};const image imagedata = {0x00, …};const sound audiodata = {0x00, 0x02, …};const sound audiodata = {0x00, 0x02, …};const voc vocdata = { 0x04, 0x02, …};const voc vocdata = { 0x04, 0x02, …};

datadata 의 내용은 의 내용은 0~2550~255범위의 숫자 데이터의 나열로 나타난다범위의 숫자 데이터의 나열로 나타난다 ..media datamedia data 의 크기에 대한 제약은 없다의 크기에 대한 제약은 없다 ..

const image imagedata[] = { { 0x00, …. }, { 0x00, …} };const image imagedata[] = { { 0x00, …. }, { 0x00, …} };const sound audiodata[] = { { 0x02, …. }, { 0x02, …} };const sound audiodata[] = { { 0x02, …. }, { 0x02, …} };const voc vocdata[] = { { 0x04, …. }, { 0x04, …} };const voc vocdata[] = { { 0x04, …. }, { 0x04, …} };

Image, sound, voc Image, sound, voc 각각의 배열은 각각의 배열은 11 차원 배열만 가능하다차원 배열만 가능하다배열의 배열의 ElementElement 수는 최대 수는 최대 6553565535 개까지 가능하다개까지 가능하다 ..배열의 초기값을 줄 수 있으며배열의 초기값을 줄 수 있으며 , , 초기값의 개수로 배열의 크기를 정할 수 있다초기값의 개수로 배열의 크기를 정할 수 있다 ..

Page 29: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Language Spec [3/4]Language Spec [3/4]

Operator

논리 연산자논리 연산자 OO

증가 및 감소 연산자증가 및 감소 연산자 OO

비트 연산자비트 연산자 OO

배정 연산자배정 연산자 OO

OperatorOperator 지원유무지원유무

관계 연산자관계 연산자 OO

함수 연산자함수 연산자 OO

콤마 연산자콤마 연산자 XX

캐스트 연산자캐스트 연산자 XX

포인터 연산자포인터 연산자 OO

구조체 연산자구조체 연산자 OO

산술 연산자산술 연산자 OO

배열 연산자배열 연산자 OO

크기 연산자크기 연산자 OO

&& || !&& || !

++ --++ --

& | ^ << >> ~ & | ^ << >> ~

= += -= *= /= %= = += -= *= /= %=

DescriptionDescription

> >= < <= == != > >= < <= == !=

() ()

exp, exp exp, exp

(( 자료형자료형 ) )

* &* &

––> .> .

+ – * / % + – * / %

[ ] [ ]

sizeof objectsizeof objectsizeof (type name)sizeof (type name)

byte byte 단위로 계산된다단위로 계산된다 ..

조건식 연산자조건식 연산자 OO expr1 ? expr2 : expr3expr1 ? expr2 : expr3

Page 30: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Language Spec [4/4]Language Spec [4/4]

Statement

StatementStatement

배정문배정문

조건문조건문

반복문반복문

분기문분기문

DescriptionDescription

i = j = k = 0;i = j = k = 0;i += j;i += j;vector[i=100] = exp;vector[i=100] = exp;matrix [i] [j – 1] = i * 10 + j;matrix [i] [j – 1] = i * 10 + j;

IfIf 문문 , switch, switch 문문

forfor 문문 , while, while 문문 , do-while, do-while 문문

goto, break, continue, returngoto, break, continue, return

혼합문혼합문

혼합문의 내부 블록에서의 지역변수 선언 불가혼합문의 내부 블록에서의 지역변수 선언 불가

void main() {void main() { int i;int i; string strTmp;string strTmp;

for (i=0; i < 4; i++) {for (i=0; i < 4; i++) { int a;int a; a++; // a++; // 오류 발생오류 발생 MakeStr1(strTmp, “cnt=%d”, a);MakeStr1(strTmp, “cnt=%d”, a); DrawStr(0, a*10, strTmp);DrawStr(0, a*10, strTmp); }} Flush();Flush();}}

Page 31: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Mobile C 언어 – Programming StructureMobile C 언어 – Programming Structure

Event-Driven 방식의 언어ANSI C : Procedure Language

Mobile C : Event-Driven Language Event Handler 의 집합

Programming StructureHeader Section

Program ID 지정 실행 환경 정의

Data Section Image, Audio file includeVariable 선언

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();}

%{#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();}

Page 32: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Programming Structure - Header SectionProgramming Structure - Header Section

Header Section프로그램 실행 환경 설정소스 파일의 맨 윗부분에

정의“%{“ 와 “ %}” 사이에

기술

IMAGETYPEIMAGETYPE

AUDIOTYPEAUDIOTYPE

CARRIERTYPECARRIERTYPE

APPTYPEAPPTYPE

Key WordKey Word

LCDCLASSLCDCLASS

APPIDAPPID

APPNAMEAPPNAME

COMPTYPECOMPTYPE

AGENTTYPEAGENTTYPE

VALIDCOUNTVALIDCOUNT

PLAYERVERPLAYERVER

APPCPIDAPPCPID

VALIDTERMVALIDTERM

ApplicationApplication 의 의 Target LCD Target LCD 색상 분류색상 분류

ApplicationApplication 의 의 Target Audio type Target Audio type 분류분류

Application Service Application Service 주체 정보주체 정보

ApplicationApplication 의 의 Run Type(StandAlone, Sever,Free)Run Type(StandAlone, Sever,Free)

DescriptionDescription

ApplicationApplication 의 의 Target LCD Target LCD 크기 분류크기 분류

Application IDApplication ID

Application Name Application Name

Contents Contents 압축 설정 여부 압축 설정 여부

Contents Contents 실행 방식 실행 방식 (Normal, Agent)(Normal, Agent)

Contents Contents 유효 실행 회수유효 실행 회수

ApplicationApplication 의 의 Target VM Target VM 버전버전

Contnets Provider IDContnets Provider ID

Contents Contents 유효 실행 기간유효 실행 기간

APPVERAPPVER Application Application 의 의 Version Version 정보정보

DIRECTRUNDIRECTRUN Contents Contents 저장 여부 결정 정보저장 여부 결정 정보

Page 33: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Programming Structure - Data SectionProgramming Structure - Data Section

Data SectionFile Include

Header File Include– Define 이나 자료형 선언된 파일 include

Resource File Include– Resource Editor를 통해 생성한 파일 include– Image Master : VDI 이미지 Data 파일– Audio Master : Audio Data 파일

MobileC File IncludeSSL(Sinji Static Library) File Include

Variable 선언Global Variable 선언 및 초기화

Page 34: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Programming Structure – Code Section [1/2]Programming Structure – Code Section [1/2]

Code SectionEvent 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(){

… }

void EVENT_NETWORK(){… }void EVENT_TIMEOUT()[

… }void EVENT_KEYPRESS(){

… }void EVENT_SMSRECEIVE(){

… }

int user_defined()( …

}main(){

… }

Page 35: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Programming Structure – Code Section [2/2]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_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;}

}}

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;}

}}

Page 36: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

%{#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%}

%{#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; }}

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 [1/4] – Normal ContentsSimple Example [1/4] – Normal Contents

Page 37: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Simple Example [2/4] – Agent ContentsSimple 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,...};

#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;

}}

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;

}}

Page 38: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Simple Example [3/4] – Agent ContentsSimple Example [3/4] – Agent Contents

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, ………

} }

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, ………

} }

Masi7_c.sbmMasi7_c.sbm

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 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

}

Sound_ma2.ssdSound_ma2.ssd

Page 39: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Simple Example [4/4] – Agent ContentsSimple Example [4/4] – Agent Contents

Agent Contents 에뮬레이터 실행 예

Page 40: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

2004. 04. 24

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 - Ⅲ

정보과학회 춘계 튜토리얼

WIPI 게임 솔루션 GNEX 를이용한 모바일 게임 제작 - Ⅲ

Page 41: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

목 차목 차목 차목 차

GNEX 개발 도구GNEX IDE

GNEX Emulator

Resource Editor

GNEX 게임 개발 및 서비스GNEX 게임 제작 과정GNEX Contents Demo

SKT 를 통한 상업 서비스

GNEX 경쟁력 & 개발효과향후 단말기 게임 시장Q&A

Page 42: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 개발도구 [1/2]GNEX 개발도구 [1/2]

Visual Studio 스타일의 통합 개발 환경 “ GNEX IDE”Project Manager : Contents project generation

Skeleton GenerationAutomatic Build

Editor : MobileC program codingSyntax Highlight

BuilderSGS file generation from

MobileC program with GNEX Compiler and Assembler

DebuggerBreak-PointSource TracerWatch

Source EditorSource Editor

[ GNEX IDE ]

…….……..……..……..………

…….……..……..……..………

MobileCprogram

GNEXCompiler

*.sal*.salGNEX

Assembler

*.sgs*.sgs

SGS Building Process

Page 43: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 개발도구 [2/2]GNEX 개발도구 [2/2]

GNEX EmulatorSkin 적용으로 단말기별 특성 표현

LCD Type Audio Type Memory Size GNEX Feature Selection

Resource EditorImage Master

BMP 를 읽어 VDI 로 변환 Block, Transparent 설정

Audio Master 각종 오디오 데이터를 읽어 ,

GNEX Audio 데이터로 변환 미리 듣기 기능

3D Toolkit 3D Object Animation,

3D Character Animation 구현

Page 44: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 게임 제작 과정 [1/3]GNEX 게임 제작 과정 [1/3]

시장 환경 분석개발 환경 고려

컨텐츠 시장 규모 분석GNEX Feature 분석

현재 서비스 중인 컨텐츠 분석현재 서비스중인 유사 컨텐츠의 시장 규모 파악해당 통신사의 CP 정책

컨텐츠 선정기술력 (강점 ) 분석 → 컨텐츠의 장르 선정

현재 서비스되고 있는 유사 컨텐츠 분석시장 규모 및 기능성 파악동일 컨텐츠의 유무

What’s Kind of Contents?

What’s Kind of Contents?

Page 45: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 게임 제작 과정 [2/3]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 ?

How ?

Page 46: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 게임 제작 과정 [3/3]GNEX 게임 제작 과정 [3/3]

컨텐츠 개발리소스 생성

Image Master, Audio Master, 3D ToolkitGNEX IDE 를 이용한 컨텐츠 개발

Project Manager를 이용한 Project 생성Source Editor를 이용해 Mobile C 로 컨텐츠 개발Compile & Assemble => sgs 파일 생성Emulator 를 이용한 테스트Debugger를 이용한 디버깅

단말 테스트GVM Club(www.gvmclub.com) 계정 신청 WAP Page 제작테스트 서버에 Upload실제 단말에서 테스트 서버에 접속하여 다운로드 및 실행 테스트

Contents Server

Page 47: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX Contents Demo [1/2] GNEX Contents Demo [1/2]

2D Contents

Page 48: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX Contents Demo [2/2]GNEX Contents Demo [2/2]

3D Contents

Page 49: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

Service ScenarioService Scenario

Download Server

WAP G/W

contents Provider

Terminal Develop contents Using GNEX IDE

Upload contents

Request contents

Download contents

Execute contents

Page 50: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

SKT 를 통한 상업 서비스SKT 를 통한 상업 서비스컨텐츠 서비스를 위한 절차

CP 업체

게임제안

게임평가단

가승인

승 인

채 택

서비스추가신청

메뉴추가신청

게임 업로드

YN Y 검증 신청

수정 . 보완

양 호Y

테스트 완료

품 의

skthost.com

품질 / 과금메뉴 ( 상 .하위링크 )

CP 업체

SKT 담당

SKT검증담당

CRS 담당CRS 에 신청

불채택 통보

Service Open

Page 51: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 경쟁력 [1/3]GNEX 경쟁력 [1/3]VM 방식과 Binary 방식의 장점만을 수용

VM 방식 : 확장성 , 이식성이 뛰어나며 게임 컨텐츠 개발에 유리Binary 방식 : 실행 속도가 VM 방식에 비해 매우 빠름GNEX

특허 출원중인 VDI 고속 이미지 출력 알고리즘 사용으로 VM 방식이면서 Binary 방식 수준의 실행속도 제공

게임 컨텐츠에서 우수한 성능 발휘

게임에 특화된 250 여 개의 API 제공게임을 위한 특수 library : 충돌 check, 배열 단위 연산 , Min/Max Search 모바일 단말기 환경에서 게임 컨텐츠 개발에 유리

편리한 통합개발도구 제공높은 컨텐츠 생산성

통합개발도구 GNEX IDE 제공으로 개발 및 디버깅 시간 단축 단말기와 동일한 특성의 에뮬레이터 제공으로 컨텐츠 오류 검증 및 단말기 시험

시간 절약

Page 52: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 경쟁력 [2/3]GNEX 경쟁력 [2/3]

게임 전용 그래픽 시스템 제공다양한 2D Effect 기능 제공 : sprite, alpha-blending, 상하좌우반전 등3D 그래픽 라이브러리 , 저작 지원 도구 제공

Gamma Correction

Alpha-Blending Rotation

Mirror Invert ZoomXOR

Gamma Correction

Alpha-Blending Rotation

Mirror Invert ZoomXOR

GNEX 3D API 를 이용하여 제작된 애니메이션용 3D 캐릭터 GNEX 의 2D 그래픽 효과 적용 예시

Page 53: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

GNEX 경쟁력 [3/3]GNEX 경쟁력 [3/3]

유사 제품과의 게임 관련 성능 비교

구 분 GNEX ez-JAVA BREW

설계 용도 게임 실행용 전자상거래 General purpose

게임 실행특징

단순한 언어구조(Mobile C),

적은 메모리 사용 , 더블 버퍼링 지원 , 최적화된 Code생성

복잡한 언어구조(JAVA),

많은 메모리 / 리소스 요구

단순한 언어구조(C),

적은 메모리 사용

안정성 검증필요 유무

검증 불필요 검증 불필요 검증 필요

HW 가속 지원유무

지원 , 상용화 단계 지원 , 상용화 단계 상용화 미비

게임 지원성능 Best Medium Good

Page 54: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

개발효과개발효과WIPI 의 장점을 극대화하는 WIPI 솔루션최초의 WIPI 기반 솔루션으로 게임 컨텐츠들이 최상의 성능을 낼 수 있도록 하는 게임 엔진 역할 수행브라우저 , 이메일 클라이언트 , Media 플레이어 등 다양한 WIPI 솔루션의 시발점

양질의 컨텐츠 생산을 위한 기반 제공차세대 무선 게임을 위한 고성능 라이브러리와 대용량 컨텐츠 서비스 , 빠른 실행 속도 제공 고품질 컨텐츠 제작이 가능하여 무선인터넷 컨텐츠 산업 발전에 기여소비자 욕구에 부합하는 양질의 컨텐츠 제공으로 사용시 만족감 극대화

편리한 개발도구 제공으로 컨텐츠 개발 생산성 향상최적의 통합 게임 개발 환경 제공으로 컨텐츠 공급자에게 개발 및 디버깅 시간을 단축하여 높은 컨텐츠 생산성을 가져다 줌검증비용 절감 효과로 신규 컨텐츠 확보 용이

Page 55: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

향후 단말기 게임 시장 [1/2]향후 단말기 게임 시장 [1/2]

단말기 게임시장모바일 기기형 Embeded System

가전 기기형 Embeded System

다양한 Embeded System 에 게임 시장 형성Device & Platform 에 독립적인 VM 탑재로 게임 컨텐츠의 호환성 제공 필요

MP3피처폰

(Feature Phone)

스마트폰 PDA

디지털 TV 셋탑박스 인터넷 냉장고

Page 56: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

향후 단말기 게임 시장 [2/2]향후 단말기 게임 시장 [2/2]

임베디드 시스템에 적합한 EVM(C언어 기반 VM)Device 독립적이며 , Platform 독립적인 특징

다양한 Device 와 Platform 의 종류에 관계없이 VM 탑재 가능 CDMA, GSM 단말기 및 MP3 플레이어에 탑재 / WI-TOP, WIPI, BREW 등 다양한 플랫폼에

탑재

VM 의 경량화 및 효율성 확보 시스템에 가까운 C언어 VM 설계로 VM 경량화 달성 Java 에 비해 C언어의 우수한 Optimization 특성으로 어플리케이션의 경량화 달성

빠른 실행 성능 확보 Java 에 비해 시스템과 유사한 실행코드 생성 ( 시스템 프로그램 개발에 C언어를

사용하는 이유와 동일 )우수한 Optimization 특성으로 어플리케이션 실행 속도가 빠름

해외 로열티 문제 해결표준 ANSI C 규격을 사용하고 , 독자적인 실행코드 규격을 정의하여 규격 관련 기술

의존성 제거 순수 국산 기술로 컴파일러와 VM 인터프리터를 구현하여 해외 로열티 문제 해소

Page 57: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

JAVA & EVM 비교JAVA & EVM 비교

Sun 의 마케팅으로 인해 국제적 인지도 높음 다양한 Device 분야에 적용되었으나 시장 성공사례는 미미함

국제적 인지도는 낮음 국내 휴대폰 다운로드 솔루션 ( 제품명 GVM) 의 시장점유율 1 위

인지도

Java 지적재산권은 Sun Microsystems 의 소유 Java 이름 사용에 대해 로열티 제공 의무

EVM 지적재산권은 신지소프트 소유 C 언어에 대한 로열티는 없음지적재산권

컨텐츠 크기가 커져 실행 속도가 떨어짐 Dynamic Binding/Class Loading 으로 실행 속도 저하

Code optimization 성능이 우수하여 컨텐츠의 크기가 작고 , 실행 속도가 빠름실행 성능

Java 규격이 복잡하여 이를 처리하는 Java VM 의 크기가 커짐 C 에 비해 code optimization 성능 약하여 bytecode 의 크기가 커짐

C언어 규격이 단순하고 시스템에 근접하여 EVM 의 경량화 가능 Code optimization 성능이 우수하여 컴팩트한 실행코드 생성

Java 로 인정받기 위해서는 Sun 사의 TCK 인증을 받고 로열티를 부담해야 하므로 사실상 개방적이지 않음

C 규격은 완전 공개되어 있으므로 자유로운 솔루션과 컨텐츠 개발 가능개방성

Java VM C VM

효율성

Java 자체는 Sun 의 자체규격이지만 다양한 기술 규격에 Java 가 포함되어 있음

표준 ANSI C 언어 사용표준 적용

Page 58: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

수상 실적수상 실적제 3 회 모바일 기술대상 국무총리상 수상 ( 정통부 )

제 4 회 전파신기술상 정보통신부장관상 수상 ( 정통부 )

국산신기술인증 - KT 마크 ( 과기부 )

대한민국 S/W 대상 동상 수상 ( 정통부 )

KT 마크 10 주년 기념 과기부장관 유공자 표창 ( 과기부 )

Page 59: 2004. 04. 24

WIPI 게임솔루션WIPI 게임솔루션

ContactContact

Thank you !Thank you !

E-Mail: [email protected]: [email protected]

www.sinjisoft.com☎ 822- 711-6550 (f)822-711-6545