Tải bản đầy đủ (.pdf) (1,754 trang)

Killer game programming in java (2005)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (14.71 MB, 1,754 trang )

KillerGameProgramminginJava
ByAndrewDavison
...............................................
Publisher:O'Reilly
PubDate:May2005
ISBN:0-596-00730-2
Pages:1008

TableofContents|Index

AlthoughthenumberofcommercialJavagamesisstillsmallcomparedtothosewrittenin
CorC++,themarketisexpandingrapidly.RecentupdatestoJavamakeitfasterand
easiertocreatepowerfulgamingapplications-particularlyJava3D-isfuelinganexplosive
growthinJavagames.JavagameslikePuzzlePirates,Chrome,StarWarsGalaxies,
Runescape,AlienFlux,KingdomofWars,LawandOrderII,Roboforge,TomClancy's
Politika,andscoresofothershaveearnedawardsandbecomebestsellers.
Javadevelopersnewtographicsandgameprogramming,aswellasgamedevelopersnew
toJava3D,willfindKillerGameProgramminginJavainvaluable.Thisnewbookisa
practicalintroductiontothelatestJavagraphicsandgameprogrammingtechnologiesand
techniques.ItisthefirstbooktothoroughlycoverJava's3Dcapabilitiesforalltypesof
graphicsandgamedevelopmentprojects.
KillerGameProgramminginJavaisacomprehensiveguidetoeverythingyouneedto
knowtoprogramcool,testosterone-drenchedJavagames.Itwillgiveyoureusable
techniquestocreateeverythingfromfast,full-screenactiongamestomultiplayer3D
games.InadditiontothemostthoroughcoverageofJava3Davailable,KillerGame
ProgramminginJavaalsoclearlydetailstheolder,better-known2DAPIs,3Dsprites,
animated3Dsprites,first-personshooterprogramming,sound,fractals,andnetworked
games.KillerGameProgramminginJavaisamust-haveforanyonewhowantstocreate
adrenaline-fueledgamesinJava.



KillerGameProgramminginJava
ByAndrewDavison
...............................................
Publisher:O'Reilly
PubDate:May2005
ISBN:0-596-00730-2
Pages:1008

TableofContents|Index


















































Copyright
Preface

WhoAreYou?
WhatThisBookIsAbout
ThisBook(andMore)IsOnline
WhatThisBookIsNotAbout
AGraphicalViewofThisBook
ConventionsUsedinThisBook
UsingCodeExamples
CommentsandQuestions
SafariEnabled
Acknowledgments
Chapter1.WhyJavaforGamesProgramming?
JavaIsTooSlowforGamesProgramming
JavaHasMemoryLeaks
JavaIsTooHigh-level
JavaApplicationInstallationIsaNightmare
JavaIsn'tSupportedonGamesConsoles
NoOneUsesJavatoWriteRealGames
SunMicrosystemsIsn'tInterestedinSupportingJavaGaming
Chapter2.AnAnimationFramework
AnimationasaThreadedCanvas
ConvertingtoActiveRendering
FPSandSleepingforVaryingTimes
SleepingBetter













































































FPSandUPS
PausingandResuming
OtherAnimationApproaches
Chapter3.WormsinWindowsandApplets
PreliminaryConsiderations
ClassDiagramsfortheWormChaseApplication
TheWorm-ChasingApplication
TheGamePanel
StoringWormInformation
WormObstacles
ApplicationTimingResults
WormChaseasanApplet
CompilationinJ2SE5.0
Chapter4.Full-ScreenWorms
AnAlmostFull-Screen(AFS)Worm
AnUndecoratedFull-Screen(UFS)Worm
AFull-ScreenExclusiveMode(FSEM)Worm
Timingsat80to85FPS
Chapter5.AnIntroductiontoJavaImaging
ImageFormats
TheAWTImagingModel
AnOverviewofJava2D
BufferinganImage

ManagedImages
VolatileImage
Java2DSpeed
PortabilityandJava2D
JAI
Chapter6.ImageLoading,VisualEffects,andAnimation

LoadingImages
ApplyingImageEffects
DisplayingImageSequences
VisualEffectsfor'o'Images
PackagingtheApplicationasaJAR
Chapter7.IntroducingJavaSound

AppletPlaying

TheAudioClipClass

TheSoundPlayer
















































































