# Asuka

Member

12

168 Neutral

• Rank
Member

• Website
1. ## Post Mortem on 4x Strategy Games

What I dislike about most 4X games is that mandatory expansionist mentality. Take all faster = win. Leaving the unlucky players that spawned in less expansible territories to their inevitable doom. Spawning on a stranded islands in Civilization calls for a restart.   I'm trying to fight that mentality in my own 4X game by balancing quantity and quality. A higher developed sectors will yield as much benefits as several underdeveloped sectors. In the end, having more undeveloped sectors might be too risky as they will be much easier to lose.
2. ## Rotate a 4-vev plane to be aligned with to a vector

it is done by setting your matrix axes oriented in the direction you need using crossproducts. dirWant : the direction to align to, normalized. ref: a reference vector for 3D alignment. Could be set to (0,1,0)   a = normalize(crossProduct(dirWant, ref)); b = crossproduct(a, dirWant); c = dirWant;     Then you set your matrix like so if your vertices are on the Z plane: a.x b.x c.x t.x a.y b.y c.y t.y a.z b.z c.z t.z 0 0 0 1   t being your particle position.   Note that if dirWant == ref vector, it won't work. So choose another ref if they are equals.   Hope that help!
3. ## Ray to Ray intersection

You need to find the shortest distance between the 2 rays. look at "Distance between lines, rays, and segments (3D)." on http://www.geometrictools.com/LibMathematics/Distance/Distance.html There is everything you need there. :)   Hope that help! Cheers!

You might want to take a look at the generalization of Bézier Curves : http://en.wikipedia.org/wiki/B%C3%A9zier_curve#Generalization You can do interpolation to any degree.
5. ## Object detection

In my collision system I did something like this: class Capsule3D{ //data for capsule object }; class Sphere3D{ //data for sphere object }; Class IColPrimitive{ public: virtual TestResult test(const IColPrimitive& aOther)const=0; virtual TestResult test(const Capsul3D& aPrim)const=0; virtual TestResult test(const Sphere3D& aPrim)const=0; ... }; class Capsule3DColPrim : public IColPrimitive{ public: virtual TestResult test(const IColPrimitive& aOther)const{ return aOther.test(mCapsule); } virtual TestResult test(const Capsul3D& aPrim)const{ Actual test code using mCapsule and aPrim } virtual TestResult test(const Sphere3D& aPrim)const{ Actual test code using mCapsule and aPrim } Capsul3D mCapsule; }; class Sphere3DColPrim : public IColPrimitive{ public: //similar to Capsule3DColPrim ... Sphere3D mSphere; }; Then you just have to call a_IColPrimitive.test( another_IColPrimitive );     I believe this is the Bridge design pattern but I might be mistaken on this. Hope that help! Cheers!
6. ## New Deep Space Settlement GUI

Shows the new moddable GUI in Deep Space settlement
7. ## Deep Space Settlement (RTS)

I'd say the requirements would be something like Core 2 processor + GeForce 7900 Dx9 or Dx10. Although the game can be scaled up or down. When you setup a fleet you have the option whether ships should maintain their positions at all time or can temporarily quit formation to chase an enemy ships. That greatly influences your strategy since staying in formation can give the ships bonuses (from other ships in the fleet). Bonus such as shield boost, anti-missiles protection, etc. But when corvette class ship (the smallest ship) quit formation and enter in a dogfight with another ship, they are harder to hit since they move very fast. Also they are usually better at close range depending on weaponry installed on the ship. In the video, the ships are not part of a fleet, so they're free to chase any enemy they want. The plot is very basic as of now. Your journey gets you to a star cluster where you have to set your colony and thrive. But your presence will not stay unnoticed for long. You will encounter a fierce enemy. There is no Mac release planned. But I do not reject the idea completely. Hope that answer your questions