jrenner/obfuscate( on reddit ) released his in development 3D engine, GDX-Proto earlier today. In his own words:
GDX-Proto is a lightweight 3d engine built with two main objectives:
- Provide an open source codebase showing how to do many basic and essential things for 3d games with libgdx, a cross-platform Java game framework.
- Provide a simple, extensible 3d engine that takes care of lower-level things such as physics and networking.
While the current version is implemented as a First Person Shooter (FPS) demo, the code is highly adaptable for other uses, without too much work.
Overview of Features
Graphics
- Basic 3d rendering using a slightly modified version of the default libgdx 3d shader. It takes advantage of the new libgdx 3D API.
- 3D Particle system based on the new libgdx 3d particle system (version 1.2.1+, not included in 1.2.0)
Physics
- The Bullet physics library is used for collision detection, but not for collision resolution. This allows for fast and efficient collision detection without the performance penalties of a fully simulated bullet world. A default collision resolution system is included in the Physics class, but it can be modifided to suit your needs.
- Raycasting for projectile hit detection
Networking
- Supports local or online play
- KryoNet based
- Mix of TCP and UDP where appropriate
- Entity interpolation
- Client prediction (for movement only, not yet implemented for projectiles)
- Simple chat system
- Supports libgdx headless backend for creating a headless server, such as on a VPS
- Server transmits level geometry to client upon connection
- "The server is the man": Most logic is run server-side to prevent cheats or hacking.
Other
- Basic Entity system with DynamicEntities, represented by either Decals (Billboard sprites) or 3D models
- Movement component class handles acceleration, velocity, position, rotation, max speeds
- Subclasses of Movement: GroundMovement and FlyingMovement
- Optional logging to file, see Log class
Right now it’s pretty early on. It’s not actually a library as of yet, but instead a single project with a sample FPS. In the future I believe it will be refactored into a more traditional library. Right now though, it does provide a solid foundation for building a 3D game on top of LibGDX. Right now, LibGDX provides only a relatively low level 3D layer and this project builds on top of it.
Getting started is extremely simple. First clone the git:
git clone https://github.com/jrenner/gdx-proto.git
Then run the project:
gradlew desktop:run
You can navigate around using standard WASD keys. For the Gradle averse that want to type the demo out, you can download a playable jar here. The entire project is available on Github here.