Skip to content
This repository has been archived by the owner on Feb 11, 2024. It is now read-only.
Henry de Jongh edited this page Mar 9, 2018 · 8 revisions

How does SabreCSG compare to mesh approaches?

They’re different approaches to level design. With CSG you’re building with volumes, with mesh based approaches you’re building edges and geometry by hand. For example if you’re creating a building with some corridors in, with CSG you’d add a brush for the building then subtract some brushes for rooms and doorways.

One of the many benefits of CSG is because it’s all built from volumes it’s extremely flexible, you can move chunks of the level about (such as where doorways are or a set of columns and platforms) so it’s very rapid for iterating and changing the levels you’re building, giving you lots of flexibility to make small or huge changes to your level quickly without having to rework lots of topology, add and remove faces as you would with mesh based approaches. It also allows you to focus on the actual gameplay spaces you’re building because it’s inherently a spatial approach.

There’s a great video by Joe Wintergreen from Impromptu Games where he talks about the differences of CSG and mesh based approaches to level design.

What Unity versions are supported?

Unity 5.0.0, Unity 2017 or higher. It could be that we accidentally use a feature or two not available in older Unity versions even though we actively try to keep it compatible. If this is the case please open a new issue and let us know what's wrong.

Can geometry built in SabreCSG be exported?

SabreCSG supports exporting to the widely support OBJ format, to export select the CSG Model and click the Export OBJ button on the Inspector. This is a great way to prototype level geometry that can be used with external tools, if you need to tie in modelled assets or sculpted geometry too.

Is it possible to procedurally generate offline levels?

Absolutely, SabreCSG follows Unity’s model of scripts and game objects. Every brush is attached to a game object, allowing you to duplicate brushes and modify brush properties programatically at editor time. In fact we have a quick guide to doing just this which you can find here.

How does SabreCSG geometry render? Does it support draw call batching?

SabreCSG builds standard Unity meshes that work exactly the same way as meshes that are imported from external art tools. They can be added to Mesh Renderers and Mesh Colliders (which the built game objects by default do) allowing you to set custom shaders, ray cast them, etc.

SabreCSG automatically batches geometry into the minimum of draw calls by using the materials present in the final geometry to determine how to build the final meshes.

Can I add a SabreCSG logo to my credits or splash screen?

Absolutely, we have several logos available online and a splash screen just for this. Please check out the Logo Assets page.

What’s the best practice for large scenes?

If you’re having issues with scene files getting too big, or long load/save times then make sure Asset Serialization isn’t set to Force Text (Edit -> Project Settings -> Editor -> Asset Serialization Mode). Using Mixed is the default for new projects and this should give you a good balance.

Why doesn’t my bump mapping look right?

If you require bump mapping make sure that Generate Tangents is enabled on the CSG Model. You can check this by selecting the CSG Model, then on the Inspector open the Build Settings drop down and check Generate Tangents. Unity’s built-in lighting shaders require both normals and tangents to be present on the model for calculating bump mapping as these are required to calculate the lighting in texture space rather than world space.

How do I create transparent brushes without creating holes?

If you wish to create transparent brushes, it is usually best to mark the brush as a NoCSG brush (previously called Detail brushes). NoCSG brushes do not run CSG logic and all their faces end up as final geometry. This avoids the issue of transparent materials on some faces revealing interior space. For windows it is usually best to use a subtractive brush to cut out the hole, then duplicate the brush and mark it as a NoCSG brush for the actual window surface. This way the sides of the window frame are generated and there is a visible boundary between the glass and the wall.

Clone this wiki locally