quadplay

The quadplay✜ fantasy console

OTHER License

Stars
883
Committers
3

Bot releases are hidden (Show)

quadplay - Update 79

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

Published by morgan3d almost 3 years ago

  • Changed the hooks created by add_frame_hook(), delay(), and sequence() to not decrement their frame counter if the mode changes inside of the hook.
  • Added block elision using & to avoid high nesting on trivial blocks
  • Added XY_LERP(), XZ_LERP() and XYZ_LERP() intrinsics
  • Added XY_MAGNITUDE(), XZ_MAGNITUDE() and XYZ_MAGNITUDE() intrinsics for convenience
  • Extended find() to take an optional comparator
  • Increased IDE code space by one column by trimming pixels from the gutter
  • Deprecated preserving_transform modifier on functions (use elision now)
  • Upgraded to the ace.js 30 Sep 2021 build
  • Changed equivalent() to return true if both values are NaN
  • Special filenames debug.pyxl, test.pyxl, Debug.pyxl, and Test.pyxl; section/mode headers; and debug_watch() and debug_print() no longer count against code size limits
  • Fixed draw_text() with a camera zoom transformation projecting incorrectly
  • Fixed nil values from linear splines created with make_spline()
  • Fixed entity.size initialized based on scale in make_entity()
  • Fixed vertical alignment of button prompts in the cruise-7 font
quadplay - Beta update #77

Published by morgan3d almost 3 years ago

  • Improved display of multiline strings in the constant editor
  • Improved arrow rendering for deja fonts
  • Improved square and circle symbols in scoreboard-5 font
  • Added new constant type of string from a text file url
  • Added new asset type of data from a text file url
  • Added overloaded versions of local_time() that can convert from other time zones and parse dates as strings
  • Added countdown example using local_time()
  • Added documentation to quantize+ tool for saving images (including a workaround for Firefox drag-drop limitations on Windows)
  • The IDE todo list now separates by function and hyperlinks function and file names
  • iterate() now returns true if any element was removed
  • Better error message when passing a nil container to iterate()
  • set_transform() now produces errors on NaN input
  • Fixed launching quadplay-server with a relative path to a game on the command line on Windows
  • Fixed equivalent() on nil values
  • Fixed Import Asset, Create New Mode, and Create New Script on Windows with multiple drive letters
  • Fixed parse error on single escaped slash string "\"
  • Fixed touch coordinates off by one pixel from hardware cursor
quadplay - Beta update #76

Published by morgan3d almost 3 years ago

  • Changed physics_remove_entity() to allow removal of entities that are not in the context
  • Made it safe to call physics_remove_entity() while in physics_simulate()
  • physics_attach() now defaults unspecified attachment points to the same location from the other object
  • Added physics arrow demo of dynamic attachments
  • Upgraded to matter.js 0.17.1
  • Increased physics velocity and position iterations slightly to reduce missed collisions for very fast objects
  • Added attack-01.sound.json bow sound
  • Fixed welding to objects with infinite mass or density
  • Fixed removing an entity from physics where there had been a recent resting contact with that object
  • Fixed parse() for hex and binary constants
  • Fixed IDE display of hex and binary constants
  • Fixed blurry search dialog when in IDE Ghost Edit mode
quadplay - Beta update #75

