AnarchyEngine
3D Game Engine for Java & lua
Install / Use
/learn @orange451/AnarchyEngineREADME
Overview
Anarchy Engine is a java-based game engine. It's designed to aid in the creation of video games primarily with the intent to be multiplayer. It uses OpenGL for rendering and lua for high-level scripting. Games can be made with the editor or in your favoriate java-IDE directly.
For support, see: http://manta.games/
Required Libraries
- LWJGL3
- JOML (Can download with LWJGL)
- NanoVG (Can download with LWJGL)
- Assimp (Can download with LWJGL)
- STB (Can download with LWJGL)
- LWJGUI
- LibGDX+Bullet
- Kryonet
- JSON-Simple
- luaj (JSE)
Gradle setup
After clone, run
git submodule update --init
to initialize submodules.
Screenshots

Setup (Using Java directly)
- Ensure the proper libraries are downloaded, and include them in your projects build path. Include the source to this project as well, or export it to a library.
- Sample hello world:
package test;
import org.lwjgl.glfw.GLFW;
import engine.Game;
import engine.application.impl.ClientApplication;
import engine.lua.type.data.Color3;
import engine.lua.type.data.Vector3;
import engine.lua.type.object.insts.Camera;
import engine.lua.type.object.insts.GameObject;
import engine.lua.type.object.insts.Material;
import engine.lua.type.object.insts.Mesh;
import engine.lua.type.object.insts.PointLight;
import engine.lua.type.object.insts.Prefab;
public class HelloWorld extends ClientApplication {
@Override
public void loadScene(String[] args) {
// Set ambient
Game.lighting().setAmbient(Color3.newInstance(64, 64, 64));
// Make a sphere
Mesh mesh = Game.assets().newMesh();
mesh.teapot(1);
// Base material
Material material = Game.assets().newMaterial();
material.setRoughness(0.3f);
material.setMetalness(0.1f);
material.setReflective(0.1f);
material.setColor(Color3.red());
// Create prefab
Prefab p = Game.assets().newPrefab();
p.setName("Prefab0");
p.addModel(mesh, material);
// Create game object in the world with prefab
GameObject obj = new GameObject();
obj.setPrefab(p);
obj.setParent(Game.workspace());
// Add lights
{
int close = 8;
int r = 48;
int b = 10;
int xx = 8;
PointLight l1 = new PointLight();
l1.setPosition(-xx, close, xx);
l1.setRadius(r);
l1.setIntensity(b);
l1.setParent(Game.workspace());
PointLight l2 = new PointLight();
l2.setPosition(xx, close, xx);
l2.setRadius(r);
l2.setIntensity(b);
l2.setParent(Game.workspace());
PointLight l3 = new PointLight();
l3.setPosition(-xx, close, -xx);
l3.setRadius(r);
l3.setIntensity(b);
l3.setParent(Game.workspace());
PointLight l4 = new PointLight();
l4.setPosition(xx, close, -xx);
l4.setRadius(r);
l4.setIntensity(b);
l4.setParent(Game.workspace());
PointLight l5 = new PointLight();
l5.setPosition(xx, -close*2, -xx);
l5.setRadius(r);
l5.setIntensity(b/2);
l5.setParent(Game.workspace());
}
// Camera controller new
Game.runService().renderSteppedEvent().connect( (params) -> {
double delta = params[0].todouble();
final float CAMERA_DIST = 2;
final float CAMERA_PITCH = 0.25f;
// Get turn direction
int d = 0;
if ( Game.userInputService().isKeyDown(GLFW.GLFW_KEY_E) )
d++;
if ( Game.userInputService().isKeyDown(GLFW.GLFW_KEY_Q) )
d--;
// Get the camera
Camera camera = Game.workspace().getCurrentCamera();
// Compute new rotation
float yaw = camera.getYaw();
yaw += d * delta;
// Update the camera
camera.orbit( Vector3.zero(), CAMERA_DIST, yaw, CAMERA_PITCH );
});
}
public static void main(String[] args) {
launch(args);
}
}
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
