- Support for GL renderer backend. (#219)
- Initial support for Web Assembly (WASM). (#219)
- Initial support for network play in WASM. (#209)
- Transport protocol for network play is switched to web sockets. (#209)
- Support to join session based network games. (#198)
- Rudimentary session joining UI. (#200)
- Session server generates session codes for session hosters. (#201)
- Rudimentary session hosting UI. (#202)
- Rudimentary session lobby UI. (#204)
- Send network input between session devices. (#199)
- Will application is able to host / join new sessions without being restarted. (#206)
- Application startup parameters are read from
will.toml. (#207)
- Assets are sorted based on their asset slug. (#205)
- Menu items are navigated with both up/left and down/right controller input. (#207)
- Relative paths to textures now load on Windows. (#205)
- Character selection UI displays a grid of available characters. (#190)
- Map selection UI displays a grid of available characters. (#176)
- Control buttons are displayed on UIs. (#191)
- Support
tintandscaleinSpriteFrames. (#185) - UI for control settings displays input configuration buttons. (#178)
- Use
AssetWorldto store item components. (#186) - Multiple entities spawned per asset via
ItemId. (#186) - Support for sending events via
input_reactions. (#180) - Support for reacting to device button input in addition to control input. (#180)
- Character selection UI defined through configuration. (#177)
- Character selection UI displays highlighted character. (#177)
- Breaking:
transitionsrenamed toinput_reactions. (#180) - Breaking:
requirementsrenamed torequirement. (#180)
ObjectEntityAugmenterreplaced by byItemComponent::augment. (#186)
- Delete entities that are spawned out of bounds. (#184)
- Tests for asset part loading systems. (#172)
- Each state may specify background images. (#175)
- Game mode selection menu items may be rendered with sprites. (#175)
- Controller configuration takes in player names. (#179)
- Display player name that won when game ends. (#179)
- Moved all module tests into
workspace_testscrate. (#171) - Don't build unnecessary doctest binaries. (#174)
- Default
Waitvalue for all sequences is now2ticks (previously0). (#175) - Map layers now need to be given names. (#175)
GamePlayBundlesystems are moved to the main dispatcher. (#175)- Added delay after game ends before reading input for returning to menu. (#179)
- Support arbitrary sequence names. (#155)
- Support acceleration in configuration. (#125, #160)
- Use events to detect and reposition
MapBoundedentities. (#142) - Delete out of bounds entities. (#142)
- During game play, camera is readjusted when window is resized. (#161)
- Camera moves to focus on tracked entities. (#162)
- Camera is offset to direction tracked entities are facing. (#162)
- Support playing sound from object configuration. (#163)
Hitinteractions inflictAccelerationon hit objects. (#165)- Support spawning any object type, on any object sequence. (#158)
- Breaking: Configuration files now use YAML instead of TOML. (#154)
- Breaking: Position and velocity configuration use named axes. (#165)
- Rewrote asset loading and internal asset representation. (#167)
- Switching map selection actually switches the map. (#166)
- Going back from map selection does not return to main menu. (#166)
- Default control input transitions for each sequence. (#115)
- Default control input transitions for characters. (#115)
fallbackcontrol transitions. (#149)input_dir_xcontrol transition requirement. (#149)input_dir_zcontrol transition requirement. (#149)charge_limitspecifies the max charge points a character may store. (#148)charge_delayspecifies the delay between charge increments while holdingAttack. (#148)charge_use_modespecifies the method to subtract charge points. (#148)charge_retention_modespecifies how charge points are retained or reset. (#148)
- Sequence component updates are done in parallel. (#147)
- Control input axis events are done on input events instead of state delta detection. (#113)
spawn_playflakey test segmentation fault. (#145)
- Load energy assets. (#126)
- Spawn energy assets when a frame begins. (#126)
- Independent
Teams. (#140) - Sequence
nextvalue can be one of"none","repeat","delete", or a sequence ID. (#140)
- Render using Vulkan. (#131, #136)
- Split
FrameComponentUpdateSystemso individual updates can run in parallel. (#111) FrameFreezeClocks now tick when a sequence is ended. (#140)
- Game mode selection UI events no longer enter an event channel loop. (#134)
- Removed dependency cycles in crates. (#135)
- Missing system dependency for
CharacterControlTransitions. (#139)
- Objects have a 3 tick delay upon
Hitinteractions. (#103) hit_limitdetermines the number of objects that the hitter can hit. (#103)repeat_delayspecifies number of ticks that must pass before an object can behitby the same hitter. (#103)- Control input
transitionscan be specified per frame. (#96) - Added
--frame_rateargument to control application frame rate. (#117) - Added
stand_attack_1sequence. (#117) - Added
jump_attacksequence. (#117) - Added
dash_attacksequence. (#117) - Added
dazedsequence. (#118) StunPointsstatus attribute onCharacters. (#118)- Characters switch to different sequences depending on their accumulated
StunPoints. (#118) - Players can now return to game mode selection from the character selection UI. (#110)
- Players can now return to character mode selection from the map selection UI. (#120)
- Play a sound when a character hits another. (#124)
- Play sounds in game mode selection UI. (#127)
- Play sounds in character selection UI. (#127)
- Play sounds in map selection UI. (#127)
AttackandJumpno longer have hardcoded hold transitions. (#96)- Breaking:
hp_damageis specified as part ofhitinteraction kind. (#103) - Breaking:
sp_damageis specified as part ofhitinteraction kind. (#103) - Breaking:
physicalinteraction kind is renamed tohit. (#103) - Breaking:
Interactionkind determines fields applicable to the interaction. (#103) - Breaking:
stand_attackis renamed tostand_attack_0. (#117) - Default
hit_repeatdelay is increased from 3 ticks to to 10 ticks. (#117) - Improved clarity of character selection UI. (#110)
- Improved clarity of map selection UI. (#120)
- Use control input for game mode selection UI. (#122)
jumpanddashsequence velocities and gravity have been approximately halved. (#128)- Freeze character position when
FrameFreezeClockis ongoing. (#128)
Walksequence stays on first frame when an action button is held. (#114)- Character sprites now correctly render at their entity position. (#129)
- Added
dodgesequence. (#102) - Added
dash_forwardanddash_backsequences. (#102) - Added basic health bars to characters. (#104)
#[numeric_newtype]proc macro attribute to derive numeric traits. (#98)stdio_command state_barrier <state_id>blocks stdin until the given state is running. (#105)
- Use logic clock based system to update object components each tick. (#92)
- Use logic clock based system to update map components each tick. (#99)
- Breaking: In objects and maps, sprites are now specified using
sprite = { sheet = 0, index = 0 }. (#92) - Stdin command input now needs a comment line to indicate "no input this frame". (#105)
- Map layers are now positioned correctly. (#99)
- Game does not go past loading when asset loading has error. (#101)
- Characters and objects are now instantiated using prefabs. (#56)
KeyboardEscapeInterceptis now tested properly without simulating input. (#15)- Load game objects and maps asynchronously. (#94)
- Object animations are updated in a dedicated system. (#81)
- Components are now more granular. (#83)
- Components are augmented onto existing entities instead of added when built. (#56)
- Naive collision detection and effects. (#69)
- Flinch and foward falling sequences. (#70)
- Game win condition when there is one player remaining. (#71)
- Mirrored collision detection. (#82)
- Map selection UI that allows users to select maps. (#66)
- Character selection controllable via stdin. (#67)
- Map selection controllable via stdin. (#67)
- Game mode selection controllable via stdin. (#67)
- Configuration types for hit (
interactions) and hurt (body) boxes. (#68)
- Use
AssetSlug(namespace/name) to reference assets. (#57) - Updated Amethyst to make use of sprite batching and custom events. (#63)
- Allow maps without layers. (#72)
- Implemented maps with bounds and layers. (#47, #48)
- Updated sprites configuration to take in
u32instead off32for sprite dimensions. (#47) - Prevent characters from moving outside map margins. (#48)
- Use
typenameto deriveSystemnames. (#52) - Implemented rudimentary character selection menu. (#51)
- Sprite offsets are optional when declaring sprite sheets. (#47)
- Sprites are rendered using a dedicated sprite pass. (#55)
stop_runsequence has been renamed torun_stop. (#49)- Use state specific dispatcher for
GamePlayState. (#50)
- Map layers with different sprite dimensions are now rendered with the right layout data. (#55)
- Characters switch to the
jump_descendsequence when airborne duringwalk,run, andrun_stop. (#49)
- Implemented jump.
- Implemented double tap to run.
- Mirror sprites when entity is facing left.
- Created test harness to make it easier to test logic.
- Read controller configuration.
- Update character sequence based on input.
- Loads object sprites and animations.
- Creates an entity per object.
- Loads fonts and displays a simple menu.
- Published on itch.io