Windows Mobile Game Development - Building games for the Windows Phone and other mobile devices

Windows Mobile Game Development - Building games for the Windows Phone and other mobile devices

von: Adam Dawes

Apress, 2010

ISBN: 9781430229292 , 464 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 44,99 EUR

Mehr zum Inhalt

Windows Mobile Game Development - Building games for the Windows Phone and other mobile devices


 

Title Page

1

Copyright Page

2

Dedication Page

3

Contents at a Glance

4

Table of Contents

5

About the Author

15

About the Technical Reviewer

16

Acknowledgments

17

Introduction

18

Goal of This Book

18

Who This Book Is For

18

Chapter Overview

19

PART 1 Windows Mobile Development

21

CHAPTER 1 Windows Mobile and .NET

22

Looking Closely at .NET for Windows Mobile

23

Language Choices

23

The .NET Runtime Libraries

24

IDE Features

24

Emulators

24

Form Designer

25

Breakpoints

25

Debug Output

25

Preparing for Windows Mobile Development Challenges

25

Numerous Windows Mobile Versions and Editions

25

Windows CE

26

Pocket PC

26

Windows Mobile

26

Windows Phones

27

Hardware Considerations

27

Touch Screens

27

Hardware Buttons

27

Processors

28

Screen Size

28

Graphics Hardware

28

Cooperation with Devices

28

Using Visual Studio for Windows Mobile Development

29

Installing Visual Studio

29

Creating a Windows Mobile Project

30

Visual Studio 2005

31

Visual Studio 2008

31

Project Templates

33

Designing a Form

33

Running the Application

35

Working with the Emulators

37

Device Selection

37

Sharing Files with an Emulated Device

37

Re-enabling Alt-Tab

38

Emulator State

38

Obtaining More Emulators

38

Targeting Different Platforms

38

Running on a Real Device

39

Deployment Problems

40

Removing the Security Warnings

40

Changing the Deployment Directory

41

Debugging

41

Breakpoints

42

Debug Output

42

Getting Help

43

MSDN

43

Search Engines

43

Microsoft’s Windows Mobile Developer Center

43

Newsgroups

43

Windows Mobile Game Development

44

Suitable Games

44

Graphics APIs

44

GDI

44

GAPI

45

DirectDraw

45

Direct3D

45

OpenGL ES

45

Technologies Used in This book

46

Welcome to the World of Windows Mobile Development

46

CHAPTER 2 Mastering the User Interface

47

Developing for Touch Screen and Smart Phone Devices

47

The User Interface Controls

49

Forms

49

AutoScaleMode Property

49

ControlBox Property

49

FormFactor Property

50

MinimizeBox Property

50

Text Property

50

WindowState Property

51

Resize Event

51

Creating Non-Full-Screen Forms

51

Losing and Gaining Focus

52

Labels

53

Buttons

53

Menu Bars

54

Menu Design Considerations

54

Submenus

55

Smart Phone Menus

56

Working with MainMenu Controls

56

MainMenu Events

56

Menu Item Naming

57

Context Menus

57

Timers

58

Timer Initialization

58

Concurrent Tick Events

58

Timers on Inactive Forms

59

Other Timers

59

File Dialog Controls

60

Input Panels

61

Capturing Camera Images

63

The “Busy” Cursor

64

On with the Game

65

PART 2 Creating Games

66

CHAPTER 3 GDI Graphics

67

All About GDI

67

Let’s Paint

67

Invalidating a Form

69

The Drawing Coordinate System

69

Colors

69

Pens and Brushes

71

Pens

71

Brushes

72

Drawing Lines

72

Drawing Polygons

73

Drawing Rectangles

75

Drawing Ellipses

75

Working with Pixels

76

Displaying Text

76

Using Different Fonts

77

Centering Text

78

Clearing the Background

79

Painting in Action

79

Bitmaps

80

Creating Bitmaps Using Graphics Primitives

80

Creating Bitmaps from Predrawn Graphics

