Nepeo's Forum Posts

  • LukeW I think the issue your struggling with here is that the orbit behaviour updates later in the tick than most behaviours. The platform behaviour is seeing the platform before orbit has updated it, hence it appears to be lagging by 1 tick.

    The reason why it behaves like this is due to "orbit pin" ability. By ticking later it guarantees that the object it is pinned to updates before it in the tick, so that when it updates it's not out by a tick. But of course causes other behaviours to be out of sync. The "pin" behaviour uses the same technique, and has similar gotchas. As dop2000 mentions you can probably work around this by using the pin behaviour to stick the character to the platform temporarily.

    If you file a bug about this on the tracker ( should be easy enough to create an example project ) then we can discuss it with Ash. It's a difficult issue though.

  • While this sounds like quite a simple thing, there's actually quite a lot going on there. It would be good if you could file a bug for us to look at.

  • It isn't forced, "loopindex" is a variadic expression ( meaning it can take any number of parameters ). Any expression that takes 0 parameters can omit the calling brackets. While it's classed as variadic it only really makes sense to use it with 0 or 1 parameters.

    I tried just typing loopindex into an expression and had no issues with autocomplete or similar?

  • Well there's 2 options you can go for here, provided you are the one creating the tilemap data.

    The first is that you could use an array instead, with only 2 columns. One for the key and another for the value. Although this obviously makes it harder for you read a value for a specific key.

    The other option is that you can use a JSON file like so:

    {
    	"key": [ tileindex, tileid ] 
    }
    
  • An index doesn't have much meaning in a dictionary. The order of the entries is not guaranteed so you can't get/set values at an index.

    What are you using the index for? Might help come up with an alternative for you if we could know how you are using the dictionary.

  • I'm not sure if the loopindex expression works with the Dictionary.ForEachKey condition.

    Within a dictionary loop you can use Dictionary.CurrentKey and Dictionary.CurrentValue expression to access the current key/value pair for the the loop. If you want to nest loops then perhaps use local variables to hold the values of the parent loop.

  • Looks like a really cool game, congratulations on the award 🎉

    It's always good to hear about what people have made, so yes we do care!

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Your apple team ID is part of your iOS developer membership, I can't imagine it would be any use without the associated account. Buying one from a re-seller sounds VERY dodgy, and I think you should stay clear of this.

    You might want to look at this article thisinterestsme.com/instant-game-apple-developer-team-id

  • jobel

    you can't say it doesn't make any noticeable difference with subpar headphones

    It was purely anecdotal, at no point did I claim I was performing a definitive test. Your right that me spending 30 minutes listening to short sections of 1 track isn't a completely representative test of an audio format. But I think perhaps any higher level of testing is probably overkill for what we were trying to decide. As a recreational guitarist I like to think my ear is fairly passable and I used a fairly nice pair of sennheiser on ear headphones. So I was probably able to discern more of a difference than the average person would. If you would like to look into it more xiph publish very detailed reports on their work with opus.

    All this is by the by though, as I was arguing for adding the option to the dialog. I think 96Kbps is likely fine as a default value, but we can allow users to choose higher or lower as they like.

  • It's quite easy to pass the value into the encoder, the dialog is already capable of encoding files to given bitrate but lacks the UI components for the values to be changed. Allowing different bitrates does require some rethinking of how the dialog works though. I'm tempted to say we just give users all the settings and add some advisory labels. Might be that people want to include low quality voice clips, in which case 6-8 Kbps is fine.

  • They don't have to, it's shown automatically when the SDK is configured by the user ( if required ).

    The common use case of it would be if the developer should add a "show consent dialog" button to their settings screen so that users can update their preference. You could probably get away with not checking, but the dialog won't show itself if the user is not in the EEA.

  • Well I decided to give it a whirl, some of the test tracks we have for the encoder/decoder are uncompressed studio recordings from a musician friend of mine. They are going to be about as clean as you can get in terms of a recording. My headphones aren't monitors(studio grade) but are more than good enough for this.

    Comparing the raw audio vs the compressed they seem nearly identical, after several listens the only thing I noted was that the guitar and brass wasn't quite as bright. Increasing the target bitrate to 128Kbps removed any noticeable difference, and increased the track size by 1MB ( 3.3MB to 4.3MB ) original track was 45MB. Testing at 512Mbps gave no noticeable difference between it and 128Kbps and increased the size to 15MB.

  • It's exposed in the Admob SDK in the Java/Obj.C code, but we don't expose it to developers no. I believe that's what the feature was intended to request ( specifically in this context ).

  • I think there may have been some crossed wires Ashley likely responded to your feature request but he doesn't directly work with the Admob SDK.

    According to Admob it is a legal requirement if you are releasing a game in the EEA ( European Economic Area ) with adverts to ask consent from the user for displaying personalised ads. Even if you are not collecting data yourself. This is because the ad framework would collect personally identifiable information from the user via your application. Once the user has given consent they must be allowed to revoke that consent at any time. Hence you should have a button within your application to show the consent dialog at some point after you have initially shown it.

    The consent SDK does include a method called "isRequestLocationInEeaOrUnknown" which would allow you to know if you should show the button. It doesn't require geolocation data.

    Further information can be read at Admob EU consent

  • It's encoded with a variable bit rate and a target of 96Kbps. Compression level of 10, with 10 being the highest quality and slowest to encode. These are the default encoding settings for libopus with ffmpeg ( which is what the audio encoder uses internally ). There are various tools for checking the quality of an audio file, such as ffmpeg, which you could use to find out more about a particular file.

    Opus is generally considered one of the higher quality audio codecs. You can see a table comparing relative performance of Opus at different bitrates on this page.

    We certainly haven't had any complaints about the quality of the audio encoding or the size of audio files that I'm aware of. If we wanted to provide users with the option of reduced size or increased quality we probably could. Although we would have to modify how the audio encoder dialog worked, and likely make it more complicated. Create a feature request if this is something you'd like to see.