quadplay

The quadplay✜ fantasy console

OTHER License

Stars
883
Committers
3

Bot releases are hidden (Show)

quadplay - Beta 36

Published by morgan3d over 4 years ago

Syntax highlighting for intrinsics
Documented the autoscaler resolutions
Added the advanced Physical Consoles section
Optimized IDE load time using defer
Optimized game load time using async and separate CPU and GPU scripts
Renamed ASSET_CREDITS ⟶ CREDITS
Moved the console credits out of the CREDITS.code section and into their own quadplay section
Made four-way ball splits in Quadpaddle example game
Added paddle shield powerup in Quadpaddle example game
Added entity_remove_all() to syntax highlighting
Added miniroguelike-8x8.sprite.json
When launching without the IDE, always go full screen
Added the Network section of the manual
Fixed recursive overlaps() on entitys with children
Fixed spritesheets for maps not showing in the project viewer
Added --kiosk mode for the quadplay script

quadplay - Beta 35

Published by morgan3d over 4 years ago

Editing for sprite, font, map, and sound metadata directly in the IDE
Fix for the quadplay script when launched with an explicit .game.json file
Built-in assets cannot be modified and are shown with lock badges on their icons
Remote assets cannot be modified and are shown with cloud badges on their icons
Disabled reloading while the editor is saving
Can change the initial mode from the IDE
All four gamepads are now enabled in the launcher for navigating to a game
Patches for the sprite editor UI

quadplay - Beta update 34

Published by morgan3d over 4 years ago

ew wide editor UI IDE view mode
Maximal UI now enters full-screen mode even when the IDE is enabled
Editing is enabled for modes and scripts in the IDE
Code editor font size is now adjustable
Can now create new modes and scripts in the IDE
Can now edit screen resolution and flip y-axis in the IDE
Can now change the game license in the IDE
Can now change the game title, copyright, and developer in the IDE
Game description and metadata are now visible and editable in the IDE
Added SN30 Pro controller settings
Added more explicit dual-stick and shoulder/trigger control documentation
draw_text() shadows now apply after outlines, so they are on the outside
Per-tab editor state for undo/redo, selection, and cursor position

quadplay - Beta update 33

Published by morgan3d over 4 years ago

Added CONSTANTS and ASSETS objects
Added default, a “nullish-coalescing” operator for creating default values
Added R. P. S. game

quadplay - Beta update 32

Published by morgan3d over 4 years ago

Added long text button prompts for SPACE, ENTER, RETURN, SELECT, START, SHARE, and OPTIONS to fontgen
Converted the scalepix tool to dark mode
Optimized set controls OS dialog layout for all screen sizes
font.lineHeight → font.line_height, font.charSize → font.char_size, font.letterSpacing → font.letter_spacing
Renamed draw_text() arguments wrapWidth → wrap_width and textSize → text_size
Added auto-generated asset credits screen on pause menu
Added .game.json constant types for xz, hsv, and hsva
Included time in screenshot filenames
Added joint def-preserving_transform block to reduce indentation
Added the Mismatched Push and Pop Mode section explaining complex mode transitions
Renamed assetCredits → ASSET_CREDITS
Added serifs to Broderick font capital I variants
Made touching the screen in IDE mode not trigger button presses

quadplay - Beta update 31

Published by morgan3d over 4 years ago

2020 Feb 24: Beta update 31

Removed context menu from emulator to make touch screens more responsive
Fixed virtual controller responsiveness on Android Chrome
Sharpened boot screen text on Safari
Fixed gamepad_array[i].angle to follow the current Y-axis scaling and match draw_sprite() angle
Changed the internal font image layout and added explicit keycaps characters to all fonts for all buttons used in controller and keyboard mappings to distinguish them from regular letters
Added bitnot text operator as a synonym for ~
collision_ ⟶ contact_ in the API to reduce unique terms
Switched all GUI tools to dark mode styling
quantize tool now allows dropping the image anywhere on the page
Improved fontgen button prompt draft characters

