For a number of years now I wanted to write a computer game. I also wanted to do something with artificial intelligence (and I'm treating this term loosely). I don't know why. Perhaps because I've done a lot of other things in software development but somehow opportunities to do these two never crossed my path. Perhaps because I like to play computer games. Perhaps because I'm a very good at software development and architecture and I feel like I can do much better games that what's out there. Besides I have some pretty good ideas.
I believe I want to do a game because it seems to me that a good computer game is the very epitome of creativity and creativity is that attracted me to software development in the fist place.
At this point I know next to nothing about 3D and graphics used in game development, or anything else of game development, for that matter. I decided to have this blog as a way to describe my path - things I learned, discovered, frustrations and so on. If nothing else, it'd be fun to read in a year or so.
I started at the beginning - I decided to model the ground and then show it, using some graphics library. The ground is where everything starts and I'll probably get to learn all these fancy words:mesh, camera, scene graph. Gotta make reading books easier afterwards.
The beginning is really traditional - search on Google for "terrain modeling". Got a few articles, scientific and otherwise, one of which really attracted my attention: Realtime Procedural Terrain Generation
By now I read a few articles referenced from this one and wrote a diamond-square height map generation routine. To calculate the height I decided to use the method from
Alan Fournier, Don Fussell and Loren Carpenter:
Computer Rendering of Stochastic
Models. Communications of the ACM, Volume
25, Issue 6 (June 1982).
(That's reference 4 from the original article), so I modified the "square" part to take into account only 3 points, if the 4th hasn't been calculated by the time the algorithm needs it. That made recursive calculation much faster and isolated recursive branches, so if push comes to shove the calculation could be done by separate threads.
I chose Java as the programming language. Java neatly solves the distribution problem and I believe contemporary computers powerful enough to render stuff quickly even from the bytecode. I also would like to have access to the whole Open Source set of products. I want to be creative and re-inventing wheels I've invented several times already or know how to invent is not a part of my plans.
Subscribe to:
Post Comments (Atom)

No comments:
Post a Comment