Voxel module for Godot Engine

Voxel Tools for Godot

A C++ module for creating volumetric worlds in Godot Engine.

🚪 Windows Builds 🐧 Linux Builds 🐒 Mono Builds

Discord

Blocky screenshot Smooth screenshot Textured screenshot

Features

  • Realtime 3D terrain editable in-game (Unlike a heightmap based terrain, this allows for overhangs, tunnels, and user creation/destruction)
  • Godot physics integration + alternate fast Minecraft-like collisions
  • Infinite terrains made by paging chunks in and out
  • Voxel data is streamed from a variety of sources, which includes the ability to write your own generators
  • Minecraft-style blocky voxel terrain, with multiple materials and baked ambient occlusion
  • Smooth terrain with level of detail using Transvoxel
  • Voxel storage using 8-bit or 16-bit channels for any general purpose
  • Instancing system to spawn foliage, rocks and other decoration on surfaces

Check the changelog for more recent details.

Documentation

Roadmap

These are some ideas that may or may not be implemented in the future:

  • Texturing on smooth terrain
  • Editor preview and authoring
  • Improving LOD performance
  • Other meshing algorithms (e.g. dual contouring)
  • GPU offloading (Maybe when Godot 4+ supports compute shaders)
  • Migrate to a GDNative plugin (post Godot 4, needs work)

Supporters

This module is a non-profit project developped by voluntary contributors. The following is the list of the current donors. Thanks for your support :)

Supporters