Published by morgan3d almost 3 years ago

  • The string callback version of iterate() now ignores elements that do not have a property by that name
  • push(array, value) is now permitted from within iteration using iterate() or for value in array without cloning. Combined with iterate.REMOVE, this allows amortized constant time addition and removal of values from an array while iterating over it.
  • Improved physics system API documentation
  • "gyro" physics attachment now defaults to the current angle instead of 0deg
  • Added new "torsion_spring" joint attachment for rotational springs
  • Added button prompt support for Colemak keyboards which use OS layout instead of remapping
  • Added Ⓡ character to font sheet
  • Fixed overlaps() for bounding boxes with a corner instead of pos property
  • Fixed syntax highlighting of XZ_DIRECTION() intrinsic
  • Fixed syntax highlighting of cbrt(), xyz_to_rgb(), find_max_value(), find_min_value(), max_value(), min_value(), array_value(), random_truncated_gaussian3D(), transform_ws_to_es(), transform_es_to_ws(), transform_ws_to_ws(), transform_cs_z_to_ss_z(), transform_ss_z_to_cs_z(), transform_ss_to_ws(), transform_ws_to_ss(), transform_to_parent(), transform_to_child(), and compose_transform() functions
  • Fixed IDE error on editing a numeric constant with an unparseable quantum specification
  • Fixed documentation on XY_MAD_XY_XY() and XY_MAD_S_XY() intrinsics to match their current names
  • Fixed a memory leak in physics_detach() for "gyro" attachments
quadplay - Beta update #74

Published by morgan3d almost 3 years ago

Beta 74:

  • Made random not syntax highlighted unless used as a function
  • Fixed create new map in IDE to use correct sprite URLs when not cloning the sprite PNG
  • Extendfed workjson.py with Python-compatible dump() as well as dumps()
  • Changed font sheet layout. Use tools/font-update.py to upgrade previous font sheets and then tweak the result manually. All built-in fonts have been upgraded and tweaked.
  • The tools/fontpack.html tool now generates missing characters in font sheets, as does the runtime loader. This simplifies manual creation of new fonts and increases compression on disk/reduces game download time.
  • Added button prompt support for French AZERTY keyboards, including new Q, Z, m, !, ù, è, à prompt characters in font sheets
  • Added font characters ĄąČčĆćĎďĚěĘꣳŃńŇňŘřŚśŠšŤťŮůÝýЎўŽžŹźŻżҐґтЄєı to support more languages.
  • Added more subscripts to font rendering. The full set is now ₀₁₂₃₄₅₆₇₈₉₊₋₍₎ₐᵦₑₕᵢⱼₖₘₙₒᵣₛₜᵤₓ. Note that d, y, and z subscripts are absent because they are missing from Unicode itself.
  • Added ◌̀◌́◌̂◌̌◌̃◌̈◌̊ to font sheet for future auto-generation of accented characters
  • Fixed font.glyph_size.x NaN value
  • Fixed blackletter-14.font.json font PNG size

Beta 73:

  • 19 new CC-BY 4 chiptune songs by Abstraction
  • IDE autopause on blur and reload-on-focus no longer take effect if the game is hosting or guesting, in order to service to event queue when testing network multiplayer on a single machine
  • The quadplay-server.py script will clean up previous instances if any processes were left in memory from an abrupt shutdown
  • Suppressed server log messages on Safari touch icon requests
  • Added tools/highlight.js/pyxlscript.js plugin for highlight.js
quadplay - Beta update #72

Published by morgan3d about 3 years ago

  • New HexFlipper built-in game
  • New tools/project_linter.py for testing games before export. Detects unused assets/constants, missing licenses, and more.
  • Added a friendly error message for using % instead of mod
  • Tools menu now offers Show Private Views for debugging online multiplayer
  • Can now join online play from a direct URL link as well as a host code
  • Added MY_QUADPLAY environment variable support for quadplay and quadplay-server.py scripts
  • Copying and pasting online multiplayer host codes and host URLs now supported in all browsers
  • System controller configuration dialogs now work in online multiplayer with private views
  • Added device_control() access for enabling higher resolution multiplayer private views on devices that support them
  • Extended workjson.py with Python-json compatible load() as well as loads()
  • External IDE plugins are now generated internally from a common keyword and API list
  • Fixed crash on launcher's System tab
  • Fixed rendering of active tabs in the launcher
quadplay - Beta update #71

Published by morgan3d about 3 years ago

Lots of multiplayer features, and minor bugfixes from recent game jam feedback

  • Added gamepad.status read-only property for detecting inactive gamepads or connected online players
  • quadplay.vbs script on Windows now supports all quadplay command-line arguments
  • New pink Kenney alien sprite
  • New private view online multiplayer API via set_screen_size() and view_array
  • Added explicit popup error messages on missing, relative, or space-containing my_quadplay directories
  • Added disconnect_guest() for graceful disconnection from within game code
  • Added start_hosting() and HOST_CODE to initiate hosting directly from games (instead of the system menu)
  • Added stop_hosting()
  • Added args version of draw_map_span()
  • Added support for corner rects in overlaps()
  • Incompatible change: set_clip(), get_clip(), and intersect_clip() argument renamed from pos ⟶ corner to be consistent with the rest of the API
  • debug_watch() now shows intermediate results of a frame when a program error occurs
  • Added debugger option for printing touch screen coordinates
  • Keyboard pressed/released state now resets after program restart and system menus
  • Fixed bloom not working in online multiplayer
  • Fixed Warlock3D player getting stuck on walls
  • Fixed gamepad.type and gamepad.prompt not resetting after a guest disconnects
  • Fixed overlaps() incorrectly returning false too often due to an overly aggressive bounding box test
  • Fixed gamepad.prompt being nil for guest controllers after they connect
  • Fixed mouse triggering touch.aa during mouse movement while held
  • Fixed missing cursor and incorrect clipping region for system Online Menu in game
  • Fixed back-to-back rectangle draw calls with different clipping regions failing
  • Fixed gamepad_array being syntax highlighted as a function instead of a constant
  • Fixed size and loop being syntax highlighted as functions when used as properties or variables
quadplay - Beta update #70

Published by morgan3d about 3 years ago

New “Change Resolution” example program
New “Cards” example program
New poker and solitare card sprites
Patched the quadplay command line script to avoid errors on Linux
Added Duality to the online index
Added extended online play to support half-resolution, 192×112 games
Added find_max_value() and find_min_value()
Added set_screen_size() for changing resolution at runtime
Renamed max_component() ⟶ max_value()
Renamed min_component() ⟶ min_value()
Added --my_quadplay argument to the server scripts
Fixed raw files appearing in the Import Asset dialog when they are also used in a JSON file containing single-quoted strings
Upgraded to peer.js 1.3.2

quadplay - Beta update 68

Published by morgan3d over 3 years ago

  • New game, Rescue Roguelike
  • Added touch.hover
  • Fixed native app version of quadplay failing if MSEdge browser was already running
  • Added error message at the command line when the quadplay internal network port is already in use
  • Made the “Quit quadplay” menu option more robust on different platforms
  • Added support for the Brave browser on MacOS and Windows
  • Changed the button to play from (p) to (a) for the launcher to prevent confusion about the ESC key
  • Touch and mouse support for the system pause menu
  • Pause menu now saves and restores mouse lock and cursor
  • Added cursor and lock properties to device_control("get_mouse_state")
  • Improved parser error line reporting
  • Fixed documentation to consistently refer to nan in all lower-case
  • Fixed new game not having the correct screenshot tag
  • Fixed reversed(string)
  • Incompatible change: draw_text() now returns the full rectangular bounds instead of just the dimensions of the drawn text
quadplay - Beta update #69

Published by morgan3d over 3 years ago

New game, “Duality”
Increased new game loading speed 2x within IDE by not reloading the IDE itself and rewriting browser history
Added sound.duration
Added userdata args to iterate()
Added sound effect to starter example
Added ching-9 font
Added "all" modes option to add_frame_hook()
Added quadplay --play for launching without the IDE by default
Added menu options to show and hide IDE when in non-kiosk play mode
Added an explicit button to exit full screen UI mode
Added XY_MAD_XY_XY() and XY_MAD_S_XY() intrinsics
Particle system now has a global time rate parameter
Exposed new constant number display format and rounding quantum in the IDE
Increased overlaps() performance for distant objects
Calibrated bloom to match between Mac and PC
Performance scaler can now disable bloom if not making frame rate
Added syntax highlighting in IDE for smoothstep() and smootherstep()
Hid internals of audio clip implementation from game code
Fixed runtime error “s is not defined” when using set_mode() ... because without indentation
Fixed debug watch table not clearing on game restart
Fixed new constant dialog making max number bounds syntax too verbose in .game.json files
Fixed missing Cyrillic lower-case "т" from fonts
Fixed the spread operator for objects in all cases
Fixed Import Existing Mode not closing dialog
Fixed using sprites as colors not working for transparent black
Fixed Create New Asset → Map producing URLs within the TMX file
Fixed string concatenation and coercion not unparsing objects correctly
Fixed quadplay --help script on Linux and macOS printing asynchronously after the prompt appears

