I am working on a hybrid RTS / third person shooter.
Up to 10 players 5 vs. 5
Each player can control up to 12 physics based vehicles and 132 kinematic infantry. Most like alot less.
I need to pick the architecture
a: trusted client with checking
b: authoritative server
c: P2P full synchronized.
I know most RTS game are full synchronized however, I do not think this will work well for me due to the physics I use etc may not be deterministic. Some of my physics including damage physics and AI may not be lightweight.
Thanks.
- Viewing Profile: Topics: Normalized
Awesome job so far everyone! Please give us your feedback on how our article efforts are going. We still need more finished articles for our May contest theme: Remake the Classics
Community Stats
- Group Members
- Active Posts 17
- Profile Views 456
- Member Title Member
- Age Age Unknown
- Birthday Birthday Unknown
-
Gender
Not Telling
102
Neutral
User Tools
Contacts
Normalized hasn't added any contacts yet.
Topics I've Started
Best networking architecture of this game type
20 January 2012 - 08:28 PM
Is there a better way to do this?
15 January 2012 - 01:46 PM
I have been working on trying to get an implementation of reciprocal obstacle avoidance working.
I need to find the point tangent to a circle from the origin (0,0). I know how to do this using two circles kind of like the diagram below. I was planning to us the quadratic equation to find the two tangents points.
http://www.nvcc.edu/home/tstreilein/constructions/Circle/circle5.htm
I need both tangent points
I know
1: circle center
2: radius
3: And that the tangent points must pass through the origin (0,0).
I have not used much trig in many years. Is there a better trigonometry based way? I know how to find the lengths of all sides and the interior angles. But not how to find the tangent points.
I need to find the point tangent to a circle from the origin (0,0). I know how to do this using two circles kind of like the diagram below. I was planning to us the quadratic equation to find the two tangents points.
http://www.nvcc.edu/home/tstreilein/constructions/Circle/circle5.htm
I need both tangent points
I know
1: circle center
2: radius
3: And that the tangent points must pass through the origin (0,0).
I have not used much trig in many years. Is there a better trigonometry based way? I know how to find the lengths of all sides and the interior angles. But not how to find the tangent points.
What is a clockwise ordering
13 December 2011 - 01:47 AM
I have three unordered points and I want to find the normal. I need to get them into a clockwise ordering because I use a left hand coordinate system
My question is what is a clockwise ordering. How do you know if one point is more clockwise then another point?
I know what it looks like in my head but I wonder what is a good algorithm? All my point will be in quadrant 1. I also know the points are not collinear .
My question is what is a clockwise ordering. How do you know if one point is more clockwise then another point?
I know what it looks like in my head but I wonder what is a good algorithm? All my point will be in quadrant 1. I also know the points are not collinear .
Optimizations for projective shadow / fog of war
20 October 2011 - 02:49 AM
I have been working on a fog of war system. Right now, Icreate a texture dynamically then use an orthographic projection. I have it directly sized to the map where 1 pixel equals 1 meter. I pass the texture tothe shader by encoding it only into an alpha channel using an alpha8 texture.
its slow right now it's taking 56ms a frame downfrom 420ms but still too high.
I have attached the code to give you an idea of what I amdoing. Admittedly, I could use a smaller texture and lose the 1 to 1relationship but does anyone have another ideas?

