How does monkey preform with stressful rendering?

Monkey Forums/Monkey Beginners/How does monkey preform with stressful rendering?

RedGTurtlepa(Posted 2016) [#1]
I've been taught my whole life that C++ is the fastest language ever. The creator himself says it is fast, because it was made with "real world applications in mind". (atleast from the seminar he spoke he said it)

But then I started discovering other languages and some are translated like python, and some use libs that use OpenGL. But what if I wanted to make say, Grand Theft Auto 2 clones in Monkey X? What am I looking at in terms of slow down in comparison to C++?

Does Monkey X have any OpenGL implementations also?

I just wanted to get into Monkey since I see barely anyone talk about it in game development, they're always bringing up -Unity- (BLOATED), -Game Maker- (BUGGY/BLOATED/PRICEY), -C++- with libs (Syntax causes me brain pain, very typed, very structured. But it compiles to the fastest machine readable code? Same is true for game code?),
-Java- (I like the syntax alot. it is like C#, I am still on the fence about it, I have to learn OpenGL and realized if I'm learning OpenGL, wouldnt I get more out of it using SFML/SDL2? and C++? doesnt it also bloat programs? I've played alot of good Java+LWJGL games however..I've always liked the feel of them but I dunno), -Python- (well, pygame seems like a good enough choice, it has poor documentation and sometimes python decides to give me headaches....), etc, etc...

Anyway, the reason I brought up these other libs/languages is because I had interested in monkey, it reads a bit like python but it is pretty easy to use. I also read on the product page that it actually translate to a faster language? Such as C++/C?. I've been looking at alot of source code and I can read it, and I can understand it and the apps compile down nicely somewhat. But I wanted to know if anyone had any stress tests with alot of images/image manipulations? Like a game such as GTA 2 has. Lots of pedestrians, moving, managing layers of objects. Or a game like XCOM (the first 1) lots of items, customization, unit details, buildings, etc.
or how about a RPG game with paperdoll items layered over player/Npc bodies? such as Ultima?

How has this been for you when it came to just stress testing/large games? Could MonkeyX make a Daggerfall clone? Dwarf Fortress clone? If yes, is it on par with C++ when it comes to rendering capabilities? Can you implement Monkey OpenGL or DirectX ? I'm still learning Monkey but I'm not understanding its true capabilities, but understand that the Syntax and code is very nicely managed.


EdzUp(Posted 2016) [#2]
Well the best way is to try them with examples, for me it's like this:
C++ - very fast, nicely compiled executable programs. Downside you have to write everything if it's not there.

Unity - nice, portable. Downside restricted by the bloat and some pay to use features.

MonkeyX - fast, small, compiles to c++ via translator. Downside is no 3d library yes there are third party incomplete jobs but no official ones.

Java- ok language can write loads of things. Lwjgl has issues on some video cards, can cause problems with systems.

For what it's worth GTA2 was whacked out in C++ with direct x rendering so if you want GTA that's the way to go. There may also be in line assembly in there as well for speed.


Gerry Quinn(Posted 2016) [#3]
Others will be able to answer you better with regard to Open GL, rendering stress tests etc. From the perspective of the language itself, Monkey gets translated into other languages such as Java and C++ and compiled in the native compiler. Since it is structured pretty similar to Java, I suspect there is little inefficiency in the translation. Nevertheless, the Monkey C++ target runs the fastest. Either would be a LOT faster than Python!

In terms of scalability and plain coding efficiency, Monkey is probably fine for any project. Dwarf Fortress, for example, should be no problem.

However, the graphic and audio libraries that come with it are designed more for portability than efficiency: While you could probably use Monkey for the 'code' part of an AA game, you would certainly be needing to link to external libraries for these, and you might find it easier to use C++ or something where there is more ready-made code,

If your sights are on replicating an older game like XCom, Ultima 6 or Civ4 I think you could probably do just fine, given the advances in memory and processing power.

If you're not an experienced game programmer, Monkey has some nice qualities: it's a decent language with built-in graphics libraries, very easy to use for modest projects - and when you're done you can easily put your game in Playstore / web / desktop as you choose.


RedGTurtlepa(Posted 2016) [#4]
@EdzUp:
Thanks for the information when it came to GTA, I didn't realize. Well its something to research but I doubt I'd just soley focus on C++ and directX, it'd have to be a side project.. (a very long and painful one)


@Gerry Quinn:
Thanks for this information, I was thinking this may be the case with Monkey, perhaps I'll attempt it with Monkey. It would definately save me research I'd have to do when it comes to learning C++ and DirectX.
Due to the fact there are some nice qualities for portability and ease of use I'll probably give it a serious go.
Do you know if pyro is worth it if I was trying to say build small time retro games: http://www.playniax.com/pyro.html
I was looking at it, and I'm not sure if I should try it WITH Ignition X, or just it by itself because it is actually an updated version of ignition X and has all its functionality. Kind of confusing me.

besides that, I like the TED IDE, is Jungle really worth it though for saving dev time and speed? It probably has an autocomplete feature for Monkey I'm sure, that alone might make it worth it. I was reading some users had issues but I'm not sure. I would love a paid improved bundled version of what python/pygame should be. And maybe MonkeyX is that for me.


Steve Ancell(Posted 2016) [#5]
is Jungle really worth it though

Jungle is a beast, I like Jungle. :D


Gerry Quinn(Posted 2016) [#6]
I can't really judge how useful frameworks such as Pyro are, as I tend to code most things from the ground up.

As for Jungle, it's pretty powerful. There's also Mollusk, which is cheaper and more like 'a better TED'. There's a third IDE called Jentos, but I don't know much about it, I'd suggest trying demos and see what you think. TED gets a fair bit of criticism, but it is at least simple and the integrated debugger works well.


tiresius(Posted 2016) [#7]
I bought Jungle because I became dependent on autocomplete. If TED had autocomplete I probably wouldn't have bothered shelling out the $ because I am cheap. :) I know it has many other features, but that was the killer one for me.

Adding to what others have said (great summaries) :
Since Monkey is a OOP language you have to code your game with OOP in mind.
Don't create/destroy many objects during the game loop.
Prebuild/Pool your objects as much as possible.

Write your own stress tests and see if you are happy with it.
Learn Monkey language (sounds like you've caught on quickly already) before using/buying frameworks.


SLotman(Posted 2016) [#8]
I did this game in Monkey:



Not very "heavy" in the trailer - but it gets really intense: you can fill the screen with defenses, enemies and particle effects, and all is well, even on iOS and Android.
And those are all "Spriter" animations, not frame based, so there's an extra layer of CPU processing that frame based animations wouldn't have (but it greatly reduces RAM/VRAM requirements, so its worth it!)

At first I didn't think Monkey would be able to do it - but I kept throwing things on top of things, and the performance kept good. So, even despite being translated code - which makes it a little slower than something written directly into native language... it can go very far!

Unfortunately Monkey is a very understimated tool - IMHO a much better option than Unity 2D, Construct, Game Maker, Game Salad or anything else I've tried so far.


EdzUp(Posted 2016) [#9]
Unfortunately Monkey is a very understimated tool - IMHO a much better option than Unity 2D, Construct, Game Maker, Game Salad or anything else I've tried so far.


Unity 2d is convoluted and a pain to use to be honest, for simple things it is not as powerful as monkey. For me it seems like 2d in 3d which is daft.

If you want raw power then nothing beats C++ (apart from assembly but that isn't portable).


ratking(Posted 2016) [#10]
When you use Unity for 2D development, you don't use it because of its stellar performance (the same goes for 3D development, to be honest). You use it because you get a tightly integrated physics engine (even two physics engines), because you have a scene editor you can extend as you wish, because there are hundreds of useful assets, because you can export to various platforms without hassle (e.g. you can create Mac versions on Windows!) and because you're just used to the workflow. If you don't need/want all this, use something else.

Monkey is cool for what it is, but everything has its advantages and disadvantages.


Gerry Quinn(Posted 2016) [#11]
If you look at the recent series of articles in Gamasutra showing how to do simple 2D games in Unity, anyone using Monkey or a similar language will laugh at the awkwardness, inefficiency, and lack of power. But that's pretty much the worst case for Unity.

And at the end of the day, the tool you need has to be (1) capable of doing the task somehow, and (2) usable by you. Any tool that combines both - however badly - is better for you than a tool that fails one or the other.


EdzUp(Posted 2016) [#12]
From my experience of Unity/C++/Monkey I have done the following:
I wanted to create a realistic cloud nebula for my Star Rogue game so I could actually fly into them and it would give a nice effect and my results were:
1) Unity - 3d was out as the effect didnt look right and frame rates were wildly variable so that was out. 2d did render 50 sprites ok and it looked reasonable but when adding more to the engine it didnt help frame rates either. I studied loads of 2d demonstrations and code to see if I could adjust it to make it faster but batching doesnt help if you rotate the sprite apparently.

2) C++ - I still have my Framework for this and its lightning fast there are some niggles I would like to fix in it but those will be done as I go. Rendering was brilliant and the engine can render 200 sprites (quads with textures) using OpenGL at 60fps :)

3) MonkeyX 1 using mojo 1 - This is the furthest version of Star Rogue I have so far its rendering 200 sprites for nebula etc, background, NPC's, weapons fire, stellar objects and GUI stuff all at 60fps.

Says it all really, now im not saying Unity is bad at what it does but as had been said before if your used to coding a certain way then it can be a chore to learn the new styles.


ratking(Posted 2016) [#13]
200 sprites only? If it's about raw sprite display power, one should look into Orx (500K sprites at 60fps). Here's a benchmark comparison:
http://themozokteam.com/playground/frameworkstest/

Won't answer to the "lack of power" regarding Unity. That just shows someone didn't even try the engine themselves.


Gerry Quinn(Posted 2016) [#14]
Lack of power to do simple 2D games simply and cleanly, was what I meant. If you compare those tutorials with how the same games would be written in Monkey, the difference is clear.

I know Unity has a lot of capability; I've bought and enjoy games made using it. It is also a fact that AA games written in it plainly tend not to perform as they could in a more hardcore language, but that is not what I was talking about, nor do I think it is necessarily a bad compromise to make even if it affects the end product. [And it may be that coders who would use such a language wold also get more out of Unity.]


RedGTurtlepa(Posted 2016) [#15]
Hey everyone, not to get off topic here, but the coordinate system Monkey uses for graphics is a straight pixel to pixel measurement system of rendering pixel-sprite images via scanlines to the screen? Is that correct?

I had some experience with unity, and I am unsure of its max power, as I am sure it requires careful management of resources as does any engine (perhaps even framework) but I cant even figure out the units of measure in Unity, when you tell something to move 1 x (vector 2 or 3) it moves a large amount of screen space in that 1x. is 1 X, Y, or Z actually like 10-100 pixel units? I am so terrivbly confused when it comes to that.

Monkey just uses pixels to pixels though?


nullterm(Posted 2016) [#16]
Monkey is as good at OpenGL as you are. It's (more or less) a compiler, what that compiler does is up to you.

On most platforms it boils down to native code. Except on HTML5 (JS) and Anrdroid (Java), which means being careful of the garbage collector and minimizing allocation during real time.

Other than that, it depends on how efficiently you manage your rendering.