Jump to content
frednaar

Mono runtime integration

Recommended Posts

Hi,

 

possibly Josh already knows about this article

Scipting with Mono

 

this is the way Unity got C#, Javascript and Boo to work in his engine. Even though I am a professional C# programmer I don't know enough about C++ integration to understand how much this would fit into LE3 development

 

Since I believe many people would like LE approach much more than Unity approach as I did, from the marketing point of view integrating the same scripting languages plus LUA and BMax might give LE3 sales a boost and make c# programmers happy too :D ...

 

Also multi platform deployment (OS, Linux etc...) would be easier for the average programmer ....

 

Bye

Fred

Share this post


Link to post

We use Lua for scripting, and the implementation is finished.

Share this post


Link to post

I think what most people don't understand is the difference between scripting and coding.

LE uses Lua for scripting, and it uses Lua and all other languages for coding.

Share this post


Link to post

But, I think what most programmers don't understand is that they shouldn't be so cocky to think that they're "God Of Programming" and that there is ever a little chance that someone else has a cool idea to improve your own work.

 

Like frednaar, I find Mono much better than every custom script editor you could build yourself for LE, because it supports very many different language, it's cross-platform and YES even scripting languages like Javascript or LUA can be coded there, please read here before judging. You could use Mono for LE to have one only IDE to program in LUA, C# and even C++ (this one only for Windows platform it seems).

 

You guys should do at least a little search before being so sure of what you think, or at least argue your thoughts.

Share this post


Link to post

Wow ZioRed. Mono is supporting LUA. I have totally missed that.

That is really cool. Have to try it out.

 

Thanks for that info.

Roland

Share this post


Link to post

But, I think what most programmers don't understand is that they shouldn't be so cocky to think that they're "God Of Programming" and that there is ever a little chance that someone else has a cool idea to improve your own work.

 

Like frednaar, I find Mono much better than every custom script editor you could build yourself for LE, because it supports very many different language, it's cross-platform and YES even scripting languages like Javascript or LUA can be coded there, please read here before judging. You could use Mono for LE to have one only IDE to program in LUA, C# and even C++ (this one only for Windows platform it seems).

 

You guys should do at least a little search before being so sure of what you think, or at least argue your thoughts.

 

Just thought that I'd point out that Mono is NOT an IDE nor an editor. It's a combination of a compiler (with multiple frontends to handle C#, IronPython, Boo, etc.) and a runtime. What you're thinking of is Mono Develop, which isn't related to the Mono project (it gets it's name because it runs on top of Mono and can be used as a frontend to the Mono toolchain, but they are completely separate projects and development teams).

 

I like the idea of embedding mono, but it's not something I'd push for from Josh either. If you want to embed Mono into Leadwerks, you've already got the tools to do so.

Share this post


Link to post

Lua has features that make it ideal to work together with a flowgraph, so i am not changing it. Plus it's used in World of Warcraft, Crysis, and hundreds of other games.

Share this post


Link to post

I think what most people don't understand is the difference between scripting and coding.

LE uses Lua for scripting, and it uses Lua and all other languages for coding.

 

In case of the mono runtime as I understand you would be doing both due to JIT compilation ?

 

Quote from the above link...

Mono offers the same functionality that developers have used to extend their application with a safe environment for scripting language with Just-in-Time compiled code.

 

Scripting languages tend to be interpreted, and as such are not as fast as native code. Mono expands the option of scripting language users to use languages that are suitable to be JIT-compiled into native code. The performance is typically much better than those of a scripted language and many of the high-level language benefits are still available to the developer.

....

Higher-level constructs and game play are typically implemented in a scripting language. The problem that game developers face with scripting languages is that they are usually the major performance bottleneck in a game. After spending years fine-tuning their C, C++ and assembly language code and taking advantage of every little trick in their GPUs, the game play ends up running very slow because the scripting language is just not as fast as it could be.

....

The Unity3D game design engine uses Mono to provide scripting capabilities to the applications and games built with it by supporting Boo, C# and UnityScript (a strongly-typed version of Javascript which helps make the code faster).

 

Anyway I highly respect any decision made by people 1000 times more experienced than I am... I just throwed an idea as I'd really like to see LE3 meet a huge success...

Share this post


Link to post

Generally I shy away from these discussions. All that matters is getting a job done as painlessly as possible, I don't put languages/engines above the other unless it inhibits the end goal in some way. If I were a mechanic servicing a car one spanner is much like another. So long as it fits.

 

Unity has a footprint that's recognised by studios, some of the interviews I had with Codemasters and the like were Unity centric. They want Unity programmers for the social gaming gold-rush. You can pull in a lot of really bad community or asset store scripts that come in different languages that don't *quite* do what you want and throw out some polished (disposable) content in a short amount of time.

 

My LE experience has been marginally better than with Unity. I really don't like scripting, it hides things from me. When it comes to script implementations, how do I know when something is getting processed by the engine? What are the performance costs of doing animation at the script level as opposed to iterating in compiled code? Is the implementation complete? How can I verify?

 

I have problems with LUA scripts in LE (model scripts) and will avoid if possible. I tried it early on and came to the realisation for doing mundane things like blinking lights it's fine. Script errors can go hidden and simply stop further processing for a model with no indication as to what is wrong. Debugging anything complex is simply not worth the time. Unity scores big time with the ability to pause to step through scripts and watch values. If I could do that with LUA in LE then it might have saved some time, I'd still shy away from complex scripts because of the level of doubt that comes with it (I think it unlikely that the LUA interpreter in LE is threaded, I don't know this, it's not documented anywhere). Not everyone is performance centric though.

 

Mono I know little about. As a language it seems much like any other, differences seem to be strength of typing (Oh goodness I have issues with LUA for that but that makes it ideal for artists) and the objects used. All I care about is performance and ease of use.

 

So after 5 paragraphs that I suspect nobody will read, I have no opinion on Mono except I don't like scripting too much unless there's documentation about implementation and performance.

 

What a waste of time this reply was :)

