Computational Literacies Lab

13. Games project

Week 13 (November 27)

Due: 3.4 Simulation problem set

Working on our game projects. A livecoding example

Notes

  • Logistics
    • Unit 3 problem set cancelled. (The problem set explores simulation, and the relationship between mathematical analysis and computational modeling. Let me know if you're interested.)
    • Please let me know if you'd like help as we start wrapping up coursework.
  • Game project livecoding. The main goal is to share with you how I work on an open-ended project like a game.
  • Here's my final code for Beast. If you want a copy for yourself, run git clone https://github.com/cproctor/retro.git and then navigate to retro/examples/beast.

Beast proposal

1.1 Team

It's just me!

1.2 Game overview

I want recreate the game Beast.

1.3 Core mechanics

  • The player is controlled by the arrow keys.
  • A certain number of Beasts move around the board, trying to eat the player.
  • Blocks can be pushed. If a block is pushed into another block, the whole stack can be pushed. However, there are some immovable blocks, and blocks can't be pushed into immovable blocks. If a stack of one or more blocks is pushed into a beast, and there's a block behind the beast, it will be squished. If there isn't a block behind the beast, the beast can't be pushed.
  • The goal of the game is to squish all the beasts.

1.4 Milestone

The first milestone will be getting a player, a beast, and some blocks on the board. I want to be able to push the blocks around.

1.5 Challenges

I can foresee two challenges in this game:

  • How will I program interactions between players, blocks, and beasts? In particular, how will the player be able to push a stack of blocks? The player will have to try to push the first block, which will try to push the next, and so on, until the last block either succeeds in getting pushed, or can't be pushed. Then the message has to be relayed back up the stack to the player, who either gets to move into the formerly-occupied space, or doesn't.
  • How will I set up the board? I want a lot of blocks and beasts, and I don't want any of them to occupy the same space.
  • How will I get the beasts to chase the player?