81

Embedding Graphic Resources

82

Reading Graphics from Files

84

A Note About Graphic File Formats

84

Painting Bitmaps to the Screen

85

Partial Bitmap Copying

85

Scaling

87

Color Keys

87

Bitmaps in Action

88

Smooth Animation

88

Getting the Most From GDI

92

CHAPTER 4 Taming the Device with the Game Engine

93

Designing the Game Engine

93

Implementing the Engine

95

CGameEngineBase

95

Managing Game Objects

98

Game Mechanics

98

Initializing Start-Up

99

Resetting the Game

99

Rendering

99

Updating the Game State

100

Advancing the Game

100

Adding Other Functions

101

CGameObjectBase

101

Positioning Objects

102

Storing Object States

103

Object Mechanics

103

CGameObjectGDIBase

103

Setting the Object State for GDI

104

Object movement

104

CGameEngineGDIBase

104

Rendering

105

Advancing the Game

106

CGameFunctions

106

Using the Game Engine

107

Creating the Bounce Example Game

107

CBounceGame

108

CObjBall

109

Getting the Game Running

111

Optimizing Rendering

114

Adding, Updating, and Deleting Objects

118

Forcing a Repaint

118

Performance Impact

119

Other Engine Features

119

Interacting with the Device

119

Minimizing and Restoring

119

Resizing the Form

121

Handling the SIP

121

Checking Device Capabilities

122

Future Enhancements

125

Next Steps

125

CHAPTER 5 Timing to Perfection

126

Affirming the Need for Consistent Timing

126

Processor Speed

126

Graphics Performance

127

Multitasking

127

Processing and Graphical Complexity

127

Development Mode vs. Released Code

127

Overcoming Performance Inconsistencies

127

Fixed Interval Updates

128

Dynamic Update Intervals

128

The Problem with Dynamic Intervals

129

Interpolated Updates

130

Applying Interpolated Updates to a Game

131

Update Frequency

133

Distinguishing Between Updates and Frames

134

Using an External Timer

135

DateTime.Now

135

Environment.TickCount

135

The High-Performance Timer

135

Timing in the Game Engine

136

Initializing and Interrogating the Timer

136

Changes to the Interpolation-Based Functions

139

CGameEngineBase

139

CGameEngineGDIBase

141

CGameObjectBase

141

CGameObjectGDIBase

142

Changes to the Noninterpolation Functions

143

Using the Game Engine

143

Let’s Bounce Again

143

CHAPTER 6 Exploring User Input

144

Touch Screen Input

144

Touch Screen Events

144

Click

145

DoubleClick

145

MouseDown

146

MouseUp

146

MoveMove

146

Selecting, Dragging, and Swiping

147

Selecting an Object

147

Dragging Objects

153

Swiping Objects

155

Adding Context Menus

159

Using Finger-Friendly Input

161

Using Multitouch Input?

162

Using Button and Keyboard Input

162

Button and Keyboard Events

162

KeyPress

162

KeyDown

163

KeyUp

164

Reading the Keyboard State

164

Input from the SIP

165

Choosing the Keyboard Input Method

165

Reading From an Accelerometer

166

Initializing the Accelerometer

166

Reading Data from the Accelerometer

167

Detecting the Presence of a Supported Accelerometer

169

Supporting Devices With No Accelerometer

171

Considering Input Design

171

CHAPTER 7 Sounding Out with Game Audio

172

Understanding Sound File Types

172

Exploring the Available Sound APIs

173

Using the Sound APIs

175

PlaySound

175

System.Media.SoundPlayer

179

AygShell Sound Functions

182

BASS.dll

184

Wrapping BASS.NET

185

Using BASS and BASS.NET in Your Projects

191

Adding Support for Sounds to the Game Engine

191

Choosing a Sound API

192

Make Some Noise

192

CHAPTER 8 Game in Focus: GemDrops

193

Designing the Game

193

Creating the GemDrops Design Brief

