Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/forthoney/boardgame_engine
A gem that provides templates to quickly create boardgames in ruby
https://github.com/forthoney/boardgame_engine
boardgame ruby
Last synced: 26 days ago
JSON representation
A gem that provides templates to quickly create boardgames in ruby
- Host: GitHub
- URL: https://github.com/forthoney/boardgame_engine
- Owner: Forthoney
- Created: 2022-09-29T00:59:36.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-18T14:19:36.000Z (almost 2 years ago)
- Last Synced: 2024-09-18T16:18:47.587Z (about 2 months ago)
- Topics: boardgame, ruby
- Language: Ruby
- Homepage: https://rubygems.org/gems/boardgame_engine
- Size: 56.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# BoardgameEngine
A gem that provides a template for creating boardgames. It aims to streamline
the process of making boardgames to be played on the terminal by providing a
variety of classes and modules.## Installation
Install the gem and add to the application's Gemfile by executing:
$ bundle add boardgame_engine
If bundler is not being used to manage dependencies, install the gem by executing:
$ gem install boardgame_engine
## Usage
### Initial Setup
To start making your own boardgame using this gem, your game module needs at least two classes -
a `Game` class inheriting from `Boardgame` and a `Board` class inheriting `Board`.
`Game` captures the core gameplay loop/logic and the `Board` captures
interactions with the board.Depending on the game rules, select child modules from the `Games` and `Boards`
and include it into the `Game` and `Board` class respectively.
These modules will handle much of the game and board logic related to the
game mechanic/rule.For example, if the turns in your game go in a cycle like 1 -> 2 -> 3 -> 1 -> 2 ...
your `Game` class would look like
```ruby
class Game < BoardgameEngine::Game
include Games::CyclicalGame
NUM_PLAYERS = 3
...
end
```
Including this module makes it so that the `BoardgameEngine::Game#change_turn`
method automatically hands the turn over to the correct player.### Overriding
At the current stage of the app, there are methods that necessarily must be
overridden in the child class.
`play_turn` must be implemented on _your_ `Game` class, and must contain what happens
during a single turn (not a round, just a turn).Additionally, the limited number of modules mean that you will probably have to implement some
methods on your own. I hope to reduce the number of these as the app matures.
I left yard comments on all module methods, so hopefully overriding won't be too
difficult.## Example Games
Check out `connect4.rb` for a game built with rather minimal overrides and
`chess.rb` for a game that makes heavy use of customization.## Development
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
## Contributing
Bug reports are welcome on GitHub at https://github.com/Forthoney/boardgame_engine.
I may not get to them quickly but it will be greatly helpfulAs the app is under heavy development I will not look deeply into actually
pulling pull requests (if there were to be any).
I will definitely consider the ideas proposed in them, so they are still welcome.