您好,欢迎光临本网站![请登录][注册会员]  
文件名称: linux 游戏 编程
  所属分类: Linux
  开发工具:
  文件大小: 7mb
  下载次数: 0
  上传时间: 2008-12-11
  提 供 者: fengx******
 详细说明: 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 ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: linux 游戏 编程
 输入关键字,在本站1000多万海量源码库中尽情搜索: