By Shivoa 0 Comments
Yes, as with most blogs, over a week has gone by and a follow up post to an intro is conspicuous by its absence. This is also not a post about E3 as we're far enough into the future that everyone has stopped talking about those events and anyone interested in a précis of funny bits has already read their fill. Work, life, and beer have undone my plans to write up the events.
Engine work is coming along, right now it's all about getting a custom model format nailed down and working with some animations. Slow, quite boring, long hours, ground work that has to be done before moving on to anything interesting. It also provides very little in the way of eye candy or even amusing debug data to post up as light relief. Earlier today I spent 30 minutes unable to work out why something wasn't working until I realised I was using the wrong hand. Realising my mistake was the highlight of the day; being forced to use some rather dry coffee beans to make my regular rocket fuel, the lowlight.
As a way of moving this post on from purely complaining about coffee, work, and apologising for lethargy, I'll quickly touch on a stupid problem with moving around APIs. Moving APIs is very common, most programmers use what they like and know but also check out the field to make sure there isn't a more suitable option just around the corner with hundreds of boring hours of coding removed from their expected future workload. Hell, moving around languages isn't exactly uncommon (especially if you wander the C-likes as part of your daily life with a mix of tasks) and there the pitfalls and weird slight differences it's critical to remember are far more dangerous.
Today my problem was working on XNA. Lovely .Net/C# with even more functionality for game engines heaped on top. Ok, with this custom engine there is quite a lot of throwing stuff out and building new to better suit our needs but a lot of boring coding is done for you by XNA. Right now this model system is being built to replace an existing system that works fine for 90% of cases I'd guess. This project is unfortunately part of the 10%. The problem is XNA is built by Microsoft on top of Direct X.
I know DX, well at least have dabbled in the past from version 6.1 onwards. Direct X uses a left-handed system (LHS) for coordinates. That means hold out your left hand, thumb as x-axis and first finger as y-axis raised up in an L shape, your other fingers bent over point at the positive for the z-axis. All the x,y,z coordinated assume those directions as positives. OpenGL uses a RHS, which means using your right hand and effectively reversing the direction of the z-axis. When you've played around with both systems you remember that DX is LHS and OGL is RHS and take that into account when doing anything. Getting it wrong means everything is invisible as you only draw the polygons pointing at the camera and screwing up means you actually only draw polygons that point away.
XNA may be build on the corpse of Managed DirectX and use the DX rendering API underneath it but XNA is actually RHS, not the LHS of DX. 30 minutes down the drain on a stupid problem. D'oh!
Syndicated from 12sqm Design.