Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (578)
games submitted by our members
Games in WIP (499)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1] 2
  ignore  |  Print  
  Simplex Noise in N (!) Dimensions - (Not) Having fun...  (Read 5389 times)
0 Members and 1 Guest are viewing this topic.
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Posted 2012-10-05 23:49:29 »

The goal: Squeezing everything out of an implementation possible, make a "super-universal" implementation...

Somehow almost archieved... (close enough Grin)

Mind, that this implementation doesn't really alow you N-dimensional Simplex Noise generation, but allow you 1 to 32 dimensional Simplex Noise. But since your computer needs a hell lot of memory to compute some SimplexNoise with 33 dimensions, it wouldn't even be possible at reasonable sizes (the sizes of the dimensions themselves) today.

So here is an animated gif, animating through all the layers of a 3-Dimensional Noise. I don't know any way to visualize a 4-Dimensional Noise, but you can be sure, that that works.

<edit>Little generational improvement (Does not look that celly now):

</edit>


WARNING!
Bevore reading the source code, keep in mind, that the source is totally CRACY... I needed Callbacks for example. For these callbacks I had to create Anonymus Inner functions... keep that in mind Smiley
If you have any Idea on how to do that different... I'd like to know Smiley
The code is almost uncommented.
(Most important code is under SimplexNoiseLayerN.java)

[size=20pt]Source on Github.[/size]

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline krasse
« Reply #1 - Posted 2012-10-06 00:27:44 »


I don't know any way to visualize a 4-Dimensional Noise, but you can be sure, that that works.


Import it to blender as a temporal 3D density function and render as smoke or some other cool way Smiley

Nice work btw!

Offline Roquen
« Reply #2 - Posted 2012-10-06 07:55:53 »

Note that the structure of a simplex makes any dimensions beyond 5 not really useful.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #3 - Posted 2012-10-06 09:44:59 »


I don't know any way to visualize a 4-Dimensional Noise, but you can be sure, that that works.


Import it to blender as a temporal 3D density function and render as smoke or some other cool way Smiley

Nice work btw!

If I'd know how to do that Cheesy

Note that the structure of a simplex makes any dimensions beyond 5 not really useful.

Oh okey then... I don't need 5 dimensions anyway Smiley

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #4 - Posted 2012-10-06 11:43:58 »

I don't know any way to visualize a 4-Dimensional Noise, but you can be sure, that that works.

Use 4D noise to 'animate' the noise on the surface of a sphere. It's barely a true visualization of the 4th dimension, as it's basically the intersection of a surface through 3 spatial dimensions and 1 time dimension.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #5 - Posted 2012-10-06 11:46:51 »

I don't know any way to visualize a 4-Dimensional Noise, but you can be sure, that that works.

Use 4D noise to 'animate' the noise on the surface of a sphere. It's barely a true visualization of the 4th dimension, as it's basically 3 spatial dimensions and 1 time dimension.

Yes... And animated clouds / particles (with a > 0 test = particle creating) and the 4th dimension = time would also work... But what I wanted to say is, that I'm not able to put the 4 dimensional noise into for example gif or anything like that.

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #6 - Posted 2012-10-06 12:00:27 »

One of the downsides of simplex noise is that it's very apparant that you're near an 'integer' in some dimension. In your GIFs that's very visible, as at certain 'depths' there are distinct patterns. The whole point of noise is that is has a few patterns as possible.

One way to fix this is to sample your noise from a higher spatial dimension.

You're now basically doing:
   2 spatial dimensions + time (for animation)

What you should be doing:
   taking an arbitrary plane (2D) through a volume (3D) and sample across the surface of that plane + time (for animation)

All the artifacts will be gone, unless the plane's normal has a length on an axis near 0.0 or 1.0

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #7 - Posted 2012-10-06 12:15:03 »

  taking an arbitrary plane (2D) through a volume (3D) and sample across the surface of that plane + time (for animation)

All the artifacts will be gone, unless the plane's normal has a length on an axis near 0.0 or 1.0

... By an arbitrary plane whose normal isn't "showing nearly in the same direction" as an axis?
So just a "leaning" plane?

And yes. The artifacts bug me right now... But I don't know enough math stuff for doing something like that :/

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #8 - Posted 2012-10-06 12:23:05 »

