Quadplay Versions Save

The quadplay✜ fantasy console

update88

1 year ago
  • New built-in game: “Black Firmament”
  • Further improvements to prevent cursor jump when directly editing the game.json file
  • New vector intrinsic, XYZ_MAD_S_XYZ(srcxyz1, s2, srcxyz3, dstxyz)
  • Reduced the cost of ray_intersect_map() by 20%
  • 2% performance boost for platforms without physical controllers
  • 5% performance boost from changing the underlying API calls for frame rate management
  • Added unparse_hex_color() for unparsing color constants
  • Fix: workaround for cross-origin limitations when loading quadplay from a CDN

update87

1 year ago
  • New built-in game: “But...Skunks?!”
  • The “Print touch” debugger option now prints the screen color under the cursor as well
  • The color editor now shows the RGB hex value as well as the RGB or HSV percentages
  • Events now print with correct names in call stacks
  • Call stacks are now hyperlinked to source files and lines (except on Safari)
  • Fixed debug_print(∅)
  • Fixed touch events when afterglow is enabled

update86

1 year ago
  • New fonts novarese-10, novarese-bold-10, and deja-mono-8
  • Added optional char_min_width property to font.json files for creating monospace fonts
  • Added optional Font Weight and Vertical Scale to fontgen tool for bold and thin variations
  • Fixed open heart character in deja-8 font
  • Fixed cursor jumping/reloading during manual editing of JSON files
  • Fixed IDE GUI controls not updating after manual editing of .game.json
  • Fixed clipping region cutting off system controls menu
  • Fixed string literals appearing with incorrect quotes in the debugger
  • Fixed clipped circles drawing a horizontal line on the top or bottom

update85

1 year ago
  • Steam Deck support
  • Removed deprecated entity label properties (use entity text properties)
  • Large objects and arrays in debug_print() and debug_watch() output may now be explored hierarchically
  • Compile time and runtime error messages in the Output debug window are now hyperlinked to the file and line
  • debug_print() can now pretty-print consisely in the same format as debug_watch()
  • Moved Output debug window links to source code for debug_print() to be explicit on the edge of the window instead of implicit
  • debug_print() will now pretty print expressions with names that resemble percentages as percentages with fixed precision
  • Assets now debug_print() with a link back to editing the asset
  • Updated to latest Markdeep (1.15 in development)
  • Fix: acceleration in Spritestack example now follows new gamepad API

update84

1 year ago
  • debug_watch() pretty-prints xy(), xyz(), and xz() with low precision and as functons
  • debug_watch() pretty-prints rgb(), rgba(), hsv(), and hsva() as percentages with the color visualized
  • debug_watch() pretty-prints expressions with names that resemble angles in degrees with low precision
  • debug_watch() values now persist for multiple frames
  • New "fraction" format option for format_number()
  • remove_values() now returns true if any value was removed
  • Improved the layout of the font selection in the manual
  • New demo, Text Spheres title screen animation
  • Upgraded to ace.js 1.6.0
  • Reduced recommended max source statements from 8192 to 2048 to reflect recent exemptions that made counting more conservative
  • Changed arguments named random to rng to avoid confusion with the random() function
  • Fix: insert() now illegal on containers being used for iteration
  • Fix: Compiler now parses degree numbers with decimal places

update83

2 years ago
  • gamepad.a and all other button current values are now the number of frames for which the button has been held down to simplify implementing long-press input schemes (previously was 1 if held and 0 if not held)
  • gamepad.released_a and all other buttons releases are now the number of frames for which the button was held down before release to simplify implementing long-press input schemes (previously was 1 if released and 0 if not released that frame)
  • The child_table argument to make_entity() now allows overriding existing properties of the entity.
  • Added Nearest and premultiplied-alpha Average 50% scaling to the scalepix tool
  • Kiosk and IDE can now update without leaving fullscreen
  • Can now reload the page without leaving emulator mode
  • Better error message for illegal multiline strings in source code
  • Fixed random_within_region() for simple rectangles with no pos or shape property.
  • Fixed bots not being able to press buttons
  • Fixed kenney-1bit sprite incorrect gutter
  • Fixed pivots for rotated and flipped sprites from spritesheet

update82

