Ashley's Forum Posts

  • I don't know, you could try, but I doubt it.

  • Even so, you wouldn't be able to refer to the same object in two threaded event sheets, the plugins would have to be specially written as to not use single threaded data, and even then the performance gain is nothing unless the threaded events are a significant time consumer.

  • Code on CVS is the latest working copy of the code the developers use, so right now for example CVS has the 0.99.4 work-in-progress code on it. CVS does not distinguish between stable and unstable releases, it's always simply the latest code, but if you grab the code immedately after a stable release, that's probably stable code.

    Plugins don't usually change that much between stable/unstable builds; it's usually the IDE and runtime that are changing between stable and unstable.

  • No, you can't create entire new object types in events, only instances. Since Python is simply an interface to existing events, it can't either (there are no magical superpowers in Python )

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Why don't you just preview windowed?

  • Crashes are always bugs. You can search for an existing bug report on the tracker, and if there isn't one, submit it!

  • You're missing my point a bit - it's not just about collisions, that was an example of one of many areas that 3D in Construct would become a headache.

    As I said before, 3D-graphics-with-2D-gameplay is easy enough, and would be a good direction to move in. Construct as a full 3D game creator is what I'm arguing against. That means you need to start thinking about 3D angles, 3D trigonometry, 3D layout editors, 3D behaviors etc. etc. which IMO would be hard work to pull off.

  • Frame Number can never reach zero! Because to Fire (and therefore reduce Frame Number by 1), Frame Number must be greater than 1.

    Then allow firing when greater or equal to 1.

    [quote:v9j7we1m]Frame Number at 0 would make Bullet Count's frame be frame 0, which is nonexistent.

    Then if the frame number variable is 0, then set it to a different animation frame or animation.

  • It's worth mentioning that the sound does indeed play after there's no bullets and you click, I just don't want it doing it when the last bullet is fired.

    Then compare it to 0, not 1

    [quote:2l62emm6]how can I make an object do something when an instance of it is created?

    Follow it by an action. Eg.:

    -> Create object 'Explosion'

    -> Set 'Explosion' angle to random(360)

  • Try enabling 'global' for some objects, or use the 'save/load' or 'quicksave/quickload' actions before leaving the layout to save its state.

  • Well, there may be ways to hack parts of it in, but it's not elegant. Distance-based collisions simply treat the object like a circle, regardless of its actual shape. And what about per-pixel collisions? Supporting that would be extremely difficult and probably prohibitively slow with 3D meshes. So again even a seemingly simple solution is riddled with difficulties and incomplete support. Basically, without looking at the codebase, you can't imagine the immense complexity that goes in to something as simple as checking if two objects overlap with per-pixel accuracy. Then there's the rest of the engine, other areas which are even more complex and present even greater conundrums.

    We're not trying to be stubborn here. People are throwing out what they think are simple ideas, but are actual massive technical challenges because they don't know the codebase. The fact remains that even seeminly simple 3D support is extremely time consuming and complicated to develop. Just look at the number of bugs and problems associated with the 3D box plugin, and I can tell you, that alone has taken many, many hours of development time too. It's not just a 3D box. It's a 3D participant in the Construct engine, which is much, much more complicated than simply just being a 3D box.

  • If you don't need any of the edittime data at all, then no, you don't need it - but you should still at least serialize the Version number, in case you later decide you do need some properties or data. If you release a plugin which doesn't serialize anything, it instantly becomes permanently impossible to ever add any new data to that plugin, because you can't distinguish between versions

  • Nice idea for a site

  • This doesn't work:

    <img src="http://img269.imageshack.us/img269/1452/figure1.gif">

    'Else' doesn't work after a triggered event (one with a green arrow, like 'on mouse button clicked'). Since triggered events fire when an event happens, such as when a button is clicked, and can happen at any point in time, what would 'else' after that mean? Trigger at all points in time that event is not happening? It wouldn't make sense, so that's why 'else' doesn't work where you put it.

    If the other conditions were subevents to the trigger, it could work - 'else' can follow the non-trigger subevents.

    <img src="http://img8.imageshack.us/img8/999/figure2.gif">

    This one should work: if you left click or double click and you are out of ammo, play a sound. Are you sure it didn't work? Maybe post a .cap of this one. How many 'bulletcount' objects do you have? You should only have one, or the event picking will keep individual counts for each object.

    <img src="http://img170.imageshack.us/img170/7993/figure3.gif">

    Subevents are only tested if the parent event conditions were met - so you've made this one a logical impossibility. First check if 'Frame Number' is greater than 1, and if it is, then check if it is equal to 1, which it can't possibly be

  • Well if your plugin crashes don't submit a bug to the tracker, fix your plugin If your plugin has a bug in its serialization code, though, it can cause other parts of Construct to crash after your plugin code has finished running, which is probably what's happening here.

    You can't recompile an edittime plugin while Construct is open (the compiler can't write to the CSX file because construct has loaded it). However, you can recompile a runtime plugin, as long as the loaded serialize data is backwards compatible. If it's not, it will crash on preview, and as above, it might not crash in your plugin, but your plugin will have caused it. It can be very tricky to debug these problems.

    If you change your edittime plugin's serialize data while Construct is closed, it must be backwards compatible. If it's not, all .cap files using that plugin that already exist become invalid and will not load with your new plugin. Have a look at some other plugins to see how they do this. Here's a quick example:

    Say your plugin initially uses this data to save:

    void EditExt::Serialize(bin& ar)
    {
    	int Version = 1;
    	SerializeVersion(ar, Version);
    
    	if (ar.loading) {
    
    		ar >> myint;
    
    	}
    	else {
    		
    		ar << myint;
    
    	}
    }[/code:2etwz5zu]
    
    Suppose you want to add a new value, 'myfloat', to the saved data.  Increase the 'version' number to 2.  The loading code must still support version 1 (to still be able to load old .caps with the plugin's old format).  The saving code only needs to save the current version.  So you'd change it like so:
    
    [code:2etwz5zu]void EditExt::Serialize(bin& ar)
    {
    	int Version = 1;
    	SerializeVersion(ar, Version);
    
    	if (ar.loading) {
    
    		ar >> myint; // both versions 1 and 2 load a myint first
    
    		if (Version >= 2) // version 1 doesn't have this
    			ar >> myfloat;
    	}
    	else {
    		
    		// Save the current version
    		ar << myint << myfloat;
    
    	}
    }[/code:2etwz5zu]
    
    If you don't do it fully backwards compatible like that, all old .caps using your plugin break and will fail to load.  Again, lots of plugins and behaviors use versioning, so check out some on CVS.
    
    Two important points:
    [ul]
    	[li]In this case, you must initialise 'myfloat' to a default value in the edittime constructor.  If you are loading an old .cap (using Version 1), 'myfloat' will contain undefined data unless it has a default in the constructor, because otherwise nothing is ever written to it.[/li]
    	[li]The runtime loading code [b]must support all versions[/b] of the edittime serialize data.  If you open an old .cap using Version 1, and immediately hit Run, the runtime is passed the Version 1 data ([i]without[/i] 'myfloat').  Again, it will crash on preview if you don't support the old version.  So you basically need the same loading code in OnCreate() as you have in the EditExt :: Serialize() loading code.[/li]
    [/ul]