Forums | Chat | News | Contact Us | Register | PSU Social |
PSU: Squeeky did it. Whatever it is, Squeeky did it.
Forums | Chat | News | Contact Us | Register | PSU Social |
Home | Forum | Chat | Wiki | Social | AGN | PS2 Stats |
|
|
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
2011-12-26, 10:02 PM | [Ignore Me] #1 | ||
Colonel
|
I wonder if the surface of Auraxis being curved (convex, not concave, this isn't HALO) would be a plus for gameplay? I know we all dream of a cheat-free world, but a world that didn't have infinite sight-lines would be devoid of the capacity of someone to see anyone anywhere from one vantage point, unlike PS1, and it would be more like a real planet.
I understand that Earth's curvature is very slight, compared to the island maps of PS2. But Auraxis doesn't have to be Earth-sized to function. Ah, and before you point out that less mass means less gravity, I must hasten to add that nothing guarantees that Auraxis has less mass or density than Earth. It might have more, thus making it so gravity remains at 1g. The more curvature, however, as in, the smaller the diameter of the planet, the faster moving away from the surface (and the center of mass) of Auraxis would decrease the effects of gravity. I was wondering if Auraxis will, ultimately, have vast oceans, and many land masses, so that it would be viable to have it as a planet, not a series of planetoids a la the "bending". With naval warfare, we are going to need oceans, big ones, so the naval warfare can be actual naval warfare, not seaborne targets for sissy pilots who are land-based to attack from the nearest air tower, before bailing and hosing everyone with cheats, like in PS1. |
||
|
2011-12-27, 03:25 PM | [Ignore Me] #2 | ||
Corporal
|
Firstly, i'm rather glad to see you use some actual science knowledge in yer statement, that's nice.
I would also like to see auraxis with some curvature. It's all the finishing touches that really make a game immersive and enjoyable, and this would be a nice touch. Of Course, that's provided we're playing on a single planet, and not several smaller continent-worlds like the original. Still a nifty idea though, would be interesting to see how noticeable it would be. |
||
|
2011-12-27, 03:52 PM | [Ignore Me] #3 | |||
Brigadier General
|
|
|||
|
2011-12-27, 04:28 PM | [Ignore Me] #4 | ||
Lieutenant Colonel
|
Yeah its not going to be one big seamless play zone, sadly.
Curvature on the scale of kilometres is only very slight, so most would not notice it unless you made it unrealistic as you say which would just raise questions as to why bother with it. |
||
|
2011-12-29, 03:31 PM | [Ignore Me] #6 | ||
Colonel
|
For someone 6ft tall standing on perfectly flat ground on an earth sized body, the horizon is about 3-3.5 miles away.
3 miles will be way beyond the distance units are viewable from, or even the distance you get information sent to you about units. |
||
|
2012-01-01, 04:31 PM | [Ignore Me] #7 | ||
Lieutenant General
|
I just don't think the continents will even be big enough to make a noticeable difference in curvature. It would be nice for immersion, but wouldn't effect gameplay if it didn't happen.
As far as development, I would hope they've all ready finished most of the terrain. If it's not all ready curved it could take way too many resources to change it. |
||
|
2012-01-02, 02:37 AM | [Ignore Me] #8 | |||
Colonel
|
If any developer is curious to test it all you need in the vertex shader is the view position in world space, a uniform with the seaLevel in game coordinates (or the y value of the lowest piece of terrain), and the radius of the planet. Then after the vertex is in world space (aka model * vertex) just transform the vertex by this I believe: float2 diff = vertex.xz - viewPosition.xz; vertex = R_y(atan2(diff.x, diff.y)) * R_x(-length(diff) / radius) * float3(0, radius + vertex.y - seaLevel, 0) + float3(0, -radius, 0); Then perform the view and projection like normal. I think that was it. I can't find my old code that did it. // edit Here's a working implementation in HLSL (DX11): Code:
cbuffer matrix_buffer { matrix world; matrix view; matrix projection; }; struct vertex_input_type { float4 position : POSITION; float3 normal : NORMAL; }; struct pixel_input_type { float4 position : SV_POSITION; float3 normal : NORMAL; }; pixel_input_type vertex_shader(vertex_input_type input) { pixel_input_type output; input.position.w = 1.0f; #if 0 output.position = mul(world, input.position); output.position = mul(view, output.position); output.position = mul(projection, output.position); #else float4 viewPosition = float4(0, 20.0, 0, 1); float seaLevel = 0.0; float4 vertex = input.position; matrix model = world; float radius = 900.0; vertex = mul(model, vertex); float2 diff = vertex.xz - viewPosition.xz; float angleX = -length(diff) / radius; float angleY = atan2(diff.x, diff.y); float3x3 rotateX = { 1, 0, 0, 0, cos(angleX), -sin(angleX), 0, sin(angleX), cos(angleX) }; float3x3 rotateY = { cos(angleY), 0, sin(angleY), 0, 1, 0, -sin(angleY), 0, cos(angleY) }; vertex = float4(mul(rotateY, mul(rotateX, float3(0, radius + vertex.y - seaLevel, 0))) + float3(0, -radius, 0), 1); vertex = mul(projection, mul(view, vertex)); output.position = vertex; #endif output.normal = input.normal; return output; } Last edited by Sirisian; 2012-01-02 at 04:49 PM. |
|||
|
2012-01-03, 03:28 PM | [Ignore Me] #9 | ||
Earth is big, but not that big. For every kilometer you travel along the surface of the earth, you'll also drop about 8 centimeters (or a drop of about 7 inches for every mile walked along the surface). If you live where I live, in what used to be a desert before civilization got here, you'll notice Earth's curvature even if you look down the street (as the streets here are all in a grid and you can see down a street for miles). Also, if you fly you can start seeing the curvature quite easily even before you get to cruising altitude.
Now, if we look at something like the Moon, a quarter of Earth's radius, for every kilometer walked along the surface, you drop about 30 centimeters (or every mile drops you about 27 inches), curvature can be plainly seen by the average human. It would indeed be absolutely awesome if the developers could implement this into the game. But as you mentioned, sine things are actually physically present in the game engine now, that would present some issues. The only way to truly solve this problem one and for all, without having the need for correction, is for the engine's global coordinate system being polar. Then you won't have to deal with any sort of aiming corrections, curvature issues, or otherwise. But that would be unconventional, harder to source code, and would be slightly more demanding on resources, so I doubt that would happen. That said, they could still create this effect by introducing some "lensing" effect to high-altitude aircraft. |
|||
|
2012-01-03, 05:28 PM | [Ignore Me] #10 | ||
First Lieutenant
|
Slightly off topic but with this talk of curvature and gravity, what unique mechanics could be implemented? I'm mainly talking about say 1 specific zone with some weird but interesting things such as maybe low and high gravity areas. With vehicle physics now where a vehicle can flip on a sharp turn this could provide some very fun/frusterating results. However I do not think it should to many areas like this but I think a single continent with a few zones with varying gravity (and/or other interesting changes) would be fun.
|
||
|
2012-01-03, 07:05 PM | [Ignore Me] #11 | |||
Colonel
|
The main change though is that one could have no visibility limits. A planet radius can be chosen for instance using a formula (simple one at that) that defines the maximum view distance given a maximum flight ceiling. So while the whole world can be defined as a flat world a simple set of equations can bend it around a sphere. This would make things like seamless loading easier with no maximum draw distance. (Granted you don't draw things under the horizon which in turn causes a more natural draw distance limit). That's probably the biggest advantage. There is a funny thing that can happen with small radii. You could be flying and while it would see like you've wrapped around the planet you won't actually wrap around. One would have to be paying attention to distance to notice thing though or be on a massive map (A radii of 1800 m would mitigate this problem). Last edited by Sirisian; 2012-01-03 at 07:11 PM. |
|||
|
2012-01-04, 12:07 AM | [Ignore Me] #12 | ||
I've no doubt your algorithms work, but I'm also a big fan of the KISS principle. It will always be logistically simpler to have an engine designed for curved surfaces rather than one that simply renders a flat surface onto a sphere or gives it the appearance of it. This is doubly true when realistic things like gravity, drag, friction, and thrust (and possibly momentum/mass) are included into the model. No doubt designing a level in a square is easier, but when the game actually loads, it must be spherical.
My primary concern isn't with draw distance of objects or occousions. My first concern is with trajectories, especially projectiles. Also, simple algebra won't convert a curvilinear path from linear coordinates into a spherical ones. It can approximate it, but that is a very tight rope to walk down. Including forces as part of a physical representation means there are accelerations, and already thst means simple algebra is not enough. Iccuracies in linear approximations will surface, and will have to be corrected with more linear agebra. At that point, you will be doing the equivalent of numerical integration, and you might as well go the exact route and do trigonometric conversion but for PC's that is an issue, since (and Im sure you know this) trigonometric functions are always approximations in a CPU. It might not be a problem for a two-pilot dogfight, but it scales exponentially. Spherical systems on the other hand, still give the same three dimentions, but now we have a radius and two angles. Any movement in this system really IS just vector algebra and forces are also vectored, so your numerical integration is always one dimensional and it is much easier to assign a fixed processing cost for each element, so it now scales linearly. Such a system would be a bitch to set up for two reasons. First, humans don't think in spherical dimensions, so all equations would have to be carefully checked out and verified. Second, if the surface maps were created in a flat square, then they'd have to be transformed into spherical coordinates, which could be done relatively easy prior to game release, but needs additional coding of tools. Last edited by Ailos; 2012-01-04 at 12:13 AM. |
|||
|
|
Bookmarks |
|
|