TiAm's Recent Forum Activity

  • pixel perfick :

    Will hopefully be done within the week. Kind of just a quicky experiment, mod of built in shooter. A lot of stuff I ripped from a more ambitious game I'm working on. Here's a screen though...(60fps, and 0.214 is cpu usage, so, about 21 percent)

  • Just thought this was fascinating, boring...and kind of hilarious:

    http://www.cnn.com/2014/02/18/tech/gami ... s-pokemon/

    http://arstechnica.com/gaming/2014/02/t ... s-pokemon/

  • Juryiel

    Did you take a look at my capx in the first post? It's sort of a hack, but it doesn't work that badly. Actually, I think you could do something similar with dt which would probably be more reliable -- currently I use the fps to modify the timescale. But I haven't tried it yet.

    https://www.dropbox.com/s/jhrzbidknfb0f ... nts_1.capx

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • BTW, love the addition of tabs for view unanswered posts.

  • That being said, visually it's throwing me a bit...I'm seeing some of my pet peeves with 'modern' websites here...like very low contrast page elements. Hard to differentiate certain things on my laptop screen, and right now I'm indoors in a good viewing enviroment. If I was outside...

    Anyway, whatever, that's just teething/cosmetic issues. Functionally, it's a great, great improvement. Congrats and thanks Tom!

  • pixel perfick :

    C2 has it's quirks, but on desktop platforms at least, it can generally hold it's own. I'm working on a bullet hell shooter now that can have 1000-2000 moving sprites on screen at times, checking cols against a few hundred enemies, all per tick(yes, cols too).

    Plus particles effects, rotating enemies, multiple layer, parallax, etc.

    I'm getting 60fps solid, with only occasional dips in debugger. Cpu usage maxes around 75, averages about 20-40, and that's also in the debugger, which adds a good bit of overhead, especially when you have a lot of moving objects. Now, I have a pretty fast processor (i5, 3570k), but I'm using it's integrated graphics.

    This has been said before, but javascript has improved dramatically, and continues to improve in speed and performance. As other's have said, 90 percent of modern games don't code to the metal to begin with, because: a. too slow and difficult, b. OS in the way, and c. no way of knowing what metal is going to be there.

    The key is this: javascript has a way to go to compete with C/C++...but there are no set-in-stone barriers to getting there.

    tgeorgemihai, lennaert :

    I kind of reject the idea that Visual/WYSIWYG editors will never be able to compete favorably with hand coded games. Obviously, hand coded will always be faster (IF they are coded well...and that's a big if). But, in most cases, it's not going to be the massive difference that it was in the past.

    If you doubt this, take a look at the original Construct Classic. It's easily as fast as many custom coded pc games...and in many cases faster. And keep in mind that it would probably be even faster by now had the Scirra Bro's kept on developing it.

    Of course, you still have to understand the basic logic that goes into making things work, still have to refine your approach, but at this point in time, most of the lower level muckity-muck is best left to the computer itself.

    I wish I had the skill, dedication, time, and talent to build my games from scratch, to work exactly how I want them to.

    But...I'd rather actually make them...with C2.

  • Warning: mega-post to follow:

    There are two aspects to performance in C2: rendering, and event speed. Usually, the rendering's at fault. Be sure to CHECK THE DEBUGGER. Look at 'draw time'; if it's eating up a bunch of cpu, you are software rendering (chromes WebGL issue, blacklisted card, drivers...). If your cpu usage is low, but your fps is dipping, then your gpu -- for whatever reason -- is simply not up to the task.

    OTOH, if you are getting slowdown from event logic -- and don't have a weak cpu -- chances are there's a glitch in your code, unless:

    1. You have a few thousand moving sprites looking to collide with each other or a few thousand other sprites. If they are very spread out, the collision cells optimization should help a lot with this, but if they are all clustered in a small area, your speed won't be much better than brute force (and possibly worse). There no way around this; it's a limitation that all developers have to deal with. Try checking for cols less often, or just bring your object count down.

    2. You are being irresponsible with demanding behaviors like line-of-sight, pathfinding, and physics. Again, these are demanding for all developers, whether hand coding or using a higher level tool like construct. Line of sight in particular can bring a game to it's knees if used foolishly. Like, for example, adding it to every enemy to look for the player, leaving range at default (10,000), and updating every tick (try putting it on the player, bringing range down to width-height of screen /2, only updating every 0.1 second).

    Continuing on event logic speed:

    All event logic is outputted as javascript. Javascript was not built to be a smooth, realtime language. It's proliferation has lead to it being developed into one, but it's been a long and arduous process. The two main drivers now are google(chrome) and mozilla(firefox), who have improved javascript performance dramatically. Without their efforts over the last 5-6 years, construct 2 would not even exist.

    That being said, there are some inherent limitations to javascript:

    1. It must be compiled and/or interpreted on-the-fly. This adds a greatly variable overhead, depending on what the particular javascript engine is doing with incoming code.

    2. It can only run on one thread at a time (excepting web-workers, which are reletively new and very limited). Some modern cpu's have as many as 8 cores, with two threads each. In that case, your game would only have access to 1/16 of the cpu's actual capacity. That being said, most high core/thread count cpu's are either server cpu's(not suited for general use) or performance cpu's(crazy fast to begin with), and many multicore cpu's can clock up for demanding single core usage, so this is less of an issue than it might appear.

    3. It has to perform garbage collection. (along with dynamic compilation, the main cause of 'jittering' in games). Asm.js can get around this, but only for asm.js code, and only when run in firefox(for now).

    4. It cannot take advantage of many of the low-level processor optimizations -- ex., SSE2, SSE3, AVX -- that are available to traditional C++/assembly based applications. For certain kinds of proccesing, these can speed up execution by 10-20 times. In theory this is possible with JIT(just in time) compilers, but no one has implemented it in a JIT javascript engine. These may also be accessible at some point thru asm.js implementations...or it may be impossible. I don't know enough about this subject to have a valid opinion on usefulness or feasability.

    --------------------------------

    Bottom line: javascript is slower than native, but the gap has narrowed dramatically in the last few years...and with time, things will only get better.

    ...and on that note, here's some fresh news on the subject:

    zdnet.com/google-revs-chromes-v8-javascript-engine-to-drive-high-performance-web-apps-7000026409

    Okay...need sleep...<img src="smileys/smiley12.gif" border="0" align="middle" />

    Cheers,

    Tim

  • Ugh, spent way to long writing a mega post reply to this, but one short, separate issue:

    :

    I don't have any experience with mobile, but I have noticed the simple act of moving/rotating objects really adds up if you have a lot of sprites...even on desktop. Does moving affect your fps as much as rotating? does disabling collisions completely (not just col events, but actually setting objects to default to no collision) have any effect?

    Cheers, T

  • Make another condition for the lerp event: distance(lerpTarget.x/y,lerpObject.x/y) < 1 (2,3,4, etc...)

    --do lerp

    else

    move LerpObject to lerptarget

  • If you are trying to move all three objects to the same position every tick...then yes, technically speaking, the latter option should be the fastest.

    You are unlikely to notice the difference though, even with many hundreds of objects.

    As is often said: C2 has a tendency to slow down from graphics, not logic, though there are exceptions (bullet hell shooters, as I have discovered...)

  • Storing object as JSON in arrays and/or dictionaries is nice because you can get at the data whenever you want, and do with it whatever you want.

    That being said, the persist behavior is straight forward and easy. Enable/disable sounds like a good idea.

TiAm's avatar

TiAm

Member since 24 Nov, 2011

None one is following TiAm yet!

Connect with TiAm

Trophy Case

  • 13-Year Club
  • Email Verified

Progress

14/44
How to earn trophies