Hello,
let me start by apologizing for reviving an old post as the very first thing I do on this forum.
However, I am the creator of the little youtube video linked to in the first post, and so I’ve also created the program itself.
The reason I joined this site and the reason I am writing this post is because of some of the information given in this thread, which I think is wrong. Especially the posts by Heezel, suggesting my video uses some other method than Java2D to realize the fake 3D effect.
The program is written entirely in Java2D. ENTIRELY.
This means the program does in fact NOT contain ANY 3d elements, by the official meaning of 3d (hence the effect is called ‘fake 3d’).
Instead the effect is achieved by calculating screen-space points from world-space points. These world-space points can then have a height (contrary to 2d games), which changes their screen-space point based on the distance from the center of the screen and the height of the camera. The total conversion for each point is maybe 4 operations (operations, not lines of code, it’s all in one line). The effect is in no way impressive mathematically, but it is impressive in its simplicity and effectiveness. (I do not claim to be the sole creator of this effect, it was just so easy I came up with it on my own.)
The resulting screen-space points are then connected with eachother via a java Polygon, and given a gradient color in the direction the wall is facing.
All you have to do next is determine when NOT to draw a given polygon, and in which order to draw the remaining polygons, and you have a proper sense of depth.
This fake 3D effect is very limited, mostly because Java2D supports no way of properly “rasterizing” (don’t know the official term here ) a texture to a polygon. This is why I only use gradients and lines for the 3d effects in the video.
Concluding I would like to say that this is not an attempt to glorify my Java2D skills, this video is 2 years old and I’ve since switched to greener pastures. However I don’t think misinformation should go unnoticed, especially when proper information is very limited in quantity and quality.
Thank you for reading, I hope any (future) fake 3d enthousiasts can benefit from my intervention in this thread.
PS:Please stop telling people 3d is hard. Instead tell them how to start doing 3d in the easiest way possible, then they can try and see how hard it is and then decide for themselves. I used to be scared shitless of programming and 3d in particular because of how hard it was advertised to be everywhere on the internet. Now all I can think of is how much better my knowledge of 3d graphics and programming would be if I would’ve started earlier in my life.
I understand where these statementsare coming from, and if you have never programmed before its certainly sub-optimal to start writing a physics engine, but 3d is different. Thinking about 3d isnt hard at all, 3d is what you live in. The problem is the way 3d graphics are handled in engines, which usually isn’t simple because of the underlying complexity in 3d.
So don’t tell people 3d is hard, just point them to the easy 3d! (Examples? Game Maker/Java3D make for easy switches from 2d. Even OpenGL is easy, using the fixed function pipeline and some tutorials you basically never have to do ANY mathematics).
edits: spelling, grammar