There are a lot of design decisions in EightBittr that make much more sense in the context of 8bit retro games than in more general game engines (or, at least that I thought did when I set them up many many years ago). For example:
Why sections are set up the way they are with BabyIoc
Including: how core game property create* factories become game.* objects become your class in the game
Groups decoupled from actors: so actors can switch between groups
Sprite graphics decoupled from actors: so multiple actors can refer to the same sprite
Sprite graphics in the run-length encoding (RLE) format: because at the tiny size most sprites are at, it's more efficient than gif/webp/etc.
See also: #211
Very few game module & sections are built-in: for optimal load performance (smallest bundle size) in even small projects, at the slight developer experience cost during project setup time
See also: #216
Generics forwarding: because TypeScript tells us to
Mocha for tests instead of Jest/Ava/Vitest: to run in browser
Why many modules have their own Actor: to make it composable across them
What's in the core game vs. wrapping UI
Also generally confusing things:
In the items storage tutorial, include a link to localStorage docs and briefly mention ItemsHoldr as a wrapper around it
In the Scoring.ts part of the tutorial explain TimeHandlr's return true & return false
When to use Actor from EightBittr vs. a separate module vs. a game's own Actor
Where groupHolder.groups.MyGroupName's MyGroupName comes from
That UserWrappr's UserWrappr-Delayed bundle needs to be built with yarn dist to be used locally
Documentation Report Checklist
main
branch of the repository.Overview
There are a lot of design decisions in EightBittr that make much more sense in the context of 8bit retro games than in more general game engines (or, at least that I thought did when I set them up many many years ago). For example:
create*
factories becomegame.*
objects become your class in the gameActor
: to make it composable across themAlso generally confusing things:
localStorage
docs and briefly mention ItemsHoldr as a wrapper around itScoring.ts
part of the tutorial explain TimeHandlr'sreturn true
&return false
Actor
from EightBittr vs. a separate module vs. a game's ownActor
groupHolder.groups.MyGroupName
'sMyGroupName
comes fromUserWrappr-Delayed
bundle needs to be built withyarn dist
to be used locallyAlso important coming-up-eventually work:
Additional Info
Got another FAQ? I'd love to hear it!