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

New building mechanics. #146

Closed dany-on-demand closed 9 years ago

dany-on-demand commented 9 years ago

I know you all want to buff destroying. I want too as well, but doing that we must consider the counterweighing game mechanic of building.

We could just build a 3^3 cube, but that messes with expectations of movement.

I categorically oppose click and drag. One of the main reasons is spam.

Here, I propose a list of possible solutions:

MajorLunaC commented 9 years ago

Oh, for quicker building, so far I've seen what build-and-shoot has, which allows you to drag-and-select an area to fill in with blocks, but building in the air is a slight issue (need framework first, like a pole). Or what some minecraft clones use, which is selecting a source block and a destination block and then auto-filling in-between. Building more rapidly is also an issue of:

I'm sure I can come up with more ideas and solutions if you really want, but I think these are just about all of the most practical ones.

EDIT: I was posting this in Vehicles Concept while you were writing this Issue, so much of the same.

MajorLunaC commented 9 years ago

Also, there is a concept I was saving for a Command & Conquer mod: Construction Box. Which is something like a minecraft Furnace (or similar). You place one on the ground, use it to access a menu which has a list of prefabricated buildings. Select the building you want and insert the blocks it needs to build it. It will build it progressively block by block, some set distance away. Keep supplying blocks and the structure pretty much auto-repairs itself over time. Remove the block to stop auto-repair.

dany-on-demand commented 9 years ago

Construction box - did you read nothing of the original post? This does not belong in a build-to-survive FPS

LeComm commented 9 years ago

Prefabs might restrict the creativity part, resulting in everybody building the same, unless one has to create all his prefabs on his own. The idea of encreasing world and player size sounds good, but opengl would run even slower. There should be no building "rank" or class, your "class" should be defined by nothing than your own personal skills.

rakiru commented 9 years ago

I know you all want to buff destroying. I want too as well, but doing that we must consider the counterweighing game mechanic of building.

You know grease and i have mentioned several times in the past couple of days that we want to make building faster, right? We've discussed prefabs a bunch too.

Click-and-drag could work if implemented well. I think the restriction would have to be that you can only build them, say, 5 long, so you can't simply put them up across the map by holding the mouse button and running over to the other side.

Prefabs could also work, but I would suggest only having basic ones (3x3 wall, 3x3 floor, 5 tall pillar, etc.) so that, as LeComm pointed out, we don't end up with every player building the same thing.

I don't like the idea of restricting the colour selection any more. What would left-right change? The hue? Then we're stuck with all bright colours or all washed out colours. The saturation? Then you're stuck with whatever colours are on the map already for you to pick-block from. I'm not sure about others, but I consider my colours when building, and I wouldn't want that ability taken away just so I could build prefabs.

The natural growth thing could be interesting, but if not done right, I feel like it could be awful. And how would that look to other players? Would they see the semi-transparent outline? If they didn't, then it could look weird, depending on how the "natural growth" happens. It feels weird that they would see it though (the enemy's at least), as they'd basically be seeing the plan someone else is doing.

As for rank, that's up to servers. If we want, we can attach permissions to everything (the system to do so is there), then let server admins do whatever the fuck they want in regards to that.

@MajorLunaC You raise a few good ideas, so I'd like to address each bullet point:

@LeComm Please stop complaining about OpenGL being slow without basis. You complained about me doing that the other day, so refrain from doing so yourself. BR has already tested varying map sizes and it has very little effect - anything past the fog distance isn't rendered anyway. I just loaded up a gen map at 64x64 and again at 512x512 - I got about a 5% drop in framerate. If we started actually using much bigger maps, we would obviously look to deal with any performance issues they bring.

Edit: @MajorLunaC I forgot about your second comment. No, I don't think any form of auto-repair (or for that matter, unsupervised building) would be a good fit.

MajorLunaC commented 9 years ago

@Dany0 I read every bit of it the first time, and it's very close to your "naturally growing" prefabs, but you put a special block (or machinery or whatever) to do it, and keep doing it. That's pretty much it, although having to keep still while something is building in an FPS is usually fatal. The only other thing I was considering was making it removable only by teammates, and is otherwise indestructible (or at least VERY tough). This would NOT cause problems because it relies on people to keep refilling it with blocks, and it's not like it's truly an offensive weapon anyway. I suppose you can allow enemies to steal blocks out of it. I say an auto-repair-like ability is essential. Some of the gorges are uncrossable without a bridge. To have something reliably constantly rebuild it is essential in an onslaught.

As for anything being slow, iceball is quite efficient and fast for the most part. If you want some model or code for some more efficiency, I recommend Craft (currently VERY stagnant): https://github.com/fogleman/Craft Techniques associated: http://0fps.net/2013/07/03/ambient-occlusion-for-minecraft-like-worlds/ I do NOT recommend any Minetest or minetest derivatives, as they are ridiculously slow and can hardly even load a singleplayer map properly.

rakiru commented 9 years ago

Having to stay somewhat still ensures that you can't simply run as far into enemy lines as possible, then build an instant bunker around yourself. Building should be something you do progressively, except in the more safe areas inside your own territory.

