Following post-mortem this thread and all the previous threads http://www.adventuregamestudio.co.uk/forums/index.php?topic=55657.msg636578880#msg636578880
EDIT : everything that is written in this hidden section was my original post but you should not consider it my opinion -- it was more of a conversation starter and has been contested. The table is better.
I'm starting this thread in this forum for two reasons :
1) there was no thread dedicated specifically on MonoAGS
2) This is virtually a sub-thread to the "AGS 4" thread (aka "why this project is screwed up"), only dedicated to MonoAGS as one of the many options.
What I like about MonoAGS
What I don't like about MonoAGS
What I don't know about MonoAGS
Apart from that,I have no opinion on the switch from Mono to .net Core. That's a side discussion.
There should also be threads to discuss Blade Coder and Adore.
Escoria : https://github.com/godotengine/escoria/blob/master/README.md
MonoAGS : https://tzachshabtay.github.io/MonoAGS/
Bladecoder: https://github.com/bladecoder/bladecoder-adventure-engine/wiki
AGS: https://github.com/adventuregamestudio/
Libbgdx : https://libgdx.badlogicgames.com/features.html
Löve : http://www.love2d.org/
Suggested editors for Löve : http://www.gamefromscratch.com/post/2016/01/25/Editors-and-IDEs-for-Lua-and-Love-Development.aspx
Ink : https://www.gdcvault.com/play/1023221/Ink-The-Narrative-Scripting-Language
Java :
Mono : https://en.wikipedia.org/wiki/Mono_(software)
Mono versus .Net Core : https://stackoverflow.com/questions/37738106/net-core-vs-mono
Adore : https://github.com/CalinLeafshade/adore
Spoiler
EDIT : everything that is written in this hidden section was my original post but you should not consider it my opinion -- it was more of a conversation starter and has been contested. The table is better.
I'm starting this thread in this forum for two reasons :
1) there was no thread dedicated specifically on MonoAGS
2) This is virtually a sub-thread to the "AGS 4" thread (aka "why this project is screwed up"), only dedicated to MonoAGS as one of the many options.
What I like about MonoAGS
- It's started by one (seemingly skilled) person, who has leadership
- he sources are immediately available on git.
- Some thought has been given to follow in AGS legacy (programming-wise). Specifically: Not being unncessarily anti-Microsoft, while still focusing on cross-platform tech
- Some thought has been given to having a good, flexible scripting language (i.e. C# as a scripting language that can still be compiled separately from the engine or Editor source)
- Some effort in the documentation
What I don't like about MonoAGS
- The Editor is not part of the initial vision. It's envisionned as some sort of tool "external" to the engine, that can come after. It means there's no vision on assets management and game-creation pipeline.
- It's focusing a lot on basic graphics rendering (SDL), with no vision regarding the other components, such as sound engine, controllers input, GUI, timing, etc. That's my biggest concern with many wannabe game engines: they lose steam after they manage to render the graphics of the game, but that's only 25% of the whole picture.
- It doesn't do vectors, even only just by wrapping some basic directX primitives/data structures. There are many vectors usages that you might not think about until they're missing and it's too late (graphics scaling, walkable areas, perspective, camera control, tweens, parallax, etc.).
What I don't know about MonoAGS
- Is the build automated? Like, do you maintain a solution made with something such as cmake to generate the .sln file and all? That's one of the weaknesses that CW pointed out in AGS. Those tools are real magic to generate soluions for any IDE/compiler/Visual Studio version in one click
Apart from that,I have no opinion on the switch from Mono to .net Core. That's a side discussion.
There should also be threads to discuss Blade Coder and Adore.
[close]
Engine | AGS | Bladecoder | MonoAGS | Adore | Escoria | Placeholder 1 | Placeholder 2 |
Middleware / underlying game engine | Allegro | libgdx | None | Löve aka Löve2D | Godot | Placeholder 1 | Placeholder 2 |
Editor included | Yes | Yes | Not yet (plans on making things editable directy in-game) | No editor provided but many frontends suggested (e.g. Notepad++ with a plugin) See link in footnote | Yes | Placeholder 1 | Placeholder 2 |
Platform/VM for the engine | None (direct C++), but has binds to some Windows libs. | Java | Non-Microsoft .Net Framework, aka “Mono†(considers moving to .Net Core) | Lua | Placeholder 1 | Placeholder 2 | |
Platform/VM for the Editor | .Net framework | JDK required | Mono (considers moving to .Net Core) | - | Placeholder 1 | Placeholder 2 | |
Hardware supported | Windows desktops. Existing ports : MacOS (outdated) ]PSP Android iPhone(?) | All++ (not only the build+execution, but also subtle things for mobile devices such as tapping, hand motions and accelerometer) | All (but for subtle things meant for mobile devices such as tapping and accelerometer, you'll need extra code/libraries) | All+ (not only the build+execution, but also subtle things for mobile devices such as tapping, hand motions and accelerometer) | Placeholder 1 | Placeholder 2 | |
Engine's language | Old-school C with big chunks of C++ | Java | C# | Lua | Placeholder 1 | Placeholder 2 | |
Editor's language | C# | Java | C# | - | Placeholder 1 | Placeholder 2 | |
Main libraries used (apart from DirectX+OpenGL which are included implicitly in most cases) | allegro 4 | I don't know how much of libgdx is self-sufficient | OpenGL+OpenAL bundled in OpenTK | I don't know how much of Lua is self-sufficient | Placeholder 1 | Placeholder 2 | |
Proper versioning | Yes (git) | Yes (git) | Yes (git) | Yes (git) | Placeholder 1 | Placeholder 2 | |
Automated tests | No ? | ? | ? | Yes (“bustedâ€) | Placeholder 1 | Placeholder 2 | |
Automated solution generation | No | Not needed ? (Java all the way) | No | Not needed (Lua all the way) ? | Placeholder 1 | Placeholder 2 | |
Automated build and release | No | Most likely | Yes | ? | Placeholder 1 | Placeholder 2 | |
Native support for Photoshop (PSD) files | No | No? | No | Yes? | Placeholder 1 | Placeholder 2 | |
Localization mechanisms | Yes, up to 256 characters per font | ? | ? | ? | Placeholder 1 | Placeholder 2 | |
Good manual + community + tutorials | Yes | Yes | Yes (at least it has some doc and a proper home page) | Yes but only one demo game | Placeholder 1 | Placeholder 2 | |
Maintainers | Approx.. 4 | Many for libgdx, +1 very efficient for Bladecoder, +approx. 4 from the AGS community if we go there | 1 +approx. 4 from the AGS community if we go there | Many for Löve2D, +1 for Adore, +approx. 4 from the AGS community if we go there | Placeholder 1 | Placeholder 2 | |
Sound engine | Not really, apart from just playing sounds | Yes (libgdx) | Yes (OpenAL has good features, that tzachs has wrapped into MonoAGS) | Yes | Placeholder 1 | Placeholder 2 | |
Controllers input | Just the basic : keyboard+mouse (and joystick with a plugin) | Yes+ (including mobile device gesture) | Just the basics | Yes | Placeholder 1 | Placeholder 2 | |
Subpixel management / maths / vectors (see in an other post in this discussion what I mean by that) | No, apart from basic float management and the Tweens module | Yes+ skelettal animation out of the box | basic OpenGL stuff + everything that was ported to C#. Anything else has to be binded manually | Yes | Placeholder 1 | Placeholder 2 | |
Multithreading inside the game | No | Probably | to be implemented by the game designer | Probably, using Lua | ? | Placeholder 1 | Placeholder 2 |
Data structures / serialization / database-like processing | No, apart from arrays of structs | Yes (XML, Json and everything natively) | Yes? (classes from Mono and/or .Net Core) | Yes? (Lua has everything) | ? | Placeholder 1 | Placeholder 2 |
Pixel-perfect low-res graphics | Yes | ? | Yes? | Yes? | ? | Placeholder 1 | Placeholder 2 |
Collaborative work / compatibility with versioning | Possible with scripts and rooms, but not recommended with the main game file (.agf) nor sprites library. | ? | Editor doesn't exist yet | ? | ? | Placeholder 1 | Placeholder 2 |
Game scripting language | custom (AGS script) | NONE YET | C# (but some people think that things are little too hard coded yet) | Lua | custom (Gdscript, aka something similar to strongly-typed Python) | Placeholder 1 | Placeholder 2 |
dialogs scripting language | custom (AGS dialogs script) | Ink | C# | Lua | ? | Placeholder 1 | Placeholder 2 |
in-game GUIs | None/custom (poor set of native graphic controls) | Yes (offered by libgdx) | custom (partially implemented) | Lua libs | ? | Placeholder 1 | Placeholder 2 |
Escoria : https://github.com/godotengine/escoria/blob/master/README.md
MonoAGS : https://tzachshabtay.github.io/MonoAGS/
Bladecoder: https://github.com/bladecoder/bladecoder-adventure-engine/wiki
AGS: https://github.com/adventuregamestudio/
Libbgdx : https://libgdx.badlogicgames.com/features.html
Löve : http://www.love2d.org/
Suggested editors for Löve : http://www.gamefromscratch.com/post/2016/01/25/Editors-and-IDEs-for-Lua-and-Love-Development.aspx
Ink : https://www.gdcvault.com/play/1023221/Ink-The-Narrative-Scripting-Language
Java :
Mono : https://en.wikipedia.org/wiki/Mono_(software)
Mono versus .Net Core : https://stackoverflow.com/questions/37738106/net-core-vs-mono
Adore : https://github.com/CalinLeafshade/adore