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
- April, 2025
- Refactored the A10-A14 scripts (modules pattern is similar to that used in A15a, A15c, and A16c).
The new scripts have _m_ in their name and are more incremental, better for highlighting features as they are added.
- The A15_pool_shots.py module offers two pool-shot setup functions: pool_line_of_balls and pool_trick_shot.
These are used by both the A10-A14 and A15a-A15c-A16c script groups. The line-of-balls demo is useful for
demonstrating reversibility with the perfect-kiss engine.
- March, 2025
- Demos in the A15a, A15c, and A16c scripts may now have variations that can be stepped through (and started) using the left and
right arrow keys. Restart demos (or the selected variation) using the corresponding
number key of the demo.
- New demos and variations on the A16c (Box2D engine) script
- Demos #2 and #3: pucks pulled into contact with springs, an illustration of
conservation of angular momentum.
- Demo #4: this enlists the new "Wall" class to make a better
multi-puck-under-gravity demonstration (not quite an hour glass).
- Demo #5: pinned-pucks in contact on a regular polygon. The old #5 has
been displace to be a variant of #6.
- Demo #0: three variations added: pyramid target, line of pucks, and a circle of pucks.
- New demos #8 and #9, and their variations, are on the final scripts (A15a, A15c, and A16c).
These involve throwing the Jello grid and target practice by the drones.
- Video: The Story
- Video: Box2D and the Air-Table
- Video: The Jello
- Video: Puck Popper
- Video: Odds and Evens
- 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.