Craft is written using "modern OpenGL", which isn't really an option here. Likely, LeComm would find that even more of an issue to run. As for the ambient occlusion, we already have that effect thanks to the brilliant @melchips.

Something I forgot to bring up - block types. I think block types exist (1.0 uses 0xFF for lights, I believe?). @iamgreaser would have to verify. It may be possible to create stronger blocks, perhaps at the expense of costing more block ammo to place. This would likely require textured blocks to actually be viable in terms of game-play, since you'd probably want to tell them apart, so that may be a long way off, if ever.

BR- commented 9 years ago

BR has already tested varying map sizes and it has very little effect - anything past the fog distance isn't rendered anyway.

All tests on gen_flat (map size by fog distance is fps):

64x64 128x128 256x256 512x512 1024x1024 2048x2084
64 147 146 141 123 56 17
128 147 144 141 123 54 16
256 146 144 141 123 52 16
512 143 143 141 120 50 16
1024 142 142 141 120 48 19
2048 142 141 141 120 48 18

There is a considerable performance degradation as the maps grow past 512x512, even at low fog ranges. However, fog (which is what I actually tested - you must've misremembered) has very little effect.

EDIT: all of this with frame_limiter 100

rakiru commented 9 years ago

I misremembered a bit, yes. The findings do match up to what I said and found though. Whatever happens between 512 and 1024 is obviously an issue that needs sorted however.

MajorLunaC commented 9 years ago

"simply run as far into enemy lines as possible, then build an instant bunker around yourself." That actually sounds like fun! Although probably just single walls. Sounds like some sort of Alchemy Wars. Blocks and team coordination would be your limits. I guess that should be saved for a nice mod.

Oh, and why does it have to be a textured block? I see the base flag and suitcase to look plenty fancy.

rakiru commented 9 years ago

I was incorrect with my previous statements about the map format, so derp herp, ignore that for now. The reason I'd want a different textured block is that otherwise you don't know it's a reinforced block. I feel like that would be too weird for players, and isn't exactly intuitive. I don't see what the base, flag and suitcase have to do with this. As for running as far as possible then building a base, no, that just ruins the whole point of building. You could simple run, place a base, repeat, and grab the intel that way.

MajorLunaC commented 9 years ago

Hmmm... maybe I've been playing the shotgun mod too much. Walls seem like butter to a shotgun, maybe even the SMG, easily blowing 3x3 holes in a wall. But yeah, that's a mod.

As for the flag and suitcase, I know they're not solid, but can't the same images be placed around (not necessarily right on) a normal-looking block?

rakiru commented 9 years ago

They are a bit, but you eat through your shotty ammo in seconds if you do that, and you'll get shot even quicker.

The base and intel are entities, and thus have models. Blocks on the map aren't that complex.

LeComm commented 9 years ago

Probably a shitty idea, but worth a thought. Maybe group several blocks (or one prefab) into one single object. Hitting one of the blocks would damage the whole object, but it would have accordingly more armor. Would either need prefabs to rebuild once destroyed or a way to repair it. But this could solve the problem of thick walls (where you have to go just where the enemy shoots to be able to repair damage).

dany-on-demand commented 9 years ago

Build gestures maybe? Build a block -> "swipe up" -> "natural growth" of a wall. Swipe left, 3x3x3. Swipe right, 5x1x1 pillar.

I propose the following interface:

Warp00 commented 9 years ago

Maybe get some transparency on the block to show it's a "potential" building? Or am I getting the wrong end of the stick?

iamgreaser commented 9 years ago

If we're doing translucency, we have API calls for that to actually work in the git repo (0.2.1-1 for translucency, 0.2.1-2 for other really useful calls) - just remember to use client.gfx_depth_mask(false) before, and client.gfx_depth_mask(true) after drawing the translucent stuff. (It has direct access to glBlendFunc(), so you can do additive and multiplicative crap too.)

dany-on-demand commented 9 years ago

Here is how I imagine "natural growth" would make sense:

First row: Block is placed Second row: Prefab initiated Third row: Block "growing" out of neighbouring block (I fucked up 2nd - 4th columns, imagine it's growing out there like in the first column) Fourth row: Block placed, more of the future prefab seen

rakiru commented 9 years ago

Gestures sound like a horrible idea.

I don't entirely understand what your last image is meant to be showing.

dany-on-demand commented 9 years ago

Gestures are certainly a better idea than a prefab menu.

Aww, look, they think they are in a competition:

https://www.youtube.com/watch?v=NCLdwKGT914

Soo cute, just like Apple and PC!

rakiru commented 9 years ago

Well, as I stated above, I don't like the idea of prefabs being anything more than different sized/shaped boxes anyway.

iamgreaser commented 9 years ago

That's a screenshot of the map editor. It's supposed to have a massive library.

In the actual game, your prefab selection is limited enough that you have a grid where you can pick them from.

But of course if you actually play 1.0 you'd probably know that you really only need the platform, tower and wall... or you substitute one for that fucking huge block if you're playing demolition.

rakiru commented 9 years ago

Closing as not really suited to an issue tracker. A better place to discuss potential future mechanics is the subreddit: http://www.reddit.com/r/buildandshoot