3D
GAMES

CLASS SYLLABUS

Instructor: Bruce Donald Campbell
Faculty, Continuing Education - RISD
Adjunct Professor, Brown, Computer Science (research)


Email: bcampbel01@risd.edu

Prerequisites: None

DESCRIPTION

Art meets mathematics when you combine visual and technical approaches to create game elements using Blender, a free, open source 3D modeling tool. Through object-making exercises, Blender fundamentals are explained and put to use. The course covers viewport and navigation, interface management, select and transform, vertex, edge and face refinement of model sub-objects, and illustration for object aesthetics for use in a 3D game concept. You'll be able to export your game components to be presented in any web browser, and can then use them for future integration into online games. Join us for this compelling course, where the logical mind and the creative mind converge.

RESOURCES

CLASS LINKS

  1. WebGL Home Page
  2. three.js Home Page
  3. Blender YouTube Video Series
  4. VRML Example
  5. Saving A 3-D Animation in Blender

TECHNOLOGY REQUIRED

SYLLABUS

TOPIC1

welcome and getting started

By the end of this topic you will: 

  • have been introduced to HTML as the model language for Web games in 2-D and 3-D.
  • have been introduced to CSS as the view presentation language for Web games in 2-D and 3-D
  • have been introduce to JavaScript as the controller language for Web games in 2-D and 3-D

Readings/Materials/Videos:

Explore the three.js home page to get a sense of how 3-D objects are integrated with web games
Get a sense of WebGL as the prominent graphics library for web graphics
.
Read about
what is 3-D modeling and what is it good for.

Video 1: Thoughts on creating video games:
Video 2: The web design methodology: model, view, and controller:
Video 3: Let's write some model, view, and controller code:

TOPIC2

3-D modeling basics with Blender

By the end of this topic you will: 

  • have been introduced to Blender software and 3-D object modeling in general
  • explore the Blender viewport and physics of navigation
  • become adept at manipulating the viewport to gain a comfortable interaction technique

Readings/Materials:

Consider using gITF export for game integration (if you want to dive in now, see the glTF home page). 
Consider using an OBJ loader in three.js.

Bookmark this useful Blender YouTube Series at:
www.youtube.com/playlist?list=PLa1F2ddGya_-UvuAqHAksYnB0qL9yWDO6

Video 1: Introduction to Web games:
Video 2: Setting up a Local Web Server for Testing a Composition:
Video 3: Investigating and Editing 3-D models with Blender:

TOPIC3

inputs and outputs integration of mouse and keyboard

By the end of this topic you will: 

  • be comfortable at injecting models into a 3-D online code base.
  • be comfortable manipulating objects with mouse control.
  • be comfortable manipulating objects with keyboard control.

Video 1: Understanding a Scene Graph as Convenience for Composition Coding:
Video 2: Adding Keyboard and Mouse Interaction to a Scene Composition:
Video 3: Investigating the Frame Loop that Manages a Scene Animation:

TOPIC4

writing event handlers in JavaScript

By the end of this topic you will: 

  • understand how the HTML5 event model works in providing game interaction.
  • go an iteration deeper in looking at frame loops as the coordinator of animation.
  • have gained more confidence in understanding the Slant game code used throughout this course.
Video 1: Refining Mouse Interactivity in a Web Game:
Building Action in the Frame Loop of your Game:
Video 3: A descriptive look at the component code for the game of Slant:

TOPIC5

three.js the interactive game controller language

By the end of this topic you will: 

  • have an appreciation for texturing 3-D objects for game use,
  • have explored a simplified use of Three.js in a game development exercise,
  • have thought through how to use arrays and collections for any game's complexity.

Video 1: Texturing a Game Object within Blender
Video 2: Explore a Simplified Use of Three.js in a 3-D Web Game:
Video 3: Using Arrays and Collections for Game Complexity:

TOPIC6

organizing data variables for efficiency of code and performance

By the end of this topic, you will:

  • understand how collections help scale up visual complexity in Web games.
  • understand how arrays help manage variables efficiently
  • have integrated effective collections into your 3-D Web game code.

Video 1: Integrating more Game Elements through Arrays and Frameloop Code:
Video 2: Adding a second player to a Video Game with HTML, CSS, and JavaScript:

TOPIC7

integrating rules, audio, and physics

In this topic, you learn how to add more exotic features to your game

By the end of this topic you will: 

  • understand how to write good animation code
  • understand how to add audio for player feedback and game mood
  • understand how to code physics in a frame loop
  • understand the power of artificial intelligence for game play


Videos:

Video 1: Adding new design components via model, view, and controller code:
Video 2: Adding audio and physics to your game:
Video 3: Game states and adding intelligence to your game:

Homework/Assignments:

TOPIC8

bringing it all together into your project

In this topic, we review the whole process of 3-D web game creation, with a focus on 3-D objects and how they integrate into a game engine.

By the end of this week, you will:

  • have created a final 3-D model and exported it as an object to be used in a web game.
  • have participated in the final critique and object integration activity
  • have played around with a procedural modeling script
  • worked with a pipeline of procedural generation to handcrafted modification
  • have gained a roadmap as to where to turn next to build upon the skills learned in this class

Readings/Materials/Videos:

Video 1: Using Integrated Python Scripting in Blender to Generate Geometry: 
Video 2: Thoughts on Connecting the Virtual World with the Physical during Blender Modeling: 
Video 3: Preparing for our final critique:

Video 4: Final Projects in Summer 2020 3-D Game Design and Composition Courses:

Homework/Assignments:

    • Perform the final homework assignment as described in the third video above

EXAMPLE STUDENT PROJECTS:

Alan (Giraffe Maze)
Emma (Kitty Yarn)
Michelle (Here Be Dragons)
Maliha (The Donut Monster)
Marisa (Gameboy Gardening)
Kate (Shark Attack!)
Nora and James (Jet Cloud Fighter)
Summer Camp 2020 (Donut Madness)
Shamus (Ducky Fun)
Tarun (Asteroid Sim)
Tiffany (Candyland Math)
Yang (Bunny Fun)