Nepeo's Forum Posts

  • You do not have permission to view this post

  • Sounds like the hybrid web app community has kinda exploded over this, there's things popping up all over the place. There's unfortunately no official information from Apple over how they are flagging apps for this, or when it's going to become a real problem.

    I believe this github.com/apache/cordova-ios/issues/661 is the main issue tracking this on Cordova.

    The design intention of Cordova is that the actual webview engine component is supposed to be replaceable. On iOS the default is based on UIWebView, but pretty much everyone ( us included ) has replaced it with the official WKWebView based engine. The issue is probably that the code that references UIWebView still exists, even if it isn't being used. There was some people on the React native bug tracker saying that you could just delete the file referencing UIWebView and the warning goes away. I think cordova is likely to be a bit more tightly bundled than this though. I guess they will release a new version of cordova ios at some point that replaces the UIWebView version outright, but no idea what the time scale will be like here.

  • Depending on what you want there's a few options.

    The inbuilt save option is the easiest, it just saves the current state.

    If you want a bit more control you can save just the information you want to local storage.

    If you want a full on system then the BinaryData plugin can be used to encode/decode a binary file.

    If your intending to create a web app you can get users to select a file with the "filechooser" plugin, the "ajax" plugin can read the file into the "binarydata" plugin for you. When saving you can use the "browser" plugins "invoke download" action to download the contents of a "binarydata" object with a filename of your choice.

    If your intending to create a desktop app (NWJS) then you can use the "NW.js" plugin to read a file directly into a "binarydata" object, and can write it back using the same plugin.

    In terms of file extensions you can use pretty much anything, the 3 letter limit on file extensions date back to software restrictions in windows in the early 90's and isn't a problem anymore. So you can use as many letters as you want.

  • The while loop runs continuously, blocking all other actions until it's condition becomes false. If you remove the "while" condition and just have the "timecounter < footstepsTime" in your event then it will check the conditions once per frame, which I believe is what you want.

  • Being a programmer is just a title. I think most people use the term for a "Professional programmer" ( someone who's main source of income is creating programs ). However, many programmers make a habit of writing and releasing software for free. So in a way you wouldn't call them "professional", but they are arguably very skilled at programming. While you may not spend your days writing source code, what you are doing by creating event sheets is programming your game. So you are in fact acting as a "game programmer" or "game developer". Don't let the term "programming" seem scary or hard, some types of programming are easier or harder. The rest is just practice.

    I'm not sure why "pick all" isn't working in your project, it might be down to the order of your conditions? The filters are applied in order, so it might be that other filters are being applied after your "pick all". It can be hard to visualise which instances are picked at any one point, but as you've found the "pick top instance" condition I think with some experimentation you can probably figure out how the rest work. It's one of the most powerful tricks of the event sheets in my opinion, so it's something worth figuring out!

  • I think part of the issue here is a misunderstanding of "picking". Whenever you refer to an object like "Sprite3" you are actually says "all instances of Sprite3 that are currently picked". By default everything is picked, which is why with your first version you were moving everything. Some conditions apply a filter to what is picked. For instance "on object Sprite3 is clicked" will only pick the instance that has been clicked. Similarly if you create a new instance that singular instance is picked.

    Your "Cursor is over Sprite" condition is filtering the picked instances down to only instances that are under the cursor. There is a condition in system "Pick all OBJECT_NAME" which allows you to make all instances of Sprite to be picked. Most actions will modify all the picked instances of the object you pass in. Whenever you use an expression like "sprite.x" it will return the value for the first picked instance.

    We haven't made any changes recently. Showing videos can be slow/unreliable due to the fact they are streamed over the network. I don't know how much if any of the video is actually downloaded during the "load" step, just that the Admob SDK says it's "loaded". The error message you show is just the standard response if the video is cancelled. As for it getting stuck... it's probably just perpetually loading, hard to tell to be honest.

    I went over the delegate class for the video instance, there was one edge case that if you tried to show a video that wasn't loaded then it just ignored the call to show it. But in practice that method shouldn't be callable unless it was loaded *shrugs* I added an extra error handler there for the next version but I don't think it will ever be called.

  • The gradle issue is frustrating, we're hoping that Cordova will release a patch that resolves the issue sometime soon.

    In the meantime you can correct it by selecting the "fix" button on the error message, then confirming the required refactor.

    Using Android Studio can be confusing, it's quite complex. But once you get used to it it's not so bad.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • We don't have a system in the editor I believe. If you understand how to use the cordova CLI you export as a cordova project, edit the project to include your adaptive icons then use the CLI to build an APK. It's likely possible that you can edit them into an Android Studio project as well without too much difficulty.

  • newt

    The particle method looks good, I expect the artifacts are down to matching the emission rate to the movement update rate. If a particle isn't emitted on a frame when the object moves then it appears to sit still for the frame ( or sometimes move backwards ). These sort of time sync issues are a problem in most solutions unfortunately, due to fact we have to use discreet time steps. The drawing canvas one has obvious gaps when it moves more on a frame ( either due to a change in speed or a long tick ) you can technically fill these gaps by interpolating the position change and painting multiple times per tick.

    I'm not sure how feasible an effect would be, you need to keep track of the data somewhere. Either as a texture of the previous frame or the location of points. The texture variant would basically be what drawing canvas is doing ( although the fade could be calculated on a per pixel basis, preventing the ghosting issue ). The latter requires more information than effects have I believe.

    Maverick1912

    That looks like a pretty solid trail system, but I believe the OP is searching for a technique which doesn't involve creating many instances per trail.

  • This is the trick I described before, can lead to some minor colour artifacts unfortunately. That's down to fact that the maths means the fade tends towards 0 but never reaches it. Might still be useful though

  • I think the suggestion was to not use objects, just the paste the current object position onto the canvas.

    A trick I've used with canvas 2D in the past is to not clear at the start of each frame, but paint a low opacity rect over the whole canvas to "fade" the entire contents. I haven't looked into such thing with the drawing canvas, but it might be workable?

  • I just want to point out, while that bug has been fixed the iOS simulator does not support WebAssembly. Although no reason for this has been given by the webkit development team. If you are wanting to test iOS applications you will have to use a physical device for the time being.

  • We're on the latest version for Android, but we haven't updated for iOS yet. Hopefully soon though.

  • Ah awesome! I did some islands experiments when I was creating the plugin, but they were just block colour... they kinda got abandoned. But yours look way better :P

    Yeah they are pretty easy to use, they sound way scarier than they actually are. There's plenty of fine tuning you can do to get exactly the style of output you want, if you look at the section where I was creating clouds you can see some things you can try.

    Redblobgames did some island generation tutorials ages back using somewhat similar techniques. The technique went something like:

    • divide world into zones using voronoi
    • use perlin noise to decide the height of each zone ( might want to try scaling based on how close to the center it is as well for a nice island shape )
    • zones below a threshold become water
    • zones further from the ocean have higher "moisture" levels
    • zones "biome" is decided by height and moisture level ( high + wet = snow, high + dry = stone, low + dry = sand )

    Incidentally the Voronoi noise expressions return the same value across the whole zone, it's kinda like an ID value. But it isn't guaranteed to be unique. If you do something like floor(AR.Voronoi2D(x, y) * 256) you should be able to identify individual zones with that value.