wacyym
Sergey Lapin (slapin)
Jonas (NoFr1ends)
lenis0012
Phyronnaz
RonanZe
furtherorbit
jp.owo.Manda (segfault-god)
hidemat
Jakub Buriánek (Buri)
Justin Swanhart (Greenlion)
Sebastian Clausen (sclausen)
MrGreaterThan
baals
Treer
Owner
Marc
I code and I sound.
Marc
Comments
  • Implement Transvoxel for smooth voxels

    Implement Transvoxel for smooth voxels

    Might I suggest implementing a smooth voxel system? Transvoxel would be a good one to implement, as it supports Level of Detail with seamless transitions.

    http://transvoxel.org/

  • smooth terrain: 'lines' on 'connection' points

    smooth terrain: 'lines' on 'connection' points

    image

    White dots follows line pattern and can change on camera moment. They are more noticeable on shadowed surfaces. Light can pass through white dots.

    Tested on Ubuntu 18.04, Nvidia, Godot voxel 1b19bbee8e2d17ee8f2c1f45435aaf1e1a6b79cf (Enable 3D noise on VoxelTerrain...), Godot 0587df4aa5f2977350cc80b1522cdc1e483c4515 (3.1.2-stable)

    Project based on noise_smooth_lod.tscn from https://github.com/tinmanjuggernaut/voxelgame with CHANNEL_ISOLEVEL renamed to CHANNEL_SDF

    Please respond if you can't reproduce the bug

    image

  • Tutorial

    Tutorial

    Hey this isn't really an issue but I'm fairly new and trying to make a game using voxels, how would I go about using this module? I cloned it to the module folder but how do you set up godot from the source code? I tried making an executable using SCon but no luck. Any help is appreciated :)

  • Cannot be override in Mono VoxelStream on CustomSteam

    Cannot be override in Mono VoxelStream on CustomSteam

    Cannot be override in Mono VoxelStream on CustomSteam. SCharp says that the VoxelStream class cannot be override EmergeBlock method, as it is not marked as virtual.

  • Number of blocks

    Number of blocks

    Hello, the number of blocks is 256, can it be bypassed or configured somehow? And how is it with multi-threaded rendering of the Godot? I remember that he had problems

  • Occasionally faces won't properly illuminate or work with Godot's triplanar mapping

    Occasionally faces won't properly illuminate or work with Godot's triplanar mapping

    Sometimes, some lower LODs have faces that are black when using a texture, or impossibly dark even with a white albedo color and the sun shining directly on it. I wonder if those faces have their normals reversed.

    Present in master, though these pics are from the paged branch.

    I've seen this a lot on the noise world and have even pointed it out in videos I've sent you. I thought it was my shader, because if triplanar map blending is too high, it will cause black sections. But no. This issue is there even when there's no triplanar mapping.

    It's also not a lighting issue, or that the lower LODs have a mesh that is just causing more shadow.

    Textured w/ triplannar mapping and very low blend (6). Shouldn't have black marks:

    image

    Blank SpatialMaterial. Sun is shining on both faces:

    image

    Bottom face has shifted to a new LOD. Shows how much light was there that did not reflect off the face in the picture above.

    image

    This is from master, sun shining on this pillar. Then I backed up to hit the right LOD from different angles, moving around it from left to right.:

    image

  • Fails to compile on ubuntu 16.04 with godot 2.1

    Fails to compile on ubuntu 16.04 with godot 2.1

    Trying to compile this on ubuntu 16.04 with godot 2.2 errors out with

    scons: done reading SConscript files. scons: Building targets ... g++ -o modules/register_module_types.x11.tools.64.o -c -g2 -Wall -DDEBUG_ENABLED -DDEBUG_MEMORY_ENABLED -DFREETYPE_ENABLED -DDEBUG_MEMORY_ALLOC -DSCI_NAMESPACE -DENABLE_DEPRECATED -DOPENGL_ENABLED -DALSA_ENABLED -DJOYDEV_ENABLED -DPULSEAUDIO_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DGLES2_ENABLED -DGLES_OVER_GL -DMUSEPACK_ENABLED -DSQUISH_ENABLED -DVORBIS_ENABLED -DOPUS_ENABLED -DTHEORA_ENABLED -DTHEORALIB_ENABLED -DPNG_ENABLED -DDDS_ENABLED -DPVR_ENABLED -DJPG_ENABLED -DWEBP_ENABLED -DSPEEX_ENABLED -DTOOLS_ENABLED -DGDSCRIPT_ENABLED -DMINIZIP_ENABLED -DXML_ENABLED -DETC1_ENABLED -DGLEW_ENABLED -DGLEW_STATIC -DOPENSSL_ENABLED -DMODULE_CSCRIPT_ENABLED -DMODULE_ENET_ENABLED -DMODULE_GDNET_ENABLED -DMODULE_GDSCRIPT_ENABLED -DMODULE_GODOT_VOXEL_ENABLED -DMODULE_GRIDMAP_ENABLED -DMODULE_IK_ENABLED -DMODULE_VISUAL_SCRIPT_ENABLED -D_REENTRANT -Icore -Icore/math -Itools -Idrivers -I. -Iplatform/x11 -I/usr/include/freetype2 -I/usr/include/alsa -Imodules modules/register_module_types.cpp modules/register_module_types.cpp: In function 'void register_module_types()': modules/register_module_types.cpp:31:29: error: 'register_godot_voxel_types' was not declared in this scope register_godot_voxel_types(); ^ modules/register_module_types.cpp: In function 'void unregister_module_types()': modules/register_module_types.cpp:61:31: error: 'unregister_godot_voxel_types' was not declared in this scope unregister_godot_voxel_types(); ^ scons: *** [modules/register_module_types.x11.tools.64.o] Error 1 scons: building terminated because of errors.

  • Make LOD terrain infinitely paged

    Make LOD terrain infinitely paged

    When using a heightmap on VoxelLodTerrain, any values under around 70 get cut off. VoxelTerrain does not have this problem.

    This was made with a simple white to black gradient:

    image

    Increasing black by 10s, I was able to connect it by making the gradient 255-70.

    image

  • Add test CI and fuzzer

    Add test CI and fuzzer

    This PR adds CI with opening and closing editor and running test project

    Example run - https://github.com/qarmin/godot_voxel/runs/3782638178?check_suite_focus=true

    It found a lot of errors like

    modules/voxel/generators/graph/voxel_graph_runtime.cpp:443:44: runtime error: load of misaligned address 0x6070006be713 for type 'const short unsigned int', which requires 2 byte alignment
    0x6070006be713: note: pointer points here
     00  14 01 00 05 00 08 00 00  00 00 00 00 00 80 3f 06  06 00 05 00 07 00 00 00  2a 07 00 08 00 00 00
                  ^ 
    modules/voxel/generators/graph/voxel_graph_runtime.cpp:572:58: runtime error: load of misaligned address 0x6070006be72b for type 'const short unsigned int', which requires 2 byte alignment
    0x6070006be72b: note: pointer points here
     00  2a 07 00 08 00 00 00 2a  05 00 09 00 00 00 be be  be be be be be be be be  be be be be be be be
                  ^ 
    modules/voxel/streams/region/../../util/math/vector3i.h:248:42: runtime error: left shift of negative value -2
    modules/voxel/streams/region/../../util/math/vector3i.h:248:32: runtime error: left shift of negative value -2
    modules/voxel/streams/region/../../util/math/vector3i.h:248:22: runtime error: left shift of negative value -2
    

    Simple opening and closing editor found this memory leak:

     Direct leak of 7280 byte(s) in 7 object(s) allocated from:
        #0 0x7f14b223effe in __interceptor_realloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dffe)
        #1 0x137c7bfc in Memory::realloc_static(void*, unsigned long, bool) core/os/memory.cpp:129
        #2 0x3273d30 in VoxelGraphRuntime::prepare_state(VoxelGraphRuntime::State&, unsigned int) const modules/voxel/generators/graph/voxel_graph_runtime.cpp:676
        #3 0x3144e45 in VoxelGeneratorGraph::generate_block(VoxelBlockRequest&) modules/voxel/generators/graph/voxel_generator_graph.cpp:432
        #4 0x3c5169c in do_block_tests modules/voxel/tests/tests.cpp:481
        #5 0x3c55dd4 in test_voxel_graph_generator_texturing() modules/voxel/tests/tests.cpp:517
        #6 0x3c66245 in run_voxel_tests() modules/voxel/tests/tests.cpp:1061
        #7 0x2da50ed in register_voxel_types() modules/voxel/register_types.cpp:155
        #8 0x1ce777b in register_module_types() modules/register_module_types.gen.cpp:178
        #9 0x1af07e8 in Main::setup2(unsigned long) main/main.cpp:1458
        #10 0x1ae5654 in Main::setup(char const*, int, char**, bool) main/main.cpp:1224
        #11 0x194bff0 in main platform/x11/godot_x11.cpp:48
        #12 0x7f14b10680b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Direct leak of 64 byte(s) in 1 object(s) allocated from:
        #0 0x7f14b2240947 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.5+0x10f947)
        #1 0x7f149d4a3d9d  (<unknown module>)
    
    Direct leak of 40 byte(s) in 1 object(s) allocated from:
        #0 0x7f14b223ebc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
        #1 0x137c6fa7 in Memory::alloc_static(unsigned long, bool) core/os/memory.cpp:75
        #2 0x137c6eb8 in operator new(unsigned long, char const*) core/os/memory.cpp:40
        #3 0x3126a72 in VoxelMemoryPool::get_or_create_pool(unsigned long) modules/voxel/storage/voxel_memory_pool.cpp:125
        #4 0x3123694 in VoxelMemoryPool::allocate(unsigned long) modules/voxel/storage/voxel_memory_pool.cpp:45
        #5 0x3100607 in allocate_channel_data modules/voxel/storage/voxel_buffer_internal.cpp:21
        #6 0x310c183 in VoxelBufferInternal::create_channel_noinit(int, Vector3i) modules/voxel/storage/voxel_buffer_internal.cpp:624
        #7 0x310bc44 in VoxelBufferInternal::create_channel(int, unsigned long) modules/voxel/storage/voxel_buffer_internal.cpp:605
        #8 0x3104aed in VoxelBufferInternal::set_voxel(unsigned long, int, int, int, unsigned int) modules/voxel/storage/voxel_buffer_internal.cpp:250
        #9 0x3c4caed in test_voxel_data_map_paste_mask() modules/voxel/tests/tests.cpp:119
        #10 0x3c65462 in run_voxel_tests() modules/voxel/tests/tests.cpp:1056
        #11 0x2da50ed in register_voxel_types() modules/voxel/register_types.cpp:155
        #12 0x1ce777b in register_module_types() modules/register_module_types.gen.cpp:178
        #13 0x1af07e8 in Main::setup2(unsigned long) main/main.cpp:1458
        #14 0x1ae5654 in Main::setup(char const*, int, char**, bool) main/main.cpp:1224
        #15 0x194bff0 in main platform/x11/godot_x11.cpp:48
        #16 0x7f14b10680b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
    Direct leak of 40 byte(s) in 1 object(s) allocated from:
        #0 0x7f14b223ebc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
        #1 0x137c6fa7 in Memory::alloc_static(unsigned long, bool) core/os/memory.cpp:75
        #2 0x137c6eb8 in operator new(unsigned long, char const*) core/os/memory.cpp:40
        #3 0x3126a72 in VoxelMemoryPool::get_or_create_pool(unsigned long) modules/voxel/storage/voxel_memory_pool.cpp:125
        #4 0x3123694 in VoxelMemoryPool::allocate(unsigned long) modules/voxel/storage/voxel_memory_pool.cpp:45
        #5 0x3100607 in allocate_channel_data modules/voxel/storage/voxel_buffer_internal.cpp:21
        #6 0x310c183 in VoxelBufferInternal::create_channel_noinit(int, Vector3i) modules/voxel/storage/voxel_buffer_internal.cpp:624
        #7 0x310bc44 in VoxelBufferInternal::create_channel(int, unsigned long) modules/voxel/storage/voxel_buffer_internal.cpp:605
        #8 0x3102529 in VoxelBufferInternal::create(unsigned int, unsigned int, unsigned int) modules/voxel/storage/voxel_buffer_internal.cpp:164
        #9 0x31029bb in VoxelBufferInternal::create(Vector3i) modules/voxel/storage/voxel_buffer_internal.cpp:171
        #10 0x3c6401a in test_voxel_buffer_create() modules/voxel/tests/tests.cpp:1036
        #11 0x3c6786e in run_voxel_tests() modules/voxel/tests/tests.cpp:1069
        #12 0x2da50ed in register_voxel_types() modules/voxel/register_types.cpp:155
        #13 0x1ce777b in register_module_types() modules/register_module_types.gen.cpp:178
        #14 0x1af07e8 in Main::setup2(unsigned long) main/main.cpp:1458
        #15 0x1ae5654 in Main::setup(char const*, int, char**, bool) main/main.cpp:1224
        #16 0x194bff0 in main platform/x11/godot_x11.cpp:48
        #17 0x7f14b10680b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    
  • Compiled Mono version does not run in Windows 7

    Compiled Mono version does not run in Windows 7

    I just downloaded the latest Mono build from Github Actions, https://github.com/Zylann/godot_voxel/actions/runs/736995822, but when I try and run the editor, I get an error that "api-ms-win-core-synch-|1-2-1.dll" is missing, and the editor doesn't start.

    Downloading the regular Godot 3.3 engine with Mono works as intended.

    A note, I am on Windows 7, and I have api-ms-win-core-synch-l1-2-0.dll in System32

  • Added Mono builds in a new Github Actions workflow

    Added Mono builds in a new Github Actions workflow

    This resolves #244

    I added Mono builds for Linux and Windows as a third github actions workflow. This works by generating the Mono glue in the first step and then sharing that glue with the Linux and Windows steps. This dependency is why I split it off into its own workflow because the alternative would generate the glue twice.

  • planets

    planets

  • how to generate specific areas using a script

    how to generate specific areas using a script

    i have a client and a server and i'm not sure how to get the client to generate specific areas locally while also allowing the server to overwrite blocks that have been edited

  • env.editor_build undefined, Cannot compile Godot (3.5.1)

    env.editor_build undefined, Cannot compile Godot (3.5.1)

    (Preface: I am new to Godot, please be gentle.)

    I am unable to compile the Godot Engine's executable binaries once Godot_Voxel is added as a module in Godot 3.5.1 When I try to SCons compile to any platform, I get this error (env.editor_build referenced from voxel/SCsub:20, 'SConsEnvironment' object has no attribute 'editor_build')

    Here is the raw log:

    ❯ scons platform=osx arch=arm64 --jobs=$(sysctl -n hw.logicalcpu) target=release_debug
    scons: Reading SConscript files ...
    Building for macOS 10.15+, platform arm64.
    AttributeError: 'SConsEnvironment' object has no attribute 'editor_build':
      File "/Users/grify/Developer/godot-3.5.1-stable/SConstruct", line 719:
        SConscript("modules/SCsub")
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 660:
        return method(*args, **kw)
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 597:
        return _SConscript(self.fs, *files, **subst_kw)
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 285:
        exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
      File "/Users/grify/Developer/godot-3.5.1-stable/modules/SCsub", line 21:
        SConscript(name + "/SCsub")  # Built-in.
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 660:
        return method(*args, **kw)
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 597:
        return _SConscript(self.fs, *files, **subst_kw)
      File "/opt/homebrew/Cellar/scons/4.4.0/libexec/lib/python3.10/site-packages/SCons/Script/SConscript.py", line 285:
        exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
      File "/Users/grify/Developer/godot-3.5.1-stable/modules/voxel/SCsub", line 20:
        voxel_files = common.get_sources(env_voxel, env.editor_build)
    

    Is this user error? How do I fix this?

    Many thanks for all help

  • `FastNoise2.update_generator` crashes Godot

    `FastNoise2.update_generator` crashes Godot

    extends Node
    func _process(delta):
    
    	var temp_variable6364 = FastNoise2.new()
    	temp_variable6364.set_noise_type(5)
    	temp_variable6364.update_generator()
    

    crashes Godot with this backtrace

     ==3041==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00002c72d6df at pc 0x00000ac12e99 bp 0x7fff28ec91a0 sp 0x7fff28ec9190
    READ of size 1 at 0x00002c72d6df thread T0
        #0 0xac12e98 in Decode modules/voxel/thirdparty/fast_noise_2/src/FastNoise/Base64.h:105
        #1 0xac19dec in FastNoise::NewFromEncodedNodeTree(char const*, FastSIMD::eLevel) modules/voxel/thirdparty/fast_noise_2/src/FastNoise/Metadata.cpp:301
        #2 0xab6ce34 in zylann::FastNoise2::update_generator() modules/voxel/util/noise/fast_noise_2.cpp:421
        #3 0x368abfa in void call_with_variant_args_helper<__UnexistingClass>(__UnexistingClass*, void (__UnexistingClass::*)(), Variant const**, Callable::CallError&, IndexSequence<>) core/variant/binder_common.h:262
        #4 0x3676d9a in void call_with_variant_args_dv<__UnexistingClass>(__UnexistingClass*, void (__UnexistingClass::*)(), Variant const**, int, Callable::CallError&, Vector<Variant> const&) core/variant/binder_common.h:409
        #5 0x365fb60 in MethodBindT<>::call(Object*, Variant const**, int, Callable::CallError&) core/object/method_bind.h:320
        #6 0x1f3e528e in Object::callp(StringName const&, Variant const**, int, Callable::CallError&) core/object/object.cpp:733
        #7 0x1e8a5bc8 in Variant::callp(StringName const&, Variant const**, int, Variant&, Callable::CallError&) core/variant/variant_call.cpp:1048
        #8 0x4fd9e02 in GDScriptFunction::call(GDScriptInstance*, Variant const**, int, Callable::CallError&, GDScriptFunction::CallState*) modules/gdscript/gdscript_vm.cpp:1555
        #9 0x49d72fc in GDScriptInstance::callp(StringName const&, Variant const**, int, Callable::CallError&) modules/gdscript/gdscript.cpp:1634
        #10 0x141e3598 in bool Node::_gdvirtual__process_call<false>(double) scene/main/node.h:238
        #11 0x1414a094 in Node::_notification(int) scene/main/node.cpp:56
        #12 0x352e963 in Node::_notificationv(int, bool) scene/main/node.h:45
        #13 0x1f3e67e2 in Object::notification(int, bool) core/object/object.cpp:790
        #14 0x142a87e1 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:868
        #15 0x1429af9d in SceneTree::process(double) scene/main/scene_tree.cpp:466
        #16 0x2dd2f30 in Main::iteration() main/main.cpp:3176
        #17 0x2bfeb2b in OS_LinuxBSD::run() platform/linuxbsd/os_linuxbsd.cpp:785
        #18 0x2bdbbb8 in main platform/linuxbsd/godot_linuxbsd.cpp:73
        #19 0x7f0f9f546d8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
        #20 0x7f0f9f546e3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f)
        #21 0x2bdb574 in _start (/home/runner/work/godot_voxel/godot_voxel/bin/godot.linuxbsd.editor.dev.x86_64.san+0x2bdb574)
    
    0x00002c72d6df is located 53 bytes to the right of global variable '*.LC15' defined in 'core/string/ustring.cpp' (0x2c72d6a0) of size 10
      '*.LC15' is ascii string 'copy_from'
    0x00002c72d6df is located 1 bytes to the left of global variable '*.LC16' defined in 'core/string/ustring.cpp' (0x2c72d6e0) of size 1
      '*.LC16' is ascii string ''
    SUMMARY: AddressSanitizer: global-buffer-overflow modules/voxel/thirdparty/fast_noise_2/src/FastNoise/Base64.h:105 in Decode
    
  • convinience request: noise input/output scaling

    convinience request: noise input/output scaling

    INPUT SCALING

    Input scaling is useful to created stretched or squashed terrain - especially with height relative to the xz plane. Instead of just one universal scale configuration - "period", it would be very nice to have the option to choose a period for each dimension separately.

    Again, this would be mostly useful scaling y separately from xz, which I think would see continuous usage. In my particular case it would be useful to scale all three separately.

    Its already possible to scale by multiplying input before entering the noise, but this alternative solution would enable users to have a single consistent framework - period - with which to measure the waves and troughs of the noise generator. Without it, artists must work with a hybrid of period (divisor) and ratio (multiplier) instead. Sometimes this might be useful, but obviously this would still be an available option in the cases where users wanted this, since the multiply node isn't going anywhere.

    One solution would be a system where the dimensions are each independently either locked or unlocked. Changing any locked dimension changes all of them to match. Locking any dimension also matches them. Then, any dimension can be unlocked and then changed without effecting the others. By default the dimensions are all locked and it behaves as it currently does, with a single shared period for all three dimensions.

    OUTPUT SCALING

    Output MUST be scaled by period to remove artifacts. This fact is not intuitive and must be learned from the documentation or other sources. While remap is included to solve this problem without an additional node, it requires manual configuration to match the period. If the period changes, the output multiplier must also change to match it, or the artifacts are reintroduced.

    Automating this multiplier should be the default, with an option to disable it.

    With separate input axis scaling this perhaps becomes even more useful, where the mathematically correct interpretation of SDF can be used to ensure the proper value is automatically chosen and does not need any additional calculation or effort. Point here is, directly tying input scaling to the remap and automatically setting it makes sense.

    Perhaps the noise interface cannot support these natively. They could potentially still be added to the voxel graph node inspector wrapper as some kind of overrides to input, period, and remap. However this is a less optimal solution and may not be as worthy of inclusion.

    Thanks for your time!

