The content, at pet.triquence.org, is a bit
much for a single J-term course. We did not cover everything. A regular semester might be a better
container.
Scope
Here's the pattern followed in the J-term course:
- Worked through most of the 1D assignments. Made the Gui Controls
and the Hollow Cars and Demos assignments optional.
- Presented the Vector Class Module and the 2D Framework, but made the assignments
optional.
This makes a good
weekend (or two or three) challenge for those students that have coding experience.
- Presented the Multiplayer Demo (networking) assignment. This
makes a very nice in-class demo where multiple students (with laptops)
can connect their clients to the server which is rendering to a large
projection screen in the room. But again, the development of the
client/server files is a good overload assignment for students looking
for more. However, this can be taken as a result and used by those that want
multiplayer functionality in their game.
- Then it was back to required assignments where the students learned
techniques for embellishing their moving pucks to make them playable:
rotating turrets, firing bullets (and the associated impulse forces),
visual indicators of health, etc. All the assignments between the
2D Framework and the Perfect Kiss were required.
- At this point, they started working on projects while I presented the
material on Pybox2d. There are no required assignments here. A few
students used this in the end for their projects, but most used our
own 2D Framework.
Revisions
- March, 2025
- Most of the demos now have variations that can be stepped through (and started) using the left and
right arrow keys. Restart demos (or the current variation) using the corresponding
number key of the demo.
- New demos and variations on the A16c (Box2D engine) script
- Demo #5: pinned-pucks in contact on a regular polygon. The old #5 has
been displace to be a variant of #6.
- Demos #2 and #3: pucks pulled into contact with springs, an illustration of
conservation of angular momentum. Posted video "The Story."
- Demos #4: this enlists the new "Wall" class to make a better
multi-puck-under-gravity demonstration (not quite an hour glass).
- New demos #7 and #8 and their variations are on the final scripts, A15a, A15c, and A16c.
These involve throwing the Jello grid and target practice by the drones.
- February, 2025
- Refactored the final three scripts, A15a (circular engine), A15c (circular-perfectKiss engine), and A16c (Box2D engine).
Created modules for shared functionality.
- January, 2025
- Updated the scripts to Python 3.
- Developed a Python 3 network module to replace PoxSixNet.
- Added autonomous drones to Puck Popper, better for solo play.
- Added zoom-at-cursor and zoom reset.
- Provided installation instructions for running scripts in a Conda environment.
- June, 2019
- May, 2019
- Added a second video on the reversibility of the
Perfect Kiss algorithm.
- Code changes for demonstrating the reversibility of Perfect
Kiss:
- Refined the game loop to give the option to limit (clamp)
the game loop FPS and set a corresponding fixed timestep for the
physics engine calculations. "Shift-p" toggles in and out of
fixed-timestep mode. The current FPS is used as the clamping
limit and the associated fixed timestep. The clamped FPS is
shown in parenthesis.
- The "e" key sets all pucks to have elastic collisions.
- The "z" key (as before) enables the perfect-kiss algorithm.
Now it also sets all collisions to be elastic and displays a
collision counter in the upper left corner.
- The "r" key reverses the velocity of all pucks. "Shift-r"
reverses the direction of time steps.
- The "t" key starts and stops a general timer.
- November, 2016
- Started translating the final assignment (A16c_2D_B2D_serverN)
into JavaScript for running in a web browser using the HTML5 Canvas.
See main page at
triquence.org.
- January, 2016
- Added the Raspberry Pi 2 page.
Script revisions are discussed at the end of the RPi page.
- October, 2015
- Added the pure-Python
physics engine (a.k.a. string rendering; a.k.a. the one-pager).
- Added this revision-history page.
- August, 2014
- July, 2013
- June, 2013
- Added conceptual drawings for the content in the PDFs.
- Improved the documentation for the 2D framework and
multiplayer-networking code.