tool for building bitsy games
the idea behind this is sort of like a scripted version of Borksy; you can set up hacks and etc once, and then paste gamedata in after changing it in bitsy
- run
npm i
- optionally add path to your local bitsy-hacks repo:
npm i /path/to/local/bitsy-hacks && npm run fetch-bitsy
- optionally add path to your local bitsy-hacks repo:
- copy-paste your gamedata into
./input/gamedata.bitsy
- edit
./input/title.txt
to be what you want the HTML title to be - edit
./input/style.css
with custom style - edit
./input/hacks.js
with hack inputs/options - edit
./input/optimization.js
with optimization options - edit
./input/template.html
to add custom html, for example if you need to add audio - edit
./external-deps.mjs
to specify what dependencies should be written to the output directly instead of being transpiled by rollup when building the hacks. in case with large libraries like babylonjs used by 3d hack, this will drastically reduce build time - you can add
./resources
folder, and whatever you put in there will be copied over into./build
or./bundle
folder (depending on what command you use). this is useful for adding audio files - run
npm start
,npm run build
ornpm run bundle
start
will watch the input files and rebuild automatically when they're changedbuild
will run once and output./build/index.html
that will link to hacks in a separate file in./build/js/hacks.js
, it will also copy external dependencies as separate files into./build/js
and link to them in a similar way- after you have run
build
once, you can then runnpm run build-hacks
to only rebuild hacks, which will be faster - you can also use
npm run watch-hacks
to watch and rebuild hacks automatically
- after you have run
bundle
will run once and will write hacks and external dependencies into./bundle/index.html
, producing a single file
- edit/rebuild as needed
- copy the contents of
./build
or./bundle
folder when you're done
- builds from bitsy repo source
- i.e. unpublished features
- builds from bitsy-hacks (
@bitsy/hecks
) module- easy to combine hacks/customize their
hackOptions
- easy setup for writing/testing new hacks
- smaller output when combining hacks (e.g. kitsy is only ever included once)
- easy to combine hacks/customize their
- style is run through autoprefixer
- optionally optimizes gamedata for smaller final builds
caveats:
- builds from bitsy repo source
- i.e. unpublished bugs
- custom hacks here use absolute imports, whereas ones in the hack repo are relative
- e.g.
import '@bitsy/hecks/src/bitsymuse';
vs.import './bitsymuse';
- e.g.
importing a hack from the hack repo:
import '@bitsy/hecks/src/gamepad input';
combining hacks:
import '@bitsy/hecks/src/exit-from-dialog';
import '@bitsy/hecks/src/end-from-dialog';
customizing hack options:
import { hackOptions as bitsymuse } from '@bitsy/hecks/src/bitsymuse';
import { hackOptions as solidItems } from '@bitsy/hecks/src/solid items';
// customize music for bitsymuse
bitsymuse.musicByRoom = {
'outdoors': 'bgm',
'dungeon': 'bgm-dark'
};
// customize solid check to include anything with "SOLID" in the name
solidItems.itemIsSolid = function(item) {
return item.name.indexOf('SOLID') !== -1;
};
writing a custom hack:
import {
after,
addDialogTag,
} from "@bitsy/hecks/src/helpers/kitsy-script-toolkit";
import { printDialog } from "@bitsy/hecks/src/helpers/utils";
// save time on start
var startTime;
after('startExportedGame', function() {
startTime = new Date().toString();
});
// print start time
addDialogTag('startTime', function(environment) {
printDialog(environment, startTime, onReturn);
});
it is assumed that you clone/download this repo as a starting point for your bitsy game, and by default .gitignore rules allow to version-control files specific to your game
if instead you wish to make commits to modify or extend the core boilerplate functionality without adding any game-specific files, use this command:
npm run set-dev
it will add new rules to your local .git/info/exclude
, and the following paths will be ignored by git:
resources/*
bitsy-source
input/template.html