https://github.com/pascalcorpsman/fpc_cyclone-physics
The Physics engine that accompanies the book "Game Physics Engine Design" rewritten in FreePascal
https://github.com/pascalcorpsman/fpc_cyclone-physics
3d cyclone freepascal lazarus library physics-3d physics-engine
Last synced: 13 days ago
JSON representation
The Physics engine that accompanies the book "Game Physics Engine Design" rewritten in FreePascal
- Host: GitHub
- URL: https://github.com/pascalcorpsman/fpc_cyclone-physics
- Owner: PascalCorpsman
- License: other
- Created: 2025-05-23T11:48:48.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-11-04T14:33:25.000Z (3 months ago)
- Last Synced: 2025-11-04T16:09:19.572Z (3 months ago)
- Topics: 3d, cyclone, freepascal, lazarus, library, physics-3d, physics-engine
- Language: Pascal
- Homepage:
- Size: 347 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: license.md
Awesome Lists containing this project
README
# FPC cyclone-physics
>
> As i got stuck in writing my own 3D physics engine [CorP3D](https://github.com/PascalCorpsman/CorP3D) i decided to "recode" a existing one in order to learn enough to finish CorP3D.
>
FPC cyclone-physics is a 3D physics game engine. It is developed in the book [Game Physics Engine Development, second edition](https://www.amazon.de/-/en/Game-Physics-Engine-Development-Commercial-Grade/dp/0123819768).
Ian Millington starts from scratch in his book, and so do i here in this repository. The plan is to read trough the book and implement step by step the whole engine in FreePascal (aka crossporting the C++ code given in the book).
Goal is to have at the end a fully working 3D physics library (the same as in the book) and also port the [Demos](src/Demos).
There are eleven demo's available in total. The first seven demos are part of the particle engine and the last four for the rigid body physics.
| Number | Page in Book | Name
| --- | --- | ---
| 001 | 63 | [ballistic](src/Demos/001_ballistic)
| 002 | 66 | [fireworks](src/Demos/002_fireworks)
| 003 | 151 | [bridge](src/Demos/003_bridge)
| 004 | 152 | [platform](src/Demos/004_platform)
| 005 | 153 | [blob](src/Demos/005_blob)
| 006 | 241 | [flightsim](src/Demos/006_flightsim)
| 007 | 247 | [sailboat](src/Demos/007_sailboat)
| 008 | 65 | [bigballistic](src/Demos/008_bigballistic)
| 009 | 441 | [ragdoll](src/Demos/009_ragdoll)
| 010 | 446 | [fracture](src/Demos/010_fracture)
| 011 | 457 | [explosion](src/Demos/011_explosion)
The orig source from the book is hosted [here](https://github.com/idmillington/cyclone-physics).
### What is needed to compile and run the code ?
1. clone this repository
Now you have everything to compile the engine.
### What is needed to compile and run the demos ?
1. install LazOpenGLControl into the Lazarus IDE
2. download [dglOpenGL.pas](https://github.com/SaschaWillems/dglOpenGL/blob/master/dglOpenGL.pas)
3. download [uvectormath.pas](https://github.com/PascalCorpsman/Examples/blob/master/data_control/uvectormath.pas)
4. download [uopengl_ascii_font.pas](https://github.com/PascalCorpsman/Examples/blob/master/OpenGL/uopengl_ascii_font.pas)
5. download [uopengl_ascii_font.ressource](https://github.com/PascalCorpsman/Examples/blob/master/OpenGL/uopengl_ascii_font.ressource)
6. download [uopengl_font_common.pas](https://github.com/PascalCorpsman/Examples/blob/master/OpenGL/uopengl_font_common.pas)
### Progress
- 2025.05.23: created repository, readme.md and license.md
- 2025.05.25: demo 001 ballistic
- 2025.05.26: demo 002 fireworks
- 2025.10.26: demo 009 ragdoll
- 2025.10.30: demo 011 explosion
- 2025.10.31: demo 003 bridge
- 2025.11.01: demo 004 platform
- 2025.11.02: demo 005 blob
- 2025.11.03: demo 006 flightsim
- 2025.11.04: demo 007 sailboat
- 2025.11.05: demo 008 bigballistic
- 2025.11.06: demo 010 fracture