Ashley's Recent Forum Activity

  • The rationale for why Ejecta was deprecated was explained in this blog post (it was done over a year ago): https://www.scirra.com/blog/154/evolving-construct-2s-export-options

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • It's most likely your network configuration preventing it working rather than anything to do with Windows 10. See Troubleshooting Construct 2's preview server.

  • In general, I really can't help without a minimal .capx demonstrating the problem (ideally with just 1 or 2 events).

  • This is my main point:

    By all means hack away and experiment for your own learning purposes, but we will probably not use any of the changes, and we cannot offer any support if you have made a single change to the engine.

    So you can hack away if you like, but we can't exactly copy-paste snippets of code from the forum to our engine. (There's also copyright concerns and code licensing - I just thought of that )

    Off-screen collisions always count, and if you have a lot of different collision checking events, they all count too. So if you have 25 objects and you test collisions between all of them, that's already 600, suppose you have four repeated sets of events which makes it 2400, then at 60 FPS it's 144,000 checks per second. So you can easily fill large collision check numbers even with a small number of objects. The key is to reduce collision checks to only objects which need it, and eliminate redundant collision check events. (i.e. use sub-events to a single collision check event, rather than making the same check in different places)

    Again, nothing specific to Construct 2 there, it's just maths. But C2 does make it easy to accidentally make loads of checks, because things like checking every combination are implicit.

  • Closing, please see the bug report guidelines, a .capx is required. The guidelines describe why it's in our mutual interest for you to not send your whole project.

  • The only way we can actually verify we don't break or slow down people's games is to ship the change in a beta release, and my previous experience of this is much smaller changes had game-breaking results. Even just reordering the operations or putting brackets in a different place (e.g. (a * b) / c vs. a * (b / c)) can change the floating-point precision, increasing or decreasing rounding errors, and break some games which relied on the previous behavior. I already did a bunch of work optimising all this in the early days so it has pretty good all-round performance, and I just don't see the point of risking such enormous collateral damage for some pretty small changes.

  • This is due to the architecture of the Internet and affects any software trying to make connections. Your only options are either:

    a) run a TURN server and pay for the bandwidth costs of relaying all traffic for the users who cannot directly connect (this is what services like Skype do to work around it)

    b) wait for the IPv6 rollout which should alleviate the worst cases of NAT by having a much larger set of available addresses.

    • Post link icon

    We possibly did announce C3 too soon. Our intent was to

    a) start raising awareness of a new product coming out at some point in the future, and

    b) explain why Construct 2 development might be slowing down somewhat.

    However for the reasons I posted earlier we never felt like it was a good idea to announce anything further. So I can see the frustration. But I'm not sure what else we could do, other than e.g. announce something we're still not 100% sure will launch, and then distract sales away from C2 for something which doesn't even have a release date yet.

    We have actually been working on further hiring and are still looking in to some expansion - we just haven't made announcements yet. But Scirra has been bigger than just Tom and I for a while now.

  • Honestly, I have doubts this is at all helpful. I'm sorry, it's a very complex engine and it has years of subtleties coded in for long-ago bug fixes, backwards-compatibility purposes, and optimising for general-purpose performance rather than specific cases.

    For the leftover semicolons: this basically doesn't matter, but the reason it's there is because the exporter deletes all assert checks on export. It has to leave a semicolon so they still count as statements though. For example:

    if (x)
        assert(y);
    
    doSomething()[/code:1uagwfj6]
    
    If the runtime deletes the assert [i]and[/i] the semicolon, this effectively becomes:
    
    [code:1uagwfj6]if (x)
        doSomething();[/code:1uagwfj6]
    
    What was previously an unconditional call is now conditional based on the if. So in this case your suggestion of removing the semicolons could create bugs where there were none before.
    
    "nextHighestPowerOfTwo" has never come up in any profiling measurements I've made so I believe any attempts to optimise it are just a waste of time.
    
    The collision checks are optimised for general-purpose performance. It's often possible to take some specific case and optimise that to be something like twice as fast, but it could make other cases half as fast. That's not a good tradeoff for an engine like Construct 2, since making some games slower and others faster is worse than having them all run at reasonable performance. (What if your game is one of the slowed-down ones? "It made other people's games faster" isn't much consolation.) For example the existing C2 segment intersection check can early-reject based on a bounding box check before it does any math. Your alternate version does some math calculations before it can reject, which isn't necessarily faster or slower over all, probably just different (a different set of cases will be faster/slower). The same is probably true of your contains_pt code.
    
    Then on top of that, there is a significant backwards-compatibility concern. One of the reasons I don't want to make any changes to these functions is they are absolutely core functions that almost every game heavily depends on. In the early days we made some tweak - smaller than your changes - and it broke a bunch of platform games because floating-point numbers started rounding in a different direction and ultimately it meant you couldn't fit in tunnels you could previously fit in to! At the time I reverted the change and it's been left like that ever since. So it seems very unlikely we could ship any such changes without breaking a wide range of games. I mean, you say yourself, your changes already broke your own game  It doesn't matter if it's 100x faster, if it doesn't work correctly we can't use it, it will break existing games, and if that is our overall philosophy, we end up building a buggy nightmare of a product which is fast but never works properly (quite a good description of how Construct Classic ended up).
    
    Finally, I'm afraid if you so much as change a single line of code in the C2 engine, we can't support you any more. For example we cannot accept any of your bug reports any more. If you have even a tiny change to the engine, and you report a bug, we will reject it in order to rule out the chance the bug is caused by your own engine changes (which is especially likely if it's an unfamiliar codebase). A warning to other users: this is also true if you are looking at these posts and decide to paste in any changes to the engine. If the code is not 100% exactly identical to what comes with the installer, we can no longer offer support.
    
    I don't see that you will be able to overcome any of these limitations in your approach, so I must discourage you from trying this. By all means hack away and experiment for your own learning purposes, but we will probably not use any of the changes, and we cannot offer any support if you have made a single change to the engine.
  • Haha kinda funny to see such an old thread. Yeah, so I got the angle expression wrong in 2008. I do apologise. Hopefully I got it right for the last eight years instead XD

  • Yeah, I guess that would do it. We're just so pushed for time right now I don't think we could prioritise anything that isn't essential, though.

  • There would be a lot of tiresome admin work whitelisting people's suggested URLs, plus there would be grey-areas that are difficult to define e.g. a facebook page that looks like a possible scam, etc.

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,779,385 followers

Connect with Ashley

Trophy Case

  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Forum Wizard Made 5,000 posts in the forums
  • Forum Unicorn Made 10,000 posts in the forums
  • Forum Mega Brain Made 20,000 posts in the forums
  • x126
    Coach One of your tutorials has over 1,000 readers
  • x74
    Educator One of your tutorials has over 10,000 readers
  • x5
    Teacher One of your tutorials has over 100,000 readers
  • Sensei One of your tutorials has over 1,000,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • x42
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

32/44
How to earn trophies

Blogs