5
\$\begingroup\$

I'm trying to decide how to manage my 3D assets, and even how I should construct a world for my game.

I should maybe explain, my game is basically a single explorable world set in a school. It's quite large. Every room and building enterable (possibly transitionless), and a large outdoor area (sports field, playground, etc.) I plan to make much of it modular (walls, floors, etc.) The world is somewhat tiled. I've create several different blocks for walls (Straight, cornered, T shaped, cross shaped, door, etc.) which I can place sequentially to create rooms and buildings. I have some blocks lined up in a row in Blender. Now I'm wondering what to do with these pieces...

Issue 1)

Should I use Unity to place my assets to create my world, or do I create another blender file with all my assets linked? I'm tending towards the latter because I feel I can do a lot more within Blender, but it doesn't appear very easy. However in order for the game to function I'd imagine I'd have to cut up my world into pieces. Problematically I'd also like to use Unity's terrain tool, so if I'm creating a single world object in Blender I'm not sure how I'd do this.

Issue 2)

I'm not very experienced in 3D game development, I've mainly worked with Flash up until recently. In Flash, you can create movieclips which nest other movieclips. Preferablly I'd like a system as close to this as possible within Blender or Unity.

So for instance, I'd like to have a 3D asset of a table. Without affecting the original asset, I want to place objects on the table like books and whatnot, and then control this as a single instance called 'Table with books', maybe duplicate it elsewhere, if I change the position of the books on one it should update all other instances.

In Blender, I use alt+D to duplicate an object and link it to the original, however it's very easy to duplicate an object without selecting it's children and creating a variety of differently childrened duplicates, which in a vast world which is hard to keep track of, would become a massive headache to deal with. I can just imagine spending hours upon hours correcting a single silly mistake I produced and repeated without noticing for several days.

Within Blender I've tried making each wall object it's own group, however they're all in one file and have different xyz positions. I don't want to separate them into dfferent files, in order to create seamless walls I need to have them all in one place. When I create a group instance with shift+A, the origin is of the original group object's xyz position:

enter image description here

I know there's an offset option in the groups panel where I could set it to -2,4,0 to counteract this but I don't like this at all. If I move 10 original grouped objects I have to update each of their offsets! I suppose I could create an empty axis for each wall object, but this also seems an odd way of doing things.

Issue 3)

Walls are 2 sided objects, the design of one could be different on either side, one could be pink on one side with a skirting board, the other side could be exposed brick work. How would I do this? Lets say I use Unity to position all my assets (which I'm now assuming is probably the right way), ideally I'd like to select a load of walls faces and change their design with a combo box of styles and a color picker in the inspector (a script would be necessary obviously).


Sorry, that's a lot of questions for a single post, I hope someone can point me in the right direction.

\$\endgroup\$
1
\$\begingroup\$

Issue 1: Should I use Unity to place my assets to create my world, or do I create another blender file with all my assets linked?

Both strategies can work depending on what's more comfortable for you. When you create the world in Unity it will be easier to control it from Unity (add, move or remove objects at runtime). But neither will give you an usability experience as you are used to from Flash.

A third option you could try is building your level editor into your game which behaves the way you want it to. That way you can write a specialized editor which is more easier to work with than either the Unity editor or Blender. The initial cost of creating that edit mode might or might not amortize depending on how much level building you expect to be doing.

Issue 2: Edit one thing and have it affect all the duplicates of it

This can be easily done in Unity through prefabs. When you change a prefab, you also change all instances of it. Prefabs can have children which can in turn also be prefabs. So you can have a classroom-prefab with a desk-prefab child which in turn has a book-prefab child. You can then place that whole object-tree with a single drag&drop, edit it, and then either "Apply" it to make your changes apply to all other classrooms, or don't to have them as independent modifications.

The prefab system is a really basic concept of Unity which is covered in most basic tutorials, so forgive me if I don't write yet another detailed explanation of how to use it.

Issue 3 Walls are 2 sided objects

Not necessarily :)

Each polygons of a 3d model has a surface normal which says from which direction it is visible. When viewed from the other direction, the polygons are invisible. Blender doesn't show this, but Unity does when you import the model. So when you have two adjacent rooms wall-to-wall you can have the walls of both rooms on the exact same coordinates. When both walls have surface normals facing inside the room they belong to, the player always sees the texture of the correct side.

\$\endgroup\$
  • \$\begingroup\$ Thanks that was helpful. However regarding Issue 2, I'm fully aware of prefabs, but from an asset management point of view, I'm not sure how I would differentiate each individual object. I'd like to do it so I have a single blender file called Assets with everything in there, and then have Unity read it and convert each object into Prefab. Currently if I put a blender file in my Unity project it just imports a single prefab. \$\endgroup\$ – hedgehog90 May 12 '16 at 14:31
  • \$\begingroup\$ @hedgehog90 That won't work. Unity only imports Blender files as a whole. \$\endgroup\$ – Philipp May 12 '16 at 14:32
  • \$\begingroup\$ Well what would be the best way of organizing and working on my assets then? As I said, modular objects really require to be grouped in single files so I can work on them easily, but ideally I'd like everything in one place. Maybe some kind of library panel where I can see each object with an avatar and click to edit. \$\endgroup\$ – hedgehog90 May 12 '16 at 14:51
  • \$\begingroup\$ @hedgehog90 Sounds pretty much like Unity prefabs to me. \$\endgroup\$ – Philipp May 12 '16 at 16:17
  • \$\begingroup\$ I'm having a really hard time with this. Prefabs just don't make sense to me. I've been referring to models (ie imported fbx files) as prefabs, but it seems like they're something different. If I drag a 3d model into a prefab, when I update the model it doesn't propagate to the instances which are children of prefabs. I assumed this was behaviour of all prefabs as everywhere says nested prefabs are not possible (the prefab link breaks), but it does appear to work if if I make a plain gameobject child of another prefab. So confused. How do I use my 3d models with the prefab system? \$\endgroup\$ – hedgehog90 Jun 6 '16 at 11:05
0
\$\begingroup\$

To design walls you should use cubes in blender and not planes.

For issue 2 you should use prefabs , for better understanding of prefabs : https://docs.unity3d.com/Manual/Prefabs.html

For issue 1 i would suggest you to make different components of your scene in blender individually.(if you want a table in the scene make a table in one project, and buildings in the other.) after you have made your scene components individually you can assemble them in the Unity3D scene editor.

\$\endgroup\$
  • \$\begingroup\$ hope my short answer helped :) \$\endgroup\$ – Utsav Apr 23 '17 at 4:57
-3
\$\begingroup\$

Personally, I've had a lot of success with modelling stuff such as walls, chairs, or the like in Autodesk Inventor, exporting that to an stl file, importing that into Blender, and exporting that to fbx.

It's a messy pipeline, but it's helped me out a lot, especially when designing things like beakers or test tubes for visualizations. I've found that the extra precision you get when working with Inventor, due to the availability of dimensions and measurements, is a huge help when designing either a game world or objects to populate it.

Obviously, some things won't be doable through this pipeline - like a human form, or a really irregular shape like a crumpled up piece of paper. For those, I would recommend either Maya or just Blender.

Hope this helped!

\$\endgroup\$
  • 1
    \$\begingroup\$ This is a question about Blender. Answering it with "use a different tool" is not really an answer. \$\endgroup\$ – Philipp Nov 1 '17 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.