quadplay - Beta update 30

Published by morgan3d over 4 years ago

2020 Feb 17: Beta update 30

Fixed Beat the Gobblins trying to write to read-only properites
Fixed confirmation dialog crash in OS reset menu
Reduced the number of rats in Serpitron
Reduced number of buildings on urban levels in Serpitron
quadplay internal server now does not return directory listings, to increase security
quadplay script now works from any directory for games in any directory
quadplay --host now launches faster on macOS
Optimized manual loading time by removing mathjax

2020 Feb 16: Beta update 29

Changed the gamepads to define the direction of x, y, dx, dy, xx, and yy based on the current transformation at the time that they are accessed
Reduced number of rats in single-player Serpitron
Reduced the coffee speed in Serpitron
Changed spriteUrlTable ⟶ sprite_url_table in map format
Fixed single-player snake hitting itself on the donut level in Serpitron
Fixed SpeedStreet loading crash introduced in the previous beta
Fixed map.wrap_y and map.wrap_x, which were broken by the camel case to snake case conversion in a previous beta
Fixed caching where multiple json files reference the same sound or image
Fixed several bugs in the RPG example
On a mobile device in portrait mode, the UI now runs intentionally small and rotated to encourage the user to use landscape (temporary workaround)
Optimized game launch time and memory utilization by eliminating in-memory backup copies of immutable assets

quadplay - Beta update 28

Published by morgan3d over 4 years ago

2020 Feb 15: Beta update 28

Added optional gamepad argument to any_button_press()
Made controls menu option more visible in standalone game mode
Changed all fields of map to use snake case
Added --zipfile argument to export.py to streamline itch.io distribution of games
Made export.py runnable from any directory
Made export.py default to a standalone export
Added Beat the Gobblins game by Stephan Steinbach
Fixed IDE visualiztion of modes to support push_mode and set_mode with arguments
Added the touch API (no draw transform support in this implementation)
Added xy and dxy properties to gamepad_array elements
Improved the startup play icon for mobile using svg
2020 Feb 6: Beta update 27

Added xyz_to_rgb() and rgb_to_xyz()
Added xy_to_xz() and xz_to_xy()
Added xy_to_xyz() and xz_to_xyz()
Added MAT2x2_MATMUL_XY() and MAT2x2_MATMUL_XZ()
Fixed outlines breaking up letters on script fonts
Removed the home button from the UI, as the in-game OS menu now handles this
Forced immediate interaction in autoplay mode to unlock fullscreen and audio context features in various browsers
Removed quadplay branding on the mobile welcome screen and removed escape to OS from standalone games to emphasize the game's own branding
Allowed keyboard and gamepad input to activate a standalone game from the welcome screen

quadplay - Beta update 26

Published by morgan3d over 4 years ago

Added examples/highscore example
Added xz() for convenience when working with top down coordinate systems, and corresponding intrinsics
Browser tab label is now the game title
Significant copyediting of the manual by Mauricio Vives
Changed the definition of override_color alpha for draw_sprite()
Added array_value() support for strings
Fixed Emacs syntax highlighting matching keywords that appear within variable names
Fixed multiple bugs in tools/export.py and supported games not in the quadplay directory tree
Fixed flip_y for maps
Fixed save_local and load_local
Fixed join() default separators
Fixed parse() for nested objects within arrays

quadplay - Beta update 25

Published by morgan3d over 4 years ago

2020 Jan 29: Beta update 25

Converted the entire API from camelCase to snake_case to improve readability and more closely resemble Python and Lua
Replaced all instances of rnd with random and int with integer in the API
random_int() → random_integer()
srand() → set_random_seed()
pad[] → gamepad_array[]
Removed most scroll bars from the IDE on Windows
Clicking on gamepad icon now displays the name of the gamepads in the IDE
Added hauer-6 font asset
Added cruise-7 font asset
Added connelly-7 font asset
Added thompson-8 font asset
Increased vertical spacing on cga-7, deja-8, and cpc-14 fonts
draw_text() now returns a tighter vertical bounding box
Added kerning for script fonts
Added examples/fontpreview example

