Giter Site home page Giter Site logo

boon's Introduction

boon

boon is a build tool for LÖVE. It makes it easy to package your game for multiple platforms, similar to love-release. It is a single executable with no other dependecies. It can be used across multiple projects and makes automated building a breeze.

Rust

Licensed under the MIT License.

Features

  • Package your game for multiple platforms. Supported platforms:
    • Native (.love)
    • Windows (.exe)
    • macOS (.app)
    • Linux (coming soon)
  • Package your game for multiple versions of LÖVE. Supported versions:
    • 11.x
    • 0.10.2
  • No external dependencies

Getting started

Installation

Download prebuilt binaries (recommended)

boon has prebuilt binaries on the GitHub Releases page. Download the zip file, then extract the executable onto your PATH.

If you're a Windows user, download the boon-windows-amd64 file.

If you're a macOS user, download the boon-macos-amd64 file.

If you're a Linux user, download the boon-linux-amd64 file.

Usage

In general, if you need help figuring out how to use a command you can pass the --help option to see possible arguments, options, and subcommands. To get started and see the top-level commands and options, run boon --help.

Initialization

To start using boon with your project, it is recommended to first initialize it. This will create a Boon.toml file that will let you configure the settings for your project.

$ boon init

If you don't initialize boon, you can still build your project normally, but the default configuration will be used to build it instead. You can initialize it later, or create a Boon.toml file yourself.

Downloading LÖVE

In order to build your project, you first need to download the versionof LÖVE that you are using for it.

# Will download LÖVE 11.5 for building
$ boon love download 11.5

Building your project

Finally, to build your project just run boon build followed by where you want to run it. Usually, you just want to run it on the current directory, ..

$ boon build .

Without a target specified, this will build a .love file and put it in the release directory. This is shorthand for boon build <dir> --target love

It is possible to build all targets simultaneously by passing all as the target, for example, boon build . --target all.

Building for Windows

To build a Windows application:

$ boon build . --target windows

Building for macOS

To build a macOS application:

$ boon build . --target macos

Building for a different version of LÖVE

If you would like to build for a LÖVE version other than the default, you can specify it using the --version flag.

$ boon build . --version 0.10.2

Compiling from source

boon is written in Rust, so you will need to install Rust in order to compile it.

To build boon:

git clone [email protected]:camchenry/boon.git
cd boon
cargo build --release
./target/release/boon --version
boon 0.2.0

boon's People

Contributors

camchenry avatar gingerbeardman avatar giraffekey avatar isavegas avatar kungfoo avatar martijndeb avatar nuthen avatar yancouto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boon's Issues

macOS build not working correctly

the problem is that the blabla.love file is copied to blabla.app/Contents/Resources/love_file_name instead of blabla.app/Contents/Resources/blabla.love

the fix is easy:
change line 386 in build.rs to the following:
resources_path.push(get_love_file_name(&project));

.love file being generated is malformed

I tried upgrading an existing project using Boon 0.3.0 to 0.4.0, but the builds it generates crash immediately.
It seems that at least on my machine, the folder structure is not being respected, and all files are being put directly into the root of the .love file.

Expected behavior:
image
(The bottom explorer window shows the contents of the .love file after being unzipped by 7zip)

Current behavior:
image
(The bottom explorer window shows the contents of the .love file after being unzipped by 7zip)

Example source code and Boon.toml:
boonerror-minimal.zip
The malformed .love file generated by 0.4.0:
Minimal error demo.zip

Failed to build boon from source

I'm trying to build the program from the cloned repo and I'm getting the fallowing error (using both cargo and rustc 1.26):

warning: unused manifest key: package.edition
error: failed to parse lock file at: /home/mmd/Programs/boon/Cargo.lock

Caused by:
  invalid serialized PackageId for key `package.dependencies`

Both build and build --release fail

OSX Issue

Don't know what happened, but now it won't even run the OSX installer- it just spits out command line garbage. Image-
Screen Shot 2020-03-11 at 9 48 43 AM

A few weeks before, it used to install but acted funky so I uninstalled it. Now it won't even install

Missing support for Love2D 11.4 and 11.5

Problem seems twofold:

  1. latest macOS release build is so old it only has 11.3 in it
  2. latest source is not aware of 11.5
% boon love download 11.5
error: '11.5' isn't a valid value for '<version>'
	[possible values: 0.10.2, 11.0, 11.1, 11.2, 11.3]

	Did you mean '11.3'?

USAGE:
    boon love download <version>

For more information try --help

package.path not make any sense

Hello. It seems that package.path not make any sense when building with boon. For example

package.path = 'libs/?.lua;' .. package.path
require("dummy")

not works although it should while

require("libs.dummy")

works fine

Can it be fixed?

Require failed

Hello,
When I package my game with boon, all my requires failed when I run my game.love :
image

my_lib = require("lib.mon")

Unable to download windows build

Looks like the URL may have changed?

[0:21:34] laptop:~/Library/Application Support/boon/11.3 % wget https://bitbucket.org/rude/love/downloads/love-11.3-win32.zip
--2021-02-24 00:21:36--  https://bitbucket.org/rude/love/downloads/love-11.3-win32.zip
Resolving bitbucket.org (bitbucket.org)... 104.192.141.1
Connecting to bitbucket.org (bitbucket.org)|104.192.141.1|:443... connected.
HTTP request sent, awaiting response... 404 Not Found
2021-02-24 00:21:37 ERROR 404: Not Found.

[0:21:37] laptop:~/Library/Application Support/boon/11.3 %

Specify an array of targets in the build section

It would be nice to have something like this:

[build]
target = ["windows", "macos"]

And also an option for

target = "all"

The advantage here is that you can just run boon build . without having to specify a target each time. It is also more flexible as you can choose exactly which targets to build for, which could be helpful when there is more than just two possible ones. Also, it may be a good idea to split the "windows" target into "win32" and "win64".

New release?

Hi all!

Thanks for boon - it's.. been a boon to my workflow.

I've been building it from source from the time that LOVE moved to GitHub, as the '20 release is still using the old bitbucket URLs. However, I'd like to remove that step from my CI pipeline and be able to download the binary if possible.

Any chance we could get a new GitHub release to facilitate that?

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.