A simple project/module generated tool written in go

A module generator written in go This is a project/module generator written in go. It is intended to generate standard project/module layouts in the t

Oct 17, 2022
Module to ease interaction with Pact's development server & ScalableBFT

go-pact Module to ease interaction with Pact's development server & ScalableBFT Install go install github.com/jfamousket/go-pact@latest Functions H

Dec 9, 2021
A go module for "friendly" IDs

go-eyed A go module for "friendly" IDs. THIS MODULE IS INCOMPLETE AND NOT CURRENTLY BEING MAINTAINED. THEREFORE, IT SHOULD NOT BE USED Contribution If

Dec 17, 2021
ProtonMail module for waybar/polybar/yabar/i3blocks

protoncheck  lightweight, fast waybar/polybar/yabar/i3blocks module to check the amount of unread emails in a ProtonMail inbox. Installation You may

Sep 27, 2022
Golang-module-references - A reference for how to setup a Golang project with modules - Task Management + Math Examples

Golang Module Project The purpose of this project is to act as a reference for setting up future Golang projects using modules. This project has a mat

Jan 2, 2022
Flesch-go - Go-based implementation of the Flesch reading ease readability formula module.

flesch-go Go-based implementation of the Flesch reading ease readability formula module. Thanks for the flesch-index project. Installation Run the fol

