Home

Awesome

bitsy-boilerplate

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

how

  1. run npm i
    • optionally add path to your local bitsy-hacks repo: npm i /path/to/local/bitsy-hacks && npm run fetch-bitsy
  2. copy-paste your gamedata into ./input/gamedata.bitsy
  3. edit ./input/title.txt to be what you want the HTML title to be
  4. edit ./input/style.css with custom style
  5. edit ./input/hacks.js with hack inputs/options
  6. edit ./input/optimization.js with optimization options
  7. edit ./input/template.html to add custom html, for example if you need to add audio
  8. 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
  9. run npm start or npm run build
    • start will watch the input files and rebuild automatically when they're changed
    • build will run once
  10. edit/rebuild as needed
  11. copy the generated ./output/index.html when you're done

why

caveats:

examples for editing ./input/hacks.js

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);
});