vexation's Issues
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)
Animate the dice to the next player
This will look nicer I think than just teleporting them over.
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).
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.
Give credit where credit is due!
Need to give https://github.com/voxelv/marbles credit as the inspiration for starting this.
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.
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?
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.
Marbles sometimes animate beyond their destination before snapping back
I thought I had this fixed but it's still happening so I've got to find a way to ensure that the translation of a marble sprite never goes beyond its destination.
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.
Issue with Bevy "dynamic" feature on Windows
Apparently you can't use the "dynamic" feature for Bevy on Windows. This feature is only temporary for development, but it would be good to at least try to find a workaround until the game is done.
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.
Update to Bevy 0.8
Bevy 0.8 was released a few days ago. Need to get this updated to the latest version.
REORGANIZE !
main.rs
is feeling really messy. I need to start reorganizing, perhaps even moving parts of the code into their own modules.
Dim the die that has already been used
It might be a nice visual to dim the die (or dice) that was used in the previous move.
Update screenshots
When I'm finished I need to update the screenshots in the README.
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.
When a marble is selected, mark it as such and highlight its possible moves.
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 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.
Show countdown for long power-ups
It would be nice to know when your evading+self jumping power ups are depleted.
DOCUMENTATION!
Don't forget to document things!!
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
Change Evade Capture icon to a sheild
When a marble is selected, allow the user to cancel the selection.
Implement main menu UI
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.
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.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.