Nov 9, 2022
Go-poolsuite - Poolsuite FM player as Go module

go-poolsuite Poolsuite FM (formerly Poolside FM) player as a Go module. Example

May 4, 2022
Gosfdc module - a collection of packages containing the data structures from the various Salesforce APIs and Tools

Gosfdc module - a collection of packages containing the data structures from the various Salesforce APIs and Tools

Jan 21, 2022
Sa818 - Sa818 UHF/VHF walkie talkie module control library for golang
Sa818 - Sa818 UHF/VHF walkie talkie module control library for golang

SA818 golang library for serial control This library written in Go programming l

Jan 23, 2022
An interactive menu for Magisk's module installer with tools to alter Android

JD's Toolbox I'll update this with some details later, just getting the source code out for now... LICENSE The source code for JD's Toolbox is release

Jan 24, 2022
gonewire: one wire library that uses the w1 kernel module

gonewire one wire library that uses the w1 kernel module. current support: DS18(S)20

Jan 25, 2022
Unik is a Go module for running Go programs as unikernels, without an underlying operating system

Unik is a Go module for running Go programs as unikernels, without an underlying operating system. The included demo is a functional Gio GUI prog

Oct 21, 2022
modver - a Go package and command that helps you obey semantic versioning rules in your Go module.

Modver This is modver, a Go package and command that helps you obey semantic versioning rules in your Go module. It can read and compare two different

