These are the topics we are going to cover in class each day. Links to example student videos
- Update the separate axis theorem to handle to polygons
- Each polygon is moved from model space to world space
- Each polygons is used to find edges
- Each polygon is project down each edge
- If there is a gap, there is not a collision
- If there is a gap, there is a collision.
- We want the engine to keep track of collisions for game objects that have been "labeled" with a Collider component
- We can use colliders to simplify hit boxes
- The engine will track anything that has a Collider component
- The engine will send events when there is a collision with the game objects in question
- Components can listen for these events to fire
- The engine will report when the mouse is over a game object
- We need to move the mouse from screen space (pixels) into world space
- We invert the camera matrix and the matrix that moves the origin to the center of the screen
- We then report overlap
- Components can listen for these events to fire
- Break the text of the label down using
split - Add each word to the current line.
- If the line is now too long, write the line without the word.
- Look at collisions in a game: https://www.allsonicgames.net/sonic-the-hedgehog.php
Module: Vector Operations
Module: Separate Axis Theorem
- Mouse Move
- Text Height
Module: Game Object Hierarchies
Module: Mouse Input
- How can you convert your game to use hierarchies?
- Why do many games use a combination of inputs, e.g. mouse and keyboard instead of just keyboard or mouse?
- Line wrapping in TextLabels (do it yourself)
- Scene background bug
- JSDoc so VS Code is helpful
- Scale/rotate bug (make sure your code is updated)
- Review AI policy
- Compare code (e.g. githubcompare.com)
- Negative scales produce a flip
- Transparency in colors
Module: broadcastMessage
Module: Layers
Module: Cameras
- This allows you to really differentiate start and stop scenes from the main game scenes
- The Camera component of the main camera stores the background color
[No additional topics covered]
Module: SceneManager
Module: Globals
- Level Controllers
- Unity doesn't allow you to search for multiple game objects by name
- Instead, we give game objects "tags", or a list of string attributes
- This allows us to look for all game objects that are tagged as enemies or UI
- The function we add is
GameObject.findGameObjectsWithTag
Module: getComponent
Module: TextLabel
Add scale and rotate to transforms. See the Module on Transforms
- Our ship has the same shape as our player ship
- We can save time by creating an asset and reusing it
- We can save time by rotating the ship asset for the enemy ship
Module: Time.deltaTime
Module: GameObject.name
Module: Communication - GameObject.find
Module: Basic Collisions
Module: Game Object Lifecycle - Destroy
Module: Transform - Basics
Module: Instantiate
Module: Polygon Component
Module: Customizable Components
- Look at a video about a game and look for scenes, game objects, and components
- Upcoming sprint expectations
- You can study JS as part of your sprint
- You can plan the scenes, game objects, and components in your game. Just make sure you can show it to us during the sprint.
- You can review/finish transcribing the engine. You can go through and add comments to help you understand the concepts.
- Otherwise, work on your engine and game
Module: Standard Architecture for Games
- What is a game loop?
- What is a vector?
Module: Intro to Game Engines
Module: Intro to Keyboard Input
- Many of the topics from this lecture can be found in this video about game loops
- What is the difference between the Box Model, SVG, and Canvas?
- What is the difference between the JS keyword
letandconst?
- In this class, a game is an enjoyable, interactive, visual simulation.
- How are we going to learn game programming?
- Learn the math
- Learn the architecture
- Practice
Module: Introduction to Game Loop
Module: Introduction to Vectors
Module: Classes in Javascript
- Create a simple moving game object simulation using the new Vector2 class.
- Why is creative mode in Minecraft considered a game while a painting app is not?
- Can you make the code use arrays so that you don't need to manually call
lineTofor each vertex?
- Many of the topics from this lecture can be found in this video about game loops
- Welcome to class
- Get a GitHub account
Module: Game Programming Courses
- We are going to build a 2D game engine and game in JavaScript
- So we can focus on programming, not gathering assets, our games in this class will not include:
- Images (Including emoji)
- Sounds
- I will be using the VS Code IDE in class, but you can use any IDE
- I will be using the Live Server in VS Code, but you don't have to.
- You can see some examples of what previous students have done on YouTube