TheJavaSoundAPI
SampledAudio
MIDI
JavaSoundAPIComparedwithJMFandJOAL
JavaSoundAPIResources
AudioResources
Chapter8.LoadingandPlayingSounds
LoaderDesignandImplementationIssues
TestingtheLoaders
TheSoundsPanel
TheClipsLoader
StoringClipInformation
TheMidiSequencesLoader
StoringMidiInformation
LoadersTestsasaJARFile
Chapter9.AudioEffects
AudioEffectsonSampledAudio
AudioEffectsonMIDISequences
Chapter10.AudioSynthesis
SampledAudioSynthesis
MIDISynthesis
AudioSynthesisLibraries
Chapter11.Sprites
Bats,Balls,andSprites

ClassDiagramsforBugRunner
TheBugStartsRunning
TheAnimationFramework
DefiningaSprite
CodingaSprite
SpecifyingaSpritewithaStatechart
TheBallSprite
DefiningtheBat
Chapter12.ASide-Scroller
JumpingJackinLayers
ClassDiagramsforJumpingJack
StartJackJumping
TheAnimationFramework
ManagingtheRibbons
WraparoundRibbons

















































































ManagingtheBricks
StoringBrickInformation
TheFireball
TheJumpingSprite
OtherSide-ScrollerExamples
TilingSoftware
Chapter13.AnIsometricTileGame
IsometricTiles
ClassDiagramsforAlienTiles
TheAnimationFramework
ManagingtheWorld
ManagingWorldItems
TheTileOccupier
ASpriteonaTile
ThePlayerSprite
TheAlienSprite
TheQuadrant-BasedAlienSprite
TheA*-BasedAlienSprite
StoringTileDetails
FurtherReading
Chapter14.IntroducingJava3D
Java3D
Java3DStrengths
CriticismsofJava3DforGamesProgramming
AlternativestoJava3D
Chapter15.A3DCheckerboard:Checkers3D
ClassDiagramsforCheckers3D

IntegratingJava3DandSwing
SceneGraphCreation
FloatingSpheres
TheFloor
ViewerPositioning
ViewerMovement
ViewingtheSceneGraph
Chapter16.LoadingandManipulatingExternalModels
AnOverviewofLoaderInfo3D
LoadersinJava3D
DisplayingaModel
ExaminingaModel'sSceneGraph

















































































AdjustingaModel'sShapeAttributes
AnOverviewofLoader3D
UsingLoader3D
CreatingtheScene
ManagingtheModel
BuildingtheModel'sSceneGraph
Chapter17.UsingaLathetoMakeShapes
ClassDiagramsforLathe3D
CreatingtheScene
TheLatheCurve
TheLatheShape
SubclassingtheLatheShape
Chapter18.3DSprites
ClassDiagramsforTour3D
CreatingtheScene
TheBasic3DSprite
TheUser'sTouringSprite
TheAlienSprite
BehaviorsinJava3D
ControllingtheTouringSprite
UpdatingtheAlienSprite
Chapter19.Animated3DSprites
ClassDiagramsforAnimTour3D
CreatingtheScene
TheAnimated3DSprite
ControllingtheSprite
AnimatingtheSprite
Full-ScreenExclusiveMode(FSEM)
AFull-ScreenVersionoftheApplication
ProsandConsofKeyframeAnimation

Chapter20.AnArticulated,MoveableFigure
TheArticulatedFigureApplication
ForwardandInverseKinematics
ClassDiagramsforMover3D
CreatingtheScene
ProcessingUserInput
TheCommandsPanel
MakingandMovingtheFigure
















































































ModelingaLimb
MovingaLimb
OtherArticulatedFigures
ArticulationandMeshDeformation

ArticulationandSkinning
ArticulationandMorphing
Chapter21.ParticleSystems
ParticleSystemsinJava3D
ClassDiagramsforParticles3D
CreatingtheScene
AFountainofPoints
AFountainofLines
AFountainofQuads
PerformanceResults
MoreParticleSystems
OtherJava3DApproaches
Non-Java3DApproaches
Chapter22.FlockingBoids
AFlockingApplication
SceneCreation
AddingObstacles
TypesofBoids
GroupingtheBoids
FlockBehavior
Chapter23.ShootingaGun
ClassDiagramsforShooter3D
SceneCreation
TheSoundofShooting
PickingSceneObjects
ControllingtheGun
PreparingtheLaserBeam
CausinganExplosion
PickingwithaMouseClick
ShootingBehavior