Share this post


Link to post

Debugging anything complex is simply not worth the time. Unity scores big time with the ability to pause to step through scripts and watch values. If I could do that with LUA in LE

 

I believe Josh has this functionality working for LE 3.

Share this post


Link to post

Mono is not a scripting language per se, it is the Novell Multi platform equivalent of NET Framework and it supports just in time (JIT) compilation

 

This is like ASP.NET where your code is not executed as a script but compiled just in time (i.e. when it changes or when application starts) so the performance should be similar to compiled Lua.

 

The framework thanslates any supported language (C#, VB, LUA, Javascript, BOO etc...) into intermediate language which is then compiled by mono in real time upon launching the application (as I understand).

 

My idea rough idea was about integrating the Mono runtime instead of creating a NET wrapper with P/Invokes . That would allow to program LE with compiled code performance in several languages with a single effort, as well as using Mono Develop as a fully featured code editor.

 

As Brent says it could possibly be a community project....

Share this post


Link to post

The Lua implementation in LE3 goes into a lot of detail with code stepping and debugging. It makes things very transparent:

http://www.leadwerks.com/werkspace/blog/1/entry-658-lua-and-c-debugger/

http://www.leadwerks.com/werkspace/blog/1/entry-655-tools-and-stuff/

 

I don't think supporting five different scripting languages through a third-party JIT compiler that may or may not match the original language behavior 100% is going to provide as good a result. I'd rather choose one script language and put all my effort into that. LuaJIT also makes Lua about as fast as C#, and I can turn it off and on with a single command.

Share this post


Link to post

I really think the stepping through code part was the missing piece with Lua. Not being able to do that in LE 2 currently makes it painful to debug. Most people have just latched on to the stepping through code for debugging and expect it. So the fact that LE 3 will have that for Lua is a massive plus and would really slow down any sort of .NET steam for scripting. The remaining thoughts about .NET would be all of the supporting functionality that comes with it that Lua doesn't have, although C++ and BMax people have been working fine without all that functionality so far anyway.

Share this post


Link to post

I would 100% agree with Flexman's comments with regard to LE2 which is why I have pretty much ignored Lua. However, Lua in LE3 sounds much better supported and as all I would use a scripting language for is implementing game play logic and AI it matters little to me which language is used so long as it's a capable language and has full debuging support. I tend to agree with Josh when he says:

 

I'd rather choose one script language and put all my effort into that

 

If you intend writing your entire game engine in the scripting language then the choice of language might become more important, but I have never seen the point of doing this when LE3 will support multiple languages anyway. Keep the scripting language for scripting!

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...