I am about to start creating a terrain engine. From what I gather, there are 2 ways, heightmap, or random height allocation. Heightmap simply reading a greyscale image and converting it to 3d, while random height allocation, simply assigning a random y value to a matrix of x,z points. Am I correct?? I plan to implement the latter, random height allocation. Is this wise? Also, are there any better ways?

Internally, they are both the same. Both methods are used to generate a heightmap. A height map isn’t so much a greyscale image; that’s just a means of generating one. A height field is just an array of height values whose indices serve as the other two coordinates for the vertices. Assuming the height direction is the y axis, the indices are mapped into x and z.

There are plenty of ways of generating a height field. I would first concern myself with rendering a height field, since if you can render one, the rest is simply a matter of calculating the height values.

As to questions of how you generate the field, it really depends on what you’re going to do with the height field. Certainly, using an image is always helpful at getting the exact look you’re searching for.