193

Conceptualizing the Game Controls

196

Choosing the Sound Effects

197

Outlining the Minimum Requirements

197

Writing the Game

198

Creating the Project

198

Creating the Game Form

199

Preparing the Game

200

Creating the Gem Game Object

202

Resetting the Game

205

Pausing the Game

208

Displaying the Player Gems

208

Enhancing CObjGem

208

Enhancing the Game Class

211

Updating the Player’s Gems

214

Adding Player Control

222

Moving the Gems to the Side

222

Rotating the Gems

224

Quickly Dropping the Gems

224

Implementing Control in the User Interface

227

Removing Gems from the Board

229

Removing Gem Groups

230

Removing Rainbow Gems

234

Creating Score Objects

235

Finishing Up

238

CHAPTER 9 Common Game Components

239

Managing Game Settings

239

Using the Settings Class

240

Understanding How the CSettings Class Works

242

Accessing the Settings Object

242

Setting and Retrieving Values

242

Loading and Saving Settings

243

Replacing the MessageBox

244

Using the MessageBox Class

244

Understanding How the CMessageBox Class Works

245

Accessing the Message Box Object

245

Displaying the Message

245

Creating a High Score Table

246

Using the High Score Class

246

Setting the Dialog Presentation Properties

246

Initializing the High Score Table

247

Displaying the High Scores Dialog

248

Understanding How the CHighScores Class Works

249

Accessing the HighScores Objects

249

Understanding the Data Structure

249

Presenting High Scores

250

Storing Data

250

Creating an About Box

252

Using the About Box Class

253

Understanding How the CAboutBox Class Works

255

Accessing the About Box Objects

255

Displaying the About Box

255

Using Common Game Components

255

PART 3 OpenGL ES Graphics

257

CHAPTER 10 A New Window on the World with OpenGL ES

258

Preparing to Use OpenGL

258

Hardware Support

258

Language Support

259

Understanding the OpenGL Features

259

Performance

259

Scaling and Rotation

259

Transparency and Alpha Blending

259

Rendering in 3D

260

Abstract Coordinate System

260

Color Specification

260

Drawing Primitives

261

Textures

261

Using OpenGL in Visual Studio.NET

261

Calling OpenGL from Managed Languages

261

Understanding OpenGL’s Rendering Approach

262

Considering the Hardware Capabilities and Limitations

262

Closing OpenGL Applications

263

Creating an OpenGL Program

263

Configuring the Project

263

Creating the OpenGL Environment

265

Initializing OpenGL

267

Rendering Graphics in OpenGL

269

Adding Form Functions

273

Terminating OpenGL

274

Running the Program

275

Adding Some Sparkle

276

Using Matrix Transformations

277

Setting the Identity Matrix

277

Applying Translation Transformations

278

Applying Rotation Transformations

278

Applying Scaling Transformations

279

Applying Multiple Transformations

280

Rotating Objects

280

Scaling Objects

282

Specifying Vertex Positions

282

Pushing and Popping the Matrix

282

Practicing Matrix Transformations with Example Projects

282

The Orbits Project

282

The FractalTrees project

284

Drawing Functions

287

Drawing Points

287

Drawing Lines

287

Drawing Triangles

288

Using Texture Mapping

290

Loading Graphics

290

Rendering with Textures

291

Specifying Texture Coordinates

293

Cleaning Up

295

Using Transparency and Alpha Blending

295

Applying Transparency

295

Alpha Blending

296

Alpha Blending with Textures

297

Textures with Alpha Channels

297

Additive Texture Blending

298

Controlled Transparency of Textures

298

Knowing the Available Blending Factors

298

Understanding Orthographic Coordinate Systems

299

Taking Control of OpenGL

301

CHAPTER 11 Creating 2D Games with OpenGL

302

Adding OpenGL to the Game Engine

302

Understanding the CGameEngineOpenGLBase Class

303

Initializing OpenGL

303

