Beta for a major update


Hello, it’s been a little while.

This is the beta for a major update for this here terrain editor. I’ve spent a lot of time on this in the last week or so, and I think it’s finally in a presentable state now (read: I haven’t been able to make it crash in like half a day).

I’m obviously still working on it, but I’m interested in seeing what people make of it, especially for anyone who used the old versions.

Here’s a list of change and additions from the last version. Items marked with an * are still a work in progress:

tl;dr

  • Fast
  • Visual improvements to the way the terrain is rendered
  • Procedural tools to make it easier to make the terrain look less flat
  • A large number of new export options

Functionality

  • The whole thing is much, much faster in pretty much all regards
  • Certain tasks that used to be done in GML are now executed by a DLL, courtesy of C++*

Import/export

  • Less buggy heightmap import/export?
  • Export a vertex buffer directly
  • Many, many export options have been added:
    • Multiple LOD levels, with the settings for the number of LOD levels and the reduction factor
    • Smooth normals on export
    • Split the terrain up into chunks (this works very well with LODs)
    • Customize the vertex format*

General editing

  • Max terrain size is now 2048x2048 - I don’t really recommend this yet though, especially not without the YYC, because DLL or not this will still be rather slow*
  • Mutate the terrain based on Perlin noise*
  • Mutate the terrain based on a heightmap*
  • Brushes for painting on the terrain*

Visuals

  • There’s a real pretty skybox
  • Better water shader
  • The UI is a bit less awkward overall
  • Draw a wireframe on the terrain

Other stuff

  • A metric buttload of internal changes, optimizations, and bug fixes

WIP items and known issues

You probably want to know about some of the things that are incomplete, or some of the features from the last version that are (currently) not available in the beta.

  • Documentation: there currently is none, but we’ve reached the point where there really, really should be

  • Perlin noise generation/mutation will produce strange results on terrains that are not powers of 2. There’s a small oversight in my noise generation code that I’ll fix eventually, although most of you are probably going to make power-of-two terrains anyway so it’s not a top priority

  • Project save and load: it’d be super helpful to be able to come back to a project later, instead of executing a one-way export and being done with it. (The only reason it’s not already included is because if the terrain data changes as I continue working on this, I don’t want existing save files to need a messy conversion process.)

  • Import/export: currently only 3D Position, Face Normal, and Barycentric Coordinate actually do anything. The other attributes will resolve to 0, or (in the case of colo(u)r) c_white

  • Editing: if you look closely (or not that closely) you’ll probably see how the deformation tool works, which is to say, it samples the mouse’s position once per frame and applies a bit of deformation on that point. This is obviously less-than-ideal

  • Editing: there are still some things I can probably do to make the program even faster for editing, and support even larger terrain sizes

  • Editing/mutation: more terrain deformation options, and some streamlining of the editing tools

  • Editing/mutation: more stock heightmaps will be added, and eventually I’m going to add the ability to import your own heightmap for the purpose of modifying the terrain instead of only creating a new terrain

  • Editing: allow the user to enter a seed for the random number generation

  • Editing: use different brush shapes for terrain deformation and texture setting, the same as terrain painting

  • Lighting: settings not yet implemented, aside from the default light

  • Texture: settings not yet implemented; I’m still undecided on what the best way to handle this will be, but getting it in will be a priority

  • View: 2D orthographic view - this might not come back because I’m currently unconvinced of its utility

  • View: shadowmapping is fun, I want to add it eventually

Observations that don’t seem important enough to put at the top

I’ve finally made the conversion to a 64-bit runtime, meaning that, among other things, the program can now use more than about 3.5 GB of RAM. I don’t actually recommend trying to edit a 2048x2048 terrain because you’ll quickly find your CPU in tears, but if you have a vendetta against silicon or something you can… probably… do it without literally crashing your computer.

On that note, I have zero idea what’ll happen if you try to run this on a computer with an integrated GPU.

The Perlin noise generator is another little utility I wrote, which goes by the name of Macaw.

For my own purposes, I’ve actually started bridging this and Penguin, my generic 3D model tool (they’re part of the same GameMaker project anyway). I’m not sure how useful this would be to anyone besides me. I’m considering officially merging the two on the public Itch releases eventually, but that probably won’t be for a while. If you would find such a thing useful, let me know. Speaking of which, Penguin is probably also going to see a significant update soon, featuring similar performance changes to this.

I guess while I’m on the topic of shilling my own work, the UI is Emu.

Yes, this is still being done in GameMaker.

Bug reporting

I’ve probably found and dealt with some of the more common issues, but if an error message ever shows up let me know what it says and how you did it. (Screenshots and video help.)

There are some times when the program may hang for a few seconds (especially when doing operations on large terrains, such as normal smoothing), but as long as it doesn’t crash outright things should be okay.

Files

DDDEditor2-Terrain-Beta.zip 6.4 MB
Jan 11, 2022
DDDEditor2-Terrain-Beta-YYC.zip 10 MB
Jan 11, 2022

Get TerrainOps

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.