Basic4GL for Java - BASIC language compiler and IDE
This repository contains the Java port of Basic4GL, a BASIC programming language that features OpenGL functionality.
Basic4GLj features Windows and Mac OS support, requiring Java 17, and uses LWJGL to provide support for OpenGL functions.
Basic4GLj is licensed under a New BSD license - please see the LICENSES folder for more details and licenses for third-party libraries used.
Check out the Releases Page of this repo for the latest build.
Check out the wiki of this repo for the Basic4GL language guide, sprite library guide for 2D game programming, and additional tutorials.
(more documentation coming soon!)
A /samples
folder with example programs is included with each release that can be run by opening the .gb
file in the Basic4GL editor and clicking the Play button.
Sample programs can also be found here in the repo: https://github.com/NateIsStalling/Basic4GLj/tree/main/app/src/main/dist/samples/Programs
This project requires Java 17 and uses Gradle for its builds.
./gradlew :app:build
build artifacts can be found in /app/build/distributions
To debug the app IDE project along with its dependencies, use the following gradle task:
./gradlew :app:debugAll
The application depends on the JAR output of its "library" and "debugServer" modules - the :app:debugAll
task should generate these dependencies
Sound Guide tutorial is available on the project's wiki.
The following file formats are currently supported for playing sound effects using the loadsound
and playsound
functions:
File Extension | Codec |
---|---|
wav | CodecWav |
ogg | CodecJOrbis |
xm | CodecIBXM |
s3m | CodecIBXM |
mod | CodecIBXM |
Ogg Vorbis files are supported for playing music continuously using the playmusic
function.
Basic4GLj depends on a fork of Paulscode-SoundSystem to support sound codecs for LWJGL 3 which can be found here:
https://github.com/NateIsStalling/Paulscode-SoundSystem/tree/lwjgl3
Licenses for Paulscode-SoundSystem and related sound Codecs can be found in Basic4GLj's app module dist
directory or in release packages under /LICENSES/sound system
Basic4GL was originally developed for Windows with OpenGL 1.1, which is considered a legacy version of OpenGL and may not be fully supported by modern systems.
This Java port of Basic4GL attempts to support all functions provided by the original Windows version, but some functions have not been ported yet and some may not be possible with Basic4GLj's current OpenGL implementation
Additionally, recent work on Basic4GLj (as of 2022!) has been done on a Mac with Intel - I can't guarantee everything works as expected on Windows, and support for Apple Silicon based Macs is experimental.
Please report any compatibility or stability issues to the Issues page of this project.
Additional compatibility notes can be found on the project's wiki: https://github.com/NateIsStalling/Basic4GLj/wiki/Compatibility-Notes
Source of the original Basic4GL can be found here: