# jmm **Repository Path**: dwing/jmm ## Basic Information - **Project Name**: jmm - **Description**: Java Multi-Media Demo - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-18 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # joe ## Goal - ~5000 lines of Java code for micro game engine - base on *Java 23*, *lwjgl 3*, *miniaudio* - stable and extendable framework with efficient implement - no editor plan now ## Progress - [x] engine core (Engine) - [x] unsafe utils (UnsafeUtil) - [x] basic types (Vec4,Mat4) - [x] off-heap memory manager (Cleaner,MemBuf,MemPool) - [ ] 2d/3d space math algorithm (MathUtil) - [x] scene nodes (SceneNode) - [x] camera node (SceneCamera) - [x] model node (SceneModel) - [x] resource manager (ResourceManager) - [x] async loading - [x] resource interface (Resource) - [x] common file resource (ResourceMapFile) - [x] texture resource (ResourceTexture) (via lwjgl.stb) - [ ] mesh resource (ResourceMesh) - [ ] audio resource (ResourceAudio) - [x] font manager (Font) (via lwjgl.stb) - [x] render interface (Render) - [x] OpenGL ES 3 implement (RenderGles3) (via lwjgl.opengles) - [x] audio interface (Audio) - [x] miniaudio implement (AudioMini) (via miniaudio) - [x] input interface (Input) - [x] glfw implement (InputGlfw) (via lwjgl.glfw) ## Build ``` set JAVA_OPTS=%JAVA_OPTS% -Duser.language=en gradlew.bat build copyJar ``` ## Run ``` java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI --enable-native-access=ALL-UNNAMED --add-opens java.base/jdk.internal.misc=ALL-UNNAMED -cp lwjgl\lib\*;lwjgl\build\libs\* JoeDemo ``` ## Other resources and tools - res/LXGWWenKaiGB-Regular.ttf - https://github.com/lxgw/LxgwWenkaiGB/releases - tool/opaenc.exe - miniaudio/opaenc.cpp - tool/bc7enc.exe: BPTC(BC7) texture compressor for desktop platform - https://github.com/richgel999/bc7enc_rdo - tool/astcenc.exe: ASTC texture compressor for mobile platform - https://github.com/ARM-software/astc-encoder - tool/avifenc.exe,avifdec.exe: lossy image compressor and decompressor - https://aomediacodec.github.io/av1-avif/ - https://github.com/AOMediaCodec/libavif.git - tool/glewinfo.exe: OpenGL extension infomation - https://glew.sourceforge.net/ - https://github.com/nigels-com/glew ## Building tools and libraries - IntelliJ IDEA Community Edition - https://www.jetbrains.com/idea/download/ - Visual Studio Community - https://visualstudio.microsoft.com/vs/community/ - Meson - Build system (include ninja) - https://mesonbuild.com/ - NASM - Netwide Assembler - https://www.nasm.us/ - LWJGL - Lightweight Java Game Library - https://www.lwjgl.org/ - https://github.com/LWJGL/lwjgl3 - stb - single-file libraries for C/C++ - https://github.com/nothings/stb - miniaudio - An audio playback and capture library for C and C++. - https://miniaud.io/ - https://github.com/mackron/miniaudio.git - Opus - Interactive Audio Codec - https://www.opus-codec.org/ - https://gitlab.xiph.org/xiph/opus