Uploaded with ImageShack.us
[code=auto:0] tags seem broken??/?
what I do
int xLength = myTexture2D.width; int yCounter = 0; int xCounter = 0;
for (int i = 0; i < colors.Length; ++i)
{
colors[i].a = 0.0F; //clear
if (i / (yCounter + 1) == xLength)
{
++yCounter;
xCounter = 0;
}
else
{
++xCounter;
}
for (int i2 = 0; i2 < testArray.Length; ++i2)
{
//float luminanceTest = ;//0.299F * colors[i].r + 0.587F * colors[i].g + 0.114F * colors[i].b; if (colors[i].a < testArray[i2].Luminance)
{
if (testArray[i2].MaxX >= xCounter && testArray[i2].MaxY >= yCounter && testArray[i2].MinX <= xCounter && testArray[i2].MinY <= yCounter)
{
Vector2 testPos = new Vector2(xCounter, yCounter);
if ((testPos - testArray[i2].Position).sqrMagnitude < (Mathf.Pow(testArray[i2].Length, 2.0F)) &&
Vector2.Angle(testArray[i2].ForwardDirection, (testPos - testArray[i2].Position).normalized) <= testArray[i2].ArcLengthDegrees)
{
colors[i].a = testArray[i2].Luminance;
}
}
}
}
}
and the data I use for each cone
public struct SightTestCase
{
public readonly float Length;
public readonly float ArcLengthDegrees;
public readonly int MinX;
public readonly int MinY;
public readonly int MaxX;
public readonly int MaxY;
public readonly Color AreaColor;
public readonly float Luminance;
//public readonly float GrayScale;
public readonly Vector2 Position;
public readonly Vector2 ForwardDirection;
public SightTestCase(Vector2 position, Vector2 forwardDirection, int minX, int minY, int maxX, int maxY, Color myColor, float length, float arcLengthDegrees)
{
this.Length = length;
this.ArcLengthDegrees = arcLengthDegrees;
this.MinX = minX;
this.MinY = minY;
this.MaxX = maxX;
this.MaxY = maxY;
this.AreaColor = myColor;
this.Position = position;
this.ForwardDirection = forwardDirection;
this.Luminance = 0.299F * myColor.r + 0.587F * myColor.g + 0.114F * myColor.b - LinearMath.Epsilon;
//this.GrayScale = myColor.grayscale;
}
}
its slow right now it's taking 56ms a frame downfrom 420ms but still too high.
I have attached the code to give you an idea of what I amdoing. Admittedly, I could use a smaller texture and lose the 1 to 1relationship but does anyone have another ideas?

Uploaded with ImageShack.us
[code=auto:0] tags seem broken??/?
what I do
int xLength = myTexture2D.width; int yCounter = 0; int xCounter = 0;
for (int i = 0; i < colors.Length; ++i)
{
colors[i].a = 0.0F; //clear
if (i / (yCounter + 1) == xLength)
{
++yCounter;
xCounter = 0;
}
else
{
++xCounter;
}
for (int i2 = 0; i2 < testArray.Length; ++i2)
{
//float luminanceTest = ;//0.299F * colors[i].r + 0.587F * colors[i].g + 0.114F * colors[i].b; if (colors[i].a < testArray[i2].Luminance)
{
if (testArray[i2].MaxX >= xCounter && testArray[i2].MaxY >= yCounter && testArray[i2].MinX <= xCounter && testArray[i2].MinY <= yCounter)
{
Vector2 testPos = new Vector2(xCounter, yCounter);
if ((testPos - testArray[i2].Position).sqrMagnitude < (Mathf.Pow(testArray[i2].Length, 2.0F)) &&
Vector2.Angle(testArray[i2].ForwardDirection, (testPos - testArray[i2].Position).normalized) <= testArray[i2].ArcLengthDegrees)
{
colors[i].a = testArray[i2].Luminance;
}
}
}
}
}
and the data I use for each cone
public struct SightTestCase
{
public readonly float Length;
public readonly float ArcLengthDegrees;
public readonly int MinX;
public readonly int MinY;
public readonly int MaxX;
public readonly int MaxY;
public readonly Color AreaColor;
public readonly float Luminance;
//public readonly float GrayScale;
public readonly Vector2 Position;
public readonly Vector2 ForwardDirection;
public SightTestCase(Vector2 position, Vector2 forwardDirection, int minX, int minY, int maxX, int maxY, Color myColor, float length, float arcLengthDegrees)
{
this.Length = length;
this.ArcLengthDegrees = arcLengthDegrees;
this.MinX = minX;
this.MinY = minY;
this.MaxX = maxX;
this.MaxY = maxY;
this.AreaColor = myColor;
this.Position = position;
this.ForwardDirection = forwardDirection;
this.Luminance = 0.299F * myColor.r + 0.587F * myColor.g + 0.114F * myColor.b - LinearMath.Epsilon;
//this.GrayScale = myColor.grayscale;
}
}
- Home
- » Viewing Profile: Topics: Normalized

Find content