FiringtheBeam
MoreonPicking
Chapter24.AFirst-PersonShooter
ClassDiagramsforFPShooter3D
SettingUptheTarget

















































































PositioningandMovingtheUser'sViewpoint
InitializingtheUser'sViewpoint
AddinganImagetotheViewpoint
ManagingtheAmmunition
ManagingaLaserBeam
MovingtheViewpoint

Chapter25.A3DMaze
ClassDiagramsforMaze3D
MakingaMazePlan
TheUserInterface
ManagingtheMaze
SceneryCreation
TilingtheFloor
ViewpointCreation
TheBackFacingCamera
MovingtheViewpoint
TheBird's-EyeView
RelatedApproachestoSceneGeneration
Chapter26.FractalLand
ClassDiagramsfortheFractalLand
BuildingtheFractalLand
CreatingtheLandscape
ConstructingtheGround
GeneratingaFractalLandscape
RespondingtoKeyPresses
TerrainFollowingandCollisionAvoidance
PlacingObjectsintheScene
OtherFractalLandscapes
Chapter27.TerrainGenerationwithTerragen
ClassDiagramsforTerra3D
Terragen
SceneryCreation
BuildingtheLandscape
Making3DScenery
AddingLandscapeWalls
CreatingGroundCover

MovingovertheSurface
FindingtheSurfaceHeight
AcceleratingTerrainFollowing













































































MoreonTerrainGeneration
Chapter28.TreesThatGrow
ClassDiagramsforTrees3D
CreatingtheScene
BuildingaTreeLimb
ExecutingtheRules
DisplayingLeaves
ComparisonwithL-Systems
Chapter29.NetworkingBasics
TheElementsofNetworkCommunication
TheClient/ServerModel
ThePeer-to-PeerModel

Client/ServerProgramminginJava
P2PProgramminginJava
Firewalls
OtherKindsofJavaNetworking
Chapter30.NetworkChat
ThreadedTCPClientsandServer
UDPMulticastingClientsandaNameServer
ClientsUsingaServletasaServer
Chapter31.ANetworkedTwo-PersonGame
TheStandaloneTic-Tac-ToeGame
TheNetworkedTic-Tac-ToeGame
ComparingNetFourByFourandFourByFour
Chapter32.ANetworkedVirtualEnvironment
BackgroundonNVEs
AnOverviewofNetTour3D
SceneCreationontheClient
DefiningSprites
LocalSprites
WatchingtheServer
ServerActivities
OtherJavaNVEs
AppendixA.InstallationUsinginstall4j
install4jVersusJWS
TheJava3DComponents
TheBugRunnerApplication
TheCheckers3DApplication
AppendixB.InstallationUsingJavaWebStart





























JWSBenefits
JWSDownsides
TheJNLPDeploymentFile
StepsinDevelopingaJWSApplication
AJWSInstallerforBugRunner

AJWSInstallerforCheckers3D
AnotherWaytoInstallCheckers3D
TheJWSPortalPage
Third-PartyCertificates
MoreInformation
Colophon

AbouttheAuthor

Colophon
Index


KillerGameProgramminginJava
byAndrewDavison
Copyright©2005O'ReillyMedia,Inc.Allrightsreserved.
PrintedintheUnitedStatesofAmerica.
PublishedbyO'ReillyMedia,Inc.,1005GravensteinHighway
North,Sebastopol,CA95472.
O'Reillybooksmaybepurchasedforeducational,business,or
salespromotionaluse.Onlineeditionsarealsoavailablefor
mosttitles(safari.oreilly.com).Formoreinformation,contact
ourcorporate/institutionalsalesdepartment:(800)998-9938or

Editor:

BrettMcLaughlin

ProductionEditor:


MattHutchinson

ProductionServices

GEX,Inc.

CoverDesigner:

EmmaColby

InteriorDesigner:

DavidFutato

PrintingHistory:



May2005:

FirstEdition.

NutshellHandbook,theNutshellHandbooklogo,andthe
O'ReillylogoareregisteredtrademarksofO'ReillyMedia,Inc.
KillerGameProgramminginJava,theimageofjunglecat,and


relatedtradedressaretrademarksofO'ReillyMedia,Inc.
Java™andallJava-basedtrademarksandlogosaretrademarks
orregisteredtrademarksofSunMicrosystems,Inc.,inthe