quadplay - Beta update 67

Published by morgan3d over 3 years ago

Incompatible changes:

  • Running quadplay at the command line, or on Windows double-clicking quadplay.vbs will now run quadplay in the style of a native app. It requires Python and Edge or Chrome/Chromium to be installed.
  • The previous behavior of quadplay --browser is now provided by running tools/quadplay-server.

Other changes:
unparse() now supports five levels of pretty printing instead of the single terse value
Create map dialog now supports cloning the spritesheet used for tiles
rgb() and rgba() now accept hex strings
New Tic Tac Toe example demonstrating gamepad, mouse/hover, and touch input for a grid
Improved documentation of local functions
F6 PNG screenshot and F8 GIF recording labels on the menu bar are now active as buttons
Made unparse(x, 0) remove spaces from arrays for better compression
Added spaces after : in unparse(x, level) for level greater than zero for better readability
Fixed device_control("get_mouse_state") for translated coordinates
Fixed constants without a range clamping to -Infinity in the IDE
Fixed sprite info not visible on left edge
Fixed “execute earlier/later” on scripts menu item making script URLs local
Fixed error about "$url is not defined” when editing a map's spritesheet JSON directly
Fixed touch and mouse input not resetting for the new frame immediately after a set_mode(), push_mode(), or pop_mode()
Fixed start_mode override enable for debug layer
Fixed mode diagram cutting off the bottom-most arc sometimes
Fixed loading a new game closing the IDE in nativeapp mode

quadplay - Beta update 66

Published by morgan3d over 3 years ago

New Spritestack 2.5D car demo in the style of Grand Theft Auto
Made the “pixel shader” style Clouds example 15% faster using sprites as colors
The Debug UI mode with the large game screen now always shows the project list on large displays. It still auto-hides the list to conserve space on smaller displays.
Added a quit menu item to the Tools menu when not in kiosk mode (not supported on Firefox)
The IDE now looks like a native app instead of a browser app when run on a platform with Chrome or Edge installed. Use --browser on the quadplay command line script to force loading in a regular browser tab
On Windows, the quadplay.cmd script can now be run directly by double clicking, and will close the server automatically
make_entity() now creates default vel and force as xyz() if entity.pos is an xyz()
Removed vestigial acc (acceleration) and twist (angular acceleration) properties on entity, since they are subsumed by force and torque
All drawing routines can now accept sprites as colors to enable image palettes
Added a title screen to the Warlock 3D example
Added map-based spawning to the Warlock 3D example
Changed the Warlock 3D example to use the map 2.5D coordinate system
Web server now includes the script line number on security warnings to distinguish the source of identical warnings
Kiosk mode on macOS with Chrome or Edge installed looks more like a native app and is harder to users to escape
Fixed web server printing exception trace on security warnings
Fixed physics allowSleeping ⟶ allow_sleeping
Fixed draw_map() 3D perspective
Fixed not being able to save .debug.json files on Windows when quadplay is installed on a different drive than the home directory

quadplay - Beta update 65

Published by morgan3d over 3 years ago

