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