A quick-and-dirty (and understandable) way to sample points on a plane, would be like this:

Imagine what you're doing now:
  • you define a rectangle (0..w, 0..h) and interpolate in two dimensions, to sample noise.

What you could do instead:
  • create a random normal: normalize(random()-0.5,random()-0.5,random()-0.5)
  • rinse and repeat, until all axis of the normal are not in the range -0.1..+0.1
  • create a transformation matrix (4x4)
  • rotate the matrix along the normal (axis-angle rotation)
  • you define a rectangle (0..w, 0..h) and interpolate in two dimensions, feed it into the matrix and use the output to sample noise.

Yes, it's hilariously inefficient, but it gives you a rough idea how to rotate a surface in a volume.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline Roquen
« Reply #9 - Posted 2012-10-06 12:35:02 »

I attempted to add a bit about defects in wiki page I'm working on.  The easy way reduce the impact is to make sure that the cells of multiple computations are not aligned.
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #10 - Posted 2012-10-06 12:36:34 »

Isn't that comparable to sampling a transformed plane?

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #11 - Posted 2012-10-06 12:45:57 »

I attempted to add a bit about defects in wiki page I'm working on.  The easy way reduce the impact is to make sure that the cells of multiple computations are not aligned.
Isn't that comparable to sampling a transformed plane?

No, I think he is talking about each layer being "rotated" or having different cell alignments. Btw, I'm just implementing something like you suggested Smiley

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #12 - Posted 2012-10-06 13:20:04 »

Wow... This worked pretty well Smiley

Here is what now is generated:



