Ashley's Forum Posts

  • Download 0.95 now!

    (get 0.98.6 instead, foo')

    Construct 0.95 includes several substantial additions, including dynamic shadow casting, skewing sprites, a particle effects plugin, dynamic collision masks for Canvases, installers, and more, including the usual bug fixes. Examples of these should be appearing in the uploads forum shortly!

    Please remember you can support Construct's development by donating, via the Donate button on the main page.

    Animator

    The Animator bar has been changed to prevent runtime errors being allowed to happen, as well as to make it more intuitive through drag/drop, and a new UI.

    • [ADD] Drag/drop support
    • [FIX] Can no longer remove last animation
    • [FIX] Can no longer remove last angle
    • [CHANGE] Changes to way animations are added to prevent runtime errors
    • [CHANGE] Cosmetic changes to make animations simpler

    Behaviors

    The new behavior 'Shadow Caster' is attached to objects which will have a shadow, allowing realtime and multi-light shadows. Other fixes for some other behaviors.

    • [ADD] New Shadow Caster behavior for use with Light object
    • [ADD] Condition to Bullet which triggers when object exceeds range
    • [ADD] Target methods for Turret behavior: 'Follow first in range' or 'Always target nearest'. First-in-range requires less processing, but always-nearest is useful for many situations
    • [ADD] Rotate behavior (spin objects with acceleration)
    • [FIX] 'Get speed' expression of platform movement

    Effects

    Offset allows objects to be drawn at an offset, which can create a nice scrolling effect without moving the layout.

    • [ADD] New 'Offset' shader to display objects at an offset

    Event sheet editor

    • [ADD] Several options to context menu (delete event, etc)
    • [ADD] 'For Each Ordered' allowing iteration of objects in a specific order via an expression, eg. ascending Y coordinate
    • [CHANGE] Pressing enter when inline editing now closes the window

    General

    The addition of the Export Wizard - when you export - means python modules can be individually picked, and that installers can be created for your games and applications.

    There have also been many changes to the save/load system to hopefully prevent corruption, and many UI changes to the event wizard and picture editor.

    • [ADD] Export Wizard to allow picking of python modules used
    • [ADD] Installer creation to Export; handles license, picking install path and bundled files
    • [ADD] Option to export as screensaver
    • [ADD] Warning to export if preview is already running
    • [ADD] Context menu to MDI tabs
    • [ADD] Button to make Picture Editor background go black
    • [FIX] '&' removed from object names preventing Mouse & Keyboard breaking Python and having syntax errors in expression editor
    • [FIX] ACE filter now non case-sensitive
    • [FIX] Object icons now not mixed in insert object dialog when making applications
    • [FIX] Memory leak in Event Wizard
    • [CHANGE] .cap save/load stability - should help avoid corruption or at least improve reproducability
    • [FIX] Crash using some tools on icons in Picture Editor
    • [FIX] Out of VRAM in Picture Editor now gives errors instead of a crash

    Plugins

    Many new plugins are available, faciliating existing and new operations - such as shadows. HTTP allows direct and very easy interaction with all sorts of web forms, and Particles (3 demos in uploads) can work with thousands of particles a second with no slow down.

    • [ADD] Light object for casting dynamic 2D shadows from objects with Shadow Caster behavior
    • [ADD] Particles object, for spraying large numbers of particles efficiently
    • [ADD] HTTP object to faciliate POST and GET requests very easily
    • [ADD] Sprite: Skew horizontally/vertically added and actions/expressions to modify at runtime
    • [ADD] New Bar Chart control for easy charting
    • [ADD] New CRC32 plugin for verifying the integrity of files and strings and to check if they're the same
    • [ADD] New Text Manipulator plugin for string and file I/O operations relating to text
    • [ADD] Destructible terrain - 'Update collision mask' in canvas object - paste sprites with Erase effect to cut holes
    • [ADD] Set visible to Edit
    • [ADD] 'Download to string' to Download object to easily retrieve web pages and update files for example
    • [ADD] Load file as an expression to File object
    • [ADD] Mouse & Keyboard: Set/Get mouse X/Y in screen coordinates
    • [ADD] Tool window property to Layout, and layout names displayed correctly in popups
    • [FIX] Memory leak in Image
    • [FIX] Problems in INI
    • [FIX] Styles in List object now work together
    • [FIX] Double-clicking canvas, text objects now edits them
    • [FIX] 'Is on layer' now 1-based, can accept layer name as string
    • [FIX] Texturing on 3D boxes should now be correct

    Runtime

    Various crashes and optimisations in the runtime, with the reported SOL and triggering bugs (with DirectSound) fixed.

    • [FIX] Memory leak in runtime
    • [FIX] Change to CRunObject size in python runtime
    • [FIX] Crash with >10,000 objects on screen (no limit is in place so you can freely create many more)
    • [FIX] 'For Each' was not picking associated movements/containers, causing crashes
    • [FIX] Object picking was not always working properly in event groups
    • [FIX] Testing collisions with families did not pick the right objects
    • [OPT] Further vertex buffer optimisations to display engine (should now render large numbers of sprites faster)
    • [FIX] 'Start of Layout' and other triggers double-triggering in some cases
    • [FIX] Bugs in quicksave/quickload
    • [CHANGE] Debugger window moves out of the way by default
  • Hey Burkey, long time no see

  • Question: is there an event that goes like "on previous event done" ?

    I don't understand... if you want a condition like this:

    + Condition

    -> Actions

    + On previous event done

    -> Actions 2

    This is equivalent to

    + Condition

    -> Actions

    -> Actions 2

    How is such a condition any use...?

  • Hmm, looks like some kind of stack... it should be possible with the array object, if you keep track of how many items have been read with a separate counter or something. If you place an Array object in a container with the unit, you can store a whole array of data on a per-instance basis, which might be useful.

    BTW Terminal Orbit never had a build queue, construction units were one-shot...

  • How do i negate events. To my dissapointment, there was no "right click-negate" option. This should really be included.

    Right click, Invert condition!

    [quote:ohfle3tu]Secondly, i still haven't managed to distinguish between "or" and "and" event relations.

    All conditions in an event have to be met for the actions to run, therefore there is an implicit AND between them. ie.

    + Condition 1

    + Condition 2

    + Condition 3

    -> Actions

    The actions only run when (Condition1 AND Condition2 AND Condition3) is true.

    OR logic can be achieved either by using the OR condition, or duplicating the actions over two events, or by using functions, eg.

    + Condition 1

    -> Actions

    + Condition 2

    -> Actions

    This is comparable to (Condition1 OR Condition2) -> Do 'Actions', but isn't quite the same, since it's possible the actions will run twice if both conditions are true. The OR condition resolves this.

    I do want to remove any annoying usability issues that people may run in to, so is this enough to satisfy your eventing?

  • The 'move to' actions in the RTS movement run a fairly CPU intensive search algorithm to generate the shortest path to the destination. I need to see the .cap to be able to tell, but my best guess is you're running the 'move to' action constantly over and over again, which means its running thousands of pathfind algorithms every second. You only need one 'move to' action and they will generate a path and move along it - otherwise, if you want to reach a moving target, use a 'move to' once every second or few seconds, to keep CPU usage down.

  • I had a quick look over the example with the 10 example events. Here's a very quick review:

    1 - triggers as subevents to triggers shouldn't be allowed, i'll try to fix

    2 - as above

    3 - nothing wrong with this: when global value = 0, pick a random object. That makes perfect sense.

    4 - it's up to you to order your conditions correctly. It doesn't actually matter which way round they are, but as you say, it might be clearer to say 'Global value = 5, pick objects with height < 6'. However, I don't think the IDE should enforce the order of your conditions here, since different ordering might make more sense in different situations, for readability.

    5 - triggers should be first condition, i'll try to fix

    6 - Makes perfect sense, will loop until y >= 400

    7/8 - Not sure whats wrong here?

    9 - string literals shouldn't be able to be passed to value parameters, i'll try to fix

    10 - What's wrong with this one?

  • Just finished my last exam today... Woo!

  • In any resizable game I've developed, I've always just positioned everything relative to the window, ie. using the expressions ScrollXLeft, ScrollXRight, ScrollYTop, ScrollYBottom (and DisplayWidth, DisplayHeight). This way, no matter what you resize the window to, the objects automatically position themselves relative to the window.

  • You can pass information to the server in the query string, and return values from the server in the page that is generated. That's two way communication. What else do you need?

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You could try using the Download object to download a page such as myfile.php?data=1234...

  • I think you want the boxLeft/boxTop/boxRight/boxBottom float parameters, which are detailed here.

  • Firstly, j0h, please stick to one username only. Looking at the IPs of new registrations you seem to have at least 3 accounts here now, and possibly more. That is confusing for me and the users, please do not sign up any more and stick to your current account.

    [quote:3vihb7hl]The basename of an object is "sprite", and it this "leakes" into the events sheet editor. Thats confusing.

    It's good practice to rename it as soon as you insert it - Construct can't second guess what you're going to use it for. Although:

    [quote:3vihb7hl]Perhaps a "Please name this object" dialog box at the creation of certain objects is a good idea?

    This is a good idea and something I had planned.

    [quote:3vihb7hl]If you think this trough, then the only logical aproach is to start each new event blok with a "flow event" ... where "top down" is the mainway of running it, with exeptions to events that need a inmediatly interrupt, as mouse events do.

    This part of the event sheet editor was designed a long time ago; originally, it was coded by another developer, and at the time I disagreed with him and wanted to make sure triggers must be the first condition of a top-level event, and never be allowed in subevents, since this clarifies how the runtime runs the events. With triggers in subevents, it does obscure the top-down approach, since logically it goes upwards to read above conditions in parent events, then downwards to run actions and other subevents. I don't like this, so I'll see if I can change it.

  • Simply select the ground, and under 'Attributes' in the properties bar, tick 'Solid'. If you go file - new - template and pick Simple Platformer, there's a demo of this in action (but not animations).

    Using the animator bar you can add animations and animation frames to a sprite. If you then add the 'Mouse and Keyboard' object, you can add events such as 'On shift pressed - change to jump animation'.

  • I haven't figured out why yet but I've had several reports of older graphics hardware (ie. 64MB cards and under) crashing while opening the Picture editor. I'm doubtful it's actually a VRAM issue since the ghost shooter tutorial is unlikely to top 32mb, but I'll try to add some error checking to prevent an outright crash and possibly tell you more information about the problem. Also, could you tell me your screen resolution?