D game engine -- Any suggestions?
Mineko
uminekorox at gmail.com
Wed Nov 20 10:01:12 PST 2013
On Wednesday, 20 November 2013 at 10:20:06 UTC, Rene Zwanenburg
wrote:
> On Wednesday, 20 November 2013 at 09:15:41 UTC, Rene Zwanenburg
> wrote:
>> Hi,
>>
>> A few things jumped out at me:
>>
>> Camera.d:
>>
>> ...
>>
>> Oops, I have to run.. Will take a look at the rest later.
>
> Still regarding camera.d:
>
> - The glfw3 import appears to be unused and can be removed.
>
> - the call to Math.perspectiveGL modifies OpenGL state. Your
> math functions _really_ shouldn't interact with OpenGL.
>
> - Taking the previous point a bit further, your Camera class
> doesn't need to know about OpenGL either. In your rendering
> routine, get the camera matrices from a camera and pass them to
> OpenGL.
>
> - Like Paulo said, don't use the fixed function pipeline. If
> you're not familiar with 3D yet the FFP is easier to use at
> first, but using modern OpenGL will pay for itself in the long
> run. I don't know where to find a good introduction to modern
> OpenGL though, perhaps someone else around here..
>
> - rotate, move are unnecessary. Once you switch to gl3n, move
> becomes:
> camera.position += someVector;
> Same thing with rotate, only you multiply:
> camera.rotation *= someQuaternion;
>
>
> math.d:
>
> - D allows free functions. There's no need to use hacks like
> completely static classes. You can remove the Math class and
> put it's functions in the module.
>
> - I'd also make std.math a public import, so you only have to
> import your math to get both in another module.
>
> - perspectiveGL doesn't belong here, but this is fixed by using
> gl3n.
>
>
> time.d
>
> - Same thing with the statics as in math. Though personally I'd
> call Time Timer, and make instances. You'll probably want to
> have more than one timer.
>
> - Sleeping doesn't belong in the timer. It should only
> calculate total running time and delta time in update. Later on
> you'll probably find out it needs more features, but these two
> will be fine for now. If anywhere, sleeping belongs in the game
> loop. That being said I'd advise against sleeping at all. It's
> usually better to use vsync, or run at max fps if the user
> disables it.
>
>
> That's all I could find during a quick peek.. If you'd like me
> to clarify some of these points, please don't hesitate to ask!
Interesting, would you give me an example of the @property and
the timer stuff, if that's all right with you?
I've attempted doing the @property stuff, but I run into lots of
problems, so maybe your example will show me what I've done wrong.
More information about the Digitalmars-d-learn
mailing list