Giter Club home page Giter Club logo

mundus's People

Contributors

attilabo avatar codenigma avatar krukhlis avatar mbrlabs avatar nox-moon 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  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

mundus's Issues

Async loading/storing

Currently all load/store operations happen on the UI thread. While this is not a problem for small scenes, the editor is going to be unresponsive if they get bigger.

This requires also a load/store process dialog while the operation is running. The best way to do this is probably to have something like an AsyncTask (see how Android does it).

Improve the tool manager

When switching between tools, the last selected tool should be used for all subsequent clicks on game objects.
This is especially important if the user selects a game object from the outline.

Currently the tool defaults back to the translate tool if the game object is deselected using the ESC key.

Physics component

I think sooner or later we will need a physics component for the game objects:

  • integrate physics library (create physics world, bind game objects with phy. component to phy. world)
  • assign simple geometry as bounding box (for the first version)
  • construct bounding box with simple geometry and assign it (maybe as editor plugin?)
  • calculate simplified bounding box from low-poly model (ideal solution but very complex)

So the question is, which priority does this feature have and which features must be implemented first to achieve a good solution?

Model components with individual materials

Currently all model assets have one or more default materials. All model components that use this model asset adopt these materials and you can not change the material of model components individually.

Model components must store the materials asset ids they use by themselves. This way, the can change materials assets and modify them.

Mundus Logo/Icon

Hey guys,
for the first real usable release it would be cool if we had a project logo.

We need 2 logos/icons:

  • A simplified one for the top left corner of the editor and as application icon
  • A big logo for a project website, splash screen, etc..

Unfortunately i'm not very artistic. So this is the current placeholder:

icon

AWT can't be used with LWJGL3 on MacOS X

As continuation of the
#4

After I've passed the corresponding param to jvm via modified run task, Mundus editor has successfully started. But when I've tried WSAD keys to move my camera around -- the Mundus window has disappeared( but the process wasn't killed). I had 3 retries with the same result. So I've tried to figure out and it seems that the statement from GLFW in exception covers the reason:

Please run the JVM with -XstartOnFirstThread and
make sure a window toolkit other than GLFW (e.g. AWT or JavaFX) is not initialized.
at org.lwjgl.glfw.EventLoop

I have added jvmArgs "-Djava.awt.headless=true" to the run task extended in #4
and had to remove the GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds(); from com.mbrlabs.mundus.Main because it throws exception in headless mode.

After such set of changes everything works like a charm.

Better outline tree update

Currently the ui tree in the outline gets rebuilt from scratch if a game object is added, deleted or moved. This causes all expanded nodes to collapse, which is bad.

New mundus fails to start.

After last tons of changes with assets there is an issue with mundus.

  1. It can't start failing during startup with ArrayIndexOutOfBounds exception in the last project load code.
  2. In order to cleanup any old artifacts of Mundus I have removed .mundus folder. After removal of the .mundus subfolder from the User's folder, Mundus fails to start with the following exception:

`

:editor:run[23:08][Fatal][Log] java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:1012)
    at com.mbrlabs.mundus.utils.Log.prepareLogFile(Log.java:92)
    at com.mbrlabs.mundus.utils.Log.init(Log.java:70)
    at com.mbrlabs.mundus.Main.main(Main.java:37)

[23:08][Fatal][Log] java.lang.NullPointerException
    at com.mbrlabs.mundus.utils.Log.prepareLogFile(Log.java:98)
    at com.mbrlabs.mundus.utils.Log.init(Log.java:70)
    at com.mbrlabs.mundus.Main.main(Main.java:37)

[23:08][Fatal][Log] Uncaught exception occurred, error report will be saved

Exception: java.lang.NullPointerException thrown from the UncaughtExceptionHandler in thread "main"

`
The problem is it doesn't create the .mundus subfolder under Windows user's folder.
Also, just wondering -- is it typo or "as designed" -- the name of the log file is mundusspacedate.log?

Plugin system

Define a stable editor api and load plugins at runtime. More like a v.0.2.0 feature

Api scope:

  • Manipulation of the scene graph
  • Access to some ui elements
  • Creation of new ui elements
  • ...

Script component

I dont't know the actual planned workflow to create a game with mundus, but i think we will need something for the game logic.

1 Solution (possible in near future):

  • When the libgdx runtime is ready we will load the world and program the logic in java with libgdx functionality. So the editor will be an optional tool for game creation.

2 Integrate a script component (javascript):

  • We implement a scripting language compatible with java6. Possible candidates are rhino, nashorn and j2v8:
    rhino is a standalone lib (100% java6 and highly compatible with android, no actual benchmark present (slower than j2v8 and nashorn in 2014))
    nashorn will only work with java8 (so not working with older android < 7.0, not an option at the moment)
    j2v8 is the implementation of google V8 engine. It is written in c++ and wrapped in java with native interfaces. At the moment it is the fastest implementation, but it must be compiled for every platform. This will complicate everything.
  • expose the commons library into a javascript library to manipulate game objects/world
  • the user can use every editor he likes to write his scripts, he will just need to point his project into the mundus project and bind the commons library
  • hot reloading of scripts, when user changed a loaded script

3 Integrate other compatible scripting language (but which is compatible with android?)

But why use a scripting component?

  • we can dynamically load game logic into Mundus (making Mundus to a real engine)
  • in future we can extend Mundus to a sandbox (like cryengine) and manipulate the world (set daytime, tree growth and other world/physics parameter)

What do you think? Do we need scripting add all, how far will this project go?

v0.0.8 checklist

  • Refactor entity component system
  • Write unit tests for the scene graph
  • Fix relative transformation of scene graph objects
  • Implement game object scaling (just scaling, the tool comes later)

Material system

Materials are special asset files, that describe the material of a model or anything that can be rendered.
Thy can be be created, edited and assigned to models.

Duplicate GameObjects

In the outline you should be able to duplicate game objects.
-> deep copy of game object with all children + attached components

Unable to load assets in editor

When I select an asset like a tree, I see in the dialog the tree rotating, but when I try to import, nothing happens. I can supply screenshots if necessary.

Improve: Models should respect the slope of the terrain when they are being placed.

Currently, when one puts the model to some point on terrain, the model has its normal always facing Y-UP(0,1,0). IMHO, model should respect the slope of the terrain when user places it. It means it should ac-ly respect the normal at the point of terrain. Please see the image with example how it looks like after the corresponding code change:
mundus-improvement-malign

At least, we should give an option to the user if he wants his model to respect the slope of the terrain.
This is improvement, not a bug :)

ERROR!

I have an exception:
java.io.FileNotFoundException: C:\Users\LINKOR.mundus\mundus.registry (Не удается найти указанный файл)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.(FileInputStream.java:138)
at java.io.FileInputStream.(FileInputStream.java:93)
at com.mbrlabs.mundus.editor.core.kryo.KryoManager.loadRegistry(KryoManager.java:94)
at com.mbrlabs.mundus.editor.Mundus.(Mundus.kt:93)
at com.mbrlabs.mundus.editor.Mundus.(Mundus.kt:54)
at com.mbrlabs.mundus.editor.Editor.create(Editor.kt:62)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.initializeListener(Lwjgl3Window.java:416)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:364)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:136)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:110)
at com.mbrlabs.mundus.editor.Main.launchEditor(Main.kt:52)
at com.mbrlabs.mundus.editor.Main.main(Main.kt:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
[09:08][Fatal][Log] com.badlogic.gdx.utils.GdxRuntimeException: java.lang.ExceptionInInitializerError
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:116)
at com.mbrlabs.mundus.editor.Main.launchEditor(Main.kt:52)
at com.mbrlabs.mundus.editor.Main.main(Main.kt:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ExceptionInInitializerError
at com.mbrlabs.mundus.editor.Editor.setupInput(Editor.kt:96)
at com.mbrlabs.mundus.editor.Editor.create(Editor.kt:70)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.initializeListener(Lwjgl3Window.java:416)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:364)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:136)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.(Lwjgl3Application.java:110)
... 7 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: No com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle registered with name: default
at com.badlogic.gdx.scenes.scene2d.ui.Skin.get(Skin.java:154)
at com.badlogic.gdx.scenes.scene2d.ui.Window.(Window.java:61)
at com.kotcrab.vis.ui.widget.VisWindow.(VisWindow.java:52)
at com.kotcrab.vis.ui.widget.VisWindow.(VisWindow.java:47)
at com.kotcrab.vis.ui.widget.file.FileChooser.(FileChooser.java:170)
at com.kotcrab.vis.ui.widget.file.FileChooser.(FileChooser.java:162)
at com.mbrlabs.mundus.editor.ui.UI.(UI.kt:58)
at com.mbrlabs.mundus.editor.ui.UI.(UI.kt:47)
... 13 more

