ldeluigi / untitled-goose-framework   2.1.2

Apache License 2.0 GitHub

A framework that allows to write a game like The Goose Game entirely in few LOC with a DSL, in Scala.

Scala versions: 2.12

untitled-goose-framework

Untitled Goose Framework (not a trademark) is a Scala library that is able to run the definition of a board game. It enables the creation and rules automation of games similar to the classic Game of the Goose.

CI/CD

Continuous Integration

A CI system tests, builds and makes new releases of the framework.

  • master branch:
    Continuous Integration Periodic Integration Checks
  • develop branch:
    Continuous Integration

Continuous Delivery

Features

  • Ability to create new games with the shortest, most readable syntax possible through a Scala DSL (Domain Specific Language) called GooseDSL. GooseDSL is natural language oriented, in English.
  • Ability to play created games locally. Given that each game must be turn-based, one single device is enough to play with any number of human players.
  • Possibility to extend game classes, objects or data structures to implement more complex behaviours or functionalities. This can mean both extend the framework functionalities or customize default game logic. For example, one can reimplement the graphical components to make their own visualization.
  • Possibility to extend the GooseDSL with custom shortcuts, keywords and more.

Installation

This library works for Scala 2.12.

Declaring the library as dependency

Note: <version> is the latest version available.

SBT (suggested)

Add in your build.sbt file:

libraryDependencies += "com.github.ldeluigi" % "untitled-goose-framework_2.12" % "<version>"

Gradle Kotlin DSL

Add, in your build.gradle.kts file, inside the dependencies block:

implementation("com.github.ldeluigi:untitled-goose-framework_2.12:<version>")

Usage

Create a class or object that extends GooseDSL (package: untitled.goose.framework.dsl) and write your own game. Documentation on how to write a game can be found in the Wiki.

Contribute

You can contribute to the project with Pull Requests or Issues about bugs or feature requests.

Examples

These are the official examples of projects that implement games using this framework: