questions about level design

Blitz3D Forums/Blitz3D Programming/questions about level design

ryan scott(Posted 2004) [#1]
i'm starting on designing a level, and i am going to do it in gamespace, having no real sense of what i *should* be using, and forget about 3d studio, too expensive for a small independent. anyway, not sure it matters, gamespace outputs .x and blitz too i believe.

the question is this:

if i wanted a platform that during gameplay lets say a rock smashed through it, leaving a hole, how would i go about creating that? the platform is just a rectangular flat cube, how would you go about smashing a hole in it? when you make the plaform, would you create the hole in the platform and during gameplay somehow cause it to open?

i'd like to be able to smash holes in any or all of a dozen spots, for example. i believe it should be a real hole (not a decal or something) because i want the player to be able to fall through.

i can make the rock, make it fall, etc, the question is about how to make the hole open in the mesh so at first its not there then it is.

sorry for beginner question. any push in the right direction would be helpful.


poopla(Posted 2004) [#2]
I don't know if gamespace supports booleans, but that's and option.

Otherwise you can go at it milkshape style, manually creating poly's. This is probably more efficient.


ryan scott(Posted 2004) [#3]
what do you mean manually creating poly's? efficient in what way?

do i stick polys for holes into the platform, make them tiny, somehow name them, and then somehow open them up in-game?

gamespace recommends not using boleans, they say they are evil. not bsp legal.

i want to know how to make the change from no hole, to hole, in game.


Warren(Posted 2004) [#4]
gamespace recommends not using boleans, they say they are evil. not bsp legal.

Translation : their CSG code sucks.


mearrin69(Posted 2004) [#5]
Thanks for the input, HelpfulBoy - useful as always.

Actually the CSG code is fine - it's just made for modeling not for creating BSP levels. The problem with using CSG is that you end up creating non-convex geometry.

Ryan, it depends on how you plan on exporting the level. If you are going to do just .X or something I think you might get away with using Bools. If you want to do .Map or another BSP type pre-processed format then you will need to be careful about how you create your geometry.

My suggestion, if you're going to use gameSpace then ask this question on the gs forums (http://www.caligari.com/gamespace) and check out the level creation tutorial over there as well. Several authors of level format exporters hang out on those forums and may have advice for you that is slightly more actionable than what you learned from the post above mine.
Cheers,
M


Warren(Posted 2004) [#6]
The problem with using CSG is that you end up creating non-convex geometry.

If their engine can't handle concave geometry and their CSG code is generating concave geometry, my original analysis is still sound.


mearrin69(Posted 2004) [#7]
Not really. Maybe, instead, say that the level export code sucks. The CSG code is fine.

Even so, your comments weren't very useful to the thread - so my original analysis is still sound. I wonder what percentage of your posts contain useful information and what percentage contain useless sarcasm and feigned wit?

[edit]I suppose this sounds unduly harsh but, c'mon, you are clearly a smart guy with a job in the industry and you are making a real go of independent development. You could help out a lot more - or just be silent if you don't have anything to add. You are a potentially respectable guy who doesn't come off as very respectable. What's your beef?[/edit]
M


Warren(Posted 2004) [#8]
If you could see my face, you'd understand how much I care.


mearrin69(Posted 2004) [#9]
I don't need to see it. Oh well,

/ignore EpicBoy (again)


Warren(Posted 2004) [#10]
*sob*


Picklesworth(Posted 2004) [#11]
Maybe you could use a decalish thing for the hole, and not need to do any added geometry stuff. The idea would be to, for any object that hits the hole decal which is smaller than it, loses its collision settings for collision with that object which the hole is on...


jfk EO-11110(Posted 2004) [#12]
maybe the best looking method that is simple would be a pre-animated piece of wall. I use this too to blow holes into walls with explosives. Simply model a wall or floor that is made of several fragments from beginning on. You can use cubes for each fragment, and then only move the vertices to make the shapes of the fragments look non-uniformly. Then you can animate it. In your case, the fragments will fall down. You could then add some code in Blitz that will hide the fragments (they are children of the animation mesh) after the animation is played. For this you needed to name them in a useful way, eg. fragm3. Using countchildren, EntityName and Instr would help to handle all fragments.
But of course, you could also let them fall down completely code-driven. This way it would also be possible to create unique effects using random values.


ryan scott(Posted 2004) [#13]
decal idea: i want to be able to make large and small cracks in a glass platform, i'm pretty sure a decal isn't going to give me what i want. i want the geometry to change. it's not going to look right, otherwise. it's got to change with the view, etc. def real 3d req.

what i'm not sure is how in BLITZ i'm going to change it.

example, do i put the holes in the platform already, but closed, so that the vertices exist?

------------------------
*
*

------------------------

platform, with those 2 stars being cracks.

in the modeller make those cracks basically be invisible, they are so small. somehow set up an animation? so that they can open? then in blitz trigger the animation?

does this sound about right?

i'm new to all this obviously.

i'll ask over there too, but i think it's sort of a blitz question, too. figuring out gamespace itself is its own problem. ;)

3d modelling has a steep learning curve. :/
its way harder than 3d programming!


AdrianT(Posted 2004) [#14]
I often start a level in max by drawing floorplan on a plane, create a spline path floor plan, and a cross section line for the wall with subdivisions that relate to common heights I plan to use in the room like bottom and top of windows doorways etc, and loft extrude the cross section along the path of the wall. I then use the autoUV mapping for lofted objects to map the walls along the spline with enough iterations to make the polys square.

You can duplicate the original floor plan spline and convert it to a planar mesh and use this for the floor and ceiling. and slice the wall where you want the doorway to be end extrude thickness in the doorway. often do something similar with windows too.

this way you can quickly flesh out a level, assign vertex lighting and check it out for scale and gameplay before you spend too much time on making it look pretty.

The most important tools I find for optimizing the geometry are the snap tools that allow you to drag weld vertices by snapping to other verts in the model, the slice tool for slicing the walls, and the shift dragging of edges to extrude the edge of a wall if I want to modify the shapes rooms after having worked on them somewat.

thats some of the basic techniques I use that you may be able to emulate in gamespace. there are a bunch of other tools and tricks you can use after this to maintain your UV mapping and quickly fleshing out more detail.

Another thing you have to consider when building a level is how subdivided the polys have to be to get lit properly. If your just using dynamic lights and vertex colours you need a fairly dense mesh to get nice lighting, particularly in interiors.

You need to avoid long thin triangles, if your doing a lot of cutting and booleans you usually end up with a nasty mess of weird untidy triangles that are long and thin and not well ordered. Particularly on more organic objects, and because blitz dynamic lights are per vertex rather than pixel, if you use shinyness in your brush you will notice anomalities if you arent carefull about how you arange the polys, so for the most part fat tris are best.

If you can avoid it, never use maplet, it makes the dirtiest, worst meshes I have ever seen.

hope that helps, maybe you can find similar techniques in Gamespace.

Oh forgot to mention, if your using lightmaps, you can use really quite large polys, so long as you don't go crazy with shinynes in your brushes. And if your trying to get detailed levels to run on low spec machines you will need low poly invisible colision, and use the detail geometry for visuals only, and do all gameplay interaction picks etc on the invisible collision,


AdrianT(Posted 2004) [#15]
for destructible objects I'd create a intact and destructible state, and use name tags the engine can pick up on. so you could name a wall section WallA_1_50 which tells the engine that that wall is the first in a sequence and has 50 hit points, and have the engine check for further wall sections in the same sequence. Like wallA_2_100, WallA_3_150 (each one being further along the destroyed state)

and have them swapped out each time. If your just using dynamic lighting you can use instances of the same object all over your level that reference the same object and have them share the same surface. If your using lightmaps its a lot more expensive as you need a seperate wall section for each location your destructible object sits in due to the unique lightmap on each.

Not realy sure how much flexibility you will have with gamespace, but you will be able to create names for your geometry that can be used as handles for your engine to read and instruct it how to handle various aspects of these named objects.


Litobyte(Posted 2005) [#16]
>>If you can avoid it, never use maplet, it makes the dirtiest, worst meshes I have ever seen.<<

Mmm, not sure what you mean, but there are many ways to clean out and low down the final polycount of an edited maplet map.

Eg: after you have done many intersections with columns and all, try to re-pass the roof with a "filled" cube, ta-da you have reducted polycount and optimized the mesh quite a lot, didn't you ? ;)


Hotcakes(Posted 2005) [#17]
Woah, way to bring up an old topic!!!


Aoneweb(Posted 2005) [#18]
Is it not possible to replace one floor with another, I mean create your floor in say Quill, then name it, say floor1, then create your aftermath floor and call it say floor2, both floors could be made in the model maker and the import as prefabs, you will have to use some sort of marker but I am sure it could be done.


AdrianT(Posted 2005) [#19]
yeah I sometimes swap geometry by saving an animated B3d and using the visibility track in max and making one state on frame 0, and the second state on frame 1.