UnitedStatesandothercountries.O'ReillyMedia,Inc.,is
independentofSunMicrosystems.
Manyofthedesignationsusedbymanufacturersandsellersto
distinguishtheirproductsareclaimedastrademarks.Where
thosedesignationsappearinthisbook,andO'ReillyMedia,Inc.
wasawareofatrademarkclaim,thedesignationshavebeen
printedincapsorinitialcaps.
Whileeveryprecautionhasbeentakeninthepreparationofthis
book,thepublisherandauthorsassumenoresponsibilityfor
errorsoromissions,orfordamagesresultingfromtheuseof
theinformationcontainedherein.
ISBN:0-596-00730-2
[M]


Preface
WhoAreYou?
WhatThisBookIsAbout
ThisBook(andMore)IsOnline
WhatThisBookIsNotAbout
AGraphicalViewofThisBook
ConventionsUsedinThisBook
UsingCodeExamples
CommentsandQuestions
SafariEnabled
Acknowledgments


WhoAreYou?
Yes,you.Situpstraight,andstopslouching.(Don'tyoujust

lovethisassertivewritingstyle?)
You'reaprogrammerwhowantstoapplyyourabilitiesto2D,
3D,andnetworkgamesprogramming,forentertainmentoras
thefirststepinbecomingagamesprogrammingprofessional.
YouwanttowriteagamethatusesthelatestJavatechnology,
notanappletshowingapenguinwavingitsflipper.
You'vedoneanintroductorycourseonJava,soyouunderstand
aboutclasses,objects,inheritance,exceptionhandling,threads,
andbasicgraphics.Butyouneedinformationaboutmore
advancedstuffliketheAPIsforJava2D,JavaSound,
networking,andJava3D.
You'reprobablymostinterestedinmultiplayer3Dgames
programming,becausethey'rethecoolest.Theyarehardto
code,butthisbookwillgetyouuptospeedonhowtobuild
one.
Youdon'twanttoreinventthewheelsinceJavaisabout
abstraction,informationhiding,andreuse.Thattranslatesinto
buildinggameswithexistinglibraries/classes/tools.


WhatThisBookIsAbout
Thisbookdescribesmodern(i.e.,fastandefficient)Java
programmingtechniquesforwritingabroadrangeofgames,
including2Darcade-style,isometric(2.5D),3D,andnetwork
games,withastrongemphasison3DprogrammingusingJava
3D.
The3Dtopicsincludeloadingexternallyproduced3Dmodels,
3Dsprites,firstpersonshooters(FPS),terraingeneration,
particlesystemsandflocking,anddifferentapproachesto
animation.

Severalchaptersonnetworkgamesbuildtoanexamplewhere
usersmovespritesaroundanetworked3Darena.
IfocusonJ2SE1.4.2,J2SE5.0andJava3D1.3.1.Underthe
hood,Java3DutilizesOpenGLorDirect3D,whichmeansthat
it'llworkonallcurrentversionsofWindows,variousflavorsof
LinuxandUnix,andtheMac.Java3Drequiresnospecial
graphicshardwareandiscompatiblewithallmoderngraphics
cards.
J2SE5.0(or1.4.2)andJava3D1.3.1canbedownloadedfrom
:80/en/download/manual.jspand
/>

WhichSoftwareVersions?
MyJavacodeisdesignedtocompileandruninJ2SE5.0andJ2SE1.4,which
meansthatIavoidusingnewlanguagefeaturesandAPIintroducedinJ2SE5.0.
Themainreasonistoallowmycodetobebackwardcompatiblewitholder(and
stillpopular)Javaversions.ThemainareaswhereIloseoutareinthe
availabilityoftype-safecollectionsandthenanosecondtimemethod,
System.nanoTime(),introducedinJ2SE5.0.
However,mycodeusestheJ2SE1.4collectionsintype-safeways,andIutilize
theJava3DnanosecondtimerinsteadofnanoTime()toachievethesametiming
accuracy.InChapter2,Idiscusstheseissuesinmoredetail.
IuseJava3D1.3.1.althoughthereisabugreleaseversion,1.3.2,whichis
regularlyupdated.IdecidedtoemployVersion1.3.1sinceit'sstableandwelldocumented.InChapter14,ItalkaboutJava3Dinmoredetail.


