quadplay

The quadplay✜ fantasy console

OTHER License

Stars
883
Committers
3

Bot releases are hidden (Show)

quadplay - Update #100 Latest Release

Published by morgan3d 5 months ago

  • Added scripts/dice.pyxl and Dice example program
  • Slightly increased screen size in emulator view
  • Renamed scripts/3D.pyxl to scripts/mat3x3.pyxl
  • Changed is_NaN() to is_nan() (but retained old spelling for backwards compatibility)
  • Added hit-10.sound.json, hit-11.sound.json
  • Fixed touch.hover and specification and become nil when there
    is no movement
  • Fixed touch.aa (was broken by recent GPU multithreading)
  • Fixed a bug in the qrcode generator for particular URL lengths
  • Fixed iOS crash on P button
quadplay - Update #99

Published by morgan3d 7 months 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
quadplay - Update #98

Published by morgan3d 10 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
quadplay - Update #97

Published by morgan3d 12 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
quadplay - Update #96

Published by morgan3d about 1 year 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
quadplay - Update #95

Published by morgan3d about 1 year 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
quadplay - Update #94

Published by morgan3d about 1 year 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)
quadplay - Update #93

Published by morgan3d over 1 year 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
quadplay - Update #92

Published by morgan3d over 1 year 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
quadplay - Update #90

Published by morgan3d over 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
quadplay - Update #89

Published by morgan3d almost 2 years 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()
quadplay - Update #88

Published by morgan3d almost 2 years 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
quadplay - Update #87

Published by morgan3d about 2 years 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
quadplay - Update #86

Published by morgan3d about 2 years 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
quadplay - Update #85

Published by morgan3d about 2 years 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
quadplay - Update #84

Published by morgan3d over 2 years 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
quadplay - Update #83

Published by morgan3d over 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
quadplay - Update #82

Published by morgan3d over 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
quadplay - Update #81

Published by morgan3d over 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
quadplay - Update #80

Published by morgan3d over 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