Ashley's Recent Forum Activity

  • Multipass effects arent supported in Construct - I couldn't get them working with the D3DX library. Also, Construct does use mipmaps, but not for rendertargets (like canvas objects or layer effects).

  • No,that would be silly! It caches it depending on the cache setting. I've actually written up XAudio2 fully for the wiki, so check it out.

  • i have a technique for making motion blur that uses very little power and is simple to implement. the blur is generated using the "broken" subtract 0.0 shader. that shader seems to capture frames and slowly fade them away, so when u move an object under it, it captures all of its movement, and adjusting the opacity of the filter

    That effect is called frame-feedback (previous frames fade out). You can do it properly with a canvas with grab layout and less than 100% opacity - using a "broken" shader relies on undefined graphics card behavior and might look borked for other people. Personally I find it quite an irritating effect, and it's definitely not a true motion blur, more of a stepped trail effect, like spawning fading-out sprites behind a moving object.

  • It works OK for me, but if something you're trying isn't working, check it isn't reported on the tracker already, then submit a bug report.

  • Use autoplay instead?

  • Currently all the data is just embedded to the EXE. Using external data files would not make the total amount of data you need to send out smaller, it wouldn't be faster, either, and I doubt it would save memory. So I don't see much reason to do this I'm afraid

  • > I'd advise against going over 1024x1024 since the runtime requires temporary textures the size of the window and some video cards will create a 2048x2048 surface for anything bigger.

    >

    really? so it'll kill the speed at 1920x1200?

    It'll just use a lot more VRAM, that alone won't slow it down. But I imagine rendering a lot of objects at that high a resolution could be slow anyway, since you're simply pushing so many pixels to the screen.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Call pRuntime->CallOnFrame()/CallOnFrame2() to start calling OnFrame/OnFrame2 again.

  • Sorry, it looks like us devs are all a bit busy this summer! But don't worry, we should have a new build out in a couple of weeks with bug fixes.

  • Check out a tutorial if you haven't already - Ghost Shooter covers private variables for storing enemy's health, for example.

  • You're missing lots of stuff, and you might cause problems in the event engine if you don't do it properly. Here's a snippet of how the File object does 'for each directory':

    long ExtObject::cForEachDirectory(LPVAL theParams)
    {
    	CDiskObject Obj;
    	CStringArray Files;
    	Obj.EnumDirectories(GetStringParam(theParams, 0), Files);
    
    	EventParametersInfo2 epi;
    	pRuntime->GetCurrentEventPtrs(epi);
    
    	for (int i = 0; i < Files.GetSize(); i++) {
    
    		curDir = Files.GetAt(i);
    
    		pRuntime->NewSOLCopy();
    
    		if (epi.pCnds && !pRuntime->RunConditions(epi.pCnds)) {
    			pRuntime->RestoreSOL();
    			break;
    		}
    
    		if (epi.pActs)
    			pRuntime->RunActions(epi.pActs);
    
    		if (epi.pSubEvents)
    			pRuntime->RunSubEvents(epi.pSubEvents);
    
    		pRuntime->RestoreSOL();
    	}
    
    	return false;
    }[/code:3da8vbc0]
    
    You have to do all of the loop contents there - they all take care of some important apsect of picking and running events, so you can't skip any of it.  Except, of course, [i]curDir = Files.GetAt(i);[/i] is simply there so the file object knows the current directory to retrieve in expressions.
    
    It's pretty complicated, but basically you'll notice the condition returns false, meaning the event runner in Construct stops running the event.  Instead, the code in that loop essentially hijacks the event runner, running the event actions and subevents manually, in a loop.  It works recursively so it works with two looping conditions in one event.
    
    If you want to pick a particular object in an iteration, after the call to NewSOLCopy(), do your SelectAll() followed by Select() (and, of course, set the SOL_MODIFIER flag).
  • Yeah, they're only four bytes. Pointers, to any type at all, are just an address in memory. The type of the pointer (eg. the type of thing at that memory address) is just for the compiler, so it can tell if you're accidentally trying to get an X from the memory address of a Y. Also, if you use a vector, it won't use (much) more memory than you need, so I'm sure your 1000s case is unrealistically extreme

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,538,038 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
  • x109
    Coach One of your tutorials has over 1,000 readers
  • x69
    Educator One of your tutorials has over 10,000 readers
  • x3
    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
  • x38
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

32/44
How to earn trophies

Blogs