ThisBook(andMore)IsOnline
Thisbookhasbeengrowingforalongtime,withchaptersand
codeappearingregularlyat
I'vefounditausefulway

ofgaininglotsoffeedback.Thesiteisstillworthvisitingsincea
fewchaptersdidn'tmakeitinherealongwiththesourcecode.


WhatThisBookIsNotAbout
I'mnotgoingtospend200pagesexplainingclassesand
objects,inheritance,exceptionhandling,andthreads.Many
booksdothatalready.AgoodJavaintroductionisThinkingin
JavabyBruceEckel.It'swonawardsandcanbedownloadedat
/>Youwon'tfindanylargegameshere,suchasacompleteFPSor
amultiplayerfantasyworld.Describingoneofthoseindetail
wouldrequirehundredsofpages.Instead,Ifocusonthe
buildingblocksforgames(e.g.,reusableelementssuchas
loaders,andalgorithmssuchasA*pathfinding).Shootingina
3DworldisdescribedinChapters23and24,andChapter32
explainsasimplemultiuser3Dspace.
I'vereducedthequantityofcodelistings;youwon'tfindpage
afterpageofundocumentedcodehere.Thedocumentation
usesmodernvisualaids,includingUMLclassdiagrams,
sequencediagrams,statecharts,and3Dscenegraphs.
The3DmaterialconcentratesonJava3D,becauseit'sahighlevel3DAPIusingastableandwell-documentedscenegraph.
Javahasalternativewaysofprogramming3Dapplications,
includingJOGL,LWJGL,Xith3D,jMEOpenMind,andmore.I'll
discusstheminChapter14,atthestartoftheJava3D
coverage.
Iwon'tbetalkingaboutJ2MEgamesprogrammingonmobile
devices.It'sanexcitingsubject,especiallynowthatamobile
3DAPIisavailable(forexample,intheJ2MEWirelessToolkit
v2.2, />Unfortunately,thisbookisgroaningattheseams,and
somethinghastobeleftout.ForthoseinterestedinJ2ME

gamesprogramming,IsuggestJ2MEGameswithMIDP2by
CarolHamer(but,itdoesn'tcoverthe3DAPI,whichistoo


new).I'vewrittenseveralchaptersontheAPI,whichcanbe
downloadedfromthisbook'swebsiteat
/>Thisisnotagamesdesigntext,atopicdeservingitsownbook
ortwo.TwoIlikeareGameArchitectureandDesign:ANew
EditionbyAndrewRollingsandDaveMorris,andChrisCrawford
onGameDesignbyChrisCrawford.
Ifyoupreferonlinesources,thefollowingsitesarefullof
gamingarticles,reviews,andopinions:
Gamasutra( />GameDev.net( />flipCode( />IGDA,theInternationalGameDevelopersforum
( />

AGraphicalViewofThisBook
Thisbookhasfourparts:2Dprogramming,3Dprogramming
withJava3D,networkprogramming,andtwoappendixeson
installation.Thefollowingfiguresgivemoredetailsabouteach
oneinavisualway.Eachovalisachapter,andthearrowsshow
themaindependenciesbetweenthechapters.Chaptersona
commonthemearegroupedinsidedotted,roundedgray
squares.

2DProgramming
FigureP-1showsthe2D-programmingchapters.

FigureP-1.2D-programmingchapters



Chapter1isadefenseofJavaforgaming,whichJavazealots
canhappilyskip.Theanimationframeworkusedinthe2D
examplesisexplainedinChapter2,followedbytwochapters
applyingittoasimpleWormsexample,firstasawindowed
application,thenasanapplet,thenusingfullscreenmode,and
almostfullscreenmode.Chapters3and4containtimingcode
forcomparingtheframeratespeedsoftheseapproaches.
Chapters5and6areaboutimaging,mostlyconcentratingon
Java2D.Chapter6hasthreemaintopics:classesforloading
images,visualeffects,andanimation.
Chapters7through10areaboutJavaSound:Chapter8
developsclassesforloadingandplayingWAVandMIDIaudio,
andChapters9and10areonsoundeffectsandmusic
synthesis.
Areaderwhoisn'tmuchinterestedinvisualandaudiospecial
effectscanprobablyskipthelatterhalfofChapter6,andallof
Chapters9and10.However,theclassesforloadingimagesand
audiodevelopedinthefirsthalfofChapter6andinChapter8
areutilizedlater.
Chapter11developsa2DSpriteclass,andappliesitina
BugRunnergame.Chapter12isaboutsidescrollers(as
immortalizedbySuperMarioBros.),andChapter13isabout
isometrictilegames(Civilizationisanexampleofthatgenre).

3DProgramming
The3D-programmingchaptersareshowninFigureP-2.

FigureP-2.3D-programmingchapters



Java3DisintroducedinChapter14,followedbytheCheckers3D
exampleinChapter15;itscheckerboardfloor,lighting,and
backgroundappearinseverallaterchapters.
Therearefivemainsubtopicscoveredinthe3Dmaterial:
models,animation,particlesystems,shootingtechniques,and
landscapeandscenery.
Chapter16developstwoapplications,LoaderInfo3DandLoader3D,
whichshowhowtoloadandmanipulateexternallycreated3D
models.ThePropManagerclassusedinLoader3Disemployedin
otherchapterswhenanexternalmodelisrequiredaspartof
thescene.Chapter17developsaLatheShapeclass,whichallows
complexshapestobegeneratedusingsurfacerevolution.


A3DspriteclassisdescribedinChapter18,leadingtoaTour3D
applicationthatallowstheusertoslideandrotatearobot
aroundascene.Chapters19and20examinetwoapproaches
foranimatingthepartsofafigure:Chapter19useskeyframe
sequences,andChapter20developsanarticulatedfigure
whoselimbscanbemovedandrotated.
Particlesystemsareawidelyusedtechniquein3Dgames(e.g.,
forwaterfalls,gushingblood,andexplosionstonameafew).
Chapter21explainsthreedifferentparticlesystemsinJava3D.
Flocking(Chapter22)givestheindividualelements(the
particles)morecomplexbehavioralrulesandisoftenusedto
animatelargegroupssuchascrowds,soldiers,andflocksof
birds.
Lotsofgamesareaboutshootingthings.Chapter23showshow
tofirealaserbeamfromagunsituatedonacheckerboard
floor.Chapter24placestheguninyourhand(i.e.,anFPS).

The3Dchaptersendwithlandscapeandscenerycreation.
Chapter25describeshowtogeneratea3Dmazefromatext
filespecification.Chapter26generateslandscapesusing
fractals,andChapter27usesapopularterraingeneration
package,Terragen,tocreatealandscape,whichisthen
importedintotheJava3Dapplication.Chapter27discussestwo
techniquesforfillingthelandscapewithscenery(e.g.,bushes,
trees,andcastles).
Chapter28concentratesonhowtomaketreesgrowrealistically
overaperiodoftime.
ThedottedarrowfromChapters24to28indicatesaless
pronounceddependency;Ionlyreusethecodeformovingthe
user'sviewpoint.

NetworkProgramming


FigureP-3showsthenetwork-programmingchapters.

FigureP-3.Networkprogrammingchapters

Chapter29suppliesinformationonnetworkingfundamentals
(e.g.,theclient/serverandpeer-to-peermodels),andexplains
basicnetworkprogrammingwithsockets,URLs,andservlets.
Chapter30looksatthreechatvariants:oneusinga
client/servermodel,oneemployingmulticasting,andone
chattingwithservlets.
Chapter31describesanetworkedversionoftheFourByFour
application,aturn-basedgamedemointheJava3D
distribution.ItrequiresaknowledgeofJava3D.Chapter32

revisitstheTour3DapplicationofChapter18(therobotmoving
aboutacheckerboard)andaddsnetworkingtoallowmultiple
userstosharetheworld.Idiscusssomeoftheadvancedissues
concerningnetworkedvirtualenvironments(NVEs),ofwhich
NetTour3Disanexample.

TheAppendixes
TheappendixesareshowninFigureP-4.


FigureP-4.Theappendixes

AppendixAdescribesinstall4j,across-platformtoolforcreating
nativeinstallersforJavaapplications.AppendixBisaboutJava
WebStart(JWS),aweb-enabledinstallerforJavaapplications.
Bothappendixesusethesametwoexamples.BugRunner(from
Chapter11,whichdiscusses2Dsprites)usesthestandardparts
ofJ2SEandtheJ3DTimerclassfromJava3D.Checkers3D,from
Chapter15,ismyfirstJava3Dexample.


×