Limit search to available items
Book Cover
E-book
Author Jackson, Wallace, author.

Title Beginning Java 8 games development / Wallace Jackson
Published [Place of publication not identified] : Apress, 2014

Copies

Description 1 online resource (xxvii, 461 pages) : color illustrations
Series The experts voice in Java
Expert's voice in Java.
Contents Machine generated contents note: Prepare a Workstation for Java 8 Game Development -- Downloading Java JDK 8 and NetBeans 8.0 -- Installing the Java 8 Software Development Environment -- Installing NetBeans IDE 8.0 -- Installing New Media Content Production Software -- Downloading and Installing Inkscape -- Downloading and Installing GIMP -- Downloading and Installing Audacity -- Downloading and Installing EditShare Lightworks -- Downloading and Installing Blender -- Other Open-Source Software Packages of Interest -- Organizing Quick Launch Icons in Your Taskbar Area -- Summary -- Primary Attributes of NetBeans 8.0: An Intelligent IDE -- NetBeans 8.0 Is Smart: Put Your Code Editing into Hyperdrive -- NetBeans 8.0 Is Extensible: Code Editing with Many Languages -- NetBeans 8.0 Is Efficient: Organized Project Management Tools -- NetBeans 8.0 Is User Interface Design Friendly: UI Design Tools -- NetBeans 8.0 Is not Bug Friendly: Squash Bugs with a Debugger -- NetBeans 8.0 Is a Speed Freak: Optimize the Code with a Profiler -- Creating Your Java 8 Game Project: The InvinciBagel -- Compiling Your Java 8 Game Project in NetBeans 8.0 -- Running Your Java 8 Game Project in NetBeans 8.0 -- Profiling Your Java 8 Game Project in NetBeans 8.0 -- Profiling Your Java 8 Game Application CPU Usage -- Profiling Your Java 8 Game Application Memory Usage -- Summary -- Syntax of Java: Comments and Code Delimiters -- Java APIs: Using Packages to Organize by Function -- Java Classes: Logical Java Constructs to Build On -- Nested Classes: Java Classes Living Inside Other Classes -- Inner Classes: Different Types of Nonstatic Nested Classes -- Java Methods: Core Java Function Code Constructs -- Creating a Java Object: Invoking a Class's Constructor Method -- Creating a Constructor Method: Coding an Object's Structure -- Java Variables and Constants: Values in Data Fields -- Fixing Data Values in Memory: Defining a Data Constant in Java -- Java Modifier Keywords: Access Control and More -- Access Control Modifiers: Public, Protected, Private, Package Private -- Nonaccess Control Modifiers: final, static, abstract, volatile, synchronized -- Java Data Types: Defining Data Type in Applications -- Primitive Data Types: Characters, Numbers, and Boolean (Flags) -- Reference Data Types: Objects and Arrays -- Java Operators: Manipulating Data in the Application -- Java Arithmetic Operators -- Java Relational Operators -- Java Logical Operators: -- Java Assignment Operators -- Java Conditional Operators -- Java Conditional Control: Decision Making or Loops -- Decision-Making Control Structures: Switch-Case and If-Else -- Looping Control Structures: While, Do-While, and For -- Java Objects: Virtual Reality, Using Java Constructs -- Creating an InvinciBagel Object: Attributes, States, and Behavior -- Creating an InvinciBagel Blueprint: Create the GamePiece Class -- Creating a GamePiece() Constructor: Overloading a GamePiece -- Summary -- Overview of JavaFX: From Scene Graph Down to OS -- JavaFX Scene Package: 16 Core Java 8 Classes -- JavaFX Scene Class: Scene Size and Color and Scene Graph Nodes -- JavaFX Scene Graph: Organizing Scenes, Using Parent Nodes -- JavaFX Scene Content: Lights, Camera, Cursor, Action! -- JavaFX Scene Utilities: Scene Snapshots and Antialiasing -- Scene Subpackages: The 13 Other Scene Packages -- Other JavaFX Packages: The 15 Top-Level Packages -- JavaFX Animation for Games: Using javafx.animation Classes -- JavaFX Screen and Window Control: Using javafx.stage Classes -- JavaFX Bounds and Dimensions: Using javafx.geometry Classes -- JavaFX Input Control for Games: Using javafx.event Classes -- JavaFX Thread Control for Games: javafx.concurrent Package -- Summary -- High-Level Concept: Static vs
Dynamic -- Game Optimization: Balancing Static Elements with Dynamic -- Game Design Concepts: Sprites, Physics, Collision -- Types of Games: Puzzles, Board Games, Arcade Games, Hybrids -- Game Design Assets: New Media Content Concepts -- Digital Imaging Concepts: Resolution, Color Depth, Alpha, Layers -- Digital Video and Animation: Frames, Rate, Looping, Direction -- Digital Audio Concepts: Amplitude, Frequency, Samples -- JavaFX Scene Builder: Using FXML for UI Design -- FXML Definition: Anatomy of an XML UI Definition Construct -- Hello World UI FXML Definition: Replicating Your Current UI Design, Using FXML -- Summary -- Game Design Foundation: Primary Function Screens -- Java Class Structure Design: Game Engine Support -- JavaFX Scene Graph Design: Minimizing UI Nodes -- Scene Graph Code: Optimizing Your Current InvinciBagel Class -- Scene Graph Design: Streamlining the Existing .start() Method -- JavaFX UI Classes: HBox, Pos, Insets, and ImageView -- JavaFX Pos Class: Generalized Screen Position Constants -- JavaFX Insets Class: Providing Padding Values for Your UI -- JavaFX HBox Class: Using a Layout Container in a Design -- JavaFX Image Class: Referencing Digital Images in a Design -- JavaFX ImageView Class: Displaying Digital Images in a Design -- JavaFX TableView Class: Displaying Data Tables in a Design -- Scene Graph Nodes: .createSplashScreenNodes() -- Adding Nodes to the Scene Graph: .addStackPaneNodes() -- Testing the InvinciBagel Application: Pulse the Scene Graph -- Finishing an InvinciBagel UI Screen Design: Add Images -- Interactivity: Wiring the InvinciBagel Buttons for Use -- Testing the Final InvinciBagel UI Design -- Profiling the InvinciBagel Scene Graph for Pulse Efficiency -- Summary -- Game Loop Processing: Harnessing a JavaFX Pulse -- Creating a New Java Class: GamePlayLoop.java -- Creating the GamePlayLoop Class Structure: Implementing Your .handle() Method -- Creating a GamePlayLoop Object: Adding Pulse Control -- Profiling the GamePlayLoop Object: Running NetBeans Profiler -- Controlling Your GamePlayLoop: .start() and .stop() -- InvinciBagel Diagram: Package, Classes, and Objects -- Testing the GamePlayLoop: Animating the UI Container -- Profiling the GamePlayLoop: Pulse Engine -- Summary -- Game Actor Design: Defining the Attributes Up Front -- InvinciBagel Sprite Images: Visual Action States -- Creating an Actor Superclass: Fixed Actor Attributes -- Creating an .update() Method: Connect to GamePlayLoop Engine -- Adding Sprite Control and Definition Variables to an Actor Class -- Accessing Actor Variables: Creating Getter and Setter Methods -- Creating a Hero Superclass: Motion Actor Attributes -- Adding Update and Collision Methods: .update() and .collide() -- Adding Sprite Control and Definition Variables to the Hero Class -- Accessing Hero Variables: Creating Getter and Setter Methods -- Updating the Game Design: How Actor or Hero Fit In -- Summary -- Game Surface Design: Adding Resolution Flexibility -- Finishing the UI Design: Coding a Game Play Button -- Testing the Game Play Button: Making Sure Your Code Works -- Upgrading the Other UI Button Code: Making ImageView Visible -- Lambda Expression: A Powerful New Java 8 Feature -- Handling NetBeans Unexpected Updates and Incorrect Warnings -- Event Handling: Adding Interactivity to Your Games -- Types of Controllers: What Types of Events Should We Handle? -- Java 8 and JavaFX Events: javafx.event and java.util -- JavaFX Input Event Classes: The javafx.scene.input Package -- Adding Keyboard Event Handling: Using KeyEvents -- Processing Your KeyEvent: Using the Switch-Case Statement -- Creating the KeyPressed KeyEvent Handling Structure -- Adding Alternate KeyEvent Mapping: Using A-S-D-W -- Updating Our Game Design: Adding Event Handling -- Summary -- Game Design: Adding Our CastingDirector.java class -- List and ArrayList: Using java.util List Management -- Java Interface: Defining Rules for Implementing Your Class -- List<E> Public Interface: A List Collection of Java Objects -- Set and HashSet: Using java.util Unordered Sets -- java.util HashSet Class: Using Unordered Sets of Objects -- Creating Your Casting Engine: CastingDirector.java -- Creating an ArrayList Object: CURRENT_CAST Data Store List -- Another ArrayList Object: COLLIDE_CHECKLIST Data Store List -- Creating a HashSet Object: REMOVED_ACTORS Data Store Set<Actor> -- CastingDirector() Constructor: Having NetBeans Write the Code -- Creating Our Main Actor: The Bagel Hero Subclass -- Summary -- InvinciBageLjava Redesign: Adding Logical Methods -- Scene Event Handling Method: .createSceneEventHandling() -- Adding InvinciBagel: Declare Image, Bagel, and CastingDirector -- Actor Image Assets Loading Method: .loadImageAssets() -- Creating Your InvinciBagel Bagel Object: .createGameActors() -- Adding Your iBagel to the Scene Graph: .addGameActorNodes() -- Creating and Managing Your Cast: .createCastingDirection() -- Create and Start Your GamePlayLoop: .createStartGameLoop -- Update Splashscreen Scene Graph: .createSplashScreenNodes() -- Powering the iBagel Actor: Using the GamePlayLoop -- Moving the iBagel Actor Object: Coding Your .update() Method -- Testing Our New Game Design: Moving InvinciBagel -- Summary -- InvinciBagel Privatization: Removing Static Modifiers -- Passing Context from InvinciBagel to Bagel: Using this Keyword -- Removing a Static iBagel Reference: Revise the Handle() Method -- Using this in GamePlayLoop() Constructor: GamePlayLoop(this) -- Removing the Rest of the Static Variables: StackPane and HBox -- Organizing the .update() Method: .movelnvinciBagel() -- Further Modularization of the .update() Method: .setXYLocation() -- Setting Screen Boundaries: .setBoundaries() Method -- Testing the InvinciBagel Sprite Boundaries: Run> Project -- Summary -- InvinciBagel Animation: The .setImageState() Method
Note continued: InvinciBagel Wait State: If No Key Pressed Set imageState(0) -- InvinciBagel Run State: If KeyPressed Set imageState(1 & 2) -- InvinciBagel Fly State: If KeyPressed Set imageState(3 & 4) -- Mirroring Sprites: Quadrupling Your Image Assets from 9 to 36 -- Animating Your Run Cycle: Creating a Nested If-Else Structure -- Coding Your Run Cycle Throttle: Triple Nested If-Else Structures -- Adding Event Handling: Giving ASDW Keys Function -- Creating ASDW Key Get and Set Methods: NetBeans Insert Code -- Adding Jump and Evade Animation: Using the W and S Keys -- Last Minute Details: Setting the isFlipH Property -- Testing the InvinciBagel Sprite Animation States: Run> Project -- Summary -- Creating the Prop.java Class: Extending Actor.java -- Mirrored Prop Classes: Set the isFlip Property in the Constructor -- Using the Prop Class: Creating Fixed Scene Objects -- Adding Prop and Image Declarations: Prop and Image Objects -- Instantiate Image Objects: Using the .loadImageAssets() Method -- Adding Fixed Sprites Using Prop Objects: .addGameActors() -- Using Larger Scene Props: Compositing with JavaFX -- Summary -- JavaFX AudioClip Class: A Digital Audio Sequencer -- Creating and Optimizing Digital Audio: Audacity 2.0.6 -- Optimization Versus Compression: The Audio Memory Footprint -- Adding Audio to InvinciBageLjava: Using AudioClip -- Referencing AudioClip Assets: Using the java.net. URL Class -- Adding Your Audio Asset Loading Method: .loadAudioAssets() -- Providing Access to Your AudioClip: The .playiSound() Methods -- Summary -- SVG Data Format: Hand Coding Vector Shapes -- Creating and Optimizing Collision Data: Using GIMP -- Creating an Optimized Collision Polygon: Using the Path Tool -- Refining SVG Path Collision Shapes in GIMP: Using Import Path -- Creating and Optimizing Physics Data: Using PhysEd -- Replacing Dummy Collision Data: InvinciBagel.java -- Bagel Class Collision Detection: .checkCollision() -- Locating a Node Object: Using the Bounds Object -- Using Node Local Bounds: The .getBoundsInLocal() Method -- Using Node Parent Bounds: The .getBoundsInParent() Method -- Using Node Intersection: The .intersects(Bounds object) Method -- Using Shape Class Intersect: The .intersect() Method -- Overriding the Abstract Hero Class: .collide() Method -- If Collision Detected: Manipulating the CastingDirector Object -- Removing Actors from the Scene Graph: .getChildren().remove() -- Reset the Removed Actor List: .resetRemovedActors() Method -- Optimizing Collision Detection Processing: if(collide(object)) -- Optimizing the Scene Graph: Using the Group Class -- Creating a Scoring Engine Method: .scoringEngine() -- Summary -- Creating the Score UI Design: Text and Font Objects -- Creating a SCORE Label: Adding the Second Text Object -- Creating the Scoring Engine Logic: .scoringEngine() -- Optimizing the scoringEngine() Method: Using Logical If Else If -- Adding Bounty to the Game: The Treasure.java Class -- Using the Treasure Class: Create Treasure Objects in the Game -- Adding Treasure Collision Detection: Updating .scoringEngine() -- Adding Enemies: The Enemy and Projectile Classes -- Creating Cream Cheese Bullets: Coding a Projectile.java Class -- Adding an Enemy and Projectiles to the Game: InvinciBagel.java -- Adding a Background Image: Using .toBack() Method -- Using Random Number Generators: java.util. Random -- Mounting the Attack: Coding the Enemy Onslaught -- Foundation of an Enemy Class Attack: The .update() Method -- Attacking on Both Sides of the Screen: .initiateAttack() Method -- Adding the Element of Surprise: Animating Your Enemy Attack -- Weaponizing the Enemy: Shooting Projectile Objects -- Creating a Projectile Infrastructure: Adding Projectile Variables -- Invoking a .shootProjectile() Method: Setting shootBullet to True -- Shooting Projectiles: Coding the .shootProjectile() Method -- Making the Enemy Pause Before Firing: pauseCounter Variable -- Shoot the Bullet: Pulling the Trigger Using the launchIt Variable -- Update the .scoringEngine() Method: Using .equals() -- Adding Bullets to a Clip: Updating .addCurrentCast() -- Shooting Cream Cheese Balls: Different Bullet Types -- Tweaking a Game: Fine-Tuning the User Experience -- Randomizing an Auto-Attack: Using .nextBoolean with takeSides -- Add the Element of Surprise: Randomizing the Attack Frequency -- Targeting the InvinciBagel: Adding Enemy Artificial Intelligence -- Adding Gravity to the Bullets: Intro to Game Physics -- Summary
Summary Beginning Java 8 Games Development, written by Java expert and author Wallace Jackson, teaches you the fundamentals of building a highly illustrative game using the Java 8 programming language. In this book, you'll employ open source software as tools to help you quickly and efficiently build your Java game applications. You'll learn how to utilize vector and bit-wise graphics; create sprites and sprite animations; handle events; process inputs; create and insert multimedia and audio files; and more. Furthermore, you'll learn about JavaFX 8, now integrated into Java 8 and which gives you additional APIs that will make your game application more fun and dynamic as well as give it a smaller foot-print; so, your game application can run on your PC, mobile and embedded devices. After reading and using this tutorial, you'll come away with a cool Java-based 2D game application template that you can re-use and apply to your own game making ambitions or for fun
Analysis computerwetenschappen
computer sciences
programmeertalen
programming languages
programmeren
programming
Information and Communication Technology (General)
Informatie- en communicatietechnologie (algemeen)
Notes Includes index
English
Online resource; title from PDF title page (EBSCO, viewed December 18, 2014)
Subject Java (Computer program language)
Video games -- Design
COMPUTERS -- Programming Languages -- Java.
Java (Computer program language)
Video games -- Design
Form Electronic book
ISBN 9781484204153
1484204158