![Page 1: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/1.jpg)
Two Dimensions of AwesomeBy Iain Lobb
![Page 2: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/2.jpg)
Two Dimensions of
Awesome.
![Page 3: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/3.jpg)
I don’t have the
awesome.*
![Page 4: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/4.jpg)
I’m looking for the
awesome.
![Page 5: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/5.jpg)
*I’ve found some of it.
![Page 6: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/6.jpg)
First, let’s troll…
![Page 7: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/7.jpg)
The typical Flash game…
• Stickmen!• Arenas!• 20fps!• 550 x 400!
![Page 8: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/8.jpg)
![Page 9: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/9.jpg)
The retro Flash game…• 8-bit pixel art!• 2 frame animations!• Tile grid!• Everything is a square!• Double pixels! You want to see those
pixels, right?• 3rd party engine!
![Page 10: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/10.jpg)
![Page 11: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/11.jpg)
Now let’s see what they’re doing on games
consoles…
![Page 12: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/12.jpg)
Ray Man Origins
![Page 13: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/13.jpg)
Limbo
![Page 14: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/14.jpg)
The 2D awesome…• HD graphics.• 60 frames per second• Smooth scrolling camera. • Multiple layers of parallax.• Uneven, organic terrain.• Expressive character animation.
![Page 15: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/15.jpg)
BunnyMark• 26x37 pixel sprite• 30fps• 640x480
![Page 16: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/16.jpg)
Demo #1BunnyMark - Bitmaps
![Page 17: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/17.jpg)
4000 bunnies
![Page 18: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/18.jpg)
Demo #2BunnyMark - Blitting
![Page 19: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/19.jpg)
6000 bunnies
![Page 20: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/20.jpg)
Demo #3BunnyMark – HTML5 Canvas
![Page 21: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/21.jpg)
2000 bunnies
![Page 22: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/22.jpg)
Bunny Domination!
![Page 23: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/23.jpg)
BunnyLandMark• A more realistic scenario• 30fps• 640x480• 26x37 pixel sprite• Scrolling world• Depth-sorted sprites
![Page 24: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/24.jpg)
Demo #4BunnyLandMark – Bitmaps
![Page 25: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/25.jpg)
22,000 bunnies
![Page 26: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/26.jpg)
Demo #5BunnyLandMark – Blitting
![Page 27: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/27.jpg)
90,000 bunnies!
![Page 28: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/28.jpg)
Now something shocking…
![Page 29: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/29.jpg)
Soylent Green is people!
![Page 30: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/30.jpg)
BunnyMark is a lie.
![Page 31: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/31.jpg)
60 fps
![Page 32: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/32.jpg)
Demo #6BunnyMark – Bitmaps (60fps)
![Page 33: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/33.jpg)
1500 bunnies
![Page 34: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/34.jpg)
Demo #7BunnyMark – Blitting (60fps)
![Page 35: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/35.jpg)
1500 bunnies
![Page 36: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/36.jpg)
HD resolution• Typically Flash game = 640x480• Portal maximum = 800x600• Nitrome = 500x500 pixels• Rayman Origins = 1080p =
1920x1080• 500x500 can fit into 1080p eight
times!
![Page 37: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/37.jpg)
960x720
![Page 38: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/38.jpg)
Demo #8BunnyMark –
Bitmaps (60fps)960 x 720
![Page 39: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/39.jpg)
1000 bunnies
![Page 40: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/40.jpg)
Demo #9BunnyMark –
Blitting (60fps)960 x 720
![Page 41: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/41.jpg)
1000 bunnies
![Page 42: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/42.jpg)
Sprites• 256x148•Digital painting• Scale +/- 50%• Rotation
![Page 43: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/43.jpg)
Introducing PirateMark!
• 60 fps• 960x720• 256x148 sprite• Scaling +/- 50%• Rotation• How many sprites can we have?
![Page 44: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/44.jpg)
Demo #10PirateMark –
Bitmaps (60fps)
![Page 45: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/45.jpg)
…
![Page 46: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/46.jpg)
20 pirates
![Page 47: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/47.jpg)
Demo #11PirateMark –
Bitmaps (30fps)
![Page 48: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/48.jpg)
40 pirates
![Page 49: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/49.jpg)
Demo #12PirateMark –
Blitting (60fps)
![Page 50: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/50.jpg)
15 pirates
![Page 51: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/51.jpg)
Demo #13PirateMark –
Blitting (30fps)
![Page 52: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/52.jpg)
80 pirates
![Page 53: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/53.jpg)
Stage3D
![Page 54: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/54.jpg)
Demo #14PirateMark –
ND2D
![Page 55: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/55.jpg)
20 pirates
![Page 56: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/56.jpg)
Demo #15PirateMark – Genome2D
![Page 57: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/57.jpg)
80 pirates
![Page 58: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/58.jpg)
Demo #16PirateMark –
Starling
![Page 59: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/59.jpg)
100 pirates
![Page 60: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/60.jpg)
Demo #17PirateMark – haXe NME
![Page 61: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/61.jpg)
150 pirates
![Page 62: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/62.jpg)
Demo #18PirateMark –
HTML5 Canvas
![Page 63: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/63.jpg)
0 pirates
![Page 64: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/64.jpg)
100 pirates
![Page 65: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/65.jpg)
He who controls the graphics card
drivers, controls the universe!
![Page 66: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/66.jpg)
Can we support Stage3D and
software rendering?
![Page 67: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/67.jpg)
Can we support 30fps and 60fps?
![Page 68: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/68.jpg)
// Frame-based Euler
function update(){ speedY += gravity; speedX *= drag;
speedY *= drag; x += speedX; y += speedY;}
![Page 69: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/69.jpg)
// Time-based Improved Euler
function update(time:Number){ speedY += gravity * time; speedX *= Math.pow(drag, time); speedY *= Math.pow(drag, time); x += (speedX + oldSpeedX) / 2; y += (speedY + oldSpeedY) / 2; oldSpeedX = speedX; oldSpeedY = speedY;}
![Page 70: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/70.jpg)
Demo #19Improved
Euler
![Page 71: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/71.jpg)
...or fix your time step and interpolate.
![Page 72: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/72.jpg)
Camera and Parallax Scrolling
![Page 73: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/73.jpg)
• A 2D camera is just an X and Y offset.• Subtract the camera position from
each sprite’s world position to get its screen position.
2D Camera
![Page 74: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/74.jpg)
// Simple 2D Camera
for each (var sprite in sprites){ sprite.x = sprite.worldX – cameraX; sprite.y = sprite.worldY – cameraY;}
![Page 75: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/75.jpg)
• By using a container sprite we can make this process even simpler.
• Set the container position to negative the camera position.
• Each sprite will automatically get the correct screen position.
2D Camera
![Page 76: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/76.jpg)
// 2D Camera using container
world.addChild(sprite);
function update(){ world.x = –cameraX; world.y = –cameraY;}
![Page 77: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/77.jpg)
• To enable zooming, we add a second container.
• We move the inner container and scale the outer container.
Zooming
![Page 78: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/78.jpg)
// Zooming 2D Camera
world.addChild(sprite);container.addChild(world);
container.x = stage.stageWidth / 2;container.y = stage.stageHeight / 2;
function update(){ world.x = –cameraX; world.y = –cameraY; container.scaleX = container.scaleY = zoom;}
![Page 79: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/79.jpg)
Demo #21Zooming Camera
![Page 80: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/80.jpg)
• To enable parallax, we position the inner container to negative the camera position, multiplied by a fraction.
Parallax
![Page 81: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/81.jpg)
// Zooming 2D Camera with parallax
world.addChild(sprite);container.addChild(world);
container.x = stage.stageWidth / 2;container.y = stage.stageHeight / 2;
function update(){ world.x = –cameraX * 0.5; world.y = –cameraY * 0.5; container.scaleX = container.scaleY = zoom;}
![Page 82: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/82.jpg)
Demo #22Parallax Camera
![Page 83: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/83.jpg)
Demo #23Starling Camera
![Page 84: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/84.jpg)
Uneven Terrain
![Page 85: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/85.jpg)
hitTestPoint(x, y, shapeFlag);
![Page 86: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/86.jpg)
Demo #24hitTestPoint
![Page 87: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/87.jpg)
hitTestPoint• Only works +/- 2000 pixels• Lags by one frame if you move the container.• Must be on the stage but doesn’t have to be
visible.• Reduce number of calls using AABB broad
phase.• Same principles can be applied using
getPixel32
![Page 88: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/88.jpg)
Bullet
![Page 89: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/89.jpg)
Arrow
![Page 90: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/90.jpg)
Fast moving bullet
![Page 91: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/91.jpg)
Character
![Page 92: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/92.jpg)
Character
![Page 93: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/93.jpg)
Grenade
![Page 94: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/94.jpg)
Grenade
![Page 95: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/95.jpg)
Grenade
![Page 96: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/96.jpg)
Grenade
![Page 97: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/97.jpg)
Demo #25Projectiles
![Page 98: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/98.jpg)
Collision Detection• Box2D / Nape• Straight lines• Why hitTestPoint?
![Page 99: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/99.jpg)
Level Editor• Position objects• Rotate and scale objects• Draw collision areas• Give instance names for code access• Save, Save As, Undo, Redo, Copy, Paste• Zoom
![Page 100: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/100.jpg)
It’s Flash Professional!
![Page 101: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/101.jpg)
It’s Flash Professional!
![Page 102: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/102.jpg)
It’s Flash Professional!
![Page 103: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/103.jpg)
It’s Flash Professional!
![Page 104: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/104.jpg)
Parsing with ActionScript
• Create instance of level• Loop through children.• Determine type of child using
“is”• If no linkage found, assume
terrain
![Page 105: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/105.jpg)
Gotchas
• Small scroll area – scale down and zoom in
• “Invalid size and position”• Flash CS5 crashes creating large SWCs• Expensive
![Page 106: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/106.jpg)
Character Animation
![Page 107: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/107.jpg)
Timelines leak memory!
![Page 108: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/108.jpg)
Sprite Sheets
• Flash, After Effects, Blender• Great performance• High memory use• Not changeable at runtime
![Page 109: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/109.jpg)
Bones• Not the Bone Tool!• Separate sprites for each body part• Saves memory• Adjustable playback speed• Customizable• Parse timeline – animations are pure
data
![Page 110: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/110.jpg)
Demo #26Bones
![Page 111: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/111.jpg)
Demo #28Alice Gameplay
![Page 112: 2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb](https://reader033.vdocuments.mx/reader033/viewer/2022061222/54bfb6764a795948568b4575/html5/thumbnails/112.jpg)
Final thoughts…