quadplay - Beta update 24

Published by morgan3d over 4 years ago

Added physicsEntityHasContacts() for optimized contact tests
Fixed physicsRemoveAll() crash
Increased physics broken contact forgiveness queue length to four frames to better maintain ground contact for sliding objects
Fixed sustained physics contacts for fast moving objects not updating position properly
Fixed "Game start" argument being passed to the start mode's enter event section
Added tools/export.py tool
Made tools/quaddepend.py able to launch directly as a script on MacOS and Linux
Renamed internal BetterJSON library to WorkJSON
Centered ninja sprites
Added detection for 8BitDo SN30, SF30, and Zero 2 controllers
Redesigned the internals of the virtual sprite and font hardware memory system

quadplay - Beta update 23

Published by morgan3d almost 5 years ago

2020 Jan 18: Beta update 23

Redesigned profiler output in the “Stats” IDE tab to show game logic, physics, and graphics time separately
Rewrote framerate scaling to maintain the best possible motion appearance independent of framerate
Optimized memory management for physics attachments by reference counting and weak pointers
No longer count quadplay OS resources against the game's limit
Corrected the emulator screen position to remain centered during resizing
Added more information on physical controllers
Improved manual document layout on mobile phones in portrait mode
Added ninja-pink-32x32.sprite.json
Added ninja-idle-64x64.sprite.json
Adjusted ninja colors

quadplay - Beta update 22

Published by morgan3d almost 5 years ago

2020 Jan 14: Beta update 22

  • Implemented game frame rate throttling to 60 Hz on high refresh rate monitors
  • Fixed keyboard event handling when the game is not making framerate
  • Restored forum link in the IDE
  • Added .nojekyll and _config.yml files for proper hosting of quadplay system
    filenames that begin with underscores on github.io
  • Improved button prompt glyphs and vertical spacing in the nano-4, nano-5, scoreboard-6, scoreboard-7$
  • Fixed controls menu for games with y = up
quadplay - Beta update 21

Published by morgan3d almost 5 years ago

2020 Jan 13: Beta update 21

Added support for Switch Pro, JoyCon, PlayStation 3, Xbox360, and Stadia controllers
Replaced with ◅ ▻ with ◀ ▶ in fonts
Added ▼ to fonts (all four cardinal solid arrows are now represented)
Added a system pause and configuration menu bound to the ⓟ/Start button
Added a startup message for standalone games notifying players of the system menu button
Added the ⊖ symbol to all fonts
Removed the ⓟ gamepad button from game access space
Added an event section for popMode, which can be overloaded for the mode being returned from
Added quaddepend.py script for printing dependencies of a game file
Changed quadplay script default to rejecting external connections and made the argument to enable mobile support --host, replacing the previous --secure mode
Showed sprite pivots in the sprite viewer
Added entity.collisionSensor property
Added 64×44 controller spritesheet
Separated emulator settings out of the Tools menu into a new Console menu
Added scalepix✜ tool for upscaling sprites and fonts
Changed the pad[].prompt to be a mapping for use with replace() instead of raw constants and updated example programs to use it
Documented the HOTAS pad[].type
Added more error checking for xy() to catch common typos
Added eight new blip UI sound effects
Fixed resetGame() running the game at double speed
Fixed gameFrames and modeFrames starting at 60
Redesigned boot and startup animations
Restored examples/text program that was broken by the previous update
Added getBackground()

quadplay - Beta update 20

Published by morgan3d almost 5 years ago

2020 Jan 3: Beta update 20

