Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
155 commits
Select commit Hold shift + click to select a range
3816717
Refactor Gradle build script to streamline classpath configuration an…
dwursteisen Jul 9, 2025
b76bf5b
Update asciidoctorj to 4.0.4 in Gradle dependencies
dwursteisen Jul 13, 2025
f35b05d
set the name of `drawMode` LibFunction for enhanced stencil drawing c…
dwursteisen Jul 13, 2025
ef4d7ca
Bug fix in the math.rnd function.
dwursteisen Jul 13, 2025
5739449
Fix ObjectPool initialized with too many elements
dwursteisen Jul 13, 2025
16f1fc8
lintfix
dwursteisen Jul 13, 2025
3d9c857
Update the project to *really* use OpenGL 3.3.
dwursteisen Jul 14, 2025
840e8e7
Set the server url as clickable
dwursteisen Jul 15, 2025
910d820
Fix migration to OpenGL 3.3
dwursteisen Jul 15, 2025
1eb9ecc
WiP KGL
dwursteisen Jul 15, 2025
e102deb
refactor: simplify wire.lua library API and usage
dwursteisen Jul 17, 2025
2c49c90
Minor documentation improvement
dwursteisen Jul 19, 2025
a07b330
Small doc improvement
dwursteisen Jul 19, 2025
b0fa968
rollback kgl version
dwursteisen Jul 19, 2025
d27d544
lintfix
dwursteisen Jul 19, 2025
abd8758
lintfix
dwursteisen Jul 19, 2025
84a070a
update the "tiny" lua lib (TinyLib.kt): it will expose parameters of …
dwursteisen Jul 19, 2025
6ce57d3
Rename lua files regarding their purpose
dwursteisen Jul 20, 2025
573994a
Set the size of the SfxMatrix
dwursteisen Jul 20, 2025
d1dfb1c
PoC of a reference palette created with index
dwursteisen Jul 20, 2025
1aeb67c
Fix game directory argument not treated correctly all the time. The d…
dwursteisen Jul 20, 2025
4d6e94a
Add active index support in the SfxMatrix
dwursteisen Jul 20, 2025
9c59139
Extract the SfxMatrix to MatrixSelector.lua
dwursteisen Jul 20, 2025
2870c7c
Extract the ModeSwitch.lua
dwursteisen Jul 22, 2025
27c1918
Bugfix to the ModeSwitch.lua
dwursteisen Jul 22, 2025
19d2f5c
Extract Envelop.lua
dwursteisen Jul 23, 2025
64fd4c8
Extract Checkbox.lua, Fader.lua and Knob.lua
dwursteisen Jul 23, 2025
fa561c4
Extract other widgets
dwursteisen Jul 23, 2025
3400098
Fix wire lib
dwursteisen Jul 24, 2025
b4524d4
Start of a refactoring of the instrument-editor.lua file.
dwursteisen Jul 27, 2025
2f63423
Fix error message giving wrong error location in lua script
dwursteisen Aug 4, 2025
f3b9abc
Rework the instrument-editor.lua to use a new style. (more warm)
dwursteisen Aug 4, 2025
7cbcfee
New design for the Envelop.lua
dwursteisen Aug 5, 2025
8acf3b9
Fix Keyboard.lua and MatrixSelector.lua
dwursteisen Aug 5, 2025
0431bbf
Fix Knob labels
dwursteisen Aug 5, 2025
004d09c
Lintfix
dwursteisen Aug 5, 2025
438232b
Fix wave selector binding
dwursteisen Aug 7, 2025
8b60c76
Cache WrapperLuaTable in SfxLib.kt
dwursteisen Aug 7, 2025
1c52ef7
Small improvement in mouse management with Lwjgl.
dwursteisen Aug 7, 2025
6cf978a
CLAUDE.md update.
dwursteisen Aug 7, 2025
a06d080
PoC of performance monitor to track memory usage and slow FPS
dwursteisen Aug 10, 2025
62f5165
Code cleanup
dwursteisen Aug 12, 2025
12a2e51
Update IntelliJ files
dwursteisen Aug 12, 2025
154d67c
Display profiler result.
dwursteisen Aug 12, 2025
d093ab7
Improve profiler data with number of draws
dwursteisen Aug 14, 2025
971a250
SpriteBatch manage primitive spritesheet
dwursteisen Aug 16, 2025
010e58c
Return reject reason in SpriteBatch.kt to know if the batches need to…
dwursteisen Aug 16, 2025
476c185
Add unit test
dwursteisen Aug 16, 2025
ffb084d
Start refactoring the GameEngine.kt by splitting it into smaller blocks
dwursteisen Aug 17, 2025
cf41da8
Start refactoring of the GameEngine.kt
dwursteisen Aug 17, 2025
1e236d9
Move the SoundManager to be accessible only from the engine.
dwursteisen Aug 17, 2025
d1ac591
Introduce VirtualFrameBuffer.kt
dwursteisen Aug 17, 2025
b10241e
Start to use the DefaultVirtualFrameBuffer.kt instead of render.
dwursteisen Aug 21, 2025
e6d7b68
Bind texture into OpenGL
dwursteisen Aug 23, 2025
fd5b87e
Fix resource loading stuck because of a multithreading issue.
dwursteisen Aug 23, 2025
cd1f497
Fix configurating the SpriteBatchStage.kt
dwursteisen Aug 24, 2025
42fb35b
Fix shaders pipeline
dwursteisen Aug 28, 2025
898e7c3
move stages to avoid passing by the platform
dwursteisen Aug 28, 2025
b2535f2
Start to fix the FrameBufferStage.kt
dwursteisen Aug 29, 2025
a93cd10
Start to debug the SpriteBatchStage.kt
dwursteisen Aug 29, 2025
4541284
Rendering starting to work again.
dwursteisen Aug 30, 2025
2b338e8
Fix apply/bind issue: the bind was not blinding correctly every param…
dwursteisen Aug 30, 2025
fdab30c
Fix the vertex shader in the SpriteBatchStage.kt
dwursteisen Aug 30, 2025
4ab247a
Fix the fragment shader in the SpriteBatchStage.kt
dwursteisen Aug 30, 2025
385daae
Fix script reload issue
dwursteisen Aug 30, 2025
835d640
Ignore test that needs rendering, for now.
dwursteisen Aug 30, 2025
9314d7e
Rework the shader parameter (hint: I broke everything)
dwursteisen Aug 30, 2025
1ed8534
Fix full pipeline.
dwursteisen Aug 30, 2025
8be1e17
Test of OpenGL in headless for testing.
dwursteisen Aug 31, 2025
1e28b1e
Restore the SpriteBatchStage.kt shader. (still missing camera + dithe…
dwursteisen Aug 31, 2025
5254bd9
Remove useless TODO and trying to debug the primitive framebuffer
dwursteisen Aug 31, 2025
b8d4e11
Primitive rendering is working again.
dwursteisen Aug 31, 2025
816617a
Fix loading resources (was stuck in the _boot.lua file as the same sc…
dwursteisen Aug 31, 2025
9da64a3
Remove TODO in MapLib.kt
dwursteisen Aug 31, 2025
2798082
Use more classic batch approach for displaying sprites.
dwursteisen Sep 3, 2025
d0a5ecd
Use monocolor to render text on screen.
dwursteisen Sep 4, 2025
64f6d2e
Lintfix
dwursteisen Sep 4, 2025
81b6379
clear command
dwursteisen Sep 4, 2025
969e28e
Fix wrong label on the envelope
dwursteisen Sep 4, 2025
9f853f7
Refactor the sprite batch system to prepare the support of primitives
dwursteisen Sep 5, 2025
8bf77c6
Move the OpenGL framebuffer into the DefaultVirtualFrameBuffer.kt
dwursteisen Sep 6, 2025
f3785b6
Start to use the new PrimitiveBatchStage.kt to render primitive
dwursteisen Sep 7, 2025
c4c75ea
Fix the rendering pipeline so a basic PrimitiveBatchStage.kt is displ…
dwursteisen Sep 7, 2025
290cf23
PoC of rendering line using SDF technique
dwursteisen Sep 7, 2025
9c1f71e
First version of rendering line using SDF technique.
dwursteisen Sep 7, 2025
7537345
PoC of circle using SDF
dwursteisen Sep 7, 2025
398d11c
Rework a bit circle using SDF
dwursteisen Sep 8, 2025
ed2cd00
Small code cleanup
dwursteisen Sep 8, 2025
6163797
Make the keyboard working again in the instrument editor
dwursteisen Sep 9, 2025
21649c8
Fix primitive line (the fix is not complete yet)
dwursteisen Sep 10, 2025
064d949
Refactor the parameters of PrimitiveBatch.kt
dwursteisen Sep 10, 2025
8e9bd33
Support of gfx.pset
dwursteisen Sep 10, 2025
c15e06d
Performance issue bugfix
dwursteisen Sep 10, 2025
921edf6
Improvement on the SDF line.
dwursteisen Sep 10, 2025
87d5791
Almost perfect SDF line.
dwursteisen Sep 10, 2025
d664ee2
Add SDF circle.
dwursteisen Sep 10, 2025
4464d2f
Fix sdf triangle
dwursteisen Sep 11, 2025
0e2c39e
Primitive batch optimisation
dwursteisen Sep 11, 2025
69752f3
Support of dithering on the primitives
dwursteisen Sep 11, 2025
ab89038
Support of dithering on the sprites
dwursteisen Sep 11, 2025
608791a
Support of the depth buffer
dwursteisen Sep 12, 2025
727ab2c
Drop the support for the shape oval.
dwursteisen Sep 12, 2025
90f83d5
Add comments
dwursteisen Sep 12, 2025
00bc9f1
Fix SDF line (to fix SDF triangle!)
dwursteisen Sep 13, 2025
05ae98f
Start refactoring the sound part.
dwursteisen Sep 14, 2025
4165138
Tracking keyboard changes
dwursteisen Sep 15, 2025
f6fe636
PoC of generating sound on the fly
dwursteisen Sep 15, 2025
447819a
Introducing the concept of noteOn / noteOff
dwursteisen Sep 17, 2025
271b6e9
Add Harmonizer.kt
dwursteisen Sep 18, 2025
9349e26
Add Oscillator.kt
dwursteisen Sep 18, 2025
b1b6473
Start to plug every components together
dwursteisen Sep 18, 2025
125a4b2
Take in account parameters change of the instrument
dwursteisen Sep 18, 2025
907d0dd
Allow type customization for the lua stub
dwursteisen Sep 18, 2025
97617f2
Small bugfix: isTouching returning coordinates with short touch.
dwursteisen Sep 19, 2025
237bd83
Fix audio playing in realtime
dwursteisen Sep 20, 2025
580019f
Play sound when updating a harmonic knob or envelop knob.
dwursteisen Sep 21, 2025
afdf579
Fix instrument-editor.lua
dwursteisen Sep 21, 2025
cf93c1e
Fix shader not working with webgl
dwursteisen Sep 21, 2025
b1df1df
Prepare to use AudioWorkletNode for the generation of the sound
dwursteisen Sep 22, 2025
523cbed
PoC of sound in real time in Javascript
dwursteisen Sep 22, 2025
d1372ea
Enable button to switch to the SFX editor
dwursteisen Sep 22, 2025
e61915d
Rework the Velocity Editor
dwursteisen Sep 24, 2025
ee23075
PoC of SFX editor widget
dwursteisen Sep 24, 2025
b2bef3c
Fix issue with the SFX editor
dwursteisen Sep 26, 2025
b849aeb
Fix issue with the SFX editor (volume)
dwursteisen Sep 26, 2025
45925d2
Fix issue with bad files blocking the game when reloading
dwursteisen Sep 28, 2025
6086884
Fix display of sfx widget
dwursteisen Sep 28, 2025
d38ac46
Introduce back the cursor in the sfx editor
dwursteisen Sep 30, 2025
af559d5
Play SFX in the SFX editor
dwursteisen Sep 30, 2025
b199561
Choose instrument in the SFX editor
dwursteisen Sep 30, 2025
77564ab
Setup the BMP
dwursteisen Oct 1, 2025
e9898ab
Fix issue when an error occur in the _init function
dwursteisen Oct 1, 2025
a57eb6f
- Adjust the sfx editor to start to another octave.
dwursteisen Oct 1, 2025
9e24d19
Sfx selector
dwursteisen Oct 1, 2025
bbc9586
Bump kgl to 0.8.5
dwursteisen Oct 1, 2025
b5c6fee
Rework the workspace lib into FloppyLib.kt to persist user data
dwursteisen Oct 3, 2025
83eb7d4
Add tests to FloppyLib.kt
dwursteisen Oct 4, 2025
7d94fb5
Bug fix and prepare to save/export for the sfx editor
dwursteisen Oct 4, 2025
49df13b
Save the current edited music
dwursteisen Oct 5, 2025
915d7c3
Add sound export action.
dwursteisen Oct 5, 2025
c520147
Remove broken test
dwursteisen Oct 5, 2025
073108c
Pass game ID to the web game.
dwursteisen Oct 8, 2025
7b0b978
WiP Audio Worklet
dwursteisen Oct 13, 2025
0ecdb7e
WiP Audio Worklet - Working on the build workflow
dwursteisen Oct 30, 2025
0a674b1
The audio worklet build workflow is working.
dwursteisen Oct 30, 2025
24e3ef8
play the note using instrument.
dwursteisen Oct 31, 2025
a12bb49
Bump versions
dwursteisen Oct 31, 2025
01de943
Adjust the path to be relative for the documentation
dwursteisen Oct 31, 2025
a313f09
Fix loading issue when a resource was updating at the bootscript time.
dwursteisen Nov 1, 2025
634bfe8
Fix loading issue of game from the documentation
dwursteisen Nov 1, 2025
2cde039
Reimplement some TODOs
dwursteisen Nov 1, 2025
96a32fc
Set back the draw mode and fix gfx color issue
dwursteisen Nov 1, 2025
a1b95f3
Fix the draw mode and adjust the sample accordingly
dwursteisen Nov 1, 2025
56a5ba7
Fix spr.pset method
dwursteisen Nov 1, 2025
6aa23ec
Fix gfx.to_sheet
dwursteisen Nov 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ build/
!**/src/main/**/build/
!**/src/test/**/build/

# Test screenshots (generated during test runs)
.test/

### IntelliJ IDEA ###
.idea/**
.idea/
Expand Down
7 changes: 6 additions & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

92 changes: 78 additions & 14 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,17 @@ Tiny is a Kotlin Multiplatform game engine with Lua scripting support that compi
```bash
./gradlew build # Build all modules
./gradlew test # Run all tests
./gradlew publishToMavenLocal # Deploy to local maven
./gradlew publishToMavenLocal # Deploy to local maven (also: make deploy)
./gradlew clean # Clean build artifacts
```

### Testing
```bash
./gradlew test # Run all tests
./gradlew :tiny-engine:test # Run tests for specific module
./gradlew :tiny-engine:commonTest # Run common multiplatform tests
./gradlew :tiny-engine:jvmTest # Run JVM-specific tests
./gradlew :tiny-engine:jsTest # Run JS-specific tests
```

### Linting
Expand All @@ -37,22 +47,36 @@ make lint # or ./gradlew ktlintCheck
make lintfix # or ./gradlew ktlintFormat
```

### CLI Installation
### CLI Development
```bash
make install # Build and install CLI to ~/.bin/tiny-cli
./gradlew :tiny-cli:assembleDist # Build CLI distribution
```

### Documentation Generation
```bash
make docs # Generate full documentation (requires CLI install)
./gradlew asciidoctor # Generate docs only
```

### Documentation
### CLI Commands (after installation)
```bash
make docs # Generate documentation (requires CLI install)
tiny-cli create <name> # Create new game project
tiny-cli run # Run game in current directory
tiny-cli debug # Run with debugger
tiny-cli serve # Dev server with hot reload
tiny-cli export # Export for web deployment
tiny-cli sfx # Sound effect editor
tiny-cli add # Add resources to project
tiny-cli palette # Generate color palettes
```

## Architecture Details

### Platform Abstraction
The engine uses a Platform interface to abstract platform-specific functionality:
- `GlfwPlatform` for desktop (LWJGL/GLFW)
- `WebGlPlatform` for web (WebGL)
- `GlfwPlatform` for desktop (LWJGL/GLFW). It uses OpenGL 3.
- `WebGlPlatform` for web (WebGL). It uses WebGL 2.0.

### Resource Management
Games are structured around:
Expand All @@ -69,22 +93,61 @@ The engine exposes functionality through organized Lua libraries:
- `ctrl`: Input handling
- `map`: Level/tilemap operations

### Build Artifacts
### Open GL Organization
The engine use 2 stages of rendering:
- tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/gl/SpriteBatchStage.kt : it renders everything in a framebuffer at a lower resolution.
- tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/gl/FrameBufferStage.kt : it renders the framebuffer from the previous stage at the screen resolution.
- The OpenGL abstraction is managers by
- tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/shader/ShaderProgram.kt (manage shader program)
- tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/shader/ShaderParameter.kt (manager shader program parameters)
- the shader program is created, alongside the shader program parameters. These parameters are created in Kotlin and added in the shader source code program.
- The shader program parameters can be configured using the method `setup` to access the vertex and fragment shader.
- before draw, the `blind` is called. `unbind` is called after.
- fragColor is added automatically as out vec4 in FragmentShader (See tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/shader/BaseShader.kt)
- #version is added automatically in the shader program source code (See tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/render/shader/BaseShader.kt)

### Build Artifacts & Tasks
The build produces several specialized artifacts:
- `tinyWebEngine`: JS engine for web deployment
- `tinyApiAsciidoctor`: Generated API documentation
- `tinyApiAsciidoctor`: Generated API documentation
- `tinyApiLuaStub`: Lua API stubs
- `tinyResources`: Packaged engine resources

Key Gradle tasks:
- `tiny-web-editor:tinyWebEditor`: Builds web editor interface
- `assembleDist`: Creates CLI distribution zip
- `asciidoctor`: Generates documentation using generated content

## Performance Considerations

### Critical Performance Areas
- **Input handling**: LWJGL input system can be slower than WebGL due to cursor position polling
- **Lua wrapper creation**: Frequent `WrapperLuaTable` creation in SfxLib can impact performance
- **Resource loading**: Hot-reload monitors file changes for rapid development iteration

### Platform-Specific Optimizations
- **Desktop (LWJGL)**: Uses cursor position caching to avoid expensive `glfwGetCursorPos()` calls
- **Web (WebGL)**: Generally more responsive for UI interactions due to different input handling

## Development Workflow

1. Engine changes go in `tiny-engine/src/commonMain/kotlin`
2. CLI commands are in `tiny-cli/src/main/kotlin/com/github/minigdx/tiny/cli/command/`
3. Lua API libraries are in `tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/`
4. Tests follow the pattern `src/commonTest/kotlin` for shared tests
5. Platform-specific code uses `src/jvmMain` and `src/jsMain` directories
### Code Organization
1. **Engine core**: `tiny-engine/src/commonMain/kotlin` - shared multiplatform logic
2. **Platform specifics**: `src/jvmMain` (desktop/LWJGL) and `src/jsMain` (web/WebGL)
3. **CLI commands**: `tiny-cli/src/main/kotlin/com/github/minigdx/tiny/cli/command/`
4. **Lua API libraries**: `tiny-engine/src/commonMain/kotlin/com/github/minigdx/tiny/lua/`
5. **Tests**: `src/commonTest/kotlin` for shared tests, platform-specific in `src/jvmTest` and `src/jsTest`

### Development Features
- **Hot-reload**: Games update without engine restart for rapid iteration
- **Multi-module build**: Independent module development and testing
- **Documentation generation**: KSP-based API documentation from code annotations

The project uses hot-reload for rapid development - games can be updated without restarting the engine.
### Module Dependencies
- `tiny-engine` is the core with no dependencies on other modules
- `tiny-cli` depends on `tiny-engine` for game execution
- `tiny-web-editor` provides browser-based development interface
- `tiny-doc` modules handle documentation generation pipeline

# AI Instructions
## Role and Objective
Expand All @@ -95,6 +158,7 @@ You are Coding Copilot, configured to assist in a multi-language codebase (Kotli
- If a task cannot be completed due to lack of information, respond with a comment indicating the missing context.
- You MUST interpret the documentation with zero ambiguity — never make assumptions beyond what is explicitly provided.
- Maintain consistency across languages (e.g., variable naming, file structure) as defined in the guidelines.
- The code MUST be compatible with Open GL 3 and WebGL 2.0.
## Instructions
1. Read the code context and user intent.
2. Refer to the documentation attached to this prompt for all formatting, naming, and architecture rules.
Expand Down
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,19 @@ end

---

## ⌨️ CLI Commands

```bash
tiny-cli create <name> # Create new game
tiny-cli run # Run game
tiny-cli debug # Run with debugger
tiny-cli serve # Dev server with hot reload
tiny-cli export # Export for web
tiny-cli palette # Generate color palettes
tiny-cli sfx # Sound effect editor
tiny-cli add # Add resources to project
```

## 📦 Download

Get the latest version from the [Releases Page](https://github.com/minigdx/tiny/releases).
Expand Down Expand Up @@ -72,6 +85,18 @@ Want to create games like these? Dive into the docs and start building:

---

## 🤝 Contributing

We welcome contributions!

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

---

## 📄 License

🧸 Tiny is open-source software licensed under the [MIT License](https://github.com/minigdx/tiny/blob/main/LICENSE).
Expand Down
5 changes: 2 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@ org.gradle.caching=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048M
org.gradle.parallel=true
# Configuration cache doesn't play well with application plugin and jvmArgs.
# org.gradle.unsafe.configuration-cache=true
org.gradle.unsafe.configuration-cache=false

# Test K2 (not working yet)
# minigdx.mpp.k2=true

org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
19 changes: 10 additions & 9 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
[versions]
asciidoctorj = "3.3.2"
asciidoctorj = "4.0.4"
clikt = "5.0.3"
gifencoder = "0.10.1"
jna = "5.14.0"
kgl = "0.8.4"
kgl = "0.9.0"
kotlin-coroutines = "1.10.2"
kotlin-ksp = "2.1.20-1.0.32"
kotlin-serialization = "2.1.20"
kotlin-serialization-json = "1.8.1"
ktor = "3.1.2"
luak = "1.1.0"
kotlin-ksp = "2.2.20-2.0.4"
kotlin-serialization = "2.2.20"
kotlin-serialization-json = "1.9.0"
ktor = "3.3.1"
luak = "1.2.0"
lwjgl = "3.3.6"
minigdx-developer = "1.4.2"
mokkery = "2.7.2"
minigdx-developer = "1.5.0"
mokkery = "2.10.1"
rsyntax = "3.6.0"
slf4j = "2.0.7"

Expand All @@ -23,6 +23,7 @@ jna = {module="net.java.dev.jna:jna-platform", version.ref = "jna"}
rsyntax = {module="com.fifesoft:rsyntaxtextarea", version.ref = "rsyntax"}

kotlin-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlin-coroutines" }
kotlin-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlin-coroutines" }
kotlin-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlin-serialization-json" }

luak = { module = "com.github.minigdx:luak", version.ref = "luak" }
Expand Down
Loading