New easy map asset creation in the IDE
New Zoom 2D and Zoom 3D camera examples
The Create Asset dialog now provides license templates
Incompatible change: wrap_x and wrap_y for maps are now loop_x and loop_y for API consistency
format_number() can now accept a degrees or percent suffix
Code polish on the Animation and Z-Car examples
Improved the constant editor GUI layout
Removed zero time categories from the on-screen performance HUD
Made noise() about 40% faster
All draw calls now allow a separate pos.z or equivalent value for transform skew and camera zoom that is separate from the z value used for occlusion order. By default pos.z = z and z = pos.z if only one is specified, so the new behavior is backwards compatible.
entity_simulate() now supports 3D velocity and force
map_resize() now has more default parameters
Clarified the difference between a, aa, and a_released for all buttons in the manual
set_camera()...get_camera() will now preserve the type of camera.pos as xy() or xyz()
Documented the Z-Axis under Coordinate Systems
Fixed missing syntax highlighting for map helper functions
Fixed map_resize() for an increasing number of layers
Fixed Animation example referencing incorrect font
Fixed draw_sprite() for scale between 0.99999999999999 and 1.00000000000001
Fixed game-specific sprite properties not appearing on rotated_90 and rotated_270 versions
Fixed games without a developer or title crashing the IDE on load
Fixed draw_text() with y_align: "bottom" culling text incorrectly
Fixed format_number() adding negative signs after space padding
Fixed make_entity default size initialization
Fixed asset import dialog empty when corrupt json files are in the game folder

quadplay - Beta update 64

Published by morgan3d over 3 years ago

Incompatible change: Changed entity.sprite_override_color ⟶ entity.override_color and entity.sprite_override_blend ⟶ entity.override_blend properties to match the draw_sprite() arguments better.
Clicking on “Constants” in the IDE now shows a pane of all constants at once for easy editing
Added optional sliders, rounding, and formatting for numeric constants in the IDE
Made the ESC key act as in-game pause when not in the IDE (hold to leave fullscreen)
The mobile controls icon now includes a fullscreen indicator when not in the IDE
Constant documentation in the IDE now uses comment syntax highlighting
Made boolean constants in the IDE better match the formatting of other constants
Made mobile device detection more conservative
Made the screen layout buttons easier to touch on mobile
Documented JSON metadata for number constants
Fixed reference constants using the object icon in the project view
Fixed constant editor layout of colors with very long variable names
Fixed round(x, 0) to produce no rounding rather than rounding to an integer
Fixed ⓟ and ⓠ buttons overlapping in portrait mode on thin phones
Fixed crash on blizzard levels in Serpitron game due to API change
Fixed blurry map preview
Fixed the constant editor not scrolling
Fixed incorrect rotated and scaled sprites in map preview

quadplay - Beta update 63

Published by morgan3d over 3 years ago

Optimized loading time of itch.io exported games
Added shapes examples to the starter example code/initial project
Added optional low overhead on-screen profiling HUD
Removed launcher and template files from exported games to reduce file count
Games in Maximal mode outside of the IDE automatically switch to Emulator mode now on mobile to present touch controls
New loading message/animation when games launch
Running quadplay or launching the IDE with no arguments now loads the animation example instead of the quadplay game OS launcher
export.py now takes the game path as a positional argument (no -g any more)
Updated itch.io upload instructions
Fixed IDE interface flashing when kiosk or exported games
Fixed table constants now are marked as dependencies when exporting
Fixed tooltips on toggle menu items only showing above the checkbox
Fixed being able to start games before loading completes

quadplay - Beta update 62

Published by morgan3d over 3 years ago

New “Piano” synth demo of using the audio pitch feature
Audio pause/resume and timestamps are now more accurate
Errors now print call stacks to the Output debug pane. (Safari cannot print line numbers or URLs in call stacks; all other browsers contain full data)
Added now property to the return value of get_audio_status() to aid in synchronizing visuals with audio
Added sound property to the return value of get_audio_status()
Updated the itch.io exporter documentation to the latest itch.io user interface
Reverted the itch.io exporter to using Maximal mode instead of kiosk mode so that players on mobile don't get stuck without controls
Renamed the default branch for the github quadplay repository to main
Added a popup warning on Safari that pitch changes are not supported
Changed exported games to use Maximal layout, which exposes the control buttons on mobile
Updated scalepix tool to the latest version of MMPX
Fixed illegal |= and &= C++ operators to now produce clear error messages suggesting PyxlScript versions and are auto-corrected in the IDE
Fixed Safari debugger pane layout
Fixed controls dialog in exported games
Fixed set_pitch() for non-octave pitch changes
Fixed stop_audio() setting the state to ENDED
Fixed pow() on two numbers actually computing ceil()
Fixed play_sound() argument rate to playback_rate to match state queries
Fixed fonts for standalone HTML tools
Fixed: conditional (if) expressions inside of object declarations no longer require parentheses

quadplay - Beta update 61

Published by morgan3d almost 4 years ago

Beta update 61

Made Windows 10 quadplay script robust to the Windows python.exe shim using py.exe
Changed manual syntax highlight colors to match the IDE
Increased usage of the quadplay font in the IDE
Persisted autoload checkbox on Open Game dialog between sessions
Added “Rename Mode” context menu
Made the quadplay command line script not print terminal 404 errors for missing files that are optional, such as .debug.json files
Protected internal state of audio clips
Required parentheses for todo()
Slightly reduced CPU usage for audio when paused
Halved audio memory consumption and audio bandwidth for online play by reducing internal audio mixing to 22 kHz
Optimized audio processing
Fixed parsing of hexadecimal or binary constants separated by a single character
Fixed resume_audio()
Fixed todo() in todo-as-error mode
Fixed in-IDE script renaming to remove the old version
Fixed GIF recording on Firefox
Fixed syntax highlighting in the manual for functions with digits in the name
Fixed the use of global color constants in draw_text() markup

Beta update 60

New “A Dark Drive” horror game example
New “Word Game” example inspired by Babba Is You
Changed the profiler and debugger update every frame when in Slow or Single-Step debugging modes
Improved the error message for missing separator comma in object literals
Added support for fractional borders for map_generate_maze()
Added transform_ws_z_to_cs_z()
Added transform_cs_z_to_ws_z()
Fixed transform_cs_to_ws() transposing the camera
Fixed error on draw_text() with trailing newline
Fixed bloom appearing over the full-screen Editor IDE mode
Fixed colored rectangles overlaying Full Screen and Ghost IDE modes in certain circumstances

quadplay - Beta update 59

Published by morgan3d almost 4 years ago

New kenney-1bit-14x14.sprite.json spritesheet asset
Added bloom to set_post_effects()
Added browser name and frame overhead to the performance summary
Improved resolution of the browser icon
Improved profiler results for 3D rendering with draw_map_span()
Improved frame rate scaling on low-end devices for 3D rendering
Removed pause and step controls from the IDE while connected as an online guest
Made locally-hosted IDE crossOriginIsolated, which should improve profiling and frame scaling on Firefox
Reduced the performance overhead of the profiler itself
Substantially improved performance on Raspberry Pi in Kiosk mode

quadplay - Beta update 58

Published by morgan3d almost 4 years ago

Incompatible change: removed implicit multiplication for back-to-back parentheses to make first-class functions easier to use: (a)(b) no longer performs multiplication.
Enabled online play over https and in kiosk mode
Added scroll repeat on the New Host dialog
Added support for the spread operator ... on objects as well as arrays
Added map_resize()
Added map_generate_maze()
Added game.json screenshot_tag field and debug override
Added palette_swap option to sprite.json files
Added support for custom pivots on single named sprites
Added “autoplay” option on the open game dialog to streamline looking at examples
Moved the change log into its own file to reduce manual length slightly
Extended the 5-argument lerp() documentation to make clear that it can rescale a range.
Made angle_to_xy() snap to integer values when within one trillionth of them
Fixed button prompts for guest online players
Fixed random_within_circle() and random_within_sphere() incorrectly projecting the point onto the surface
Fixed debug_watch() to update when single stepping
Fixed loading a full-spritesheet sprite with a pivot and no sprite_size in the JSON file
Fixed Folder path in the IDE not properly hyperlinking on Windows