Awesome, Mathias! Keep it up!
Awesome, Mathias! Keep it up!
http://community.clickteam.com/showthread.php?t=72481) pretty much needs this amount (also Eufloria, SupCom, etc are good examples), and of course other AI routines plus everything else the engine has to handle bring it down to around 500 units on a last-gen CPU.
Anyway, the point was to provide an example where > 800 objects were on screen doing any type of AI, as Blue66 mentioned he needed this amount - this was just a basic example to show that it could be done - obviously any other simultaneous routines would drag it down even further. MMF is great but I've definitely seen games with huge amounts of objects doing collision detection, AI routines, etc with many more objects than MMF can handle. That said, I'm not complaining (yet!)
So if this statement is simply not true and exaggerated, I don't know why he went on and made all the math for the Cowboy Bot object. I don't understand that, Simon - why try and win an argument with exaggerated numbers? Is it possible that you realise yourself that MMF2 is nowhere near their competitors in terms of performance?
Also you stated that I disabled most efficiency options. Yes, do you know why? Because my game would simply NOT WORK with them turned on! For example give me a good example how an object that needs build-in collision detectors can work with fine-detection turned off without increasing events? Or how I can enable "inactive if too far away from frame", if that just messes up the objects and places them in weird places or simply makes them disappear entirely from the frame?! So yes, there are options in MMF2 to be more efficient, but it simply does not work all the time! Maybe I'm an idiot and have no idea how to use them properly, but if this is so important for customers to have their games run decent on modern computers, why is there almost no documentation on this important issue?!
I'm sorry but I fail to see why you've posted this in the first place.
The simple fact is that MMF2 is just not optimized to run on modern computers anymore and that wastes a lot of potential that customers could use to have better games. Almost every other engine can show more objects, have more complex collision detection, better and more complex AI per object and so on. I could list you endless titles of games that handle more objects in more complex ways and this would all be impossible for MMF2 to handle. I mean if someone has to post a picture of 500 objects that run on good framerate (and I'm sure he had to spend A LOT of time and have A LOT of experience to make this run decent, otherwise he wouldn't be that proud of it), what about games that have 20.000 objects (Bullet-Hell games for example) with collisions and AI and whatnot? This would take a rocket scientist to optimize with MMF2 and this is exactly my point!
Yeah, I could spend ages to optimize the schnitzel out of my 2D platformer engine to make it run decent on 1/4 CPU of a modern computer. OR Clickteam could have gone through the trouble to find an efficient way to utilize the full potential of modern CPU technology so that customers would not even have to think about optimization with simple 2D games like my platformer with 1800 events, because there would be 3/4 more horsepower that they could use for more features in the game before framerate collapses. What if in the future technology goes the way to have more CPU with even less mhz? So everyone would have to optimize their games to run on 200mhz instead of Clickteam finding a way to utilize all available cpus?
And please stop making this discussion about your EGO. I mean it's great if you are a computer wiz that knows all tricks about memory allocation and all that stuff to optimize the hell out of MMF2 to make all your wishes come true in a nanosecond, but this does not count for all of us, ok? If MMF2 is marketed as a program for non-programmers, then stop telling me to learn how to program! Because if I would be a programmer, I wouldn't have to use MMF2 in the first place. If MMF2 tries to save time, then how comes I'm spending almost 100% of my time trying to figure out ways to make the game run decent instead of new awesome features to enhance the gameplay experience?!
http://www.youtube.com/watch?v=6ZI94r9UEkQ (InterGalaXia runs on Standard runtime and HWA with over 1000 objects on-screen simultaneously all with collision, random generation, random positioning and they're being moved at 60 frames per second. This isn't even mentioning the other 50+ groups that all work in-sync with each other and the other 900+ events that work flawlessly.
What you're trying to achieve here is absurd anyway and there are quite some optimisations to be performed.This is all of course in addition to yet more processing time and overheads for everything else in the game, including:
* a total of 900+ objects
* over 2500 event lines (globally and directly in the frame)
* 5 layers of parallaxed background scrolling, all of which are scaled to the full window size at runtime, one of which is constantly being rotated and scaled at runtime
* sub app frames
* an 8000 x 3600 pixel frame
* 8 layers in the frame
* 1 layer with subtract effect (albeit via shaders)
Sub App Frames inside of your game for example, I would love to know what 2D specific engine you could use that could draw and refresh a window at 30-60fps whilst rendering all the other insane attributes of your game (ie: 8 Layers incl. 5 Parallax Scrolling Layers one being constantly rotated and scaled at 30-60fps) aswell as your other 1800 events to cater for.
I am in the beginning stages of coding the IGX2 engine with triple the amount of the first engine's features and so far have hit no noticeable flaws which leads to my next point of
If you wish to build an epic-huge-massive platform game then be prepared to also learn the optimisation side of things, improvisational tricks and learning the routines that will allow your application to perform faster. You need to get rid of this stigma that MMF2 is no longer a case of 'drag n drop' MMF2 will handle it all, MMF2 does handle it all but it also has the power to handle alot more if you code it right. If you don't code it right don't blame the tool. The engine as I have stated numerous times is MORE than efficient to handle state of the art applications which can also be widened with extension programming.I mean it's great if you are a computer wiz that knows all tricks about memory allocation and all that stuff to optimize the hell out of MMF2 to make all your wishes come true in a nanosecond, but this does not count for all of us, ok?
1) This makes no sense 2) This wouldn't happen and 3) This wouldn't affect the runtime in anyway.What if in the future technology goes the way to have more CPU with even less mhz? So everyone would have to optimize their games to run on 200mhz instead of Clickteam finding a way to utilize all available cpus?
MMF2 is advertised to Build Games and Apps with no Programming Knowledge. Nobody here in this 9 page thread has asked you to learn a single line of programming code. We have advised you on how to 'optimise' and how to be efficient.If MMF2 is marketed as a program for non-programmers, then stop telling me to learn how to program
My last words would be that Simon has no need to lie, whether he is Clickteam related or not. If there was an intermittent problem Simon would report it and get it fixed, it doesn't benefit him or Clickteam to see a flaw or bug in the software and just ignore it.
So aswell as flaming the product, telling community members to shutup and calling a member of Clickteam a liar I think your time is done with this thread. Either move on and find the defect of your coding (which I'm guessing you just can't be assed so just blame MMF2) or find some other software to develop your game on and wasting everyone's time.
Morale of the thread: Plan your game out before you get waist deep in quicksand.
Another morale of the thread: Test everything and fix anything you don't like before it snowballs.
Firstly, I hold my hands up there, I got the number of events slightly wrong... I had copied your "Enemies" group from global events to the main frame events (although I disabled it) which added an extra 480 lines to the event list. It was not exaggeration, I just counted those events twice by accident. My points still stand though.
Again, to be clear, this was not a personal attack and the reason that I posted it in the forum was, as I said, purely so that other people could learn from it too. If you are having problems, the chances are that someone else will at some point and if everything has been sent in a private message/email then no one else gets to benefit from the advice and discussion.
There are issues with the way MMF handles certain things, fastloops for one can be very intensive if used in certain ways. Mathias gave an excellent example specifically of why and how to use the for...each object to get better performance here.
As for efficiency/performance measures built into MMF, specifically:
The main building block in your levels is this backdrop graphic:
and these are its properties:
You also have smaller quarter sized tiles with the same properties, and 4/5 others with different images and the same properties set. There are hundreds of these in your level (an estimate... but I didn't want to sit and count each one!).
Every single one is a perfect square but you had not set the collision with box property on any of them. You also have a number of actives:
Kirby Breakblock (113)
Kirby BreakblockEmpty (73)
Breaking Block (40)
Kirby BreakReverse (47)
Again these are all perfect squares and have the "Use Fine Detection" property set. There are more examples of this in there - I'm only clarifying because you don't appear to have understood what I meant there.
I understand that by enabling the "Inactivate if too far from window" means that actors which walk around or move will freeze whilst offscreen, or worse. If an actor is being moved using actions to alter its position, and relies on collision detection to stop it, make it walk back the other way etc. then the deactivation will stop collisions and potentially the actor can go sailing off into the blue yonder whilst off-screen.
I was talking about everything like coins, powerups, checkpoints, animated static characters (like bobby flower) and so on... they are totally static but you perform collision detections on them. By allowing them to go inactive when out of view you enable MMF to stop checking for collisions with them and reduce processing. Objects such as coins do not need to have fine detection enabled, box collision is perfectly sufficient as they are almost completely filling a rectangular/square space.
For those objects such as your cowboybot, you will have to employ other techniques. Simple things such as not performing collision checks with the player character if the cowboybot object is offscreen (ie. cannot be near the player).
I have not lied at all, that's a little offensive frankly when I've gone out of my way to try to help you. I would say in response simply that MMF DOES eliminate the need for you to learn a complex programming language, instead giving you the tools to rapidly create games and applications using simple, graphical and plainly worded Actions, Conditions and Events. What it DOES NOT do is remove the requirement to develop logic and to design sprawling games without ever considering performance issues. You can throw an awful lot at it and it won't bat an eyelid at it but there is a limit above which you have to consider these factors. These limits exist in ANY language/environment - where and how soon differs but relying on raw CPU power is not the way to design good software, if for no other reason than not everyone will have machine which are that powerful.
If you can't work it out, people are here to help (I've already spent over 2 hours looking at your stuff!)... If you don't want to worry about things like that, perhaps MMF is not the tool for you. Either way, I've not lied or over inflated anything.
Also the two other things you've mentioned:
and* 5 layers of parallaxed background scrolling, all of which are scaled to the full window size at runtime, one of which is constantly being rotated and scaled at runtime
were also untrue statements from Simon, because:* sub app frames
1) there are only 3 parallax layers and one background layer with X and Y offset set to 0 to not move at all, I don't know how good everyone here with math is, but even I can count to 4.
2) I only have 1 sub app in the frame, not "sub app frames"
So calm down, go outside and take a bit of fresh air and try not to take everything personal, because right now you're helping nobody because:
1) I don't care how great your engines are and it doesn't matter to the topic, because it's about MMF2's efficiency and not yours or mine
2) You claim that I'm "flaming the product" which is utter nonsense and the only person flaming anybody is you, because you apparently don't understand that grown up people can debate something without having the need to "flame" anything.
3) I will call a liar who doesn't tell the truth and in this case it is a fact that Simon didn't (for whatever reason) and I can give you screenshots to prove it. You simply have no evidence whatsoever but still immediately pick Simon's side because of personal preference, and now you look like a stupid kid between two grown up people in a mature discussion.
So take you own advice and leave this thread, because we are grown up people here who are trying to have a mature discussion and you're just taking everything personal and defending stuff because of personal preferences and beliefs, which is not helping anyone in this topic and I will not bother again to reply to you and tell how just how wrong you are with everything you say.
I'm sorry to have offended you and I didn't mean what I said in an offensive way - you just posted numbers that I was double checking and they were just not true. Maybe you didn't memorize them as good or wanted to make MMF2 look better, I don't know. I was just pointing that out for people who do not have the chance to double check the things you write as facts. As you can see people like Danny immediately take everything you say as holy and think you are infallible, but even they have to realize that you guys from Clickteam are just people and people can make mistakes just like everybody else.
I appreciate the time you took Simon and I'm sorry if this went a bit out of hand. But seeing how Mathias gets ideas to improve performance of MMF in one way or the other, maybe this thread was more constructive than some people realize.
I didn't state my engines were 'great' I made a comparison in one of my engines towards yours, which to me seems likely on-par had you taken the time to "optimise" your code. Plus you just negated your own comment.1) I don't care how great your engines are and it doesn't matter to the topic, because it's about MMF2's efficiency and not yours or mine
In 9 pages I haven't flamed anyone, any product or any game.2) You claim that I'm "flaming the product" which is utter nonsense and the only person flaming anybody is you, because you apparently don't understand that grown up people can debate something without having the need to "flame" anything.
I'm 27, twice married with 5 children and a business, I don't think I need telling that I am immature, I'm just sick of these threads spiraling out of control because it seems some people are too scared to just speak up and tell it how it is.3) I will call a liar who doesn't tell the truth and in this case it is a fact that Simon didn't (for whatever reason) and I can give you screenshots to prove it. You simply have no evidence whatsoever but still immediately pick Simon's side because of personal preference, and now you look like a stupid kid between two grown up people in a mature discussion.
Sorry, didn't realise you had proven me wrong... could I review that evidence please?I will not bother again to reply to you and tell how just how wrong you are with everything you say.
Look, at the end of the day you were the one who wanted to ask the question in a public and open community forum instead of negotiating this matter with Clickteam directly so I am entitled as is everybody else who uses the product to try and help or assist to the OP, we also have the right in an open and public forum to question your ethics and mannerism towards other members and CT users. 9 pages on and you still just don't get it.
I think you should review my Signature for clarification.