CryMono v0.1 is the first public release of the C#/.NET implementation for CryENGINE3 developed by Ink Studios. It brings the power of C# into the world of CryENGINE3, allowing game logic to be scripted in a faster and easier to use language than Lua.
CryMono ships several new components for the engine. A custom build of Mono from source enables 64bit support, the Base Class Library contains an array of engine features for use in your code, and the Manager/CryMono library ties everything together.
Current Engine Features
CryConsole A robust console implementation handles console variables (CVars) and maps all the useful engine logging functions. Need to keep track of some information during testing? No problem.
EntitySystem Create entity code files and have them automagically registered and loaded by the engine, properties and all. No configuration required.
GameRules Currently a work-in-progress, but allows for registration of custom game modes with all the usual CryENGINE game mode events.
FlowNodes Not yet implemented.
Debugger Coming soon: use MonoDevelop to debug your C# code, and say adios to printing convoluted strings to check your data.
Utilities Need to get the base engine folder? Find your scripts location? CryPath has you covered. Need some rudimentary profiling? CryStats tracks managed memory usage.
Documentation We'll have a full API reference up shortly. This will be regularly updated as we push updates to the project. In the meantime, guides on entity creation and integrating the system into your project are available. If you're interested in the direction that project is taking, please consult our roadmap for v0.2.
Additional Credits Sam 'ins' Neirinck - Cemono Novell Inc. - The Mono Class Library, The Mono Runtime Libraries
It must be good. An implementation of a powerful scripting language, like UnreasScript in UDK. But honestly saying, I don't see usability of that. C# is like C++. What's wrong with Game DLL compilation? Though, it will be usable for hardcore programmers like authors, but not for regular user.
How about a simple explanation of what that system does?
It must be good. An implementation of a powerful scripting language, like UnreasScript in UDK. But honestly saying, I don't see usability of that. C# is like C++. What's wrong with Game DLL compilation? Though, it will be usable for hardcore programmers like authors, but not for regular user.
C# has advantages over C++ like a large base class library with lots of well-documented features, a garbage collector, properties, and a decent reflection system. In our system, there's also no need to compile (although optional precompiled assembly loading will be and already partially is supported) because we JIT compile the scripts behind the scenes, and future builds will support automatically reloading entities at runtime.
I'd also say that C# is more accessible, you don't need an understanding of pointers or memory management (though it's good to have regardless!).
Anti-flowgraph campaigner, professional server destroyer.
So, basically it is a superstructure over Game DLL, which allows to access standard CryENGINE classes?
Of sorts, yes. We expose one class and two interfaces for custom classes: Entity, IFlowNode, and IGameRules.
Derived types are then automatically loaded by our C# CryScriptCompiler and we register these with the appropriate C++ engine systems. These two platforms communicate mostly via a set of custom scriptbinds.
Anti-flowgraph campaigner, professional server destroyer.
Is this version of " CryMono " is substitute for official "Lua" language for ever or this version of " CryMono " is still BETA, Please I need clear reply....?
Is this version of " CryMono " is substitute for official "Lua" language for ever or this version of " CryMono " is still BETA, Please I need clear reply....?
Our goal is to replace Lua to the largest extent possible with the Free SDK. Unfortunately a large portion of the CryENGINE Lua ScriptSystem is done outside of our reach, which means Lua can never be replaced entirely.
Quote by alex626:
It must be good. An implementation of a powerful scripting language, like UnreasScript in UDK. But honestly saying, I don't see usability of that. C# is like C++. What's wrong with Game DLL compilation? Though, it will be usable for hardcore programmers like authors, but not for regular user.
To add to what Ruan said, C# is easier to use and also has a significant performance increase over Lua. Our system will allow a larger extent of modding functionality, allowing developers to drop scripts in their source-form into the Scripts folder to make it compile at startup, or for a FGPS-style setup compile their scripts to a .dll which is then loaded and executed automatically if inserted into Scripts\Plugins.
To add to what Ruan said, C# is easier to use and also has a significant performance increase over Lua. Our system will allow a larger extent of modding functionality, allowing developers to drop scripts in their source-form into the Scripts folder to make it compile at startup, or for a FGPS-style setup compile their scripts to a .dll which is then loaded and executed automatically if inserted into Scripts\Plugins.
It's good, but didn't you forget that LUA is a script language, and it doesn't need to be compiled? How about live LUA scripting from console, or how about live running of the scripts, without a need to relaunch the game?
Lua is compiled at startup, as ours is. We have a work in progress system in place for reloading scripts when they have been edited, to make sure changes can be tested in real-time without relaunching the game.
@ Live Lua scripting; this is a neat feature for Lua but it isn't something we're aiming to implement for C# since there is no proper use for it. If you really need to test code in realtime, make use of the Script reloading feature.
Were is the Like button. I love you If you could replace LUA entirely with C#/mono that would be super. I personally don't like LUA as a scripting language in game engines. I am a C++ programmer for years and I think C++ will never die, but I find C#/mono quite nice, fast and very very similar to C++ thus easy to go to it from C++ (a lot faster that to LUA) Thumb Up.
It's good, but didn't you forget that LUA is a script language, and it doesn't need to be compiled? How about live LUA scripting from console, or how about live running of the scripts, without a need to relaunch the game?
Could you make it work with VC++ 2010 express and VC# 2010 express please. I am using the Express version because is free and CryEngine 3 sdk has a .sln file that work with it I got stuck. I have splited CryMono.sln in 2 one for C# named it BaseClass_express.sln and it has the BaseClass and Manager project, the other one is CryMono_express.sln and it has the CryMono project and it is for the C++. Then made the requires modification stated in the git page :
Code:
2. Add gEnv->pGameFramework = m_pGameFramework after ModuleInitISystem(m_pFramework->GetISystem(),"CryGame");
with one observation there is no m_pGameFramework in the GameStartup.cpp but there is a m_pFramework. Then in the CryMono_express.sln on the CryMono project in the properties added VC_EXPRESS define and in the CryMono.rc replace
like in the GameDll.rc. Now I have this problem after compiling BaseClass and Manager projects from the C# express when trying to compile the CryMono project from C++ express:
Code:
1>LINK : fatal error LNK1104: cannot open file 'mono.lib'
And yes I have copied the content of CryMono-0.1-core.zip into the sdk dir.