Ashley's Recent Forum Activity

  • Tom, if you've got a couple of film grain textures I could have a shot at making a film grain effect. I'm useless with art though. I guess you'd need a bunch of black-and-white textures that have just the film grain pattern on them, then I could use that with an effect to process the background, and switch randomly between the textures to give the effect of frames going by.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Use the function object's Call Function After Delay, eg:

    + Any key pressed

    -> Make sprite visible

    -> Call function "make_invisible" after 2000ms

    + On function "make_invisible"

    -> Make sprite invisible

  • OK, I made a few tweaks like being able to change the strength and supporting transparency:

    // Sharpen
    // Elvis Presley
    // PS 2.0
    // A simple Sharpen Shader.
    
    // Foreground texture
    texture ForegroundTexture;
    
    // Foreground sampler
    sampler2D foreground = sampler_state {
        Texture = (ForegroundTexture);
        MinFilter = Point;
        MagFilter = Point;
        MipFilter = Point;
    };
    
    //#PARAM percent strength 0.1 : Strength : Strength of the effect.
    float strength;
    
    float pixelWidth;
    float pixelHeight;
    
    // Effect function
    float4 EffectProcess( float2 Tex : TEXCOORD0 ) : COLOR0
    {
       float4 color;
    
       color = 9.0 * tex2D( foreground, Tex.xy);
       color -= tex2D( foreground, Tex.xy + float2(pixelWidth, pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(0.0, pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(-pixelWidth, pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(-pixelWidth, 0));
    
       color -= tex2D( foreground, Tex.xy + float2(-pixelWidth, -pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(0, -pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(pixelWidth, -pixelHeight));
       color -= tex2D( foreground, Tex.xy + float2(pixelWidth, 0));
       color = color * strength + (1.0 - strength) * tex2D( foreground, Tex.xy);
       //color.a = 1.0;
    
       return color;
    }
    
    // ConstructEffect
    technique ConstructEffect
    {
        pass p0
        {
            VertexShader = null;
            PixelShader = compile ps_2_0 EffectProcess();
        }
    }[/code:akpn529n]
    
    This is in the next build as "sharpen.fx", so you can cut and paste that in and carry on using it in 0.99.
  • Wouldn't be surprised if the angry mob scared him away

  • I've amended the documentation to clarify this.

  • Haha, way to hit a nerve with the community Psmith

    I think we've established renaming a variable to something like "remember" is extremely counterintuitive - it actually makes it more obscure and impenetrable - the opposite effect to the one you intended - because the rest of the world calls it a variable. Still, if you're looking for a game development tool which you don't even need to use variables, have a look at something like Popfly or Kodu if it's released, but you'll probably find yourself severely limited in what you can create. If you want to create games as complex as Construct can without touching such basic building blocks as variables, good luck with that There's a thing to counter terms and concepts you don't understand, and it's called "learning"!

    For context, here are some of the things you have to specify or consider when declaring a variable in C++. This is not exhaustive, just off the top of my head. Perhaps it will give you some perspective on how far simplified Construct is already:

    • constant or variable
    • static, global, or local to a specific scope and if so its lifetime before leaving scope
    • volatile for thread safety
    • a fixed unchangable type such as boolean, integer (8, 16, 32 or 64 bits signed or unsigned), floating point (single, double or long double precision), string or text (wide/multibyte via const char* C style arrays or a handling class such as std::string or MFC CString)
    • initial value, where class const member variables must be defined in class initializer lists
    • memory address, location on stack or dynamic allocation on heap, heap memory deallocation, alignment, structure packing or array alignment
    • assignment involving implicit and explicit casts, possibly involving operator overloads, conversion routines, and associated performance penalties

    In Construct, all you need to say is whether it's text or a number, and its initial value. Hopefully you can see how far it's already been simplified in Construct and how much technical jargon has already been removed. Renaming a variables is a step too far though. That's what they've always been called and always will be called. There's no need to take that last step.

  • If you want it to look the same, you need to look up the algorithm photoshop uses and reproduce it.

    Some hints:

    • Get rid of the #border-mode line if it looks the same without it, the shader will run faster
    • If you want to get the next adjacent pixel to the lower right, tex2D( foreground, Tex.xy+0.0001) won't do that. Texture coordinates are percentages of the texture size, so you're actually going 0.01% further along the texture which probably isn't what you want. However if you did Tex.xy + float2(pixelWidth, pixelHeight), that's the offset you need to move one pixel.

    If you always move an integer number of pixels along, you can also get rid of linear sampling and use point sampling instead, which runs slightly faster.

  • change all of these cyptic, programmer specific terms into their "human readable" forms?

    Hehehe, you should try real programming!

    Seriously, though, I do think the terminology used in Construct is sufficiently simple. We have to strike a balancing act. On the one hand, beginners like you have to have a fighting chance. On the other hand, we aim Construct to design commercial quality 2D games, and if you're an experienced user, the "big colourful simple easy" approach of software like Kodu is nothing but a hindrance. By the way, I fired off an email to one of the guys on the Kodu project a while ago because I thought it was interesting. He described the project as aimed at children, and their site emphasises their young target audience. Construct isn't meant to be a kid's program and completely dumbed down.

    [quote:310po22e]Having downloaded the program and clicked around quite a bit, I can't say I find it to be totally as comprehensible as I had hoped.

    Did you try a tutorial like Ghost Shooter or Deadeye's excellent Platform School? They guide you through the basics step by step. I wouldn't be surprised if you couldn't figure out a fairly complicated bit of software like Construct just by "clicking around".

    [quote:310po22e]Another thing I noticed after studying the Wiki and such is that the tiny icons that are strung together in sequence, indicating the order of "events" and "functions" are not incredibly descriptive

    Are you in the right event sheet editor view? It sounds like you're in chronological view, which is designed to be compact and you have to hover over icons to see what they are. If you switch to List view in the Events tab of the ribbon, everything's laid out descriptively.

    [quote:310po22e]the obligatory "programmer speak" begins to emerge all over the place - words like "variables", "global variables", "functions", "z-order", "exclusion"

    Many of these terms are not programmer specific and are actually general to game design. If you want to design games, for example, you have to ultimately use variables, even if they're managed by something as simple as drag and drop blocks. You simply can't avoid it for game design with any tool, any programming language, any design system anywhere. It's like trying to do math without being able to count. Another tool might "simplify" it by calling them "numbers" or something, but that's misleading. For example, you can store text in variables as well as numbers, so it would be counterintuitive and confusing to call variables "numbers" in Construct. Ultimately, that's what they are - they really are variables - so it's correct and appropriate to name them so. If you want to get in to any specialised field, even in an amateur way, you have to learn a little bit of jargon.

    FYI the terms you mentioned mean:

    variable: a value that can be changed (varied, hence variable), such as your current speed

    global variable: a value that keeps its value over the whole application, between layouts, such as your score

    functions: this is in fact named after the programming equivalent, and is to do with a special plugin that can be very useful for intermediate/advanced users. However, beginners can get by just fine without ever having to use it, it's more a shortcut for experienced users.

    z-order: the front-to-back (depth, hence Z) order of objects, such as which object shows on top when two overlap

    exclusion: an effect which has the same name and appearance of the photoshop exclusion blend

    You can find much more on the wiki.

    In short you a) need to learn a few terms to give yourself a fair chance of succeeding in game design and b) can safely ignore anything you don't understand. With Construct a beginner can make a wide variety of simple games with very few plugins and features: sprites, tiled backgrounds, text and simple events. If you don't understand a plugin or term, you don't have to use it. But it's there for if you ever do need it, and for experienced users who need to take advantage of it.

    Hope that helps

  • Just set the 'resizing' setting under application properties to 'show more window content'.

  • Ah, I see. It doesn't do it for me with unlimited framerate, so I think this is not a problem with timers, but with rounding due to ticks (at 75fps for example a tick comes every 13ms, which is a significant proportion of 50ms). Submit this as a bug on the tracker and I'll get round to it.

  • BROO: Your application does not prove anything wrong with Construct's timers. Construct uses double-precision timers using QueryPerformanceCounter, which is accurate to microseconds or better. The 'timer' system expression returns the sum of all past timedeltas (in effect, the runtime is doing what your 't' variable is doing, adding all timedeltas). So 'timer' is not the system timer, there's no way to retrieve it in the runtime currently, since it's difficult to apply timescaling to the system clock. In effect, the .cap you posted merely explores the effect of double-precision rounding errors when you multiply a number by 1000, which is independent of any timers.

    I realise the timer in the runtime therefore may accumulate a rounding error from summation of the timedeltas, and I might be able to improve the resolution of this in the next build. Still, the error shouldn't be large except over long durations.

  • Just overlay.

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,441,950 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
  • x63
    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
  • x36
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

32/44
How to earn trophies

Blogs