Well i can say i know enought stuff to know that i know very little (as Socrates used to say).

Apart from jokes, i'm quite happy with my skill. I now know enought of the 3d world to actually make something.. I've trigonometrical skills enought to develop simple 3d algorithms.. Not too much but enought.

For the future, i'd like to improve my 3d skills. There are lots of things that i lack deeply..

My interest is now most on engineering, such as code structure (to handle different state, when to perform loading/unloading of things, etc), and modularity.
Expecially for modularity, i think it's one of the most important things.. In particular my points are:
:arrow: a module should do 1 thing and comunicate by well-defined interfaces (not intended as pascal interfaces) with other modules. For example, I spend a lot of time deciding if a method should be private, protected or public.

For example, when you see that a method you need is private, the first impulse is to simply turn it public and go on coding. Instead in this cases i stop myself and i say: why i need this method, if i've previously decided that it was private? Should i review the "well-defined interface of communication"? What's wrong in the end?

:arrow: Modules should have as few dependencies as possible. For example my GUI system is graphics-independet. It really doesn't care what you're using (directx or opengl). Just to say, my GUI unit only includes two other units: Classes and SysUtils
The task of drawing a widget is given to another module. This module knows nothing of mouse clicks, callbacks, drag&drop etc. It just draws.

This structure usually require some more code to write but it's definetly worth. Now i have an engine that can be used in many different projects with little modification (my projects, FunkyCars, SpaceCadett and Turn all share a great amount of code).

bye