Arsonide's Forum Posts

  • It looks like you are elsewhere rounding somehow, but I may be wrong. PM me the cap, and I'll see what I can do. If it's a bug I'll fix it, if not I'll fix your cap up for you.

    Also, just an observation. It's hard to tell, but the tiling of those two images looks a little off. Did you manually move the camera on that second image? If you did, it looks like you only moved it by the camera size. Keep in mind that to fully move a screen, you have to move CameraSize*2 in a direction. Camera size is a radius, not a diameter. If that makes any sense. Moving in a cardinal direction handles all this automatically. On second glance it looks like tiling is enabled on both of them, in which case camera movements won't matter at all, since they tile on themselves regardless of surrounding noise.

    Now I really need to see the cap!

  • I have renamed Infiniscape to "Grid Tree", and have been lightly working on it amidst many other projects. Grid Tree describes the layout of the data structure better.

    Noise could probably do biomes, depending on your layout, but it will not help you generate enemies or timelines. GridTree will help with those things. For now you can look for a plugin with an integrated Mersenne Twister. I know S has a Twister expression called "Seeded Random". Seeded random is what you are looking for. The difficult part is making sure your seeds stay the same within a given area of your world - and that is what GridTree does. It keeps track of seeds for you and gives them geography, so certain seeds pop up for certain areas.

    For TIMELINES - with my rudimentary version of GridTree within Void Runner, I utilized the UnixTime plugin. UnixTime will output a unique number for every second up until 2037 or something, so it's very good for what I call a "chronological seed". I utilize UnixTime with GridTree to give the chronological seed geological importance (simply by adding the seeds together in any way, or multiplying, or subtracting, whatever as long as they are mixed in some way.) You don't want every second to have a unique weather though, since weather has duration, as do historical periods and such. So what I did was generate what is called a Markov Chain with simple periods and random sizes: "||||||xxxxxxxx|||xxxxxxxxxxxxxxxxxxxx|||||||". We have a more complicated version of this that we use for ship AI that moves the ships around in the universe before they eventually despawn by getting destroyed. Instead of simple binary on/offs, you start at a position and the future points determine directions you move. "x^^><v^".

    Until GridTree is released, looking these things up will definitely prepare you for what you have to do. I am working as hard as I can, but I have many things on the pot right now, including GridTree, Muse (generates names and stories), and a patch to the Dungeon Generator that will let it generate natural cave systems and simple towns.

  • I wasn't ready to announce that I was working on it, but I guess now is as good of a time as any...seeing as davo's code is plastered all over my wall in various notebook pages randomly tacked and covered in sticky notes.

    davo was pretty far along with his Online plugin. I ran through the source and it already has basic functionality. Honestly I think the community would like it as is, but davo obviously didn't feel that it was ready yet, so out of respect for him and his work I'm going to patch up a few features he was working on before I release it. Right now it works great over a LAN but I plan on including lag compensation features as well.

    It is based on Raknet - and I have spoken to Rakkar about what licensing issues that might entail. Basically, you can use the plugin as much as you want, but if you plan on releasing a major project to the public, you have to go to Raknet's site and accept the independent developer's license - which you do by downloading Raknet. You don't need Raknet to use the plugin, so after that you can delete it. You just have to make sure to accept their license. Raknet was davo's choice, not mine - but it was a good choice. Raknet is very feature rich.

    Their license is free, up until you make $50,000, after which you pay royalties. If you're making $50,000 on a Construct game, I don't think you'll mind. The license also stipulates that you mention Raknet in any readme files, splash screens, or credit screens.

    I have no idea how long it will take to reach a releasable state with this - I'm pretty sure I understand what needs to be added and how to add it, but it will take time. I have about four other plugins I'm working on as well as a day job. Luckily I don't have a life though, so development in my off time will be intense. I wouldn't expect it to take more than a month or two.

  • You should be able to set those options in the adjust perlin action, I will look tonight to make sure. Lower than one on the octaves makes sense, thanks. Higher than eight varies depending on your other settings. I have been up to 10 and 12 octaves at times.

  • I released a small update. At some point I am planning on giving the noise it's own visual component, whenever I figure out how to do that. It will speed up generation by a great amount, and of course lower the amount of objects in your caps.

    There are a few important fixes in the update - as well as a nice change to the camera that will let you zoom in much closer to the noise.

    Here's a little cap I whipped up pretty quick with the newer camera controls, control the wizard with the arrows - walk off screen to move around the world - and hit M to open your map. There are a lot of pretty advanced features of Noise used in this cap, so take your time looking around at it. I was thinking I could even use a large voronoi overlay to control weather systems on the world, but I didn't get that far.

    http://dl.dropbox.com/u/1032313/WorldWanderer.cap

  • The plugin was released in the correct forum. Mods if you could lock this thread that would rock. Enjoy guys. More is coming!

  • <img src="http://i55.tinypic.com/hwyfkw.png" border="0">

    Second Alpha Update!

    Relatively minor changelog - let's go over it real quick.

    <img src="smileys/smiley38.gif" border="0" align="left">Changed camera positions and size to decimal values rather than whole numbers, making it possible to zoom in much further than before by dropping under 1.

    <img src="smileys/smiley38.gif" border="0" align="left">Fixed camera north/south controls being inverted for some reason.

    <img src="smileys/smiley38.gif" border="0" align="left">Fixed noise tiling when not told to tile.

    <img src="smileys/smiley38.gif" border="0" align="left">Added many default values into the ACE Tables to guide you.

    <img src="smileys/smiley38.gif" border="0" align="left">Made it impossible for newt to crash Construct by overloading my Generate action.

    <img src="smileys/smiley38.gif" border="0" align="left">Download link has been updated, please report any problems you have.

    <img src="smileys/smiley38.gif" border="0" align="left">For those of you who are dipping under camera size 1 - and you can go as low as you like - I personally use camera size 0.1! You're going to have to drastically increase the detail now that your nose is practically in the dirt. However, you have to do so without raising mapsize or octaves too high - or performance will dive. Here's some tips for that. Raise lacunarity a tad. It will rough up the terrain and add a lot of detail. Lower persistence too - but don't overdo it, it'll over-sharpen if you go too much. We're talking lowering it by 0.025 here. You can also raise the frequency a bit. If you're creative with lighting you can also add some detail by raising the lighting contrast and lowering the elevation. And of course you can always raise octaves and map size if you are willing to take the performance hit. Just play around with it!

    Greetings everybody. I was recently doing some work on Void Runner, when it came to my attention that I needed seamless Perlin Noise. Seeing as I'd written the Perlin Noise plugin, I figured this would be no trouble at all - and indeed it was not, but during the process I realized how convoluted the Perlin Noise plugin really was. Expressions? Really? Grayscale? The reason I hadn't posted it here in the Plugins forum was because it seemed so rudimentary and rough. So I thought about it for a while, and I decided to update it with ten times the power, and ten times the usability. Behold - Noise 2.0!

    Features:

    <img src="smileys/smiley38.gif" border="0" align="left">Perlin Noise - Duh.

    <img src="smileys/smiley38.gif" border="0" align="left">Ridged Multifractal Noise - For those mountain ranges.

    <img src="smileys/smiley38.gif" border="0" align="left">Voronoi Noise - For texturing, or manmade formations, such as cities.

    <img src="smileys/smiley38.gif" border="0" align="left">Planetary Noise - My personal favorite. Perlin Noise wrapped around a sphere.

    <img src="smileys/smiley38.gif" border="0" align="left">File Support - Output to bitmaps, or use good old fashioned convoluted expressions for mathematical purposes.

    <img src="smileys/smiley38.gif" border="0" align="left">Color Mapping - Forget those old grayscale heightmaps! I mean, they are still there as an option, but now you can have color baked right in to the output. You can set the colors yourself or use preset landscape colorings that are included with the plugin.

    <img src="smileys/smiley38.gif" border="0" align="left">Lighting - Set the direction, elevation, color, brightness, and contrast, of a directional light that will be baked into the final image for the noise.

    <img src="smileys/smiley38.gif" border="0" align="left">Integrated Camera Controls - Set it and forget it. Did your player just walk off screen? Move the camera east with one action - the noise will seamlessly line up for you. The best part? You can do that as much as you want - it never stops. The world keeps on going baby!

    I had to change the name of the plugin to reflect that there is indeed more than one kind of noise out there. I have designed the plugin to be easy to use. You only need to use a few actions and you're off. However, for power users, every single detail is customizable. All the imagery up there in the header came out of Construct - powered by Noise 2.0!

    This plugin is based on libnoise. libnoise is LGPL, but the only person that matters to is me. You can do whatever you want with the plugin. I have provided libnoise in an unmodified state, as I only link with the library. Therefore no fancy legalwork needs to occur. You are free to use it however you like. I have provided a copy of the license for libnoise with the plugin.

    This is the first in a series of plugins I have planned that should help people make LARGE games. Go make infinite worlds. Make planets. GO FORTH AND PROCREATE. This wasn't about the money, so I'm not going to mandate anything on that end, but I'm going to put a Paypal donation link at the bottom of the post anyway. Donate what you want, if you want. It will contribute to the future plugins I will be making that will allow you to generate even bigger worlds. Note that I will not stop programming these plugins regardless. They are coming - you just may keep food in my stomach during the process. I work retail at Walmart, and my fianc?e has a very rare kind of cancer that has very expensive treatments and a very poor prognosis. We're barely making it. I feel not adding a donate link would be a disservice to her, as programming is my one and only talent.

    This first plugin is done - but it is in an alpha state. Play with it, look for bugs, and if you find any let me know here in this thread. I would like to get out of alpha here in a few days. I doubt there are any gigantic bugs, but you may find some. So post about them! I had recorded a narrated tutorial that was really cool, but we had to give up fast internet, so uploading a 40MB video is out of the question. The tutorial is in a crude text file zipped in with the release, but I gave you a CAP file to follow along with it. If you are confused about anything, ask your question here and I will respond as soon as I can.

    The plugin comes with an effect written by Shviller that allows you to use black and white noise to mask textures together, and a tutorial cap and text file that I wrote. Enjoy!

    Download Noise 2.01b!

    Donate!

  • Within the "Generate" action there is an option for image saving. The options are "Color, Black and White, and No" if you choose "No", then your only access to the image will be through expressions. So yeah there are expressions to access the data.

    If the seed doesn't change you will get the same noise every time, yep!

  • I hit a snag with the planet generator. Turns out spheres don't map so well into two dimensional space regardless of how fancy your math is. I have however written a tiling algorithm that will allow you to tile your noise over a number of noise maps. Here I am moving across a world with size three: http://screencast.com/t/jM72VhWxScyh

    It's about done. I just have to touch up this new planet generator. Unfortunately this version is very touchy, so you lose the ability to zoom and fine tune the camera's position, but it will go in circles forever for you - and this loss only affects the planetary noise, not the other generators. It's "spherical" (it's actually cubical). The upside of losing these features within the planet generator is that seamless tiling noise is now an option within perlin, ridged multifractal, and voronoi noise! That should more than make up for it, offering a whole new set of possibilities for people that are doing texture work rather than terrain work. The reason zooming and camera controls are unreliable with tiling/planetary noise is that making the noise tile is a post processing effect that breaks it's continuity with the noise surrounding it. So you can either have one tiling noise map OR seamless noise that goes out into infinity with zooming and camera controls. It's up to you.

  • The ACE tables are complete:

    http://screencast.com/t/TX0BsrGfz8nf

    http://screencast.com/t/O7EZaf1IET

    http://screencast.com/t/7C7ACy8mF5B

    Notice those actions are extremely condensed. Rather than have an action to modify each and every variable, I have an action for each generator that lets you pick and choose which variables you want to modify out of a list of variables relevant to that generator. You can use that action to modify one variable or all of them simultaneously, and again, only variables that are relevant. So "Adjust Voronoi Generator" isn't going to ask you what you want your octaves to be, as it doesn't matter with Voronoi noise.

    Now all I have to do is add the planetary generator. Requires some complex math because coordinates for the camera swap from X/Y to Latitude/Longitude. The camera will behave exactly the same however. It will map the sphere, and you will move it in exactly the same ways as you do with normal noise. I actually have half of it written already, it's just a matter of integration. Tomorrow I'll probably throw up that tutorial video and host an alpha version, as I'm sure you guys will run into a few bugs and have feature requests. You probably want to hold off starting any major projects until the plugin is out of that alpha stage. It shouldn't have too many problems, so alpha won't be very long. I'll just need some feedback before I declare it "done".

    Edit: Early version of planet zooming: http://screencast.com/t/oAKbPA4BK3

    Planet controls differ in that the camera's zoom level is automatically tied with the quality of the noise, so you will notice that details pop out even when you are zoomed in. You could manually do this with events on perlin noise of course - all by yourself, however - planets have another benefit. While perlin noise can seamlessly extend forever, Planetary noise wraps around a sphere, so eventually you will be back where you started.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • This thread is outdated. The plugin is released. Go

    HERE!

    <img src="http://i55.tinypic.com/hwyfkw.png">

    Greetings everybody. I was recently doing some work on Void Runner, when it came to my attention that I needed seamless Perlin Noise. Seeing as I'd written the Perlin Noise plugin, I figured this would be no trouble at all - and indeed it was not, but during the process I realized how convoluted the Perlin Noise plugin really was. Expressions? Really? Grayscale? So I thought about it for a while, and I decided to update it with ten times the power, and ten times the usability. Behold - Noise 2.0!

    Features:

    • Perlin Noise - Duh.
    • Ridged Multifractal Noise - For those mountain ranges.
    • Voronoi Noise - For texturing, or manmade formations, such as cities.
    • Planetary Noise - My personal favorite. Perlin Noise wrapped around a sphere.
    • File Support - Output to bitmaps, or use good old fashioned convoluted expressions for mathematical purposes.
    • Color Mapping - Forget those old grayscale heightmaps! I mean, they are still there as an option, but now you can have color baked right in to the output. You can set the colors yourself or use preset landscape colorings that are included with the plugin.
    • Lighting - Set the direction, elevation, color, brightness, and contrast, of a directional light that will be baked into the final image for the noise.
    • Integrated Camera Controls - Set it and forget it. Did your player just walk off screen? Move the camera east with one action - the noise will seamlessly line up for you. The best part? You can do that as much as you want - it never stops. The world keeps on going baby!

    I had to change the name of the plugin to reflect that there is indeed more than one kind of noise out there. I have designed the plugin to be easy to use. You only need to use a few actions and you're off. However, for power users, every single detail is customizable. All the imagery up there in the header came out of Construct - powered by Noise 2.0!

    This is the first in a series of plugins I have planned that should help people make

    LARGE

    games. Go make infinite worlds. Make planets. GO FORTH AND PROCREATE. This one is almost done. The plugin should be ready in the next few days. All I need to do is wrap up the Planetary Noise generator, and upload a detailed tutorial describing how to use it on Youtube.

    I will leave you with a movie of me screwing around with seamless, colored, perlin noise. As I click on each sprite, a heightmap is baked into the sprite at runtime. Notice how fast this process is, and notice that every single heightmap lines up perfectly with the ones around it. The best part? The event sheet had ten events in it - one for each sprite, and one to start the generator.

    Enjoy: http://screencast.com/t/F8UtanJXsg01

  • We use a feature of Dropbox called a "shared" folder. Beyond that, there's collaboration software. Check out Collanos.

  • Any news on this Ars?

    Yes...my fianc?e was diagnosed with small cell neuroendocrine carcinoma. It's a rare cancer that presents itself in 3% of cancer patients, and differs from normal cancer in that instead of waiting for a tumor to fully develop before sending off more cells to other parts of the body, it can send these cells before the tumor is even developed. It can metastasize before it is even diagnosed, and kill a person in three months. It has an 18% survival rate, and a 44% recurrence rate. It has to be treated extremely aggressively to beat it.

    I have been spending every last minute of the last few weeks with her. I'm sorry...I will get to this in time.

  • Basically the plugin will work as the universe does, using "stratum". These can be whatever you like, and are effectively onion layers that represent various levels of abstraction of your game world. World->Zone->City->District->Block->House. In the case of Void Runner: Universe->Sector->Subsector->Star->Planet. The combobulator doesn't actually generate the terrain. Perlin can do that. However, it does play a part in an integral concept: persistence.

    To fully understand it, you have to first think about pseudorandom number generators. They are essentially storage devices of large amounts of data to the combobulator. Say you seed a PSRNG, and you get a string of numbers: 2,3,7,1. You will get that string of numbers every single time you use the same seed. However, the numbers can only be taken one at a time. If you take them in the same order, the results in gameplay terms will be the same, every time. So imagine each number in that string as a locker storing data, it's just a number, but with an infinite amount of them, you are literally storing data in the math itself. No storage devices required, which is important, as all known storage devices are finite. This isn't Finiscape. All you need to know is the seed and which number you are looking for! But which number you are looking for can be difficult sometimes, and that's where the combobulator comes in. It properly reseeds the RNG every time you want a number, and you give it a specific ID for what you want, and it will retrieve the same number every time you ask it for that data. To put it simply, it does all of this dirty work for you, keeping your infinite world persistent instead of completely random, assuming you know how to ask for what you want politely. This persistence is extremely important when dealing with something like infinite terrain that can't possibly be stored. Without it your world wouldn't make any sense. It sounds complicated, but it is actually a very simple, small block of code...just a loop at it's base level - however, over the development of Void Runner, I have optimized it's speed, especially with larger numbers, by exponential amounts.

    To summarize: Infiniscape will not give you terrain, but rather, a seed for the area you are representing on a theoretical world. If you use this seed in conjunction with perlin - you will get persistent terrain. That seed can also do things like spawn objects, NPCs, even generate entire timelines of events that happen in the game, if used in conjunction with UnixTime. Our weather patterns do this. Here's an example call to Infiniscape: Infiniscape.GetCityBlock(global('WorldSeed'), global('PlayerZoneX'), global('PlayerZoneY'), 1, 2)

    Looks complicated, but what this will do is give you a seed representing the block at position 1,2 in the city the player is in, and assuming the WorldSeed never changes, that city block will always be there thanks to the combobulator. An entire world from a number. I'll try to simplify the process as much as possible, but work is a bit hectic right now. It's coming.

  • After much personal deliberation, I have decided that while the direction Construct 2 is taking is interesting, it is not going in a direction that will help me achieve my goals...and with that I will be standing by - and improving in any way that I can - Construct 0.9x. Hopefully in doing so, I can help that portion of the community that stays behind as Construct moves forward.

    So what is Infiniscape? It is my first offering, of hopefully many - and it will also be the largest one. It is at the very heart of Void Runner, powering it's ability to generate a procedural universe that extends forever in every direction. A universe as detailed as I want it to be, down to the very soil on the planets. Internally we refer to this "heart" as the "Combobulator", which crunches most of our numbers for us. The code is already there, I just have to yank it out of Void Runner.

    Over the next week or two, I will be isolating this portion of Void Runner, and releasing it as a plugin called Infiniscape, which will be primarily targeted at generating infinite procedural terrain in terrestrial settings, but could possibly be jury rigged for space as well if you tried hard enough. Using this plugin will be simple enough, but will require some explanation, so I will also write up an in depth tutorial to coincide with the release. I am not sure at this time if I will integrate perlin noise support within the plugin itself, as it could easily be used alongside the perlin plugin, but it would certainly be easier to use if it was integrated.

    Most of my future offerings will likely be targeted at helping people with large scale "roguelike" games, as those are my favorite games to play! I am planning a city generator to compliment the existing dungeon generator, as well as a very simplistic inventory plugin. Anyway, more info soon.