Code Monkey home page Code Monkey logo

missingdeadlines / iolite Goto Github PK

View Code? Open in Web Editor NEW
176.0 6.0 12.0 104.19 MB

A highly flexible, voxel-powered game engine with an embedded editor. Create games using Lua, the native C/C++ API, and assets authored in voxel editors like MagicaVoxel or Avoyd.

Home Page: https://iolite-engine.com

License: MIT License

Python 0.14% Lua 0.34% C 4.05% CMake 0.03% Shell 0.01% C++ 95.40% Batchfile 0.01% Makefile 0.01% Objective-C 0.03%
avoyd game-engine lua magicavoxel minecraft path-tracing voxel voxel-engine qubicle steamdeck

iolite's People

Contributors

begla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

iolite's Issues

i dont know how the hell this works

the docs suck and I cant find the damn panel to draw with voxels. I've read all of the documentation and watched all videos i can find on the engine and nothing. how the hell do i use it? i cant even make a fucking scene

Crash on Startup

Hello! IOLITE engine does not start because it crashes.
The CPU and GPU meet the minimum system requirements, even the optimal ones. My computer components:

Video card: GeForce GTX 1080 Ti
Processor: Intel Core i7-8700K
RAM size: 16 GB
OS: Windows 10

The latest drivers are installed (Vulkan is built-in, it seems). I even tried the "minimal" installation.
Besides, I can't find the log
Screenshot:

image

license information

it would be great to include some license information for the public parts as well for the engine?

[Feature request] Enhancements for particles

Editor:

Bounciness and drag factor for particles
The eye in UI, for hiding, currently doesn't work for particle effect

API:

From discord discussion: The interface is a little barebones at the moment. I will expose all the available functionality

Hot reload not reporting script being updated

Reproduction steps:

  1. Download iolite-v0.1.21
  2. Download sample projects
  3. Copy over sample projects and add to app_metadata.json data_sources
  4. Run the editor and open, for example, 'sample_physics' world
  5. Open script 'iolite-v0.1.21\sample_physics\media\scripts\gameplay_physics.lua
  6. Open console F2
  7. Change script
  8. Nothing show up in console
  9. Run game and the changes have no effect
  10. Run game second time and the changes have effect

OS: Windows 11 x64

Saving "world as" saves in Default folder instead of folder previous world was located in.

When I have a world loaded from a different directory other than the default (btw, Default isn't an option to load worlds unless you modify the data_sources in the app_,metadata.json in a fresh install), the new world is saved in the default/worlds folder and has to be copied back to the game folder.

I guess this isn't a big problem if you use default for the game folder, but as mentioned, it doesn't appear as a valid source unless it's added to the data_sources.

Encountered in pro 0.5.0-beta19

[Feature request] TimeScale + writing files or/and calling external network protocols

I would like a feature where I can increase (maybe also decrease) timeScale, i.e. make everything (including physics) faster.

And a option to write to write custom data (like json) to a file or/and even better an API to subscribe and call remote network sockets.

These 2 things would allow me to bring reinforcement learning (RL) to IOLITE.


Use cases for timeScale:

One example is slow motion in certain situations. Another to fast-forward some gameplay episode. Then putting the game process in hold with TimeScale 0. And list goes on. I was using it all the time while making games in Unity. For machine learning its essential to speed up the learning process simulation.

Use cases for writing files:

Save games, statistics, or something very specific for the game to store persistent data. For machine learning it would be 1 way to push data forth and back from RL learning backend, which is on Python.

Calling external network protocols:

Again lots of use cases. Like fetching Ads info, Saving game data on remote server etc. For machine learning this is second way to transport data forth and back from RL learning backend on Python.

Again why Python backend?

There are no good alternatives. All cool RL ML libs are written on Python. And every integration I know work this way. Unity's ML agents and new UE5 Agents as well.

Why RL:

With RL one can train very realistic NPC behavior. Its still not very popular for big games. Mostly they use behavioral trees. But I can see it becoming more and more actual. Besides The npc thing, you can also train A.I. to build terrains and beyond.

[Feature request] Numbers representing pallete colors

I find my self counting 1 by 1 to get the id/number of the color for palette to use in code.
We can think on how to map this more efficiently. But for starters, maybe a small number (color int code) in palette window, for each color, could do?

[Feature Request] Setting some component properties isn't viable because of missing type function(Variant plugin\lua_api).

"version_string": "v0.4.8" windows

Requesting additional Variant functions for more types.
Variant

trying to set properties for voxelshape or flipbookanimation results in a type mismatch. unable to set variant types in lua since the function don't support type uint8 or type name.

error:
WARNING (2024-03-24 19:31:46): Variant type mismatch. Expected 'uint8', got 'uint'!
WARNING (2024-03-24 19:31:46): Variant type mismatch. Expected 'uint8', got 'uint'!
WARNING (2024-03-24 19:31:46): Variant type mismatch. Expected 'uint8', got 'uint'!

flipbook property information:
INFO (2024-03-24 18:09:25): FirstFrame : uint8
INFO (2024-03-24 18:09:25): NumFrames : uint8
INFO (2024-03-24 18:09:25): CurrentFrame : uint8
INFO (2024-03-24 18:09:25): Speed : float

command tried:
FlipbookAnimation.set_property(char_motion,"FirstFrame",Variant.from_uint8(0))
FlipbookAnimation.set_property(char_motion,"NumFrames",Variant.from_uint8(6))
FlipbookAnimation.set_property(char_motion,"CurrentFrame",Variant.from_uint8(0))
FlipbookAnimation.set_property(char_motion,"Speed",Variant.from_float(6.0))
FlipbookAnimation.commit_changes(char_motion)

examples of missing types for voxelshape properities:
INFO (2024-03-24 18:36:11): VoxelShapeName : name
INFO (2024-03-24 18:36:11): PaletteName : name
INFO (2024-03-24 18:36:11): Flags : uint8
INFO (2024-03-24 18:36:11): RigidBodyFlags : uint16
INFO (2024-03-24 18:36:11): CollisionGroup : uint8
INFO (2024-03-24 18:36:11): CustomSize : u16vec3
INFO (2024-03-24 18:36:11): Pivot : vec3
INFO (2024-03-24 18:36:11): LinearDamping : float
INFO (2024-03-24 18:36:11): AngularDamping : float
INFO (2024-03-24 18:36:11): Density : float
INFO (2024-03-24 18:36:11): DepenetrationVelocityFactor : float
INFO (2024-03-24 18:36:11): NumPositionIterations : uint
INFO (2024-03-24 18:36:11): NumVelocityIterations : uint
INFO (2024-03-24 18:36:11): FractureType : uint8
INFO (2024-03-24 18:36:11): MaxNumConvexSubdivisions : uint8

Requesting variant.from_uint8() function.
setting uint for uint8 causes application to crash.

[Feature request] Custom shader for a Shape or/and custom shader Shape

This sounds a bit insane maybe :D, but I would like to be able, to put a custom shader on a shape.
Any shader language works for me.
Input could be depth, original calculated color, normal, etc. of the shape.
Output my defined/modified color.

Why?

Useful for planet simulations- For pixel precision heightmap from far away.
Displaying misc distant things, like moon in background, without faking it with a small voxel, then you have to displace, to not run into it.
Textures, when needed.
Own water shader.
Flame shader, etc.

Saving world does not save paletteName assignments from editor.

When assigning palettes from the editor (pressing the palette button and choosing a different palette to the one the vox file used) the name of the palette appears in the property window and is shown in the world.

However, saving the world doesn't appear to save the palette information.
I tried to save multiple times and checked the contents of the json file but the paletteName properties are empty - they have a "value": "" instead of the "metal" palette I had chosen.
I also tried save world as and checked the contents of that file, no palette values either.

Encountered in pro 0.5.0-beta19

[Feature request] Persistence for for `io_debug_geometry`

The idea:
Additionally to current params we can add:

  • group index
  • persistence flag

If persistence flag is set, we don't need to redraw debug shape on every tick. And we can cleanup with a new function clear_group(group_index).

The use case is when calculating the positions and rotations of the debugger shapes is expensive, and we dont want to do that on every tick.

Currently, to achieve this, I am cashing the position and rotation of the debug shapes in a array and reading it on every tick... and I was just wondering, if its possible to make this process more performant on engine side.

Ability to make an Entity Visible or Invisible

Within the UI, there is a simple option to make an element invisible or visible once again by clicking the eye icon on the entity.

Within the Lua API there is no method to accomplish this.

I have an entity with a particle emitter attached to it, I would like it to emit particles only when a specific condition is met within the script. I also have numerous rooms in my game which contain a number of voxel blocks, I would like to be able to activate these blocks as I get within a certain proximity of them.

Currently I am unable to do this.

Mouse overlap when changing values of a component

Request for a feature that allows mouse cursor to overlap screen boundaries like it has been done in other popular game engines.

When you move your cursor to the left of your screen while changing a value, the cursor teleports on the right side of the screen allowing you to continue changing the value without need of releasing the mouse button.
image

[Feature Request] Add folder option to Prefab Browser

After trying to work with bigger projects it has became almost impossible to manage the large amount of assets in the project.
I would love there to be some simple folder system for organizing my project, this would help me a lot.
image

[Feature request] Non persistent option for `highlight_node`

I like how it looks and works, but keeping track of what is highlighted to remove it later can be cumbersome.

So maybe there could be an additional option, and when enabled, I have no call highlight_node on every tick, otherwise the effect disappears. Similar how io_debug_geometry->draw.. works.

[Issue] Spawning prefab from plugin

I tried spawning a prefab at the start of the game, it appears but when I exit game mode it is still in the world and not visible in the world inspector.

v0.5.0-beta2

My code

// MIT License
//
// Copyright (c) 2023 Missing Deadlines (Benjamin Wrensch)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

// STL
#include <stdio.h>
#include <string.h>

// API
#include "iolite_api.h"

// Interfaces we use
//----------------------------------------------------------------------------//
const io_api_manager_i *io_api_manager;
const io_logging_i *io_logging;
const io_world_i *io_world;

// Interfaces we provide
//----------------------------------------------------------------------------//
io_user_task_i io_user_task;

void on_activate()
{
  // Spawn a prefab
  io_logging->log_info("Spawning prefab...");
  io_world->spawn_prefab("forest_ground");
}

//----------------------------------------------------------------------------//
IO_API_EXPORT io_uint32_t IO_API_CALL get_api_version()
{
  return IO_API_VERSION;
}

//----------------------------------------------------------------------------//
IO_API_EXPORT int IO_API_CALL load_plugin(const void *api_manager)
{
  io_api_manager = (io_api_manager_i const *)api_manager;

  // Retrieve required interfaces
  io_logging = (io_logging_i *)(io_api_manager->find_first(IO_LOGGING_API_NAME));
  io_world = (io_world_i *)(io_api_manager->find_first(IO_WORLD_API_NAME));

  // Set up and register user task
  memset(&io_user_task, 0, sizeof(io_user_task));
  io_user_task.on_activate = on_activate;
  io_api_manager->register_api(IO_USER_TASK_API_NAME, &io_user_task);

  return 0;
}

//----------------------------------------------------------------------------//
IO_API_EXPORT void IO_API_CALL unload_plugin()
{
  // Unregister our user task
  io_api_manager->unregister_api(&io_user_task);
}

Error "The Procedure entry point vkResetQueryPool could not be located in the dynamic link library C:\Users\USERNAME\Downloads\IOLITE\Iolite,exe"

I just installed iolite on windows 10 22h2 and it doesn't launch. I just get the error "The Procedure entry point vkResetQueryPool could not be located in the dynamic link library C:\Users\USERNAME\Downloads\IOLITE\Iolite.exe".

System Specs:
CPU: intel core i5-8300H running at 2.30GHz
RAM: 8GB
GPU: Intel UHD Graphics 630

I have Vulkan working on my device and the latest graphics drivers that Dell recommends. Does anyone know how to fix the error Does anyone know how to fix this?

Screenshot 2024-02-23 134049

[Feature request] Transparency

For stuff like glass (windows for houses is most popular example) and ice- not sure how to name it, partly transparent / distorted transparent.

EB20111012REVIEWS111019991AR

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.