Itās mind blowing to think that so many students, teachers, and game developers around the world are bringing their ideas to life with p5play. Iām incredibly grateful, but it also makes me feel a bit distant. Who are all these people?
So in addition to my usual development logs, Iām going to start a new series of interviews with people who are using p5play in inspiring ways.
By sharing these stories, I hope we can form a more connected and supportive community. Stay tuned for that!
Making Amends
Just as software can connect people, it can also provoke division. But now Iām putting my past troubles with The Processing Foundation behind me.
As you may know, p5.js has a new project leader: Kit Kuksenok!
I reached out to Kit in the hopes of finding common ground, which they were open to. Thus, Iāve been working to achieve better interoperability between the upcoming p5.js v2 and q5.js v3 (both currently in beta).
Iām also no longer marketing q5 as āthe sequel to p5ā, but more accurately as an alternative thatās optimized for interactive art. Of course I hope that q5ās beginner friendly API will appeal to the existing p5 user base, but my main aim with this project is to attract a broader audience of game developers when q5 is paired with the upcoming q5play game engine.
Finishing q5 v3
Iāve been deep in the weeds coding in preparation for the release of q5 v3.
Iāve spent months refining the API, fixing countless bugs, and writing docs. Iāve become obsessed with experimenting to get better performance. Itās made me feel a bit like a crazed hermit.
Itās a paradox: you write software for people, but most of the time itās just you and your machine. Of course this experience is not unique to programmers. Ever since the invention of the printing press, writers have surely felt this disconnect.
Yet, programming is even more ethereal in a sense. If I had never put these words in this order, this article would not exist. But a program is an instruction set. It too can be unique, yet itās just telling the computer to do something itās always had the latent ability to do.
Programming is writing, itās math, itās a science, itās an art, and itās teaching the computer!
And who says an old dog canāt learn new tricks? Iāve been thrilled with the results from my 5 year old computer, which Iāll be sharing soon.
q5 v3.0-beta4 Progress Report
Kit has put together some p5 v1 compatibility layers for p5 v2, one of which is for our beloved preload system! It gave me an idea so I refactored q5ās loading system again.
Now q5 retains full backwards compatibility with p5 v1ās preload system and automatically supports p5 v2ās promise based loading in async `setup`! See `usePromiseLoading` for more details.
Changelog summary:
q5ās preload system now uses `Promise.all` behind the scenes.
First time contributor Evana Pradhan added Google Fonts support to `loadFont`. See her demo!
`textWeight`, `doubleClicked`, `requestPointerLock`, `exitPointerLock`, `setOutputVolume`, and `sound.onended` implemented.
Refactored input handling using the Pointer Events API.
Deprecated and removed documentation for the use of callbacks in load* functions, since users can now use promise based `then` and `catch` functions.
After more extensive testing and improvements made to `createGraphics` in q5 WebGPU, I got it mostly working, but decided it's probably best for it to be disabled by default. See issue #104 for more info.
Deleted the q5-ai.js module since it's been superseded by AI integrated directly into Chromium's dev console and also several online code editors.
Added a friendly error system that simply shows users the line in their sketch file from which the error originates, since comprehending JS stack traces can be a point of friction for beginners.
Fixed `saveCanvas` in q5 WebGPU.
Added a new math function called `jit`.
Thatās all for now folks!