Chapter 6: Enemy and Collisions

https://leanpub.com/gameprogramminggolang

Technical requirements

https://leanpub.com/gameprogramminggolang

Understanding collisions in 2D games

https://leanpub.com/gameprogramminggolang

node2d.go, add GetWorldPosition

https://leanpub.com/gameprogramminggolang

collision.go, CollisionCircle and overlap test

https://leanpub.com/gameprogramminggolang

Struct and constructor

https://leanpub.com/gameprogramminggolang

Overlap test

https://leanpub.com/gameprogramminggolang

collisionMask.go, layers and collision filtering

https://leanpub.com/gameprogramminggolang

Layer constants

https://leanpub.com/gameprogramminggolang

CollisionMask struct

https://leanpub.com/gameprogramminggolang

CanCollideWith and GetIdentity

https://leanpub.com/gameprogramminggolang

collider.go, Node2D with collision

https://leanpub.com/gameprogramminggolang

Struct Collider

https://leanpub.com/gameprogramminggolang

SetOnCollide

https://leanpub.com/gameprogramminggolang

Getters and CanCollideWith

https://leanpub.com/gameprogramminggolang

collisionManager.go, CheckCollision

https://leanpub.com/gameprogramminggolang

Where the manager lives

https://leanpub.com/gameprogramminggolang

Struct, registration, and NewCollider

https://leanpub.com/gameprogramminggolang

CollisionManager struct

https://leanpub.com/gameprogramminggolang

NewCollisionManager

https://leanpub.com/gameprogramminggolang

AddCollider

https://leanpub.com/gameprogramminggolang

NewCollider

https://leanpub.com/gameprogramminggolang

Registration in Player and Enemy

https://leanpub.com/gameprogramminggolang

How many pairs per frame?

https://leanpub.com/gameprogramminggolang

Why j = i + 1 (no duplicate pairs)

https://leanpub.com/gameprogramminggolang

Sampling each collider once per outer step

https://leanpub.com/gameprogramminggolang

Scene graph vs collider slice, two parallel structures

https://leanpub.com/gameprogramminggolang

When to call CheckCollision

https://leanpub.com/gameprogramminggolang

Timeline, the frame contact happens

https://leanpub.com/gameprogramminggolang

CheckCollision

https://leanpub.com/gameprogramminggolang

circleSample, cached circle geometry

https://leanpub.com/gameprogramminggolang

sampleCircle, read centre and radius from a collider

https://leanpub.com/gameprogramminggolang

pairWantsCollision, layer mask filter

https://leanpub.com/gameprogramminggolang

samplesOverlap, narrow-phase circle test

https://leanpub.com/gameprogramminggolang

notifyPair, invoke callbacks

https://leanpub.com/gameprogramminggolang

checkColliderPair, one unordered pair end-to-end

https://leanpub.com/gameprogramminggolang

CheckCollision, pair loops only

https://leanpub.com/gameprogramminggolang

Cost per pair (unchanged behaviour)

https://leanpub.com/gameprogramminggolang

Chapter 7 note, combineCollisionIDs

https://leanpub.com/gameprogramminggolang

What the manager does not do

https://leanpub.com/gameprogramminggolang

O(n²) loop and when to optimise

https://leanpub.com/gameprogramminggolang

Debugging CheckCollision

https://leanpub.com/gameprogramminggolang

spawnEnemyFarFrom, enemy spawn for infinite map

https://leanpub.com/gameprogramminggolang

Why spawning is different on an infinite map

https://leanpub.com/gameprogramminggolang

Distance choice: 200 pixels

https://leanpub.com/gameprogramminggolang

Struct and constant

https://leanpub.com/gameprogramminggolang

spawnEnemyFarFrom and NewEnemyFarFromPlayer

https://leanpub.com/gameprogramminggolang

game.go, setup and logic

https://leanpub.com/gameprogramminggolang

Imports

https://leanpub.com/gameprogramminggolang

Constants

https://leanpub.com/gameprogramminggolang

Paths and layers

https://leanpub.com/gameprogramminggolang

Game struct

https://leanpub.com/gameprogramminggolang

NewGame, engine, textures, input

https://leanpub.com/gameprogramminggolang

NewGame, tileset and tilemap

https://leanpub.com/gameprogramminggolang

NewGame, player

https://leanpub.com/gameprogramminggolang

NewGame, enemy

https://leanpub.com/gameprogramminggolang

NewGame, camera and callback

https://leanpub.com/gameprogramminggolang

Update, gameOver and player movement

https://leanpub.com/gameprogramminggolang

Update, enemy AI and collisions

https://leanpub.com/gameprogramminggolang

Draw, engine draw and HUD overlay

https://leanpub.com/gameprogramminggolang

HUD, the GAME OVER overlay

https://leanpub.com/gameprogramminggolang

Running the chapter

https://leanpub.com/gameprogramminggolang

go.mod, dependencies

https://leanpub.com/gameprogramminggolang

Summary

https://leanpub.com/gameprogramminggolang