Looks not-celly... (Used Riven's advice)

But how'd you go with creating something like that for 2 dimensions?

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #13 - Posted 2012-10-06 14:59:14 »

The same, just one spatial dimension less. persecutioncomplex


Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline Roquen
« Reply #14 - Posted 2012-10-06 15:24:25 »

I never use a higher dimension except for animation purposes.  Taking a non-aligned planer slice just shifts the directions of the defects a bit.  But whatever works is all good.  (Note that any affine transformed planar slice just requires some one time computation of the various deltas which can be used in the loop).  Ignoring animation a simple way to most avoid defects is to simply have the initial largest scale (lowest frequency) sampling range both far-ish from the origin (never sample collapsing around the origin) and not integer aligned and smaller scale just move closer and closer by the scale factor(s).  Walking straight through an extra dimension adds uniform evolution.  Walking around an axis in the higher dimension is interesting for having varying the rate of evolution in a linear manner (slowest near the axis and fastest at the most distant).  It should be noted that a very common source of defects is to have a bad hashing function.
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #15 - Posted 2012-10-06 17:16:55 »

The same, just one spatial dimension less. persecutioncomplex
Erm... no... <edit>: Sorry, totally misunderstood you ... heh...  Roll Eyes Yeah, you're right, but I wanted to know, how to "simulate a plane, walking through the noise", without having a volume (3 Dimensions)...</edit>
It's true, that there are some changes in the settings for the different SimplexNoiseLayers, but it's more than that,
here is the code for generating the Gif: (I'm sorry, this is only testing code, so it really looks awful and is packed inside one single function (the main() funciton))
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
95  
96  
97  
98  
99  
100  
101  
102  
103  
104  
105  
106  
107  
108  
109  
110  
111  
public static void main(String[] args) {
   final int[] dims = { 64, 256, 256 };
   final int tilex = 1;
   final int tiley = 1;
   System.out.println("Creating.");
   long now = System.currentTimeMillis();
   final Random rand = new Random();
   final FloatInterpolation interpolator = new FloatInterpolationFunc() {
      @Override
      protected float func(float t) {
         return 3*t*t - 2*t*t*t;
      }
   };
   final MatrixNf content = new SimplexNoiseN(new SimplexNoiseLayerN[] {
         new SimplexNoiseLayerN(64, rand, interpolator, dims),
         new SimplexNoiseLayerN(32, rand, interpolator, dims),
         new SimplexNoiseLayerN(8, rand, interpolator, dims),
         new SimplexNoiseLayerN(4, rand, interpolator, dims)
   }, new float[] {
         64,
         32,
         8,
         4
   }, true, dims).get();
   long then = System.currentTimeMillis();

   // Creating plane:
  int[][] plane = new int[dims[1]][dims[2]];
   int x0 = 0;
   int y0 = 0;
   int x1 = dims[1]-1;
   int y1 = dims[2]-1;
   plane[x0][y0] = Math.abs(rand.nextInt() % dims[0]);
   plane[x1][y0] = Math.abs(rand.nextInt() % dims[0]);
   plane[x1][y1] = Math.abs(rand.nextInt() % dims[0]);
   plane[x0][y1] = Math.abs(rand.nextInt() % dims[0]);
   int edge00 = plane[x0][y0];
   int edge10 = plane[x1][y0];
   int edge11 = plane[x1][y1];
   int edge01 = plane[x0][y1];
   for (int x = 0; x < plane.length; x++) {
      for (int y = 0; y < plane[x].length; y++) {
         if (!( (x == x0 && y == y0)
            || (x == x1 && y == y0)
            || (x == x1 && y == y1)
            || (x == x0 && y == y1) )) {
            float tx = x / (Math.abs(x0-x1));
            float ty = y / (Math.abs(y0-y1));
            int val0 = Math.round(interpolator.interpolate(tx, edge00, 0, edge10, 1));
            int val1 = Math.round(interpolator.interpolate(tx, edge01, 0, edge11, 1));
            plane[x][y] = Math.round(interpolator.interpolate(ty, val0, 0, val1, 1));
         }
      }
   }
   System.out.println("Creation finished (" + (then-now) + " ms).");
   System.out.println("Converting to Image.");
   BufferedImage[] imgs = new BufferedImage[dims[0]];
   for (int layer = 0; layer < dims[0]; layer++) {
      BufferedImage img = new BufferedImage(dims[1]*tilex, dims[2]*tiley, BufferedImage.TYPE_INT_ARGB);
      for (int x = 0; x < dims[1]*tilex; x++) {
         for (int y = 0; y < dims[2]*tiley; y++) {
            int greyscale = (int)(((content.get((layer + plane[x][y]) % dims[0], x%dims[1], y%dims[2])+1)*0.5) * 255);
            img.setRGB(x, y, toRGB(greyscale, greyscale, greyscale, 255));
         }
      }
      imgs[layer] = img;
   }
   now = System.currentTimeMillis();
   System.out.println("Converting finished (" + (now-then) + " ms).");
   String directory = "simplex_noise";
   File dir = new File(directory);
   if (!dir.exists()) {
      dir.mkdir();
   }
   String filename = directory + "/" + "image";
   String suffix = ".gif";
   int i = 0;
   File file;
   do {
      i++;
      file = new File(filename + i + suffix);
   } while (file.exists());
   try {
      file.createNewFile();
   } catch (IOException e1) {
      e1.printStackTrace();
   }
   then = System.currentTimeMillis();
   System.out.println("Writing to file.");
   ImageOutputStream stream = null;
   try {
      stream = new FileImageOutputStream(file);
      GifSequenceWriter writer = new GifSequenceWriter(stream, BufferedImage.TYPE_INT_RGB, 64, true);
      for (BufferedImage img: imgs) {
         writer.writeToSequence(img);
      }
      writer.close();
   } catch (IOException e) {
      e.printStackTrace();
   } finally {
      if (stream != null) {
         try {
            stream.close();
         } catch (IOException e) {
            e.printStackTrace();
         }
      }
   }
   now = System.currentTimeMillis();
   System.out.println("Finished writing (to " + filename + i + suffix + ")(" + (now-then) + " ms).");
}


The important part is the plane[][] matrix, whose edges get filled by random values, and then the values in between (the rest) are interpolated.

The values inside the plane[][] are modifying which "layer" to choose, when writing the Noise to a BufferedImage array.

It is supposed to act like a plane, which is (what is propably the problem) moved downwards through the noise... (My head hurts too much right now (yeah... implementing something like that is REALLY NOT EASY) for writing an implementation which is not based on values inside a 2D array, but is "vector based".)

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #16 - Posted 2012-10-06 17:51:40 »

The strategy was to get a transformed plane (2D) in a volume (3D).

When you reduce the number of dimensions, you get: a transformed line (1D) on a plane (2D)

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline Roquen
« Reply #17 - Posted 2012-10-06 21:37:09 »

Notes: calculating polynomials directly is not efficient and is inaccurate.  Simplest change is to use Horner's method3*t*t - 2*t*t*t becomes: t2=t*t; t2*(3-2*t);

Also I think I saw a recursive power calculation with integers...iteration is you're friend.
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #18 - Posted 2012-10-07 11:11:26 »

Notes: calculating polynomials directly is not efficient and is inaccurate.  Simplest change is to use Horner's method3*t*t - 2*t*t*t becomes: t2=t*t; t2*(3-2*t);

Yes. Already changed that, was a quick-implementation-issue.

Also I think I saw a recursive power calculation with integers...iteration is you're friend.

Yeah... quick-implementation too... (OMFG I already thing recursive :O shit...)
Actually, only because I first didn't calculate 2^n for the possibilities, but n! (which is wrong...)... where ! was implemented recursive. And then I only changed it a bit, so it calculated integer-power.

But nice, you've read the code :O Smiley


See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline matheus23

JGO Wizard


Medals: 97
Projects: 3


You think about my Avatar right now!


« Reply #19 - Posted 2012-10-13 12:22:25 »

I attempted to add a bit about defects in wiki page I'm working on.  The easy way reduce the impact is to make sure that the cells of multiple computations are not aligned.

I misunderstood this one.
With the cells are not aligned, I thought about the cells being rotated, and I didn't knew how that could be possible... heh...

So now I understood your post (after reading the wiki page hehe... Grin ), and added offsets for each layer in the SimplexNoiseLayerN-combiner SimplexNoiseN... Looks so much better now Cheesy



Thank you Smiley
EDIT: *appreciate*
EDIT2: How freaking cool does this look? Cheesy

See my:
    My development Blog:     | Or look at my RPG | Or simply my coding
http://matheusdev.tumblr.comRuins of Revenge  |      On Github
Offline HeroesGraveDev

JGO Kernel


Medals: 212
Projects: 11
Exp: 2 years


If it wasn't Awesome, it wasn't me.


« Reply #20 - Posted 2012-11-05 07:33:31 »

Er....

Ony your blog you said we can't even imagine more than five dimensions.
I disagree.

I can imagine any amount of dimensions by simply stacking them into 3 dimensions.

Example:

2D: A square
3D: A cube
4D: A 'row' of cubes both separate and together simultaneously
5D: Same as 4D except a 'stack' of rows'
6D: A 'cube' of cubes that are simultaneously in the space of one cube and infinitely apart at the same time

Etc.

I know it's not perfect as it still uses 3 dimensions, yet it is understandable as by adding another dimension, everything can still be in the same place as the already existing dimensions, just in a different place for the bew dimension.

In conclusion:

It is possible to think in any number of dimensions as long as your mind works logically and I am so going to make a game with 8 dimensions just to show I can.

If anyone needs further help I will be happy to start a new topic

Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #21 - Posted 2012-11-05 07:49:17 »

Imagining spatial dimentions above 3D is not as simple as you make it seem.

You can indeed say that adding 1 dimension duplicates the all previous dimensions infinite times:
  • A line is an infinite series of stacked points
  • A plane is an infinite series of stacked lines
  • A volume is an infinite series of stacked planes
  • A 4D-thingy is an infinite series of stacked volumes
  • A 5D-thingy is an infinite series of stacked 4D-thingies
  • A 6D-thingy is an infinite series of stacked 5D-thingies
Wait what? Thingies...?

Then you can say that by adding a dimension, you can transform a lower dimensional coordinate system without affecting it, like you can draw a curved line on paper, or you can wrap paper over a cilinder, but how do you wrap a volume over that 4D-thingy ? I'm not talking about relativity (time) here, we're just dealing with spatial dimensions.

The opposite way of looking at it, is projecting dimensions into others (losing one dimension), like we can paint a picture (2D) of a landscape (3D), or look at the shadow (2D) of a structure (3D), or slice through a sphere to see a circle with the radius depending on how we sliced it - it might even be an oval, if we slice it with a curve, but that's not quite projection anymore. How would we imagine that some 4D shape can be projected into 3D?

And how do you imagine this: for each added dimension you add an axis that is perpendicular to all other axes. I'm lost at imagining 4 spatial dimensions. Emo

I like to imagine a world with more than 1 time dimension though, but life is too short... or is it?

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline HeroesGraveDev

JGO Kernel


Medals: 212
Projects: 11
Exp: 2 years


If it wasn't Awesome, it wasn't me.


« Reply #22 - Posted 2012-11-05 08:09:52 »

It is impossible to 'see' more than three dimensions, as that is how we are, but you can imagine without 'seeing'

Time is something we cannot see, but we feel it and we move through it constantly as there is (for now) no friction that affects movement through time like in the normal three dimensions.

You can only ever be in one position per dimension, so if we can only see three dimensions, then anything in a different coordinate to us in another dimension is invisible to us. So imagine if you could be in the same place at the same time, but move through different positions in a fifth dimension. If movement through a fifth dimension was possible, you could eventually, find a 'world' no-one else lives, yet everything else is potentially the same.

Just like with time. You can be in the same place as someone else, but be in a different time and you could not see each other

Offline Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #23 - Posted 2012-11-05 08:22:01 »

I fully grasp that, I just cannot imagine it.

It is impossible to 'see' more than three dimensions, as that is how we are, but you can imagine without 'seeing'
I'd argue that we can see only two dimensions (the retina is a surface, not a volume). But that's nitpicking.

0.1mm further into the next spatial dimension, there might be a bunch of cute fluffy bunnies bouncing around in aircastles eating soft candy supplied by a pink drain pipe. We don't have to travel far, to get entirely change our surroundings, just like in a 2D world, one would exist on 1 piece of paper featuring a bunch of boring words, and 0.1mm further one would exist on a totally different piece of paper showcasing a photo of a rainforest. With no means to travel through that higher dimension, you're just stuck in these lower dimensions.

By the way, there is no inherent friction in our three spatial dimensions.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social rankings
Offline HeroesGraveDev

JGO Kernel


Medals: 212
Projects: 11
Exp: 2 years


If it wasn't Awesome, it wasn't me.


« Reply #24 - Posted 2012-11-05 08:30:07 »

I meant friction from other objects.

Time for a new topic: http://www.java-gaming.org/topics/n-dimensional-theory/27709/msg/249113/view.html#msg249113

Offline Roquen
« Reply #25 - Posted 2012-11-05 09:45:12 »

I'd say that isn't not nitpicking...we really can only see in 2D dimensions.  And in the same manner for higher dimensions we can "see" a 2D projection of surfaces in that space.  Just a little more tricky to "understand" the surface Smiley
Offline philfrei
« Reply #26 - Posted 2012-11-05 21:58:21 »

I'm not so sure about the statement that we "see" in 2D.

The retina may be flat, but there are two of them, and there is a lot of binocular processing that is hardwired in the cortex. Also, our concepts and memories of the objects include 3D.

Even with one eye, people can experience a great degree of depth perception. Apparently there is more than just the binocular aspect that produces this cognitively, but other 'clues' as well are hard-wired in to be used spatially.

"Greetings my friends! We are all interested in the future, for that is where you and I are going to spend the rest of our lives!" -- The Amazing Criswell
Offline sproingie
« Reply #27 - Posted 2012-11-05 22:24:35 »

If you believe booleans have to be true or false, then you also believe that by saying 'this statement is false' rips a hole in space and time.

It certainly ripped a hole in classical set theory, but current set theory says that the statement is simply meaningless. Smiley

Offline StumpyStrust
« Reply #28 - Posted 2012-11-05 23:45:32 »

woh.....derailed me thinks. When did we get to set theory?

Offline sproingie
« Reply #29 - Posted 2012-11-06 01:43:12 »

Oh, it was just a random sig in the thread that caught my eye.  Back to what we were talking about, visual perception, right?  Wink

Pages: [1] 2
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

xsi3rr4x (28 views)
2014-04-15 18:08:23

BurntPizza (25 views)
2014-04-15 03:46:01

UprightPath (40 views)
2014-04-14 17:39:50

UprightPath (22 views)
2014-04-14 17:35:47

Porlus (38 views)
2014-04-14 15:48:38

tom_mai78101 (62 views)
2014-04-10 04:04:31

BurntPizza (121 views)
2014-04-08 23:06:04

tom_mai78101 (221 views)
2014-04-05 13:34:39

trollwarrior1 (188 views)
2014-04-04 12:06:45

CJLetsGame (195 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!