Dec 12, 2022
Go module that provides primitive functional programming utilities.

Functional Functional provides a small set of pure functions that are common in functional programming languages, such as Reduce, Map, Filter, etc. Wi

Jun 12, 2022
community search engine

Lieu an alternative search engine Created in response to the environs of apathy concerning the use of hypertext search and discovery.

Dec 24, 2022
Weaviate is a cloud-native, modular, real-time vector search engine
Weaviate is a cloud-native, modular, real-time vector search engine

Weaviate is a cloud-native, real-time vector search engine (aka neural search engine or deep search engine). There are modules for specific use cases such as semantic search, plugins to integrate Weaviate in any application of your choice, and a console to visualize your data.

Jan 5, 2023
Self hosted search engine for data leaks and password dumps
Self hosted search engine for data leaks and password dumps

Self hosted search engine for data leaks and password dumps. Upload and parse multiple files, then quickly search through all stored items with the power of Elasticsearch.

Aug 2, 2021
IBus Engine for GoVarnam. An easy way to type Indian languages on GNU/Linux systems.

IBus Engine For GoVarnam An easy way to type Indian languages on GNU/Linux systems. goibus - golang implementation of libibus Thanks to sarim and haun

Feb 10, 2022
A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it.

A BPMN engine, meant to be embedded in Go applications with minim hurdles, and a pleasant developer experience using it. This approach can increase transparency for non-developers.

Dec 29, 2022