[09:08][Fatal][Log] Uncaught exception occurred, error report will be saved
I ran Mundus in IntelliJ IDEA...

NullPointerException on build.

I tried building the project from the command line and after the dependencies were downloaded, I got a NullPointerException. Here is the full message:

[08:34][Fatal] java.lang.NullPointerException
at com.mbrlabs.mundus.core.Mundus.dispose(Mundus.java:238)
at com.mbrlabs.mundus.Editor.dispose(Editor.java:234)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.dispose(Lwjgl3Window.java:281)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.cleanup(Lwjgl3Application.java:153)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:104)
at com.mbrlabs.mundus.Main.main(Main.java:51)

When dispose is called, goPicker, toolManager, commandHistory, and projectManager are null. When I tried to comment out those dispose() calls, I got this error:

[08:35][Fatal] java.lang.IllegalStateException: frame buffer couldn't be constructed: incomplete     attachment
at com.badlogic.gdx.graphics.glutils.GLFrameBuffer.build(GLFrameBuffer.java:223)
at com.badlogic.gdx.graphics.glutils.GLFrameBuffer.<init>(GLFrameBuffer.java:118)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:57)
at com.badlogic.gdx.graphics.glutils.FrameBuffer.<init>(FrameBuffer.java:45)
at com.mbrlabs.mundus.tools.picker.BasePicker.<init>(BasePicker.java:40)
at com.mbrlabs.mundus.tools.picker.GameObjectPicker.<init>(GameObjectPicker.java:39)
at com.mbrlabs.mundus.core.Mundus.init(Mundus.java:105)
at com.mbrlabs.mundus.Editor.create(Editor.java:83)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.initializeListener(Lwjgl3Window.java:272)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:239)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:127)
at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:97)
at com.mbrlabs.mundus.Main.main(Main.java:51)

[08:35][Fatal] Uncaught exception occurred, error report will be saved

I don't know enough about Libgdx or this project to fix the bug but hopefully it can be fixed. This happened on macOS.

Procedural terrain generation

Implementation of some common noise functions (e.g. Perlin noise) for the terrain (Terrain.java).
Each noise function should have it's own class to keep the terrain class clean.

UI controls should be implemented in the Terrain widget of the inspector (TerrainComponentWidget.java / TerrainGenTab.java).

The project can't be run on MacOS X

Hi,
Considering you've switched this project to use LWJGL3, these changes require passing additional property to JVM on MacOS X( any 7\8 jvm will fail): -XstartOnFirstThread
Otherwise application fails during the start with the following:
Exception in thread "main" java.lang.ExceptionInInitializerError at org.lwjgl.glfw.GLFW.glfwShowWindow(GLFW.java:1689) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.setVisible(Lwjgl3Window.java:174) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.createWindow(Lwjgl3Application.java:326) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:92) at com.mbrlabs.mundus.Main.main(Main.java:40) Caused by: java.lang.IllegalStateException: Please run the JVM with -XstartOnFirstThread and make sure a window toolkit other than GLFW (e.g. AWT or JavaFX) is not initialized. at org.lwjgl.glfw.EventLoop$OnScreen.<clinit>(EventLoop.java:64) ... 5 more

The fix that worked for me was modification of the editor/build.gradle script with extension of the task run with the following:
jvmArgs "-XstartOnFirstThread"
There is another issue with LWJGL3 and keyboard input that I will post separately.

Extending this to a full game engine?

Since the world editor already exists it would be really cool to extend it into a more feature rich game engine/creator similar to unreal and unity.
I would like to contribute. Its also ok if you dont want to since I can fork the project and extend it by myself.

