My name is Balázs Jákó, and I am the developer of Merlin3D game engine. I have opened this topic because I would like to get some feedback about the engine and its progress. I would like to know if there is a feature you like or another that you think is missing. Any constructive comments and suggestions are welcome. I will try to use these information to select features to be implemented in the future.
As long as the development is not funded by anyone, the progress is quite slow.
The engine is a standalone engine, not a BGE replacement, but the current pipeline focuses on importing from Blender3D as many assets as possible.
The engine is a work in progress and it is far from complete. It uses deferred rendering with full dynamic lighting and advanced shader features. There is a tool script that exports many object types directly into the engine from Blender3D, like meshes, lights, materials, etc.
The game logic is fully script based, there is no fancy “Node” based GUI logic editing, only the bare metal Lua code. In return, the development of the logic is quite quick (if you are familiar with Lua and the engine internals), and implementing a complex game behavior is more straightforward than clicking countless GUI elements together. Script support is as all-embracing as possible: all important engine objects can be controlled from script, so the control is (almost) total.
The engine looks great. I think I saw it earlier when a member here mentioned that he worked on it, though I’m not sure who it was (or if it was indeed here). The lighting and shadows look really great. I would have to say that the engine is probably fine already. I would only change some things based on personal opinion.
For example, I personally dislike Lua overall, so I would choose Python or possibly C# (or another C implementation) over it, perhaps even ActionScript (if possible to implement), or another easy to use scripting language. Lua just kind of rubs me the wrong way.
Also, I think it’d be a good idea if the tool script allows one to export materials (including node-based materials) from Blender to the engine. That way, you could get visual feedback on your creation while you tweak settings.
The engine looks pretty snazzy from a brief look over the blog. The deferred rendering & custom shaders really pay off
For what it’s worth, your artist is pretty damned good too (double kudos if it’s you ). One of the things about many “single developer” game engines is the lack of decent art makes them look more subpar than their capabilities actually represent. Not so with your videos. The small level, lighting, sounds, decals, etc all provide a good “sandbox” to demonstrate the engine - well done.
RE: Languages & Lua (i.e. BluePrintRandom) To answer your question regarding a “raw language” - no, there is no “base language” from which all other languages could be automatically compiled into. Python has a very different platform from, say, C# and vice versa. There are commonalities between the two (which is how IronPython is built on .NET) but there are enough differences to make it difficult-to-impossible to compile between them.
Let’s look at the example of Python & Lua (oft raised in these forums and I’m familiar with both). Python has a global namespace meaning any object you want to keep around can be found be code running elsewhere - no exceptions. Lua has the concept of a global namespace, but you can create new, restricted spaces for running certain functions so they cannot access any objects but those the coder wants them to. Python has generators, Lua does not. And so on.
As for the question "What is Lua like?, it’s perfect (in my opinion) for what it is designed for, less so for what it isn’t. It is designed to be a small, fast, thread-safe, easily extended scripting language for embedding in other applications. This makes it ideal for embedding in game engines and the like. Which is why World Of Warcraft and hundreds of other games use it Lua is not designed to be a standalone scripting language with mountains of libraries one can use to put together any application you can think of on the fly. Python is and fills that niche quite well. As for the community, it’s alive & thriving. One of the more exciting projects in it would have to be LuaJIT by Mike Pall which is seeing execution speeds on certain benchmarks exceeding natively compiled C code
Last question, “Can you port Python to Lua?” The answer to that depends on what you are porting. Most basic logic is simply expressions which port over very easily. The difficult part of any porting job is the LIBRARIES you rely on. If you are using specific Python libraries, it’s unlikely the job will be easy to port over unless there has been a Lua equivalent created (same goes for vice versa, Lua to Python). For game engines that have both a Lua & a Python scripting interface, the changes are very easy and (in general) run faster & use less memory with Lua.
It looks like a neat engine, but for now, I will see about waiting for the final result of the second phase of the BGE harmony project as it seems most of the advantages at this point stem from graphics.
To note; a developer known as Kupoman is developing an inferred lighting system for the BGE, something which is more advanced in general than deferred lighting because it has full support for transparent objects among other things.
Good work so far, but I still think the BGE will remain a viable option for me considering what is currently being developed and the fact that porting some of my projects over would be a tremendous amount of work (especially the complex logic which I would have to start over in using a language I’ve never learned).
I wouldn’t say inferred lighting is “more advanced than deferred lighting” as it IS deferred rendering, just with a stippling hack special case for transparency. While a clever hack, it is exactly the same as standard deferred rendering except when rendering alpha transparency… and there are some major limitations it imposes on lighting that as well
More details can be found in the original paper which describes what it is, the limitations involved, and how it can be incorporated in a standard deferred rendering pipeline. Not trying to be a pain, it’s just that there are quite a few people that think that inferred rendering is the next step up from deferred rendering (which is the next step up from forward rendering) when it is simply a special case transparency trade-off in the larger scope deferred rendering techniques.
In the case of the BGE itself, we at least have the logic bricks which can be used for some of the heavier logic if needed (considering the fact that they do run native C++ code).
As for Lua vs. Python, how much flexibility does Lua provide for cases where you need to add non-game specific elements to a game (like saving everything to a file and then browsing those files.)? Do you think it be easier for the Blender devs. to just patch Python to allow multi-threaded processing since there’s been so much work on it over the years?
This seems to have nice graphics features. How do you handle materials and shaders ?
I Would like to see the coding part
How are objects managed ?
Is this a per-object scripting where the script is attached to an object with the editor ?
Or is this a code oriented engine, where you handle the main loop of the game yourself and handle everything by code ?
I mean :
What about cinematics ?
Any SDK release planned ? Free version (for non-commercial) and Pro version maybe ?
What about the Licensing ? What would be good is one like unreal : a base price around 100$/200$ then depending on the game benefits, you can take a small percentage on it.
Do you have a website for the engine ? I can only find the blog, this thread, a facebook page, and a youtube channel, where i couldnt find the informations i was searching.
This needs additional things :
A website, linking everything.
A wiki with basic tutorials
A documentation, api for the engine and the lua scripting
Very nice frames per second,
nice clipping distance
is there a engine level LOD?
I love your work,
why not just make your own environment I can buy and link to blender ?
you need a full game, to demo this to a big company…
Could you just use python but a much smaller library?
not that I hate Lua, (I just don’t know it yet)
better yet, make it so you can choose? if your library is python it uses it?
(I know that would be an insane amount of work)
I watched the video, I believe the BGE can already do quite a bit of those graphical effects with sunlamp shadows, 2D filters, and node shaders.
As for Bullet vs. PhysX, I thought I read on the Unity forums a long time ago about a rumor that Nvidia has crippled the CPU-only version of that engine to ‘encourage’ the use of their GPU’s to do it. I’m not sure where that stands now, but a lot of Unity games on Kongregate tend to get bogged down a bit when there’s more than a dozen or so physics objects on screen. (though I can’t say for sure if it’s due to that allegation).