Giter Site home page Giter Site logo

vexation's Introduction

vexation's People

Contributors

zooce avatar

Stargazers

 avatar

Watchers

 avatar  avatar

vexation's Issues

Mouse handling system feels too complex

I think I need to break up the logic in fn handle_mouse_events because it's doing a lot:

  • check for and convert left mouse button clicks from window coordinates (bottom left origin) to world coordinates (center origin)
  • check for marble selection (send event for highlighting)
  • check for marble deselection (send event for removing highlighting)
  • check for destination clicks

Add new computer player strategies

The only strategy for a computer player right now is choosing moves randomly. To make things a bit more interesting, let's add more strategies for them. I'm thinking at the beginning of a game each computer player randomly chooses a strategy.

  • Random - just randomly choose a move
  • Aggressor - always choose a capture move if available, otherwise choose the longest move possible
  • Rush - always choose the longest move possible

Still need to consider how computer players will choose to use power-ups.

Reorganize....again

I still don't like the way things are organized. I think there are plenty of places where things could be grouped better. Still trying to figure this thing out. I'll probably save this for last just as a way of learning (or experimenting with) organizing Bevy projects.

BUG - possible moves can be missing

Take the following scenario:

  • 4 marbles in the BASE
  • 1 marble at index 5
  • Rolled 1 + 6

In this scenario, we should be able to move a marble from the BASE to the START index (0) with either the 1 or the 6, however we don't actually get to choose which of those dice we want to use for this move. Ideally we would use the 1 to move to the START index and then use the 6 to move the marble at index 5 to index 11.

How can we allow a choice in this case?

Ideas:

  • When clicking on a move location where either die could be used, force the player to click the die they want to use. Maybe highlight the dice and show some UI text saying "Choose a die."
  • Change the turn flow so that a die (or both) must be chosen before selecting a marble to move. (I don't know if I like this idea very much)

Update to Bevy 0.8

Bevy 0.8 was released a few days ago. Need to get this updated to the latest version.

Allow a move by clicking a dice

My wife played the game a while ago without any instructions from me - I wanted to see how intuitive things were so far. One thing I thought was interesting was that she wanted to click one of the dice to make a move. I hadn't thought about that mechanic before but that would solve the problem where you roll a 6 and a 1 and you want to move a marble out of the base to the first location (you currently do not get a choice of which die to use, which could be a problem because you might need one for a move after that).

#19

Change game play flow (to allow for power-ups)

This is a setup task to allow power-ups (to be implemented for #14).

I've been working on this for the last week or so and basically the new flow requires the player to end their own turn. This means that the player can now choose not to use all possible moves. The reason I have this flow is because it will give the player the opportunity to use their power-ups during their turn. It also gives a new layer of strategy because players are no longer forced to use all possible moves for a turn.

I have not yet pushed the commits I've worked on so far (there are quite a few) because I'm still working out some UI issues.

Add a pause menu

I need to add a pause menu so the player can exit the game and maybe even change settings (even though I don't have any settings for the game yet - what else do you do in a pause menu - stats maybe?).

Add power-ups

Power-Ups (updated)

A power-up gives a player a special ability.

Name Icon Ability Duration
Roll Again Dice Roll the dice again without originally rolling doubles. One-off
Double Dice Dice with a 2x on top Dice values are doubled (e.g., 3 and 4 are rolled but they count as 6 and 8). One-off
Capture Nearest Marbles colliding Capture the nearest opponent. One-off
Home Run Baseball bat + baseball One marble to go directly to the farthest open position in the home row. One-off
Evade Capture Marble with a shield Opponents' marbles that land on your marbles push your marbles to the next non-center tile. If your evasion lands you on another opponent then you capture that opponent. If one of your own marbles is in the way then it jumps over. 3 turns
Self Jump Marble jumping over another Jump your own marbles. 3 turns

Filling up your power bar

Every marble move earns power bar points. A full trip around the board earns a power up - worth 10 points. That means every space earns 10 / 48 (~0.2083) points. Additionally, the center space and all HOME spaces earn double points and captures earn the captor 3 points and deduct 3 points from the captive.

Players can acquire a maximum of 3 power-ups by filling up their power bar.

Tasks

  • Power bar points
  • Earning power ups when power bar points reaches a multiple of 10 (to 30 max)
  • Power-up execution logic
  • Power bar sprite
  • Power up (button) sprites
  • Power up effect sprites
  • Animations

Update README for Git LFS

The assets are tracked with Git LFS so in order to run the game, Git LFS needs to be installed so Git will download the actual assets for the references it stores for them.

REORGANIZE !

main.rs is feeling really messy. I need to start reorganizing, perhaps even moving parts of the code into their own modules.

Consider consolidating resources

I think I've got too many single-data resources. It may be a good idea to evaluate if consolidating these into a general "game data" resource would made things simpler.

Implement marble destination selection for human player

After the player has selected a marble they need to click on one of the possible move locations.

I think a first attempt should just leverage handle_mouse_clicks system. I think it has mostly everything we need to detect a destination click.

This will also need to trigger an animation for the marble.

Add other modes

It would be cool to have other modes you could play like:

  • Two human players (if you wanted to play with someone else at the same computer)
  • Teams where you pick another color as your teammate. In this mode you and your teammate act almost as one - e.g, you can't jump your teammate's marble and you can't capture your teammate's marbles.
  • Online multiplayer - this would be awesome but I have no idea where to start with this.

Highlight dice for a particular move

It would be a nice visual to have the corresponding die (or dice) highlighted when a player hovers over a possible move for the selected marble.

The pace is slow sometimes - it can be hard to roll a 1

I've played through quite a few full games now and there are many times where you won't roll a 1 for several turns so you can't exit the base to get on the board. This can feel pretty crappy when its you and you just have to sit there waiting while the other players basically destroy you.

I'm thinking maybe I add a rule where exiting the base requires either a 1 or a 6. That should increase the chances you have to exit the base and maybe make the pace a little better?

Consider consolidating game state transitions

I have an idea where there is a single system that receives game-state-change events and manages the flow between the states in a single place. Each state would have an entry and exit point (like they already do) but it might help to get things even more focused.

Or this could be a terrible idea that will be thrown in the garbage...who knows.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.