Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collaboration with Terasology project? #6322

Closed
brylie opened this issue Aug 27, 2017 · 39 comments
Closed

Collaboration with Terasology project? #6322

brylie opened this issue Aug 27, 2017 · 39 comments
Labels
Controversial Low priority Request / Suggestion The issue makes a suggestion for something that should be done but isn't a new feature.

Comments

@brylie
Copy link

brylie commented Aug 27, 2017

Continuing discussion from #6309

Is there another voxel game engine that Minetest development could be aligned with? I.e. a fuller-developed game engine might give the game a boost in many ways, while allowing MT developers to focus on game features/mechanics.

While Minetest engine is making incremental progress with engine features, such as dynamic shadows, it may be a long and winding road to enhance the engine. There seems to be at least one other active voxel engine community, called Terasology, who are quite far along the road in terms of world engine development.

In what ways can our communities work together to share the best parts of our game engines/game mechanics, so our players have a great gameplay experience?

@HybridDog
Copy link
Contributor

In minetest performance is an issue, the game should work on old hardware and it's programmed in c++, whereas terasology requires recent hardware, has interesting graphics and is programmed in java.

In terasology there are a lot better looking object collisions (see #6076 (comment)). Maybe they can be ported to minetest.

@SmallJoker SmallJoker added the Request / Suggestion The issue makes a suggestion for something that should be done but isn't a new feature. label Aug 27, 2017
@paramat
Copy link
Contributor

paramat commented Aug 27, 2017

If Terasology devs are working in Java then it's not likely they will want to work in C++ for MT, especially since devs of both are probably already overwhelmed by their own project. I expect MT devs do not want to work in Java for Terasology, their code is difficult to work with and has been used as an example of unreadable coding in our own code guidelines.

Doesn't seem a realistic suggestion.
If devs of either want to work for the other project then they will do so, i don't think discussing it will have any affect, seems a waste of time.

who are quite far along the road in terms of world engine development.

We are enhancing the engne and it is well developed, you're focussing on fancy effects.

@brylie
Copy link
Author

brylie commented Aug 27, 2017

@paramat can you think of any constructive response to the original question? E.g. what are some possibilities for collaboration? What are some ways the developers could actively learn from one another.

Your responses so far have been:

  • negative
    • "Doesn't seem a realistic suggestion."
    • "No, we want to do things our own way, and alignment would be a disruptive nightmare for both games."
  • dismissive
    • "i don't think discussing it will have any affect, seems a waste of time."
    • "I suggest you learn C++ (it's not difficult at all) and start working on shaders for MT."
  • harshly critical
    • "their code is difficult to work with and has been used as an example of unreadable coding"
    • "MT is by far the best and most developed free open source voxel game, we all consider the others inferior (because they are)."
  • speculative
    • "The other project won't want to give up their focus on non-fancy-effect aspects"
  • misconstrued
    • "You're only suggesting this due to the lack of the more fancy visual effects."

If Minetest developers want to build an inclusive community, it is important to be respectful and open to new ideas.

@rubenwardy
Copy link
Member

rubenwardy commented Aug 27, 2017

fuller-game engine

Just thought I'd clarify a few points. Irrlicht is a 3D rendering engine, not a game engine. Minetest creates the game engine by providing sound and networking on top of it. Minetest and Terasology are incompatible, as they have different languages, architectures, rendering engines, design philosophy, and more.

There are none, MT is by far the best and most developed free open source voxel game, we all consider the others inferior (because they are).

Heh. It's worth realizing that this is an echo chamber, so you can get past the halo effect. There are some things that Terasology does get right, such as its modularity and its rendering. (Although admittedly that impression is only from screenshots and brief look through of its source).

who are quite far along the road in terms of world engine development.

What does this even mean?

since devs of both are probably already overwhelmed by their own project.

This is a valid point, however contributors may like both (@Calinou has in the past).
That's unlikely to happen though, most people wouldn't want to split their efforts.

I expect MT devs do not want to work in Java for Terasology, their code is difficult to work with and has been used as an example of unreadable coding in our own code guidelines.

Terasology probably goes a bit too far into Java factory land, however Minetest is arguably worse in that it doesn't go far enough. It's on my road map to separate Game to try and get separation of concerns.

In what ways can our communities work together to share the best parts of our game engines/game mechanics, so our players have a great gameplay experience?

This is quite vague, as is this whole issue.

@paramat
Copy link
Contributor

paramat commented Aug 27, 2017

I'm being realistic, stating my opinions and stating what i see as obvious truths, if you see these as negativity that's your problem not mine.
If i consider a suggestion as ridiculous i'm obviously not going to want to be 'constructive' as you see it, by agreeing and going along with the idea, yet you imply this is me being unreasonable.

@brylie
Copy link
Author

brylie commented Aug 27, 2017

In minetest performance is an issue, the game should work on old hardware

@HybridDog great point.

We play Minetest at home with three laptops of varying capabilities. The older ones are running Ubuntu and Lubuntu, since they have limited resources, and we wouldn't want to lose the ability to run Minetest on those laptops.

It seems like there may be some leeway with the design, where more advanced features could be toggled on/off to match the hardware capabilities.

@rubenwardy
Copy link
Member

It seems like there may be some leeway with the design, where more advanced features could be toggled on/off to match the hardware capabilities.

Agreed, it should be possible to have opt-in visual improvements on newer faster machines, whilst keeping older machines happy.

@brylie
Copy link
Author

brylie commented Aug 27, 2017

@rubenwardy thanks for the clarifying questions.

By 'quite far along in terms of world engine development', I was simply noticing that the Terasology engine is quite well developed. I can't find a complete feature list, but it seems like Terasology and Minetest have similar ambitions in terms of terrain generation and possibly other world engine features.

This is quite vague, as is this whole issue.

The issue is intentionally vague, or open-ended. My hope was to promote constructive discussion about how the Minetest developers might collaborate with the Terasology developers.

Terasology probably goes a bit too far into Java factory land, however Minetest is arguably worse in that it doesn't go far enough. It's on my road map to separate Game to try and get separation of concerns.

Where can one view the Minetest roadmap?

@paramat
Copy link
Contributor

paramat commented Aug 27, 2017

Roadmaps:
http://c55.me/blog/?p=1491
https://forum.minetest.net/viewtopic.php?f=7&t=9177

@celeron55
Copy link
Member

I should note that some people hate paramat for always linking those roadmaps that I haven't updated literally in years. But I guess they're fine as an introduction.

@paramat
Copy link
Contributor

paramat commented Aug 27, 2017

To be fair, that 'some people' is 1 person who left the project and who has an obsessive hate for me anyway.

@celeron55
Copy link
Member

Oh, and, I think this is a good issue to have around. If nothing really comes out of it, at least we have some kind of a log for what has been suggested and thought about.

@rubenwardy
Copy link
Member

Those road maps don't really match the reality. It's probably worth stating our current direction somewhere.

The problem is that it's currently quite chaotic in development. So as well as generalising our direction, it may be worth encouraging core devs to publish their own personal road maps / aims.

@ghost
Copy link

ghost commented Aug 27, 2017

and who has an obsessive hate for me anyway.

It’s not hard to hate you 😄

The problem is that it's currently quite chaotic in development.

Always feels like every core dev does his own thing and rushes it into release no matter if it fully works, is useful, or is not secure.

@nerzhul
Copy link
Member

nerzhul commented Aug 27, 2017

one point about the incompatibility, it's wrong, terasology can, if needed wrap minetest C++ core using JNI interfaces

@nerzhul
Copy link
Member

nerzhul commented Aug 27, 2017

my own personal roadmap is

  • to include CSM hud with @red-001
  • PR NpcSAO a new SAO object purely dedicated to modders, less generic than LuaEntitySAO permitting everybody to easy have high performance SAO object with NPC, and code only IA over it

@C1ffisme
Copy link

What are the details on this collaboration? Are we:

  • Helping to code features into Terasology (Unlikely, they seem to have more features than us, even if you can't use them on a crappy laptop like mine...)
  • Getting help from them to code features into our game (Likely to be what you want, but running on old machines seems to be one of the goals of Minetest, so I can't see this happening)
  • Merging both projects into one (Very unlikely, considering both projects use two totally different programming languages, and have very different goals.)
  • or Making some kind of brand collaboration for the sake of advertising? (Super unlikely, considering Minetest doesn't really have mascots or branding.)

@brylie
Copy link
Author

brylie commented Aug 28, 2017

terasology can, if needed wrap minetest C++ core using JNI interfaces

I am not sure what this means on a technical level, but it sounds like it might enable code sharing between the projects.

Perhaps the Terasology and Minetest projects could agree on a common API or plugin model. Then, for example, Terasology might be able to use Minetest Lua mods or Minetest might be able to hook in to Terasology rendering features (such as shaders).

@brylie
Copy link
Author

brylie commented Aug 28, 2017

What are the details on this collaboration?

My intuition is that the projects could lean on one another, embrace each other's strengths and augment each other's weaknesses.

For example, Terasology rendering features might be integrated into Minetest. Also, Minetest mods might be made compatible with the Terasology engine through a plugin API/facade.

@nerzhul
Copy link
Member

nerzhul commented Aug 28, 2017

minetest has an API, terasology should implement the API java side if it wants to be compatible, we know projects have the same goal, but minetest community and modding is big, terasology is just nice :)

@brylie
Copy link
Author

brylie commented Aug 28, 2017

As one short-term goal for this thread, we could try to reach consensus about some possible ways the projects could collaborate. Then, we (or I) could summarize those ideas in a brief document, and post an 'invitation to collaborate' on the Terasology forum or GitHub repository.

The Terasology developers could, hopefully, respond with their thoughts on the proposal.

@nerzhul
Copy link
Member

nerzhul commented Aug 28, 2017

you can, but personally i think MT has many things to do before collaborating with another project which is absolutely not minetest cup of tea (java...)

@Ferk
Copy link
Contributor

Ferk commented Aug 28, 2017

It would be interesting if it was possible to agree on a Lua API that any voxel engine in the style of Minetest could implement (not just Terasology).

However, I feel the Lua in Minetest is very ingrained with the particularities of the engine and making it more generic would probably take away more than what it would bring. It will probably complicate development of other interesting features. Not having to go the extra step of seeking intercompatibility across engines allows the API to evolve with more freedom.

Perhaps it's better to let each engine do its own thing. If the Terasology project is actually interested in offering a Lua API similar to Minetest they can check out the code for inspiration, and then if they come out with a nice design of their own API maybe it would be interesting to support it in Minetest as well, in some level or form.

Same for texture packs, etc. But I think Terasology needs to want to do it. Minetest has an already established ecosystem of community content, so I think the other engines should be the ones taking the first step for cooperation if they want some level of compatibility. Does Terasology actually want this?

@nerzhul
Copy link
Member

nerzhul commented Aug 28, 2017

in fact a lua api is generally very close to core engine, because it needs high performance

@C1ffisme
Copy link

My intuition is that the projects could lean on one another, embrace each other's strengths and augment each other's weaknesses.

This statement is still pretty vague, but at least you ruled out my idea of a brand deal. (Which makes no sense. They could put MESE in Terasology, sure, but that's a pretty vague reference.)

For example, Terasology rendering features might be integrated into Minetest. Also, Minetest mods might be made compatible with the Terasology engine through a plugin API/facade.

Now this actually sounds less vague, but there are certain things that really wouldn't be plausible. Sure, being able to make new nodes, tools and items is a piece of cake, but other features like schematics or aliases might require major changes to the Terasology engine.

(Although to be fair, I don't know much about Terasology's engine or modding capabilities, seeing as I can't get it to run well on a puny little Lenovo Thinkpad T420s.)

Currently, I know of two open-source projects that are going for a Mario style of gameplay, those projects being Supertux and Secret Maryo Chronicles (Which could be dead... Not sure.), but you wouldn't really merge those two projects together, now would you? (Although a brand deal makes more sense here. :P )

@HybridDog
Copy link
Contributor

supertux and smc don't have mods as far as l know. But being able to load/convert supertux levels and worldmaps to smc and the other way round would work l guess.
You need to consider that minetest is a complex game with focus on creativity regarding gameplay. Converting levels between those games is like converting maps between minetest and terasology. Manually rewriting a mod for the other game is a lot easier than making APIs compatible and maintaining it, which is a huge amount of work and may sometimes significantly slow down development due to compatibility problems l think.
btw, smc is now developed as tsc, see https://github.com/Secretchronicles/TSC

@C1ffisme
Copy link

@HybridDog Now converting worlds sounds like a much more reasonable idea for a collab. (As long as Minetest has a subgame with the same items, etc.)

(You wouldn't really be able to convert Supertux levels into SMC levels or vice versa, though, because I've used the level editors for both. Supertux uses a tile-based system, while SMC has chunks of ground that can be freely moved without any grid constraints. Converting SMC levels into Supertux levels would potentially lose data.)

@brylie
Copy link
Author

brylie commented Aug 29, 2017

Here is a simple diagram of the compatibility model:

screenshot_20170829_110321

Basically, the compatibility layer would allow game assets to be freely re-used in any supported Voxel game (engine).

@C1ffisme
Copy link

C1ffisme commented Aug 29, 2017

@brylie Okay, I guess I understand a bit more what you want. Some of this seems a bit more plausible.

(Skins are the most possible, graphics in the form of texture/resource packs are possible, AI might not work because Minetest has no AI, and Minecraft hardcodes its AI. Plugins and Mods would require either game to significantly change how it handles mods if at all.)

@brylie
Copy link
Author

brylie commented Aug 30, 2017

Minetest has no AI

By AI, in the context of Minetest, I think of 'mobs' or 'traders' (NPCs that can be scripted).

Plugins and Mods would require either game to significantly change how it handles mods if at all.

The compatibility layer might bridge different plug-in APIs. Think of it as an adapter.

@brylie
Copy link
Author

brylie commented Aug 30, 2017

graphics in the form of texture/resource packs are possible

Should textures and resource packs then be considered separately from rendered effects (e.g. shaders and particles)?

@paramat
Copy link
Contributor

paramat commented Aug 30, 2017

Those road maps don't really match the reality.

They do actually in fundamental approach and philosophy, what differs are some specifics, for example VAEs are not being worked on, and CSM was intended to be server-provided mods only but is currently clientside mods (unfortunately).

The problem is that it's currently quite chaotic in development.

Not necessariy a bad thing, it's always been quite intuitive and artistic and the result is good.
People worry far too much about 'lack of direction'.

Always feels like every core dev does his own thing

It's voluntary work, so we obviously work on what we feel like working on and what we are interested in, from these combined interests the 'direction' naturally arises.

and rushes it into release no matter if it fully works, is useful, or is not secure.

Apart from a few inevitable mistakes, not so at all.

@brylie
Copy link
Author

brylie commented Aug 30, 2017

Admittedly, part of the motivation for this issue was to encourage high-level thinking, planning, and coordination between developers and projects.

Being volunteer run, and motivated by curiosity and learning are understandable. But as projects and ideas mature, architecture and coordination/collaboration become increasingly important.

@paramat
Copy link
Contributor

paramat commented Sep 10, 2017

We decided to keep this open for a while, but now closing. MT devs are not interested in collaboration and there's no news of contact with Terasology.
The compatibility layer suggestion is so radical it would have to be a fork of Minetest.
Feel free to continue discussion, closing doesn't mean discussion is discouraged, we just don't want the issue being marked for attention.

@numberZero
Copy link
Contributor

numberZero commented Dec 28, 2017

Terasology seems to be very fancy. I’m aware of the fact paramat hates fanciness, but there are other opinions as well.
And while I do agree with paramat and other devs that direct collaboration is neither feasible nor plausible, we might be interested in Terasology’s textures (they are generally easy to adopt) and shaders (may need more work, but actually they are what makes the game look fancy). Also note that while the code is totally incompatible, algorithms aren’t, they may be ported, if necessary.

@paramat
Copy link
Contributor

paramat commented Dec 28, 2017

This is not just about me so no need to focus on me here, the other devs also considered this suggestion impractical and did state their opinions, as did non devs, i just wrote more comments. Obviously there are other opinions, no need to imply there aren't.
Apart from that, numberZero i agree with you.

@ThomasMonroe314
Copy link
Contributor

I've played Terasology(yeah ik, I'm a traitor ;D) and the effects they have achieved with shaders is amazing.
Also collaborating with them would IMHO not bring any negative results, it may however not bring any positive results either, but I don't think it would harm anything.
This is just my opinion, treat it like a buffet, take it or leave it :)

@brylie
Copy link
Author

brylie commented Dec 8, 2018

Hei all. I have been chatting with Terasology community/devs recently, and there seems to be some recognition that Minetest codebase is well organized and the project fills some gaps that are missing in Terasology. At least one of the project managers has expressed interest in trying to figure out how to incorporate parts of Minetest into Terasology, but nothing committal. I really think this would benefit both projects if we could combine our scarce resources and build on each others' work.

@HybridDog
Copy link
Contributor

HybridDog commented Dec 8, 2018

Minetest lacks people which are experienced with shaders as far as I know, maybe some Terasology developer could help.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Controversial Low priority Request / Suggestion The issue makes a suggestion for something that should be done but isn't a new feature.
Projects
None yet
Development

No branches or pull requests