iamgreaser / iceball

Open-source rewrite of the VOXLAP version of Ace of Spades.
http://iceball.build
GNU General Public License v3.0
113 stars 32 forks source link

Display the map in the game world instead of HUD #109

Closed dany-on-demand closed 9 years ago

dany-on-demand commented 9 years ago

Since we have polygons support in Lua now, I thought it'd be nice to have the map show up in the game world instead of HUD, something like this: something like this.

Note: I mean the map graphics style, not that you have to walk somewhere to reveal that part of the map. Though that would make an interesting mod.

Or maybe in a different way. With added procedural perlin noise to make it look old-timey and damaged on the sides and corners of the map, it would definitely enhance that ye-olde "classic AoS" vibe.

rakiru commented 9 years ago

I don't think this would be a good idea, especially before #110. Simply adding arms and a tattered edge to the current map, maybe, but I do not like the idea of anything making it harder to view the map (shadows, graphical changes to simulate rough paper, animation, etc.).

iamgreaser commented 9 years ago

The VA polygons are untextured.

To do this most cleanly I'd have to add a texcoorded format to the VAs and allow use of an image in varender*. However, I don't see an immediate need for textured stuff right now (mostly because I'd like to not touch the engine today after wasting so much time on a PLY loader that I decided was just too complex to bother with, and eventually forced myself to produce the VA API instead).

Also, rakiru's point holds.

I'll make an issue for textured polys though, just to remind myself to eventually implement them.

iamgreaser commented 9 years ago

OK, do we really want this? I personally don't, but the engine framework is in there now if you really want it - e.g. you could make a mod.

So yeah, taking a vote: Do we implement this, or do we just close this issue with "make it a mod if you so desperately want it"?

My vote is "no", as in "don't implement it".

rakiru commented 9 years ago

No from me.

dany-on-demand commented 9 years ago

iamgreaser commented 9 years ago

Just in case you were wondering:

Proof by Moire example

Moire interference in the wheat fields. Even happens when I render it at 512x512.

iamgreaser commented 9 years ago

Vote is 2-1 no-to-yes. Also tested practically and it's fucking terrible.

We will not be implementing this in the base game, however you are free to implement this as a mod just to see how fucking terrible it is in practice.

Closing.

iamgreaser commented 9 years ago

Here's a test if you want to find out just how awful this is:

diff --git a/pkg/base/obj_player.lua b/pkg/base/obj_player.lua
index 26a74ca..294dee2 100644
--- a/pkg/base/obj_player.lua
+++ b/pkg/base/obj_player.lua
@@ -1552,11 +1552,38 @@ function new_player(settings)
            local mx, my
            mx = this.large_map.l
            my = this.large_map.t
+           local sw, sh = client.screen_get_dims()
+           local iw, ih = common.img_get_dims(img_overview)
+           local x, y
+           x = iw/sw/1
+           y = ih/sw/1
+           local l = {
+               {-x,-y, 0, 1, 0},
+               { x,-y, 0, 0, 0},
+               {-x, y, 0, 1, 1},
+               {-x, y, 0, 1, 1},
+               { x,-y, 0, 0, 0},
+               { x, y, 0, 0, 1},
+
+               {-x,-y, 0, 0, 0},
+               {-x, y, 0, 0, 1},
+               { x,-y, 0, 1, 0},
+               { x,-y, 0, 1, 0},
+               {-x, y, 0, 0, 1},
+               { x, y, 0, 1, 1},
+           }
+           va_img_overview = common.va_make(l, va_img_overview, "3v,2t")
+           client.glsl_use(shader_img)
+           --client.va_render_local(va_img_overview, 0, 0, 1, math.pi/2*0.0, render_sec_current, -math.pi/2*0.0, 1, img_overview)
+           client.va_render_local(va_img_overview, 0, 0, 1, render_sec_current, 0, 0, 1, img_overview)
+           client.glsl_use(shader_misc)
+           --[[
            client.img_blit(img_overview, mx, my)
            client.img_blit(img_overview_grid, mx, my,
                this.large_map.width, this.large_map.height, 
                0, 0, 0x80FFFFFF)
            client.img_blit(img_overview_icons, mx, my)
+           ]]

            local i