Fengist's Forum Posts

  • or scaling up a 16x8 sprite if the graphic isn't too important?

  • I noticed this as well but since I don't use effects very often I assumed I was doing something wrong.

  • Don't know a thing about them but, I would be VERY surprised if ads are shown to developers. Just as a test, try it from another computer without logging in.

  • Pin behaviour

  • To my knowledge, silent mode on a phone only affects the ringer volume. It doesn't have any effect on audio output from the browser.

    *edit

    Found this which explains it a bit better

    stackoverflow.com/questions/43440882/can-javascript-detect-if-a-mobile-device-is-muted

  • I've used FontForge in the past to create custom fonts and it does a decent job and it's not too difficult to use. I believe it can save in .woff.

    fontforge.github.io/en-US

  • I'd agree, Construct is not the right tool for this. It doesn't have any native database built in nor does it have an easy way to import external files like excel spreadsheets. Plus, dop is right. You're using a spreadsheet, which is great for doing calculations, like a database and storing information. It'll do it, but searching through client data and showing just that data is not going to be it's strong suit.

    Are you needing to remotely access this data? If so, you're probably looking at a custom solution that uses MySQL and a web interface like WordPress or some other cloud based solution. If you only need to access it locally, MS Access.

  • Couldn't you just display it in an Iframe and use the HTML char set?

    w3schools.com/charsets

    And/or use something like Google fonts? They have fonts in 30 odd languages.

  • I wrote a tutorial a while back on the basics of using Perlin noise and the advanced random plugin.

    Wow, that was dead easy. I just replaced the starting random array with what the Adv Random spat out.

    -> Array: Set value at (LoopIndex("IslandColumns"), LoopIndex("IslandRows")) to round(AdvancedRandom.Ridged2d(LoopIndex("IslandColumns"),LoopIndex("IslandRows"))×100)

    The difference was amazing. Added yet another example project using this to the OP.

  • Umm, would a 3 dimensional array work?

    Array.at(index0,difficulty1,level3)

  • You could MAYBE use chunking to make the world gen. real time ( so only generating the visible parts ) but this more trouble than it's worth I think.

    I got to thinking after I read this that I've already got a way to easily show some of the terrain generation. I have a function that copies the array over to the tilemap. So, I just copied and pasted that function into various parts of the routine and it shows a lot of the map being generated real time. I also set the viewport to show the entire map. There's a link to that version in the OP now.

    I'll take a look at your Perlin tutorial today and see if I can make heads or tails of it. While this does work pretty well, it's not exactly what I'm looking for.

    Thanks again.

  • Might be fun to try that with the Advanced Random plug using perlin with this height=beach , this=land, that=mountain, etc.

    I looked at Perlin. There's a lot of examples of people using it to generate heightmaps. One look at the wikipedia article on it an I realized I'd need at least a masters degree to translate their gobbledy-gook. I did find a few examples in PHP that I could follow though. Not quite sure where this is gonna go just yet. The plan is a simple but cute survival game. I may throw in a volcano just for giggles. Not sure if I wanna tackle mountains just yet. For now, I'm just goofin off with some free tilemaps and png's I ran across. I'd need to come up with a real tilemap before I tackled elevated terrain.

  • Would love to see it in action :)

    construct.net/en/forum/construct-3/your-construct-creations-9/procedural-archipelago-every-146271

    Your wish is my command. Unfortunately, since I do all the laboring in an array, there's no real output till it's all done. But it's the beginnings of procedural islands. Now, for rocks, trees and all the interaction fun.

  • Since my other major project has become a nightmare of 30+ database tables, I've decided perhaps it's time to take a break and try some lighter fare. As part of that, I've been experimenting with generating procedural islands in C3 using an array and a simple tilemap. Generating a basic set of islands is relatively easy. The hard part, finding the edges and properly applying a beach. And what's an island without a beach?

    Here's link where you can see the current results of testing.

    twistedvoid.com/c3examples/Castaway

    Here's a link to a 'zoomed' out view that shows the map generation in semi-real time. You'll barely be able to see the buttons so if you don't know what they are, just click and it'll do the rest.

    twistedvoid.com/c3examples/Castaway2

    Here's a link to a zoomed out view that demonstrates both the unpredictable random array generation used in the previous examples and, the 5 random generators used by the Advanced Random plugin. The difference is amazing.

    twistedvoid.com/c3examples/Castaway3

    THANK you to everyone who spoon'ed me solutions, ideas and encouragement on this thread:

    construct.net/en/forum/construct-3/how-do-i-8/god-need-repeat-until-146195

    The journey into the unknown begins.

    For those interested, the process for creating these islands is something like this.

    1. Start with a 200x200 array.
    2. Fill in Array 3,3 to 197,197 with random numbers.
    3. Run through the array 3 times, add up the 8 neighboring cells and set that one to the average.
    4. Total all the cells and get an average of all of them.
    5. Run through the array and set any cell below the average to the value for the tilemap's water. Anything above the average gets set to the tilemap's square land tile.
    6. Run through the array and look for small water 'ponds' that create an issue when placing beaches.
    7. Run through the array and look for 'anomalies' that also create issues when creating beaches until all anomalies are gone.
    8. Place beaches from one of 12 possible tiles depending on what land and water surrounds it.
    9. Plant some random tree sprites, change some random terrain sprites to bushes and rocks.

    Finding all of the anomalies that prevented beach placement (and identifying arrangements that caused issues) was the hard part. First, it looks to see if a land tile has at least 4 neighboring land tiles.

    If it doesn't, it sets it to water. Then, it looks for and fixes issues like this:

    X|X|X
    0|X|0
    X|X|X
    

    or

    0|X|X
    X|X|X
    X|X|0
    

    where X is land and 0 is water. In both of those cases, there was no way to properly place a beach on the center tile and have it match the surrounding beaches.

    Those above were easy to spot. It looks N/S or E/W or diagonally and see if there was a land tile. If not, put one there to smooth it out. The biggest pain in the ass to find and fix was this one which occasionally popped up.

    X|X|0|X
    X|X|T|X
    X|0|X|X
    X|0|0|X
    

    It passed by the '4 tile rule' just fine and passed the horizontal and diagonal checks. For that one, I had to create a special rule. For the one labeled T, it checks W and S for land. It then checks SW for water and then, checks N for water. If all those conditions are true, it sets the north tile to land.

    So, that's the basics.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • The eventsheet blocks any other execution until it has completed. You need to split the work up somehow, ideally into chunks that occur in under 16ms. A wait action for 0 seconds should pause work until the next tick, allowing the layout to render.

    It can be quite hard to decide when to pause, often it's easier to pause more often than you need which slows down your loading significantly. But at least if your not blocking anymore you can show a nice loading animation.

    Perfect! Added the wait 0 after each function and the progress bar updates. An unexpected method for solving the problem, but hey, it works.

    Thanks!