From 5ad534b7cbc642cd83886751848cbf0d090a49d4 Mon Sep 17 00:00:00 2001 From: Evan Hemsley <2342303+ehemsley@users.noreply.github.com> Date: Thu, 23 May 2019 19:35:19 -0700 Subject: [PATCH] moving + started writing bounce section --- content/pong/ball/bouncing.md | 53 ++++++++++++++++ content/pong/ball/moving.md | 110 +++++++++++++++++++++++++++++++++ static/images/moving_ball.webm | Bin 0 -> 97770 bytes 3 files changed, 163 insertions(+) create mode 100644 content/pong/ball/bouncing.md create mode 100644 content/pong/ball/moving.md create mode 100644 static/images/moving_ball.webm diff --git a/content/pong/ball/bouncing.md b/content/pong/ball/bouncing.md new file mode 100644 index 0000000..2af2ec2 --- /dev/null +++ b/content/pong/ball/bouncing.md @@ -0,0 +1,53 @@ +--- +title: "Bouncing" +date: 2019-05-23T18:38:51-07:00 +weight: 30 +--- + +Let's make the ball bounce off the sides of the game window. + +I know what you're thinking. "Let's just read the dimensions of the game window. When the ball goes past them, we know it should bounce!" + +**NO.** + +We don't want the behavior of any object to be directly tied to some state outside of the game simulation. That's just asking for trouble!! + +Let's make a BoundariesComponent instead. In **game/components/boundaries.ts** + +```ts +import { Component } from "encompass-ecs"; + +export class BoundariesComponent extends Component { + public left: number; + public top: number; + public right: number; + public bottom: number; +} +``` + +Now we have two options. We could put this on the ball or on a separate Entity. But let's think about it - the paddles need to respect the boundaries too, right? So let's make it a separate Entity. + +{{% notice tip %}} +It's perfectly valid to create Entities for the purpose of only holding one Component. It's good architecture a lot of the time! +{{% /notice %}} + +In **game/game.ts**: + +```ts +const boundaries_entity = world_builder.create_entity(); +const boundaries_component = boundaries_entity.add_component(BoundariesComponent); +boundaries_component.left = 0; +boundaries_component.top = 0; +boundaries_component.right = 1280; +boundaries_component.bottom = 720; +``` + +Now how do our boundaries actually work? You might recall that our MotionEngine updates the positions of objects directly. But that means it could leave something out of the boundary. Remember that we can't have two Engines mutate the same Component type. + +We could do boundary checking inside of MotionEngine. But we don't know that everything that moves will need to respect the boundary, so it seems bad to put that inside of MotionEngine. + +I think what we should do is have two new Engines. The first will be an Engine that takes a Message that reads a position and checks if it is outside of the boundaries. Then we can make a new Engine that finalizes the new value of the PositionComponent. + +```ts + +``` diff --git a/content/pong/ball/moving.md b/content/pong/ball/moving.md new file mode 100644 index 0000000..cf55240 --- /dev/null +++ b/content/pong/ball/moving.md @@ -0,0 +1,110 @@ +--- +title: "Moving" +date: 2019-05-23T18:10:17-07:00 +weight: 20 +--- + +We already have MotionMessages and a MotionEngine. So it seems logical to re-use these structures for our ball. + +What is actually going to be sending out the MotionMessages? + +What is the main characteristic of the ball in Pong? That's right - it is continuously moving. In other words, it has velocity. + +Let's make a VelocityComponent. In **game/components/velocity.ts**: + +```ts +import { Component } from "encompass-ecs"; + +export class VelocityComponent extends Component { + public x: number; + public y: number; +} +``` + +Let's also create a VelocityEngine. + +What does our VelocityEngine actually do? Basically, if something has both a PositionComponent and VelocityComponent, we want the PositionComponent to update based on the VelocityComponent every frame. + +It turns out Encompass provides a structure for this pattern, called a Detector. Let's use it now. + + In **game/engines/velocity.ts**: + +```ts +import { Detector, Emits, Entity } from "encompass-ecs"; +import { PositionComponent } from "game/components/position"; +import { VelocityComponent } from "game/components/velocity"; +import { MotionMessage } from "game/messages/component/motion"; + +@Emits(MotionMessage) +export class VelocityEngine extends Detector { + public component_types = [ PositionComponent, VelocityComponent ]; + + protected detect(entity: Entity) { + const position_component = entity.get_component(PositionComponent); + const velocity_component = entity.get_component(VelocityComponent); + + const motion_message = this.emit_component_message(MotionMessage, position_component); + motion_message.x = velocity_component.x; + motion_message.y = velocity_component.y; + } +} +``` + +A Detector, like a Spawner, is an engine with one required property and method: *component_types* and *detect*. + +When an Entity has all of the components specified in *component_types*, it begins to track the Entity. Each frame, it calls its *detect* method on that Entity. + +So, our VelocityEngine will track everything with a PositionComponent and VelocityComponent and create a MotionMessage every frame. + +Let's add our new Engine to the WorldBuilder: + +```ts +world_builder.add_engine(VelocityEngine); +``` + +And add our new VelocityComponent in the BallSpawner. + +```ts +const velocity_component = ball_entity.add_component(VelocityComponent); +velocity_component.x = 50; +velocity_component.y = -50; +``` + +Actually lets get rid of that magic value by adding velocity to the BallSpawnMessage. + +**game/messages/ball_spawn.ts** + +```ts +import { Message } from "encompass-ecs"; + +export class BallSpawnMessage extends Message { + public x: number; + public y: number; + public size: number; + public x_velocity: number; + public y_velocity: number; +} +``` + +**game/engines/spawners/ball.ts** + +```ts +const velocity_component = ball_entity.add_component(VelocityComponent); +velocity_component.x = message.x_velocity; +velocity_component.y = message.y_velocity; +``` + +**game/game.ts** + +```ts +ball_spawn_message.x_velocity = 50; +ball_spawn_message.y_velocity = -50; +``` + +Let's run the game again. + + + +Still pretty boring but we're getting somewhere. diff --git a/static/images/moving_ball.webm b/static/images/moving_ball.webm new file mode 100644 index 0000000000000000000000000000000000000000..35d4261b85a3b048215a889a954d872228b2277f GIT binary patch literal 97770 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

b!O$p;Rr{32m;J3WYv2+5#CHSo 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 TXdgjV4y`47o?E0735xy=X6!Kn literal 0 HcmV?d00001