๐ Hi, Iโm @Zooce
Just having fun building things I think are cool.
๐ Hi, Iโm @Zooce
Just having fun building things I think are cool.
I think I need to break up the logic in fn handle_mouse_events
because it's doing a lot:
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.
Still need to consider how computer players will choose to use power-ups.
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.
It might be a nice visual to dim the die (or dice) that was used in the previous move.
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.
When I'm finished I need to update the screenshots in the README.
Take the following scenario:
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:
Don't forget to document things!!
Bevy 0.8 was released a few days ago. Need to get this updated to the latest version.
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).
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.
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?).
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 |
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.
This will look nicer I think than just teleporting them over.
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.
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.
Need to give https://github.com/voxelv/marbles credit as the inspiration for starting this.
main.rs
is feeling really messy. I need to start reorganizing, perhaps even moving parts of the code into their own modules.
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.
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.
It would be cool to have other modes you could play like:
It would be nice to know when your evading+self jumping power ups are depleted.
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.
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?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.