Renamed addEntityChild() to entityAddChild()
Renamed removeEntityChild() to entityRemoveChild()
Renamed updateEntityChildren() to entityUpdateChildren()
Renamed physicsStepEntity() to entitySimulate()
Renamed drawRect() to drawCornerRect()
Renamed drawSpriteRect() to drawSpriteCornerRect()
Made entitySimulate() use entity.drag and invoke entityUpdateChildren()
Added hardware physics support. See the Physics section for the API
Added physics debugging to the IDE
Added physics example
Added oscillate(x, lo, hi) and deprecated oscillate(x, m)
Added entityRemoveAll()
Allowed more flexible JSON syntax for data files
Added BetterJSON.js to credits
Added optional pos, scale, and angle arguments to drawTri()
Added drawRect() that is centered and takes an optional angle argument
Added drawPoly() for drawing convex polygons
Documented that drawTri() ignores winding order
Updated tools/pyxlscript-mode.el emacs syntax highlighting for new APIs
Fixed tools/pyxlscript-mode.el emacs syntax highlighting of color literals, negative numbers, and size properties
Optimized overlaps(region, point) test
Changed default entity name from "Anonymous" to "entity" + unique ID
fontpack✜ now allows dropping the source PNG anywhere on screen
2019 Dec 30: Beta update 19

Added the Inspiration section
Added support for per-name (i.e., per-animation) pivots on spritesheets
Added "setDebugFlag" and "getDebugFlag" commands for controlling the IDE via deviceControl()
Added preview images in the Built-In Games section of the manual
Added poly-decomp.js to dependencies
Made require, requires, default, otherwise, and swap into reserved words
Restored the instruction manual tab title to “manual✜" to make it easier to see in the same browser hosting the IDE
Fixed audio on Safari desktop browser
Removed entity.acc and entity.twist properties
New properties for physics: entity.friction, entity.stictionFactor, entity.restitution, entity.drag, entity.collisionCategoryMask, entity.collisionGroup, and entity.collisionHitMask
Added entityApplyForce() and entityApplyImpulse()
Added magnitudeSquared() function
2019 Dec 25: Beta update 18

Added Deploying Games section
Added Serpitron sample game
Removed extendPostEffects() and reverted definition of setPostEffects() to match beta 16
Added composeTransform()
Renamed addFrameSequence() to sequence()
Added entity.pivot and spritesheet pivots
Fixed Chrome and Safari blank region on the bottom of the IDE
Made deja-9 font glyph widths more consistent
Raised mid-glyph bar for capitals 1px on deja-8 font
2019 Dec 14: Beta update 17

Fixed getClip() off-by-one error
Changed intersectClip() to follow the argument conventions of setClip()
Fixed drawText() using the incorrect vertical clipping region
Added lastValue() and lastKey() for arrays and strings
Made floor() and ceil() variants that take a rounding precision
Added fastRemoveValue()
Fixed misalignment of - character and enlarged the + character in the broderick-7 font
Added delay() and addFrameSequence()
Added options for open-ended line segments in drawLine() to support drawing polylines and curves with transparency
Fixed setPostEffects() background color crashing the emulator
Made Modes slightly wider in the visualization graph to accomodate longer mode names
Fixed a bug in the parsing of because statements that contained parentheses
Added support for type "object" in game JSON constants
Added broderick-14 font
Made loop() work on vectors
Made noise() work on vectors
Added extendPostEffects() and getPostEffects()
Fixed setPostEffects() not resetting to defaults first
Added optional reverse argument to sort()
Increased analog stick dead zone to 40% to avoid accidental cross-axis input
2019 Dec 1: Beta update 16

Added support for "array" constant types in .game.json files
Added --secure option to the quadplay script to prevent other machines from connecting to the local webserver
drawText() markup is now implemented
textWidth() now supports markup
Added duration and period to spritesheet animation arrays
Upgraded the quadplay script to use a multithreaded server when Python 3.7 or later is available
Fixed a 1-pixel overdraw in drawSpriteRect()
Made pushFront() and push() return a pushed value
Overloaded atan(xy)
Added insert()
Fixed a parser error on for loops that have extra parentheses surrounding the test
Made documents appear at 80% scale when viewed in the IDE
Upgraded to Markdeep 1.07 for markdown processing
Changed the default markdown style sheet to have less vertical spacing and use a sans serif font
Fixed a bug in pushMode() when arguments are provided
Fixed handling newlines in JSON multiline strings across various OS conventions
2019 Nov 24: Beta update 15

