목차 일부
(1) 핸드폰으로 어떤 게임을 할 수 있을까? ... 23
핸드폰 게임은 어떤 것이 있는가? ... 23
HellFire 게임을 해보자. ... 27
(2) 어떻게 하다가 핸드폰으로 게임까지 하게 되었나? ... 31
VM의 출현 배경 ... 31
핸드폰 VM의 종류 ... 34
(3) GVM이란? ... 37
GVM의 소개 .....
더보기
목차 전체
(1) 핸드폰으로 어떤 게임을 할 수 있을까? ... 23
핸드폰 게임은 어떤 것이 있는가? ... 23
HellFire 게임을 해보자. ... 27
(2) 어떻게 하다가 핸드폰으로 게임까지 하게 되었나? ... 31
VM의 출현 배경 ... 31
핸드폰 VM의 종류 ... 34
(3) GVM이란? ... 37
GVM의 소개 ... 37
과금 방식 ... 37
GVM 서비스 현황 ... 38
단말기 현황 ... 38
컨텐츠 현황 ... 38
다운로드 현황 ... 39
단말기 시장 점유율 ... 40
GVM을 통한 수익 모델 ... 41
GVM 컨텐츠 개발 및 서비스 과정 ... 42
STEP1 컨텐츠 기획 ... 42
STEP2 이미지/오디오 작성 ... 43
STEP3 MobileC 프로그램 작성 ... 43
STEP4 컴파일 및 테스트 ... 43
STEP5 Provisioning 준비 ... 43
STEP6 Provisioning 시험 ... 44
GVM 버전 ... 44
GVM1X ... 44
GVM2X ... 44
GVM3X ... 45
마치면서 ... 45
(4) GVM SDK(Software Development Kit) ... 47
GVM SDK 소개 ... 47
MobileC Compiler ... 47
Media Tool ... 47
GVM Emultr ... 48
버저 마스터 ... 49
버저 마스터 이용시 주의할 점 ... 53
이미지 마스터 ... 54
이미지 마스터 사용시 주의할 점 ... 60
MobileC 컴파일러 ... 61
MCC.exe ... 61
MASM.exe ... 61
에러 처리 ... 63
GVM 에뮬레이터 ... 64
CLCD Setting ... 67
Sound Setting ... 68
Script 열기 ... 68
Script 다운받기 ... 69
Script 실행 ... 70
Stand-alone형 컨텐츠 ... 71
PTP형 컨텐츠 ... 71
서버 접속형 컨텐츠 ... 73
복합 실행형 컨텐츠 ... 73
에뮬레이터에서의 키 사용법 ... 74
채팅 지원 ... 74
단말기와 에뮬레이터의 차이점 ... 78
(5) MobileC ... 79
개요 ... 79
특징 ... 79
Event-Driven ... 79
데이터 타입 ... 80
모든 변수는 기본적으로 정적 할당을 한다. ... 81
별도의 Linkage Library를 지원하지 않는다. ... 81
함수 재귀 호출 불가능 ... 81
MobileC의 기본 문법 ... 82
자료형(data type) ... 82
Type Checking ... 86
Pointer ... 86
구조체(structure type) ... 88
심볼 ... 90
단말기의 메모리 구성 ... 91
연산자 ... 92
문장 ... 93
주석 ... 93
변수 범위 규칙(Scope Rules) ... 94
선행처리기 ... 94
표준 라이브러리 사용 ... 94
다국어 지원 ... 94
기타 ... 94
MobileC와 표준 C의 비교 ... 95
MobileC의 특수한 확장 ... 96
삽입 기능(as is mode) ... 96
Header Info Table ... 96
이벤트 핸들러 ... 97
시스템 변수 ... 100
메모리 관리 ... 101
SGS 파일 포맷 ... 103
이벤트 핸들러 ... 104
EVENT_START ... 104
EVENT_END ... 104
EVENT_TIMEOUT ... 105
EVENT_KEYPRESS ... 105
EVENT_RESULT ... 106
EVENT_RECEIVE ... 108
EVENT_RSEVENT ... 108
EVENT_RSRECEIVE ... 109
스크립트 구조 ... 109
Hello World! ... 110
첫 번째 Hello World! ... 110
두 번째 Hello World! ... 113
세 번째 Hello World! ... 114
마치면서 ... 116
(6) MobileC Library Guide ... 117
시스템 라이브러리 함수 ... 119
그래픽 라이브러리 함수 ... 119
문자열 라이브러리 함수 ... 122
핸드셋 라이브러리 함수 ... 123
수학 라이브러리 함수 ... 124
네트웍 라이브러리 함수 ... 125
기타 라이브러리 ... 127
벤더 라이브러리 함수 ... 127
Advanced Audio Library Functions ... 128
User Data Access Library Functions ... 128
OEM API Library Functions ... 129
(7) 핸드폰용 스타크래프트인 PhoneCraft는 무엇인가? ... 131
(8) PhoneCraft는 어떻게 하는 게임인가? ... 139
(9) PhoneCraft를 한 번 해보자. ... 159
서버의 가동 ... 159
방장의 단말기를 가동시켜 보자 ... 160
(10) 게임을 만들기의 기초! 애니메이션 ... 169
그림을 그리자 ... 169
이미지 마스터에서 편집하자 ... 173
이미지를 프로그램에 실어 프로그램을 완성하자. ... 175
소리를 추가해 보자. ... 180
이제 모든 애니메이션은 문제 없다! ... 182
(11) 네트웍의 기초! 핸드폰끼리 통신(PTP) ... 183
PTP(Phone To Phone) 예제 ... 183
채팅도 해볼까? ... 189
(12) 온라인 게임을 만들기 위한 기초! 서버와의 통신 ... 195
GVM의 통신 규약 ... 198
클라이언트(단말기)는 어떻게 만들었나? ... 200
서버는 어떻게 만들었나? ... 201
(13) 실전! PhoneCraft 만들기(Client 제작) ... 215
게임 시작 메뉴의 상태들 ... 216
유닛 배치의 상태들 ... 217
단말기와 서버가 통신하는 형식에 대한 약속 ... 219
단말기와 서버가 악수하는 방법 ... 220
단말기 Login ... 220
방개설 ... 221
참여하기 ... 221
게임시작 ... 223
게임 플레이 ... 224
방장이 방생성 취소 ... 224
손님이 게임 시작하기 전에 참여한 방에서 나가는 경우 ... 225
단말기에서 유닛을 새로 구매하고 배치한 후 서버에 알려주기 ... 225
채팅 종료시 알려주기 ... 225
손님이 방에 들어 가지 못함을 알려주는 경우 ... 226
방장이 방을 생성할 때 여분의 방이 없을 때 ... 226
게임의 승패 결과를 알려주는 핸드 쉐이킹 ... 227
아직까지 살아 있냐를 알아보는 핸드 쉐이킹 ... 228
PhoneCraft의 유닛 데이터 코드들 ... 229
PhoneCraft의 유닛을 배치하기 위한 변수들 ... 230
PhoneCraft의 천적 관계 데이터 ... 231
유닛 가격 데이터 ... 232
타이머의 작동 ... 233
PhoneCraft의 함수들 ... 233
void InitUnitBuy() ... 233
void SeedStar(int ii) ... 233
void InitMoveUnit() ... 233
void DrawTitle() ... 234
void InitGameStart() ... 234
void InitUnitPosition() ... 234
void Init() ... 234
void DrawTribe() ... 234
void DrawUnit(int x, int y, int code) ... 234
void DrawMenul() ... 234
void DrawIntro() ... 234
void DrawUse() ... 234
void DrawFailCreateRoom() ... 234
void DrawWaitingroom() ... 235
void SendLogin() ... 235
void MakeRoomLogin() ... 235
void ReceiveMove() ... 235
void DrawMakeroom() ... 235
void DrawGuestRoom() ... 235
void MoveUnit(int ax, int ay, int dx, int dy) ... 235
void MoveAfter() ... 235
void AttackAfter() ... 235
void AttackUnit(int ax, int ay, int dx, int dy) ... 236
void DrawAllUnit() ... 236
void DrawUnitPosition() ... 236
void DrawBoard() ... 236
void JoinRoomLogin() ... 236
void RefreshWaitRoom() ... 236
void SendAlive() ... 236
void SendStart() ... 236
void SendEndChat() ... 236
void SendWin() ... 236
void SendLose() ... 237
void SendGiveUpWin() ... 237
void CancelRoom() ... 237
void ExitRoom() ... 237
void SendMove() ... 237
void EnterRoom() ... 237
void SendUnitPosition() ... 237
void GetWaitRoom() ... 237
void ArrangeUnit() ... 238
void DrawJoinRoom() ... 238
(14) 실전! PhoneCraft 만들기(Server 제작) ... 239
단말기로부터 메시지를 받는 OnReceive 함수 ... 239
메시지를 분류하고 처리하는 ProcessData() 함수 ... 241
쓰레기 소각(Garbage Collection) ... 244
유저들의 데이터 관리 ... 247
채팅 데이터 중계 ... 247
마치면서 ... 248
(15) MobileC Library Reference ... 249
시스템 라이브러리 함수 ... 249
GetHwConfig ... 250
GetSysMin ... 251
GetSysUserID ... 252
GetLoclnfo ... 253
그래픽 라이브러리 함수 ... 254
ClearWhite ... 255
ClearBlack ... 256
Clear ... 257
PutPixel ... 258
GetPixel ... 259
SetGamma ... 260
SetColor ... 261
ResetClip ... 262
SetClip ... 263
DrawLine ... 264
DrawHLine ... 265
DrawVLine ... 266
InvertRect ... 267
DrawRect ... 268
FillRect ... 269
DrawRectRound ... 270
FillRectRound ... 271
DrawEllipse ... 272
FillEllipse ... 273
SetStrType ... 274
SetStrFont ... 275
SetStrColor ... 276
SetStrAlign ... 277
DrawStr ... 278
DrawStr2 ... 279
DrawStrSolid ... 280
DrawStrSolid2 ... 281
DrawText ... 282
DrawTexSolid ... 283
SetPalette ... 284
CopyImage ... 285
CopyImageDir ... 286
CopyImagePal ... 287
CopyImageDirPal ... 288
InitDepthQ ... 289
AddDepthQ ... 290
DrawDepthQ ... 291
ScrollLCD ... 292
SaveLCD ... 293
RestoreLCD ... 294
Flush ... 295
문자열 라이브러리 함수 ... 296
GetMediaSize ... 297
SetMediaSize ... 298
Strlnit ... 299
StrLen ... 300
StrCpy ... 301
StrSub ... 302
StrCat ... 303
StrCmp ... 304
GetChar ... 305
PutChar ... 306
AsciiTolnt ... 307
IntToAscii ... 308
GetByte ... 309
PutByte ... 310
GetBytes ... 311
PutBytes ... 312
MakeStrStr ... 313
MakeStr1 ... 314
MakeStr2 ... 315
MakeStr3 ... 316
MakeStr4 ... 317
MakeStr5 ... 318
StrInput ... 319
StrInput2 ... 320
핸드셋 컨트롤 라이브러리 ... 321
PlaySound ... 322
StopSound ... 323
PlayVocoder ... 324
StopVocoder ... 325
StartVib ... 326
StopVib ... 327
SetKeyTone ... 328
SetBackLight ... 329
GetUserNV ... 330
PutUserNV ... 331
SetTimer ... 332
SetTimer1 ... 333
SetTimer2 ... 334
ResetTimer ... 335
ResetTimer1 ... 336
ResetTimer2 ... 337
수학 라이브러리 함수 ... 338
RandSeed ... 339
Rand ... 340
RandRatio ... 341
Abs ... 342
Sgn ... 343
Sin100 ... 344
Cos100 ... 345
Tan100 ... 346
ArcSin100 ... 347
ArcCos100 ... 348
ArcTan100 ... 349
Avr ... 350
Avr3 ... 351
Max ... 352
Max3 ... 353
Min ... 354
Min3 ... 355
FindMax ... 356
FindMin ... 357
FindNear ... 358
ArrayToVar ... 359
ArrayToArray ... 360
ArrayToArray2 ... 361
네트웍 라이브러리 함수 ... 362
NetReconnect ... 363
NetSend ... 364
LoadMedia ... 365
LoadMediaResult ... 366
RsCom ... 367
RsSend ... 368
SendSMS ... 369
Download ... 370
Download2 ... 371
BackToBrowser ... 372
Exit ... 373
NetState ... 374
NetConnect ... 375
VoiceCall ... 376
PtpCall ... 377
PtpCallMmi ... 378
PtpWait ... 379
PtpRelease ... 380
기타 라이브러리 함수 ... 381
HitCheck ... 382
GetDate ... 383
GetTime ... 384
LockChatMode ... 385
SetChatMode ... 386
벤더 라이브러리 함수 ... 387
RegMusicBell ... 388
RegScreen ... 389
SetSoMo ... 390
Advanced Audio Library Functions ... 391
RegAdvAudio ... 392
PlayAdvAudio ... 393
PauseAdvAudio ... 394
RestartAdvAudio ... 395
StopAdvAudio ... 396
ManAdvAudio ... 397
Use Data Access Library Functions ... 398
ReadHandsetData ... 399
WriteHandsetData ... 400
ReadHandsetData와 WritHandsetData에 대하여 ... 402
OEM API Library Functions ... 404
OemApi ... 405
(16) PhoneCraft 전체 소스 코드 ... 407
(부록) MobileC 에러 메시지 ... 467
GVM 단말기 탑재 현황(2001.12.27) ... 471
MobileC 문자표 ... 472
ASCII Code ... 472
Version 이력 ... 473
1 version 1.0 ⇒version 1.5 ... 473
2 version 1.5⇒version 1.51 ... 473
3 SWAP Module version에 따른 Library Function 실행시 차이점 ... 473
4 version 1.51⇒version 1.52 ... 474
Version 1.5에 새롭게 추가된 Library Functions ... 475
Network Libray Functions ... 475
Advanced Audio Library Functions ... 475
Graphic Libray Functions ... 476
String Libray Functions ... 476
Network Libray Functions ... 477
Vendor Library Functions ... 477
Advanced Audio Library Functions ... 477
User Data Acess Libray Functions ... 477
OEM API Library Functions ... 477
Version 1.51에서 삭제된 Library Functions ... 478
Advanced Audio Library Functions ... 478
MobileC Key 코드 값 ... 479
개발 시 유의사항 ... 480
컨텐츠 최대 크기 제한 ... 480
과도한 CPU 점유율 방지 ... 480
효과적인 LCD Refresh ... 480
스트링 변수에 대입문을 초기화할 때 빼고는 절대 쓰면 안 된다. ... 480
마스터 팔레트 ... 482
Gray Palette ... 482
Color Palette ... 483
단말기 모델별 특징과 이를 고려한 개발 가이드 ... 487
더보기 닫기