Rendering Game Objects

304

Accessing the Graphics Library

304

Calling Utility Functions

304

Understanding the CGameObjectOpenGLBase Class

305

Setting the Object State for OpenGL

305

Rendering Quadrilaterals

306

Performing the Capabilities Check

307

Creating the Game Form

309

Using the OpenGL Game Engine

311

Preparing the Balloons Game

311

Setting up the Projection Matrix

312

Rendering the Balloons

314

Sorting the Balloons

316

Playing the Game

319

2D Possibilities with OpenGL

322

CHAPTER 12 The Ins and Outs of the Third Dimension

323

Understanding Perspective Projection

323

Understanding the Viewing Frustum

323

Defining the Viewing Frustum in OpenGL

327

Understanding the Depth Buffer

328

Enabling the Depth Buffer

328

Rendering Transparent Objects with the Depth Buffer

330

Rendering 3D Objects

330

Defining a 3D Object

330

Removing Hidden Surfaces

336

Using Indexed Triangles

338

Lighting Your Projects

341

Introducing the Lights and Materials

341

Exploring the Types of Illumination

341

Ambient Light

342

Diffuse Light

342

Specular Light

343

Using Material Properties

344

Ambient Material

344

Diffuse Material

344

Specular Material

344

Material Shininess

344

Emissive Material

344

Exploring Light and Material Interaction

345

Using Multiple Lights

345

Reusing Lights

346

Exploring the Types of Light Source

346

Directional Lights

346

Point Lights

347

Spotlights

347

Calculating Light Reflections in OpenGL

348

Describing a Triangle’s Face Direction

348

Calculating Normals

350

Using Surface Normals and Vertex Normals

351

Adding Light to the Game Engine

352

Enabling Lighting

352

Adding the Game Engine Light Functions

353

Creating Directional Lights

355

Creating Point Lights

355

Creating Spotlights

356

Setting the Scene’s Ambient Light

356

Setting Material Properties

357

OpenGL Lighting in Action

358

Calculating Normals Programmatically

359

Using Normals with Scaled Objects

363

Mastering the 3D World

363

CHAPTER 13 Further OpenGL Features and Techniques

364

Importing Geometry

364

Introducing SketchUp

364

Creating 3D Objects in SketchUp

365

Exporting 3D Geometry

367

Using the .0bj File Format

368

Importing Geometry into the Game Engine

370

Retrieving Geometry Data

370

Manipulating Geometry Data

371

Reading Geometry Data from .obj Files

373

Using the Geometry Loader Class

373

Moving the Camera

375

Positioning the Camera

375

Adding Camera Objects to the Game Engine

376

Lights, Camera, Action!

381

Optimizing the Camera Calculation

382

Cameras and the Projection Matrix

385

Rendering Fog

385

Adding Fog Support to the Game Engine

386

Using Fog

386

Working with Billboards

388

Rendering Billboards

388

Adding Billboard Support to the Game Engine

390

Learning More about OpenGL ES

392

CHAPTER 14 Distributing Your Game

394

Preparing a Game for Distribution

394

Settings the Assembly Properties

394

Project Versioning

396

Creating an Icon

397

Building Distribution Packages

400

Switching into Release Mode

400

Creating the Setup Project

401

Adding the Setup Project’s Files

402

Creating a Programs Menu Shortcut

404

Building the CAB File

406

Selling Games

406

Creating Evaluation Applications

406

Upgrading to Full Versions

407

Using Windows Marketplace for Mobile

409

Minimizing Piracy

410

Implementing Reverse Engineering

411

Obfuscating with Dotfuscator Community Edition

412

Using Advanced Obfuscation

414

Control Flow Obfuscation

415

String Encryption

415

Symbol Renaming Schemes

415

Reflector.NET Protection

415

Resource Protection

416

Adding Obfuscated Files to CAB Setup Projects

416

Releasing New Versions of Your Game

416

Promoting Your Game

418

Go Create!

419

Index

420