2 years ago
  • New game: Gravity
  • New music loop by Abstraction: loop-someday_gone.sound.json
  • New sound shoot-13.sound.json
  • quantize tool now offers 1-bit and 4-bit alpha, and separate control over RGB and alpha dithering
  • Added make_bot_gamepad() and update_bot_gamepad() for optionally controlling AI players via virtual gamepads instead of direct logic
  • Added scripts/3D.pyxl generic 3D transform scripts
  • Added XY_DISTANCE(), XZ_DISTANCE(), and XYZ_DISTANCE() intrinsics
  • draw_poly() now performs 3D projection properly when used with a camera perspective zoom function
  • Changed internal browser session root data path from ~/my_quadplay to ~/quadplay_session when running as a native app to prevent spew
  • Aligned roman-8 font button prompts vertically
  • Incompatible changes to set_post_effects() arguments:
  • Renamed blend_mode ⇒ color_blend
  • Renamed opacity ⇒ 1 - motion_blur
  • Replaced background with a combination of burn_in for phosphor glow and border clamping of the frame for filling exposed background regions
  • Improved particle system performance 10%
  • Improved error checking for remove_key()
  • entity_simulate() now supports wrapping and clamping finite rectangular universes
  • iterate_pairs() for easy combinatorial iteration with proper handling of element removal
  • make_entity() now converts a number scale_in_parent value into an xy() value
  • Made frame rate scaler more aggressive when just missing 60 Hz and added a limit to stop thrashing per session between 60 Hz and 30 Hz. This helps with game feel on Raspberry Pi
  • Fixed NaN moment of inertia for disks
  • Fixed iterate() returning true when no items were removed
  • Fixed Debug Override checkbox placement for string constants in IDE
  • Fixed parsing of CSV files with strings that begin with digits
  • Fixed CSV files generating an empty final table row

update81

2 years ago
  • New game: “Morgan's Mini Mecha”
  • Autoupdater on Windows, Linux, and macOS for IDE. Supports both release installations and git clones
  • split(string, separator, max_splits) now accepts an optional number of splits to make
  • Improved handling of infinity for format_number()
  • Added Walnut wrap
  • Allowed auto-sleep to save power after 2 min in IDE as well as kiosk mode
  • Upgraded to ace.js 2022-01-26 build
  • Fixed syntax highlighting in IDE on Safari

update80

2 years ago
  • New Windows installer for quadplay
  • New cruise-14 font
  • Server now prints the installed quadplay version on launch
  • Unless --noupdatecheck or --kiosk is specified, quadplay now checks for available updates on launch
  • Spritesheets can now have animations specified by a 2D grid instead of being restricted to a row or column, and can ignore padding frames from the end
  • Open game dialog now allows launching a second window
  • split(string, n) that accepts a number of characters at which to split the string
  • resized() for simultaneous padding and trimming of strings
  • Added "♢" "♡" "☆" glyphs to font sheets
  • Added auto-generaton of ○◻△♢♡☆ glyphs in fonts
  • Added Windows installer script (linked from the website)
  • Made the Linux/macOS script work from double click
  • Uninitialized variable declarations no longer count against the code statement size
  • Tweaked deja-9 font symbols
  • load_local() with no arguments now returns an object specifying all key-value pairs saved
  • save_local() with no arguments now deletes all stored keys
  • save_local(object) now overwrites all stored keys
  • Modified find_move() to always choose a guaranteed single-move win if one is available
  • Modified find_move() to still try to win even from a losing position against an optimal player
  • Increased IDE debug_print() history display from 300 to 800 calls
  • Workaround for Windows Chromium bug where extra, unflagged, key repeat events are received on key release when multiple keys are held down. This fixes joy.xx and other values getting extra nonzero values in these situations when using a keyboard
  • Fixed “illegal symbol” error on variables beginning with underscores
  • Fixed < character in the cruise-7 font
  • Fixed system/pause menu when a camera transformation is active
  • Fixed make_move_finder() progress metadata
  • Fixed quaddepend and export scripts to handle raw text file constants

update79

2 years ago
  • New find_move() and make_move_finder() functions for discrete move AI players
  • New loop-alarm sound
  • New loop-helicopter sound
  • New loop-smooth_drops, loop-get_off_my_planet, and loop-all_you_can_yeet music tracks by Abstraction
  • Added SUM() and PROD() intrinsics for operating on arrays
  • Added make_array() helper function for creating multidimensional arrays
  • Added random_within_region()
  • Added an optional begin_callback to sequence() entries
  • Added Adobe Photoshop 2022 IDE support
  • draw_line() now applies separate 3D perspective at each endpoint for full wireframe rendering
  • Added bold syntax highlighting for mode and section dividers
  • Added bold syntax highlighting for function declarations
  • Updated error message reporting syntax for Safari 15
  • Renamed find_map_path() → map_find_path() [kept deprecated old version for backwards compatibility]
  • NaN z values in graphics commands are now an error to help with debugging
  • Factored internal runtime into separate AI, physics, CPU, and GPU files
  • Auto-math now replaces ... with … more aggressively
  • Forced Debug Override button to stay visible when checked in compact, all-constants view
  • Changed statement counter to not count else: without else if as a separate statement
  • Fixed rendering of diagonal lines with alpha
  • Fixed incorrect syntax coloring of “sgn” as if it was a function
  • Fixed random_gaussian3D and random_on_cube missing from syntax highlighting
  • Fixed emulator screen showing desktop instead of black when stopped on MacOS and Linux (workaround for Chromium bug)
  • Fixed overlaps() for corner rects
  • Fixed debug override of constants with 0 failing
  • Fixed url-based string constants being directly editable in the IDE