http://www.mediafire.com/?v00bkive1tvmhv1Well, that's all I have currently. It's an eclipse project archive, so if you can import it directly into Eclipse. It needs toxiclibscore (
http://toxiclibs.org/), for the 4d simplex noise function. If you can replace this 4d simplex noise function with an alternative 4d noise function, then you don't need the library.
(EDIT: Actually, I came up with a better idea; since the current map is only wrapped as a torus in 3 dimensions, it should be possible to use only 3d noise to generate smooth wrapping; I'll put up a fixed version in a bit).
(EDIT2: Scratch that. The map doesn't actually wrap in a torus. It's impossible to have the edges of the map wrap in only 3 dimensions without stretching.)
I haven't done much since the last update, due to getting swamped with school-related activities. Good luck reading it, I haven't had a chance to comment any of it, as most of it works on personal conventions I have assumed. Mind you, I don't intend to run this project like an open-source project, or as any sort of collaborative project at all, so please don't ask me to format my work any more than I have already.
I got sidetracked with more under-the-hood stuff. I decided to take a change in plans and implement a spherical map now, so I now have the underpinnings of an icosahedral map (that took a long time). This was after the realization that all the work I've been doing with squares would basically be irrelevant once I moved to a spherical mapping, since there's pretty much no way to tile squares on a sphere. Instead I've begun the process of retooling everything to work in terms of equilateral triangles. If the triangles are "small" enough, geometry says that I'm basically working on a Euclidean plane. Triangles will give me the flexibility to work both on 2d and 3d maps simultaneously, without having to do weird transforms or other interpolations.
This opens up a few avenues but also restricts other ones. I can no longer work with vertexes, as not all vertexes will have the same number of neighbors (to be precise, exactly 12 vertexes will only have 5 neighbors, as opposed to 6). This means I'll have to retool my magma movement mathematics. Also, direction can become confusing; rather than having a simple (x,y) coordinate system to work with, I have to work with an (r,c) system that looks like this:
- -----------------
0 /0\ 0 \1/2\3/4\5/6\7/ 0
----- -------------
1 /0\1/2\ 1 \3/4\5/6\7/ 1
--------- ---------
2 /0\1/2\3/4\ 2 \5/6\7/ 2
------------- -----
3 /0\1/2\3/4\5/6\ 3 \7/ 3
----------------- -
With paired triangles and passing between triangles, it can get pretty confusing. It also screws a bit with my multivariable calculus (i.e. no more easy ∫∫ dx dy T.T), but that's just a minor concern.
On the other hand, this opens up the possibilities of all sorts of maps, both 2d and 3d; it's possible to build a wide variety of contours using equilateral triangles, very few of which can be achieved with squares. It also gives finer-grained control over the values themselves since each cell has less neighbors. 3d rendering also becomes a snap, no weird mapping involved.
Probably though I'll end up writing a convert between triangle and square data at the very end, since most people expect map data to be in grids (exactly why, I'll never know). However, I intend the internal workings to be fully in triangle grids, to make everything consistent. With that in mind, the next update might take a little bit longer while I get used to the new system and write the new code, but updates will gradually speed up.