自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Go on!

xulin的专栏

  • 博客(1)
  • 资源 (16)
  • 收藏
  • 关注

原创 两个VB6判断闰年的函数

Function IsLeapYearA(ByVal yr As Integer) As Boolean   If ((yr Mod 4) = 0) Then      IsLeapYearA = ((yr Mod 100) > 0) Or ((yr Mod 400) = 0)   End IfEnd FunctionPublic Function IsLeapYearB(ByVal yr A

2008-03-05 12:47:00 1191

vb6 dll 注入

vb6 dll 注入 vb6 dll 注入 vb6 dll 注入 vb6 dll 注入

2009-04-21

vc dll注入源代码

vc dll注入源代码 vc dll注入源代码 vc dll注入源代码 vc dll注入源代码

2009-04-21

Shapefile文件格式完整版

Shapefile文件格式完整版.pdf 中文版的pdf完整说明;

2009-03-09

ESRI_shapefile文件格式说明

ESRI的shapefile文件格式说明,英文原版,可编辑的pdf格式,十分清晰; 英文名称:ESRI Shapefile Technical Description; 目录: Contents Page Why Shapefiles? 1 Shapefile Technical Description 2 Organization of the Main File 2 Main File Record Contents 5 Organization of the Index File 23 Organization of the dBASE File 25 Glossary 26

2009-03-09

c#中简单三层架构实例

c#中简单三层架构实例 c#中简单三层架构实例 c#中简单三层架构实例 我下的时候分很贵。

2009-02-24

linux 游戏 编程

Contents Foreword i Preface iii Who This Book Is For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v 1 The Anatomy of a Game 1 A Quick Survey of Game Genres . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Simulation Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 First-Person Shooters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Real-time Strategy Games . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Turn-Based Strategy Games . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Role-Playing Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Puzzle Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Multiuser Dungeons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 A Quick Look Under the Hood . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 The Input Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 The Display Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 CONTENTS The Audio Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 The Network Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 The Update Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 The Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2 Linux Development Tools 17 Programming Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 NEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Compiling Programs Under Linux . . . . . . . . . . . . . . . . . . . . . . . . . 20 Using the Make Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Creating Make les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Working with Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Static Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Shared Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Linux Linker Quirks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Debugging Linux Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Compiling for Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ddd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Bug Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Project Management with CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 A Brief Tutorial on CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Other Useful Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Rapid Text Searching with grep . . . . . . . . . . . . . . . . . . . . . . . . 49 CONTENTS 3 Updating Source with di and patch . . . . . . . . . . . . . . . . . . . . . 50 3 Linux Gaming APIs 53 Graphics APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 SVGALib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 GGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ClanLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Plib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Glide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Xlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Graphical User Interface Toolkits . . . . . . . . . . . . . . . . . . . . . . . . . . 59 GTK+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Fltk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 SDL GUI Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Audio APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 OSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ALSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 ESD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 OpenAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Scripting Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Guile and MzScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Python and Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4 CONTENTS Networking APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 BSD Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 OpenPlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 IPX and SPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 File Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 libpng and libjpeg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 libaudio le and libsnd le . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Ogg Vorbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 The SDL MPEG Library, SMPEG . . . . . . . . . . . . . . . . . . . . . . 68 zlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 Mastering SDL 69 Computer Graphics Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 The Framebu er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 The SDL Video API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Setting Up the Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Direct Surface Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Drawing with Blits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Colorkeys and Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Loading Other Image Formats . . . . . . . . . . . . . . . . . . . . . . . . . 92 Alpha Blending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Achieving Smooth Animation with SDL . . . . . . . . . . . . . . . . . . . 97 Input and Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Processing Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Processing Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Processing Joystick Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Multithreading with SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CONTENTS 5 SDL Audio Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Representing Sound with PCM . . . . . . . . . . . . . . . . . . . . . . . . 125 Feeding a Sound Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 An Example of SDL Audio Playback . . . . . . . . . . . . . . . . . . . . . 129 Integrating OpenGL with SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Creating Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Implementing a Parallaxing Scroller in SDL . . . . . . . . . . . . . . . . . 147 A Simple Particle System . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Game Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 5 Linux Audio Programming 161 Competing APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Introducing Multi-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Loading Sound Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Using libsnd le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Other Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Using OSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Reality Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Achieving Higher Performance with Direct DMA Bu er Access . . . . . . 178 Playing Sound with ALSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Sharing the Sound Card with ESD . . . . . . . . . . . . . . . . . . . . . . . . . 195 Building Multi-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Environmental Audio with OpenAL . . . . . . . . . . . . . . . . . . . . . . . . 206 OpenAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Adding Environmental Audio to Penguin Warrior . . . . . . . . . . . . . . 213 Implementing Game Music with Ogg Vorbis . . . . . . . . . . . . . . . . . . . . 222 6 CONTENTS Working with Vorbis Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Adding Music to Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . 227 6 Game Scripting Under Linux 237 A Crash Course in Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Built-in Tcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Interfacing Tcl with C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Linking Against Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Executing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Understanding Commands and Objects . . . . . . . . . . . . . . . . . . . 250 A Simple Scripting Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Designing a Game Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Applying Scripting to the Real World . . . . . . . . . . . . . . . . . . . . . . . 265 Single Versus Multiple Contexts . . . . . . . . . . . . . . . . . . . . . . . . 266 Can We Trust the Script? . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Script Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Who's Writing the Script? . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7 Networked Gaming with Linux 271 'Tis a Big Net, Quoth the Raven . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Internet Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Addresses and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Name Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Socket Programming 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Connecting TCP Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Receiving TCP Connections . . . . . . . . . . . . . . . . . . . . . . . . . . 285 CONTENTS 7 Working with UDP Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Multiplayer Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Network Gaming Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Penguin Warrior's Networking System . . . . . . . . . . . . . . . . . . . . 302 Network Game Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Security Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 8 Gaming with the Linux Console 315 Pros and Cons of the Linux Framebu er . . . . . . . . . . . . . . . . . . . . . . 316 Setting Up a Framebu er Device . . . . . . . . . . . . . . . . . . . . . . . . . . 318 A First Foray into Framebu er Programming . . . . . . . . . . . . . . . . . . . 318 Setting Framebu er Video Modes . . . . . . . . . . . . . . . . . . . . . . . . . . 326 How Video Scanning Works . . . . . . . . . . . . . . . . . . . . . . . . . . 327 The Mode Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 An Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Use the Source, Luke! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Console Input Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Keyboard Input from a Terminal . . . . . . . . . . . . . . . . . . . . . . . 338 Mouse Input with GPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 9 Finishing Penguin Warrior 355 Adding Weapons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Drawing Phasers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Detecting Phaser Hits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Imposing a Sane Rate of Fire . . . . . . . . . . . . . . . . . . . . . . . . . 364 Creating Status Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 In Retrospect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 8 CONTENTS 10 To Every Man a Linux Distribution 379 Source or Binary? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Local Con guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Linux Isn't Alone: Supporting FreeBSD . . . . . . . . . . . . . . . . . . . . . . 383 Packaging Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Graphical Installation Goodness: Loki's Setup Program . . . . . . . . . . . . . 387 Understanding the Linux Filesystem Standard . . . . . . . . . . . . . . . . . . 393 Glossary of Terms 399 Bibliography 405 Index 407

2008-12-15

linux 游戏 编程

Contents Foreword i Preface iii Who This Book Is For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Online Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v 1 The Anatomy of a Game 1 A Quick Survey of Game Genres . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Simulation Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 First-Person Shooters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Real-time Strategy Games . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Turn-Based Strategy Games . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Role-Playing Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Puzzle Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Multiuser Dungeons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 A Quick Look Under the Hood . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 The Input Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 The Display Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 CONTENTS The Audio Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 The Network Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 The Update Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 The Game Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2 Linux Development Tools 17 Programming Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 NEdit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Compiling Programs Under Linux . . . . . . . . . . . . . . . . . . . . . . . . . 20 Using the Make Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Creating Make les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Working with Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Static Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Shared Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Linux Linker Quirks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Debugging Linux Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Compiling for Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 gdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 ddd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Bug Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Project Management with CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 A Brief Tutorial on CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Other Useful Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Rapid Text Searching with grep . . . . . . . . . . . . . . . . . . . . . . . . 49 CONTENTS 3 Updating Source with di and patch . . . . . . . . . . . . . . . . . . . . . 50 3 Linux Gaming APIs 53 Graphics APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 SVGALib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 GGI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 ClanLib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Plib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Glide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Xlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Graphical User Interface Toolkits . . . . . . . . . . . . . . . . . . . . . . . . . . 59 GTK+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Fltk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 SDL GUI Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Audio APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 OSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 ALSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 ESD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 OpenAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Scripting Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Guile and MzScheme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Python and Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4 CONTENTS Networking APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 BSD Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 OpenPlay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 IPX and SPX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 File Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 libpng and libjpeg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 libaudio le and libsnd le . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Ogg Vorbis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 The SDL MPEG Library, SMPEG . . . . . . . . . . . . . . . . . . . . . . 68 zlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 Mastering SDL 69 Computer Graphics Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 The Framebu er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 The SDL Video API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Setting Up the Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Direct Surface Drawing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Drawing with Blits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Colorkeys and Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Loading Other Image Formats . . . . . . . . . . . . . . . . . . . . . . . . . 92 Alpha Blending . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Achieving Smooth Animation with SDL . . . . . . . . . . . . . . . . . . . 97 Input and Event Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Processing Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 Processing Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Processing Joystick Events . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Multithreading with SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 CONTENTS 5 SDL Audio Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Representing Sound with PCM . . . . . . . . . . . . . . . . . . . . . . . . 125 Feeding a Sound Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 An Example of SDL Audio Playback . . . . . . . . . . . . . . . . . . . . . 129 Integrating OpenGL with SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Creating Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Implementing a Parallaxing Scroller in SDL . . . . . . . . . . . . . . . . . 147 A Simple Particle System . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Game Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 5 Linux Audio Programming 161 Competing APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Introducing Multi-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Loading Sound Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Using libsnd le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Other Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Using OSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Reality Check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Achieving Higher Performance with Direct DMA Bu er Access . . . . . . 178 Playing Sound with ALSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Sharing the Sound Card with ESD . . . . . . . . . . . . . . . . . . . . . . . . . 195 Building Multi-Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Environmental Audio with OpenAL . . . . . . . . . . . . . . . . . . . . . . . . 206 OpenAL Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Adding Environmental Audio to Penguin Warrior . . . . . . . . . . . . . . 213 Implementing Game Music with Ogg Vorbis . . . . . . . . . . . . . . . . . . . . 222 6 CONTENTS Working with Vorbis Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Adding Music to Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . 227 6 Game Scripting Under Linux 237 A Crash Course in Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Built-in Tcl Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Interfacing Tcl with C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Linking Against Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Executing Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Understanding Commands and Objects . . . . . . . . . . . . . . . . . . . 250 A Simple Scripting Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 Designing a Game Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 Applying Scripting to the Real World . . . . . . . . . . . . . . . . . . . . . . . 265 Single Versus Multiple Contexts . . . . . . . . . . . . . . . . . . . . . . . . 266 Can We Trust the Script? . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Script Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Who's Writing the Script? . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7 Networked Gaming with Linux 271 'Tis a Big Net, Quoth the Raven . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Internet Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Addresses and Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 Name Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 Socket Programming 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Connecting TCP Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Receiving TCP Connections . . . . . . . . . . . . . . . . . . . . . . . . . . 285 CONTENTS 7 Working with UDP Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Multiplayer Penguin Warrior . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 Network Gaming Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Penguin Warrior's Networking System . . . . . . . . . . . . . . . . . . . . 302 Network Game Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Security Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 8 Gaming with the Linux Console 315 Pros and Cons of the Linux Framebu er . . . . . . . . . . . . . . . . . . . . . . 316 Setting Up a Framebu er Device . . . . . . . . . . . . . . . . . . . . . . . . . . 318 A First Foray into Framebu er Programming . . . . . . . . . . . . . . . . . . . 318 Setting Framebu er Video Modes . . . . . . . . . . . . . . . . . . . . . . . . . . 326 How Video Scanning Works . . . . . . . . . . . . . . . . . . . . . . . . . . 327 The Mode Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 An Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Use the Source, Luke! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Console Input Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Keyboard Input from a Terminal . . . . . . . . . . . . . . . . . . . . . . . 338 Mouse Input with GPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 9 Finishing Penguin Warrior 355 Adding Weapons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 Drawing Phasers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Detecting Phaser Hits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362 Imposing a Sane Rate of Fire . . . . . . . . . . . . . . . . . . . . . . . . . 364 Creating Status Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 In Retrospect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 8 CONTENTS 10 To Every Man a Linux Distribution 379 Source or Binary? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380 Local Con guration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Linux Isn't Alone: Supporting FreeBSD . . . . . . . . . . . . . . . . . . . . . . 383 Packaging Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 Graphical Installation Goodness: Loki's Setup Program . . . . . . . . . . . . . 387 Understanding the Linux Filesystem Standard . . . . . . . . . . . . . . . . . . 393 Glossary of Terms 399 Bibliography 405 Index 407

2008-12-11

C++经典面试题2C++经典面试题2

C++经典面试题2 C++经典面试题2 C++经典面试题2 C++经典面试题2 C++经典面试题2

2008-10-10

C++经典面试题C++经典面试题

C++经典面试题 C++经典面试题 C++经典面试题 C++经典面试题 C++经典面试题

2008-10-10

C++编程惯用法-高级程序员常用方法和技巧(上)

C++编程惯用法-高级程序员常用方法和技巧(上)

2008-09-24

C++编程惯用法-高级程序员常用方法和技巧(下)

C++编程惯用法-高级程序员常用方法和技巧(下)

2008-09-24

Dot Net Remoting - [MS Press] - Microsoft .NET Remoting - (2003) - (Code samples in C-Sharp) .chm

Dot Net Remoting - [MS Press] - Microsoft .NET Remoting - (2003) - (Code samples in C-Sharp) .chm

2008-07-08

VB对象常数大全.chm

VB对象常数大全.chm<br>辅助开发很有用的工具书

2008-07-08

从硬盘安装Linux操作系统

从硬盘安装Linux操作系统

2008-05-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除