Projects loading is not working any more.

During the start Mundus tries to load the last project. If you have exited Mundus with "Exit" option in Exit Dialog and not the "Save and Exit" option, the following behaviour occurs:

Unf-ly, something is really wrong in the latest version -- projects loads suc-ly, but the view misses objects and terrain:
image

Please check the log of start:
image

And see the actual view.
I've added the new terrain and closed Mundus
Please see the log of Mundus shutdown:
image

As one can see, Mundus still has all the assets it has loaded during the start. But nothing was visual, and tree was empty. :(

Do we need bulk selection mechanism and support for bulk operations?

Hi All,
Want to use this issue as disc-n for the titled topic.
IMHO, bulk operations are really important for any world editor:

  1. we can apply the same material to multiple game objects
  2. we can set the same orientations or scale to the group of objects or translate them by some coordinates difference.
  3. in real engine we will also specify game properties, kinda speed, stamina, health, etc.
  4. etc.

The multiple selection should be possible from the tree navigator and with ribbon lasso in the world's view, e.g.:
image

What do you think guys?

Model import

Make ModelImportDialog UI more intuative.
Also inform user about fbx-conv if not set in the settings dialog.
Currently the editor crashes when trying to import a fbx model and the binary path to fbx-conv is not set correctly.

Uber bug with assets.

Ok, so the latest version has complitely redesigned assets manager. Which comes with lots of issues.
Please see the image attached.
textures_loading_management_issues

In short:

  1. The "Assets" menu lets you load only models, not textures.
  2. To load texture one can use only submenu of the button before "Gift box button".
  3. One can load the same texture multiple times which is waste of the resources.
  4. Assets outline shows only models, not textures. :(

Child node translation

  1. Set a game object C as child node of node P.
  2. Rotate P
  3. C now translates on the rotated axis of the parent node.

That's not really a bug, but confusing, since the translation handles of the tool are world axis aligned.
Make it so, that one can switch between local & global space.

3d Model thumbnail creation

Render model to offscreen framebuffer, fetch pixel data and save image thumbnail.
This feature can be developed independently as util class. This will be useful for #43

Documentation

Could you add some user documentation to the wiki? I built Mundus from the Git repo, downloaded the MundusDemo project from the other Github project, but all I could figure out how to do was move the camera XYZ with the QWEASD keys. I installed (and tested) fbx-conv and pointed to it in Mundus settings, but still all OBJ imports failed, advising to pick the right file and set the right fbx-conv. Clicking Add Component didn't seem to add a component, etc. How to exercise these features (and whatever else, like procedural terrain generation, etc)?

New feature: Minimap with navigation means.

Hi All, just bringing new idea. :)
I think, we need Minimap functionality with support for navigation by click.
Minimap should show heights of terrain( probably by using some pallette to distinguish different heights). Also, it should show all the gameobjects as dots\circles\etc.
By clicking on some region of minimap, camera will be immediately relocated to the corresponding position on the corresponding terrain.

Materials

Add materials to everything, that can be rendered. This consists of 3 parts:

  1. Add Ui elements to deal with material values (inspector; per component widget)
  2. Update all shaders, so that they can handle materials
  3. Update the Kryo serialization for all components that have materials

Asset browser improvements

  • Rename assets
  • Delete assets (check for asset usage before allowing that)
  • Organize assets in folders
  • Search by name
  • Filter by asset type

NPE when setting Fog color for first time.

When I try to set Fog params, selection of the color for Fog results in
[23:19][Fatal][Log] java.lang.NullPointerException
at com.mbrlabs.mundus.ui.modules.dialogs.FogDialog$4.selected(FogDialog.
java:124)
at com.mbrlabs.mundus.ui.widgets.ColorPickerField$1.finished(ColorPicker
Field.java:97)
at com.kotcrab.vis.ui.widget.color.ColorPicker$2.changed(ColorPicker.jav
a:118)
at com.badlogic.gdx.scenes.scene2d.utils.ChangeListener.handle(ChangeLis
tener.java:28)

Note, if you save project -- next time it works ok. If you see some values in the Fog dialog -- it will work.
According to code, either getFog(), either getFog().color is null.

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.