Quadplay Versions Save

The quadplay✜ fantasy console

update99

1 month ago
  • 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

update98

4 months ago
  • 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

update97

6 months ago
  • 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

update96

7 months ago
  • 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

update95

8 months ago
  • 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 mode enter()
  • Fixed several warnings under Chrome
  • Fixed visualization of monospace font assets in the documentation
  • Fixed IDE options resetting on browser reload

update94

9 months ago
  • 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)

update93

10 months ago
  • 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

update92

11 months ago

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 and override_blend arguments to draw_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() in particles.pyxl

update90

1 year ago
  • 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 for add_frame_hook() receiving a frames left value that was off by one.
  • Fixed Windows filesystem race condition affecting rename mode

update89

1 year ago
  • 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()