{"id":23076724,"url":"https://github.com/antzgames/gdx-ode4j-examples","last_synced_at":"2025-04-03T12:24:25.972Z","repository":{"id":181529514,"uuid":"666913178","full_name":"antzGames/gdx-ode4j-examples","owner":"antzGames","description":"Physics examples using gdx-ode4j library.","archived":false,"fork":false,"pushed_at":"2024-05-22T04:41:18.000Z","size":4083,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-09T01:44:51.667Z","etag":null,"topics":["java","libgdx","physics-3d","physics-engine","physics-simulation"],"latest_commit_sha":null,"homepage":"https://antzgames.itch.io/physics-in-a-browser","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antzGames.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-16T02:35:04.000Z","updated_at":"2024-09-14T21:41:01.000Z","dependencies_parsed_at":"2023-07-16T03:38:15.340Z","dependency_job_id":"a002a950-d7bb-4837-820b-b4459e31c106","html_url":"https://github.com/antzGames/gdx-ode4j-examples","commit_stats":{"total_commits":159,"total_committers":1,"mean_commits":159.0,"dds":0.0,"last_synced_commit":"b0f49dd0733d5da3b2abfbc2f7935bb836475b6f"},"previous_names":["antzgames/gdx-ode4j-examples"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2Fgdx-ode4j-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2Fgdx-ode4j-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2Fgdx-ode4j-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antzGames%2Fgdx-ode4j-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antzGames","download_url":"https://codeload.github.com/antzGames/gdx-ode4j-examples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246999582,"owners_count":20866929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","libgdx","physics-3d","physics-engine","physics-simulation"],"created_at":"2024-12-16T09:56:46.146Z","updated_at":"2025-04-03T12:24:25.952Z","avatar_url":"https://github.com/antzGames.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![image](https://github.com/antzGames/gdx-ode4j-examples/assets/10563814/8327cad7-de09-43b5-b9ae-01260ed5cbf2)\n# gdx-ode4j Examples\n\nSome examples and demos using my [gdx-ode4j](https://github.com/antzGames/gdx-ode4j) library.\n\n`gdx-ode4j` library is compatible with all libGDX backends, including GWT.\n\nYou can test these demos on your browser on [itch.io](https://antzgames.itch.io/physics-in-a-browser).\n\n`gdx-ode4j` is based on version 0.4.2 of [Open Dynamics Engine for Java](https://github.com/tzaeschke/ode4j).\n\nhttps://github.com/antzGames/gdx-ode4j/assets/10563814/bc46a9a9-f2e8-414b-bfde-8be6ea54e46b\n\nIf you want to use ode4j only on libGDX Desktop/Android/iOS backends then I recommend you use [odej4](https://github.com/tzaeschke/ode4j) directly.  \nHowever if you want cross platform support (i.e include GWT support) then you need to use my [gdx-ode4j](https://github.com/antzGames/gdx-ode4j) library.\n\nCurrently this is the only 3D physics engine option for GWT on libGDX.  \n\nFully tested on libGDX v1.12.0 and tested using WebGL2 support for GWT.\n\n## Demos\n\nYou can test the demos on your browser [here](https://antzgames.itch.io/physics-in-a-browser).\n\n```F1``` key will cycle to the next demo.  On the last demo will need you to press F2 to return you to first demo.\n\nDescription of included demos:\n\n* `Demo Collision` - the standard physics collision test with 1000 boxes.\n* `Dynamic Character` - [JamesTKhan's libGDX jBullet tutorial example](https://www.youtube.com/watch?v=O0Deshj2-KU), but using odej4 library. (Picture below)\n* `DemoCrash` - destroy a wall of cubes with a cannon, port from ODE4J demos.\n* `DemoRagdoll` - Rigid bodies and joints that you can apply to a humanoid character, to simulate behaviour such as impact collisions\n and character death, port from ODE4J demos.\n* `OdeBulletTest` - the teaVM Bullet demo converted to ODE4J. \n\nThe demos have been tested on GWT, Desktop and Android.\n\n![odeGif](https://user-images.githubusercontent.com/10563814/235331595-2bffb58e-b429-44d8-b7fb-d3e5d89c0bca.gif)\n\n## Gotchas while porting ODE4J demos\n\nFYI, the original ode4j demos have Z UP which is a pain.  \n\nDuring demo migration I either rotated the camera `camera.up.set(Vector.Z)` or\nreconfigured the simulation (gravity, positions, rotations) to have Y UP.  Both worked but eventually its best to implement the second option.\n\nIn addition, libGDX primitive 3D shapes are created on the Y-axis orientation, and ode4j is on the z-axis.  \nYou need to be careful that your physics objects and libGDX render objects have the same orientation.\n\n## Where to get ODE/ode4j documentation and help\n\nODE official manual: http://ode.org/wiki/index.php/Manual\n\nBy far the most useful part is the [HOWTO](http://ode.org/wiki/index.php/HOWTO) section\n\node4j discord channel : https://discord.gg/UFXJcXv2P8 ode4j/Java\n\node4j contains also some features that are not present in ODE, such as a ragdoll and heightfields with holes. See ode4j's [Wiki](https://github.com/tzaeschke/ode4j/wiki/Functionality-beyond-ODE).\n\nThe [ODE forum](https://groups.google.com/forum/#!forum/ode-users) is useful for questions around physics and general API usage.\n\nThe [ode4j forum](https://groups.google.com/forum/?hl=en#!forum/ode4j) is for problems and functionality specific to ode4j/Java.\n\nThere is also the [old website](https://tzaeschke.github.io/ode4j-old/), including some [screenshots](https://tzaeschke.github.io/ode4j-old/ode4j-features.html).\n\nHere is a [Youtube video](https://www.youtube.com/watch?v=ENlpu_Jjp3Q) of a list of games that used ODE from 2002-2015.  You will be suprised how many of your favorite games used this physcis libary.\n\n\n## Repo structure\n\nA [libGDX](https://libgdx.com/) project generated with [gdx-liftoff](https://github.com/tommyettinger/gdx-liftoff).\n\nUse IntelliJ or Android Studio as your IDE for minimal issues building.  You may have to your tweak the gradle version/plugin.  I used Gradle Version 7.6 and Android Gradle Plugin Version 7.0.4\n\nThis project was generated with a template including simple application launchers and a main class extending `Game` that sets the first screen.\n\nMy modified ode4j v0.4.1 [source code](https://github.com/antzGames/ode4j-GWT-Compatible-libGDX/tree/master/core/src/main/java/org/ode4j) is included in this repo.  Currently no work has been done to make and publish this as a library.  Still too experiemental for that.  Once I have used this in a few game JAMS, I might make a library out of it.\n\n### Platforms\n\n- `core`: Main module with the application logic shared by all platforms.\n- `lwjgl3`: Primary desktop platform using LWJGL3.\n- `android`: Android mobile platform. Needs Android SDK.\n- `html`: Web platform using GWT and WebGL. Supports only Java projects.\n\nThis project uses [Gradle](http://gradle.org/) to manage dependencies.\nThe Gradle wrapper was included, so you can run Gradle tasks using `gradlew.bat` or `./gradlew` commands.\nUseful Gradle tasks and flags:\n\n- `android:lint`: performs Android project validation.\n- `build`: builds sources and archives of every project.\n- `cleanEclipse`: removes Eclipse project data.\n- `cleanIdea`: removes IntelliJ project data.\n- `clean`: removes `build` folders, which store compiled classes and built archives.\n- `eclipse`: generates Eclipse project data.\n- `html:dist`: compiles GWT sources. The compiled application can be found at `html/build/dist`: you can use any HTTP server to deploy it.\n- `html:superDev`: compiles GWT sources and runs the application in SuperDev mode. It will be available at [localhost:8080/html](http://localhost:8080/html). Use only during development.\n- `idea`: generates IntelliJ project data.\n- `lwjgl3:jar`: builds application's runnable jar, which can be found at `lwjgl3/build/libs`.\n- `lwjgl3:run`: starts the application.\n- `test`: runs unit tests (if any).\n\n## ODE, ode4j and other Licenses\n\n### Licensing \u0026 Copyright for ODE and ode4j\n\nThis library is under copyright by Tilmann Zäschke (Java port), Russell L. Smith (copyright holder of the original ODE code), Francisco Leon (copyright holder of the original GIMPACT code) and Daniel Fiser (copyright holder of the original libccd).\n\nThis library is free software; you can redistribute it and/or modify it under the terms of EITHER:\n(1) The GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The text of the GNU Lesser General Public License is included with this library in the file LICENSE.TXT.\n(2) The BSD-style license that is included with this library in the files ODE-LICENSE-BSD.TXT and ODE4j-LICENSE-BSD.TXT.\n\nThis library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files LICENSE.TXT, ODE-LICENSE-BSD.TXT, GIMPACT-LICENSE-BSD.TXT, GIMPACT-LICENSE-LGPL.TXT, ODE4J-LICENSE-BSD.TXT and LIBCCD_BSD-LICENSE for more details.\n\nThe LICENSE.TXT, ODE-LICENSE-BSD.TXT, GIMPACT-LICENSE-BSD.TXT, GIMPACT-LICENSE-LGPL.TXT, LIBCCD_BSD-LICENSE and ODE4J-LICENSE-BSD.TXT files are available in the source code.\n\n## Legal\n\node4j:\nCopyright (c) 2009-2017 Tilmann Zäschke ode4j@gmx.de.\nAll rights reserved.\n\nLike the original ODE, ode4j is licensed under LGPL v2.1 and BSD 3-clause. Choose whichever license suits your needs. \n\n### ode4j contains Java ports of the following software\n\n[ODE/OpenDE](http://www.ode.org/):\nCopyright  (c) 2001,2002 Russell L. Smith\nAll rights reserved.\n\nGIMPACT (part of ODE/OpenDE):\nCopyright of GIMPACT (c) 2006 Francisco Leon. C.C. 80087371.\nemail: projectileman(AT)yahoo.com\n\n[LIBCCD](https://github.com/danfis/libccd):\nCopyright (c) 2010 Daniel Fiser \u003cdanfis(AT)danfis.cz\u003e;\n3-clause BSD License\n\n[Turbulenz Engine](https://github.com/turbulenz/turbulenz_engine):\nCopyright (c) 2009-2014 Turbulenz Limited; MIT License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantzgames%2Fgdx-ode4j-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantzgames%2Fgdx-ode4j-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantzgames%2Fgdx-ode4j-examples/lists"}