JSON files may now contain multiline strings using backquote: ...
sprite.json files now support per-sprite animation frame timing
Updated the ninja sprites with animation durations and the examples/animation code demonstrating how to use it at runtime
Made the quadplay command line script shut down more gracefully on key press
Added per-sprite info viewer in the IDE
Added slow play button for debugging animations and interaction
Added the specification for markup on drawText() (but not the implementation)
Improved the shape and line spacing for the roman-8 font
Added replace() for strings
Added optional last, pair, and empty separators for join()
Added Text example
2019 Nov 17: Beta update 14

Added fool-9.font.json
Added makeRnd()
Added rndInt(lo, hi) and deprecated rndInt(n)
Added rnd(lo, hi) overload
Added optional rnd() function argument to rndBall(), rndSquare(), etc.
Renamed rndBall() ⟶ rndWithinSphere(), rndSquare() ⟶ rndWithinSquare(), rndDisk() ⟶ rndWithinCircle(), rndSphere() ⟶ rndOnSphere()
Added rndGaussian(), rndGaussian2D(), rndGaussian3D(), rndTruncatedGaussian(), rndTruncatedGaussian2D(), rndTruncatedGaussian3D(), rndOnCube(), rndWithinCube(), rndInt(lo, hi, rnd), rndSign(), rndOnSquare()`
2019 Oct 4: Beta update 13

Fixed RPG demo broken sprite paths
Fixed Boids demo broken sprite paths

quadplay - Beta update 12

Published by morgan3d about 5 years ago

Added optional region to Sprite JSON files
Increased video RAM by 1 MB, for a total of 10.5 MB
Increased error checking for Sprite JSON files to detect typos
Increased robustness to load-time errors
Added SIGN() intrinsic
Made sign() work on vectors
Caught CORS errors on sprite loading and reported to GUI
Internal objects now debugPrint() and unparse() as «type objname» instead of just objname
Fixed forceReload=1 breaking map loading
Implemented pivots for sprites and entities (currently not exposed in the API)

quadplay - Beta update 11

Published by morgan3d about 5 years ago

  • Added ordinal and ordinalabbrev to formatNumber()
  • Fixed implementation errors with Runtime naming clash on Firefox
  • Faster reload (no longer force reloading of quad:// assets when locally hosting)
  • Documented quadplay.html arguments
  • Restored getTransform() to the API
  • Fixed "oscillate" extrapolate mode crash for arrayValue()
quadplay - Beta update 10

Published by morgan3d about 5 years ago

Added support for docs in the game.json file using Markdeep, Markdown, HTML, and text format. Good for game design docs, TODO lists, and game manuals
Added support for Ctrl+G as an alternative GIF recording keystroke
Renamed signNonZero() to signNotZero() to match the manual
Added MIN() and MAX() intrinsics
Fixed opacity == 0 on drawSprite() to draw nothing instead of full opacity
Added rndBall() and rndSphere()
Changed sprite.json name for a single xy() to be a sprite instead of an animation

quadplay - Beta update 9

Published by morgan3d about 5 years ago

Added nanob-3.font.json (like nano-3, but with thinner L and I characters)
Patch for emulator view resizing for new dimensions on slower browsers
Added deviceControl() "getAnalogAxes" command - Renamed index.html to quadplay.html` for improved itch.io compatibility

quadplay - Beta update 8

Published by morgan3d about 5 years ago

Allowed for and with variable lists to be split across multiple lines
Added nano-3.font.json
Added space-planet.sprite.json, space-atmosphere.sprite.json, space-moon.sprite.json, and space-ring.sprite.json
Made the JSON parser report line numbers instead of character positions for errors
Added getClip() for returning the current clipping region
Added deviceControl() support for setting the prompt characters for controllers