- Home /
Best way of creating a level/environment
Hey, quick noob question here.
I was wondering what is a more practical/efficient way of creating a level:
a) Creating the entire level in external software like Blender, or
b) creating walls, props, etc. as models and using them in unity to construct a level of gameobjects.
I grew up making maps for counter-strike 1.6, source, and global offensive, and know a bit about map optimization in the source engine...
Are there ways to do things like nodraw, etc. without downloading 'level builder' assets and plugins?
I'm a little uneducated in this field so I'd appreciate all of your knowledge!
Cheers!
I usually make one blend file called " props" and then I seperate all the diffrent props into seperated scenes, you can change scenes in blender with the number keys 1-9, there is in total 40 diffrent scenes in blender that you can use. then when you are done just select all the scenes at once by holding down shift and clicking on the diffrent scenes and then " Shift + A" to select all the props and export them as a FBX file.
Interesting workflow, but this can introduce two challenges:
If .blend becomes corrupted (which happens to me all to often) you can lose the ability to easily edit your graphics
Can be difficult to update only some of your props (by putting them in the same .fbx)
Solution to the first problem: backup all of your important work. Sorry, did I say that loud enough? BAC$$anonymous$$UP ALL OF YOUR I$$anonymous$$PORTANT WOR$$anonymous$$
Answer by Graphics_Dev · Feb 24, 2016 at 10:59 PM
Here are a few tips:
Split objects wisely in Blender
Keep different .blend files or at least .fbx files for each object
Keep your objects at the center of space, their scales applied (scale of 1), and rotation applied (rotate -90 degrees around the x-axis then Ctrl-A apply rot to fix the Blender --> Unity axis issue: you can rotate back 90 degrees so that in Blender it has a 90 degree rot around x-axis but be oriented correctly)
Remember materials in Blender are only used to create the material NAME in Unity (and bake out textures)
DO NOT overwrite materials in Unity -- just adapt the blank materials imported from Blender
Example:
You are working on a simple scene that has a room with a table, chair and character. So in Blender create and save a file with a complete room model (without the furnishings). Next, make and save a table file with a table model with all the details (perhaps a couple knives, forks, and plates). Make and save a chair .blend and then a separate character .blend...this continues until you are done with objects needed for your scene. Of course, all of these would be saved in a "room scene" folder (outside of your Unity project). Export all the models as .fbx files. Finally, import these into Unity with their (named) materials and import your textures...put the objects together in our scene and setup lighting, cameras, particle FX...
Example 2:
You are working on a game that programmatically generates levels (ie. dungeons, mazes). The best thing to do for this type of game is to create modular components that get generated by scripting. These components would be something like a hallway piece, a room piece, a turning hall etc.. To make these, model a base for the wall and floor maybe structural details (windows, doors...), then save that as a file and of course export to an .fbx for Unity. Make some detail objects like mentioned in example 2 then import the models into Unity. Create prefabs for hallway, room...by parenting the details to the base, then instantiate the prefabs from a script.
Thanks man, this is exactly the kind of guidance I was looking for.
Cheers :)
Answer by whisker-ship · Feb 25, 2016 at 08:25 AM
There's this program that's designed to make 3D environments and importing them into Unity 3D . I've never used it myself but if I ever considered making a vast 3D environment similar to Skyrim or Fallout I would use it.
The software is called "World Machine" and here's a video of someone using it. It's impressive what they created. https://www.youtube.com/watch?v=Szm7JtD-54o
For 2D environments I feel like the Tiled program is essential. I've used this one a lot, and if it wasn't for this program I would be making all my 2D game in GameMaker or some other engine. You can make levels easily with tilesets and add collision straight from the software.
Here's a link to the website: http://www.mapeditor.org/ Here's a video showing you how to use Tiled on Unity 5: https://www.youtube.com/watch?v=U2DU7sH1GxI
Also, for 3D environments I have used "ProBuilder Advanced" from the asset store. It's easy to use and you can make 3D stuff straight from Unity 3D.
I made this bridge using ProBuilder Advanced straight from the Unity scene editor:
Answer by toddisarockstar · Feb 24, 2016 at 10:16 AM
i would say do as much as you can through unity. unity's interface is pry easier to work with than blender for moving stuff around and such. About the only thing unity doesn't do is create custom meshes and animations. When you get into the scripting for your game it just seems easier for scripts to refer to things or spawn new things during run time. Also if you want to adjust your level after playing it, It would be a real pain going back during mid development and re importing your entire level.
I have to say I strongly disagree...Blender actually has hotkeys for moving objects which makes it FAR more efficient than Unity at moving objects around (if you know the hotkeys). Unity can do animations, and no, it's not a real pain to re-import your level if you have everything setup correctly. Your scene should not be one file so you shouldn't ever have to re-import your entire level: only the parts you want to change.
Answer by Jason2014 · Feb 24, 2016 at 01:07 PM
I recommend you "World of Level Design" site. There are most about UDK, but you can get some knowledge about level design. There are 2 free e-books to download and many tutorials with tips. On the top in "Tutorial topics" you have "Level design" topic.
EDIT: For Blender search in YouTube. There are many series about features and using hotkeys. I do not have my favourite one, so I cannot write you which one is the best.