Releases: morgan3d/quadplay
Releases · morgan3d/quadplay
Update #99
- New example: Bezier Eye Creature
- New example: Animated Entity
- New example: Color Wheel
- Changed kerning for monospace digit 1 to favor padding on the left instead of right to make a leading 1 digit kern better
- Improved documentation for
find_path()
,hsv()
,draw_text()
- Added
artist_hsv_to_rgb()
- Added more transformations to
3D.pyxl
- Added
random_key()
- Added
random_value(object)
- Added
MAT3x3_ORTHONORMALIZE()
- Changed the API for
3D.pyxl
to follow quadplay naming conventions - Changed physics simulation to force velocity and angular velocity (spin) to
exactly zero when an object sleeps with negligible velocity - Fixed missing Z term in
XYZ_DOT_XYZ()
intrinsic
Update #98
- format_number() now supports an optional leading +
- Made 640×360 games fill the IDE emulator view when in large mode (small mode still uses 2:1 scaling)
- Distribution constants now display the numerical probability of each even
- Added capitalized()
- Test UI layout now shows the constants editor when the browser window is wide enough to fit it beside the debugger
- Debug override layer for array and object IDE constant properties
- Fixed new constant array element creation dialog “create” button disabled
- find() now supports an optional start key for objects
- export script now supports "data" assets and constants
- array constants in the game.json can now be created from a CSV file
- Added --nosleep argument for quadplay-server and quadplay.html
Update #97
- Added drop_bloq game
- Added hex example
- New fonts: novarese-7 and novarese-narrow-7
- Changed preview.png recording from 3 seconds at 20 fps to 4 seconds at 15 fps
- Enabled IDE support for creating Reference, Object, and Array constants
- Table constants now have a unique icon distinct from arrays
- Improved layout of IDE xy() constant nudge buttons
- Automath replacement for “Delta” now works within floor/ceil/abs brackets
- Added distribution constant type
- Added random_from_distribution()
- The built-in games displayed in the launcher are now data driven, so the metadata is always in sync (and the set is user extensible when using a local server)
- Optimized replace(string, string, string) performance
Update #96
- Enabled multithreaded GPU emulator for significant graphics performance increases
- Added more helper functions to midi_8x8.pyxl
- MIDI messages can now keep the console from sleeping
- New Drop Bloq example game
- Implemented higher color precision on Ableton Push RGB pads
- draw_text() now has a default font argument
- Changed draw_text() x_align and y_align defaults to "center" from "left" and "baseline"
- Games are now sorted by title instead of directory in the Open Game dialog
- Fixed draw_text() support for x_align and y_align numeric values
- Fixed recent Firefox being incorrectly detected as mobile
- Fixed excess number character padding in non-monospace fonts
Update #95
- Open Game now has a filter to search for text
- Added MAME mapping for arcade controllers that act as hardcoded keyboards
- Added Ultimarc Mini PAC mapping for arcade controllers that act as hardcoded keyboards
- Removed "ξ" from vim plugin syntax highlighting (crashes vim)
- Upgraded to ace.js 1.24.1
- Fixed
game_frames == -1
at top level and in the start modeenter()
- Fixed several warnings under Chrome
- Fixed visualization of monospace font assets in the documentation
- Fixed IDE options resetting on browser reload
Update #94
- Added “Copy Game” menu option for locally hosted games, to simplify game creation from examples and user templates
- Gamepad indicator icons in IDE now show the ID of the controller on mouse hover
- Added MIDI controller IDE indicator icons
- Clicking on MIDI/gamepad indicator now brings up enumeration of connected devices
- Added device_control("multitouch")
- Added contains() function
- Added MIDI FCB1010 example program for the Behringer FCB1010 physical MIDI controller
- Added MIDI 8×8 Touch Jam example program
- Added port.state for MIDI ports to poll when they have been disconnected
- Added RGB_DISTANCE intrinsic
- Added support for iOS 120×120 icons
- Added drum-00, drum-01, drum-02, drum-03, drum-04 sounds
- Added scripts/midi_8x8.pyxl helper library
- Changed touch.pressed_a, touch.released_a, touch.aa, and touch.a to be numbers, consistent with the gamepad API
- Made explicit errors on trying to access some common API typos to improve debugging
- Fixed --serve mobile mode not able to load local games
- Fixed formatting of debug_print with a grid size in the output string literal, such as "32x16"
- Fixed mode_frames and game_frames to start counting from zero (regression in update 93)
Update #93
- Added optional 640×360 resolution
- Added MIDI input and output API
- Extended synth demo to support MIDI
- Removed animation.frame(), because having a function inside an array was creating problems for multithreading efficiently (incompatible change)
- Added animation_frame(a, t)
- Added starrypad example program for the Donner Starrypad physical MIDI controller
- Added launchpad example program for the Novation Launchpad physical MIDI controller
- Added robot-9-mono monospaced font
- Added FLOOR, CEIL, ROUND intrinsics
- Fixed enter() event of starting mode running before boot animation
- Fixed char_min_width for monospace font.json files
Update #92
2023 May 22: Update 92
- Improved code generation to increase function inlining
on non-Safari browsers - Removed generator functions from PyxlScript compiler
for performance optimization - Rewrote virtual GPU implementation in preparation for
multi-threading - Fixed RPG example text alignment
2023 March 23: Update 91
- New platformer physics example
- Added
scripts/platformer.pyxl
mini-library - Added
sprite.mean_color
- Added
override_color
andoverride_blend
arguments todraw_map()
- Added
ray_intersect_map()
per-pixel callback and ray shortening - Added
sprite_transfer_orientation()
- Exposed
map.offset
in the runtime API - No longer force full-screen on the multiplayer network guest window
when opening from the IDE "Copy URL" button while debugging - Fixed new map centering having negated coordinates
- Fixed
ray_intersect_map()
using incorrect pixel coords for transformed maps - Fixed object args version of
particles_spawn_from_entity()
inparticles.pyxl
Update #90
- New example of maze generation
- New example of water and sailboat simulation in "islands"
- Moved asset index from the manual into a separate document to speed loading
- Updated to peer.js version 1.4.7
- Update ace.js to version 1.15.0
- Fixed the
callback
foradd_frame_hook()
receiving a frames left value
that was off by one. - Fixed Windows filesystem race condition affecting rename mode
Update #89
- Optimized startup time by only loading IDE when required
- Reduced export size by excluding IDE
- Refactored particle.pyxl to support multiple particle systems
- Added MEAN, MEAN3, MEAN4 intrinsics
- Fixed link target bug for fonts in the manual
- Fixed the System/controls menu in kiosk mode not appearing
- Fixed button prompt alignment for wright-8 font
- Fixed text alignment in launcher
- Fixed bad default x_align for illegal values in draw_font()