BSP Factory released !!!
BSP Factory released !!!
BSP Factory 1.2 has been finally finished.
BSP Factory loads a BSP file -Quake(TM) or Half-Life(TM) version-, lightmaps it, and exports to several formats.
The new version of BSP Factory, amongst other things, will allow you to write exporters in simple scripts to export to any file format you want. It includes exporters for .b3d and .x formats, although I have written some more. I want to post these exporters on different forums first to ensure that they do work correctly, and then i'll add them to the package. I have exporters for gile[s], OGRE, NeoEngine, Pulsar LMTools, and some more.
All the people who bought it through Binary-People, please send me your Share-It receipt (an e-mail from them which demonstrates that you bought it) to receive the update. I told Binary People to send me the list of people who bought it, but they didn't Sorry this is the only way I know to continue giving support to these users.
You can buy it for 12.95€ here: http://tinyurl.com/64dfe
Demo version here: http://tinyurl.com/64gpy
An example written in Blitz: http://tinyurl.com/6pfrb
An example written in DarkBASIC v1.13: http://tinyurl.com/6gbul
Some (old) pics to show what it can do (Blitz3D screens):
Screenshots taken in DarkBASIC Professional:
A screenshot of a Counter Strike map rendered in DarkBASIC v1.13:
BSP Factory loads a BSP file -Quake(TM) or Half-Life(TM) version-, lightmaps it, and exports to several formats.
The new version of BSP Factory, amongst other things, will allow you to write exporters in simple scripts to export to any file format you want. It includes exporters for .b3d and .x formats, although I have written some more. I want to post these exporters on different forums first to ensure that they do work correctly, and then i'll add them to the package. I have exporters for gile[s], OGRE, NeoEngine, Pulsar LMTools, and some more.
All the people who bought it through Binary-People, please send me your Share-It receipt (an e-mail from them which demonstrates that you bought it) to receive the update. I told Binary People to send me the list of people who bought it, but they didn't Sorry this is the only way I know to continue giving support to these users.
You can buy it for 12.95€ here: http://tinyurl.com/64dfe
Demo version here: http://tinyurl.com/64gpy
An example written in Blitz: http://tinyurl.com/6pfrb
An example written in DarkBASIC v1.13: http://tinyurl.com/6gbul
Some (old) pics to show what it can do (Blitz3D screens):
Screenshots taken in DarkBASIC Professional:
A screenshot of a Counter Strike map rendered in DarkBASIC v1.13:
For those of you who purchase the full version (exporters don't work with demo), here is a PulsarLMTools exporter. Save this file as 'lmts.export' in the 'plugins' folder of BSP Factory:
To load .lmts files in IrrLicht, follow this thread:
http://irrlicht.sourceforge.net/phpBB2/ ... php?t=3198
Code: Select all
Const LMTS_HEADER_SIZE=24
Const LMTS_SUBSET_SIZE=12
Const LMTS_VERTEX_SIZE=28
Const LMTS_SUBSET_TRIOFS=0
Const LMTS_SUBSET_NUMTRIS=4
Const LMTS_SUBSET_TEXINDEX=8
Const LMTS_SUBSET_LMAPINDEX=10
Const LMTS_TRI_VERTEX_X=0
Const LMTS_TRI_VERTEX_Y=4
Const LMTS_TRI_VERTEX_Z=8
Const LMTS_TRI_VERTEX_U1=12
Const LMTS_TRI_VERTEX_V1=16
Const LMTS_TRI_VERTEX_U2=20
Const LMTS_TRI_VERTEX_V2=24
Const LMTS_TRI_SIZE=84
Function ExportFormat$()
Return "Pulsar LMTools (*.lmts)|*.1.lmts"
End Function
;-------------------------------------------------
Function ExportLightmap()
Return False
End Function
;-------------------------------------------------
Function Export()
GadgetList "LMTools Export Settings", 300
AddCheckBox "Save alpha and masked textures with .tga extension", 1
OpenGadgetList
tgaTex = GadgetListResult(1)
texNum=MapSurfaces()
subsetNum=MapSurfaces()
For c=1 To MapSurfaces()
trisNum = trisNum + SurfaceTriangles(c)
Next
;Write header
FileInt $53544D4C ;Magic ID ("LMTS")
FileInt 4 ;Version
FileInt LMTS_HEADER_SIZE ;Header size (normally 24)
FileShort texNum ;Number of textures **
FileShort subsetNum ;Number of subsets **
FileInt trisNum ;Number of triangles **
FileShort LMTS_SUBSET_SIZE ;Size of each subset (normally 12)
FileShort LMTS_VERTEX_SIZE ;VertexSize (normally 28)
;Write texture info
FileInt $54584554 ;Magic ID ("TEXT")
For c=1 To texNum ;For each texture
If (tgaTex = 1) And ((SurfaceTextureFlags(c) And 2) = 2 Or (SurfaceTextureFlags(c) And 4) = 4)
FileString RemoveExtension$(SurfaceTextureName$(c))+".tga"
For c2 = (Len(RemoveExtension$(SurfaceTextureName$(c))+".tga") + 2) To 256
FileByte 0 ;Fills with zeros until the texture name is 256 bytes long
Next
Else
FileString SurfaceTextureName$(c)
For c2 = (Len(SurfaceTextureName$(c)) + 2) To 256
FileByte 0 ;Fills with zeros until the texture name is 256 bytes long
Next
End If
FileShort 0 ;If '1', the texture is a lightmap
Next
;Write subset info
FileInt $53425553 ;Magic ID ("SUBS")
For c=1 To subsetNum ;For each subset
FileInt triOfs ;Offset to first triangle
FileInt SurfaceTriangles(c) ;Numberof triangles
FileShort c-1 ;Texture index
FileShort $FFFF ;Lightmap index (no lightmap)
triOfs=triOfs + SurfaceTriangles(c)
Next
;Write triangle data
FileInt $53495254 ;Magic ID ("TRIS")
For s=1 To MapSurfaces() ;For each surface in the map
For t=0 To SurfaceTriangles(s)-1
For v=0 To 2
vtx = SurfaceTriangle(s,t,v)
FileFloat SurfaceVertexX(s, vtx)
FileFloat SurfaceVertexY(s, vtx)
FileFloat SurfaceVertexZ(s, vtx)
FileFloat SurfaceVertexU(s, vtx, 0)
FileFloat SurfaceVertexV(s, vtx, 0)
FileFloat SurfaceVertexU(s, vtx, 1)
FileFloat SurfaceVertexV(s, vtx, 1)
Next
Next
Next
End Function
http://irrlicht.sourceforge.net/phpBB2/ ... php?t=3198
Pulsar LMTools .lmts format only contains geometry info. Lighting info is stored in a .scr file. Here is the plugin for .scr:
Code: Select all
Function ExportFormat$()
Return "Pulsar LMTools Lighting info (*.scr)|*.scr"
End Function
;-------------------------------------------------
Function ExportLightmap()
Return False
End Function
;-------------------------------------------------
Function Export()
;Ask for lightmap settings
GadgetList "LMTools Lightmap Settings", 200
AddText "Lightmap size:"
AddSpin 1, 4096, 128
AddText "Lumel size:"
AddSpin 1, 4096, 1
AddText "Ambient color (in R G B format):"
AddString "0 0 0"
OpenGadgetList
lmapSize$ = GadgetListResult$(1)
lumelSize$ = GadgetListResult$(2)
ambColor$ = GadgetListResult$(3)
;Write lightmap settings
FileLine "lightmap.max_size=" + lmapSize$
FileLine "lightmap.lumel_size=" + lumelSize$
FileLine "ambient_global.color=$" + Right$(Hex$(StringField$(ambColor$, 1, " ")), 2) + Right$(Hex$(StringField$(ambColor$, 2, " ")), 2) + Right$(Hex$(StringField$(ambColor$, 3, " ")), 2)
FileLine ""
;Writes each light
For c=1 To MapEntities()
If MapEntityProperty$(c, "classname") = "light"
lightcol$ = MapEntityProperty$(c, "_light")
r$ = Right$(Hex$(StringField$(lightcol$, 1, " ")), 2)
g$ = Right$(Hex$(StringField$(lightcol$, 2, " ")), 2)
b$ = Right$(Hex$(StringField$(lightcol$, 3, " ")), 2)
FileLine "omni_point.position=" + MapEntityX(c) + ", " + MapEntityY(c) + ", " + MapEntityZ(c)
FileLine "omni_point.color=$" + r$ + g$ + b$ ;+ Right$(Hex(ValueField$(PropertyValue$(ent,FindProperty(ent,"_light")),1)),2)+Right$(Hex(ValueField$(PropertyValue$(ent,FindProperty(ent,"_light")),2)),2)+Right$(Hex(ValueField$(PropertyValue$(ent,FindProperty(ent,"_light")),3)),2)
FileLine "omni_point.add"
FileLine ""
End If
Next
End Function
@Jedive. one question though. This wouldn't release you from using a Quake3 compliant level editor, right? I mean, you'd still need Radiant to compile your bsp but since a bsp is already lightmapped, what's the point of adding more lightmaps with your tools? Or you have to create an unlit bsp to add your stuff in?
One major issue we are all looking for is a Q3 quality-like lightmapper without the Commercial restrictions of ID's bsp format, or level editors.
if possible, please elaborate.
cheers!
One major issue we are all looking for is a Q3 quality-like lightmapper without the Commercial restrictions of ID's bsp format, or level editors.
if possible, please elaborate.
cheers!
qradiant is the map editor. The one to export the map file, not the bsp.
even though, qeradiant is illegal for comercial use also.I'd use Quark instead, which is free.
bsp compiler, as you know, there's no one option free for comercial.Unless I have understood something badly, bsp factory does not compile to bsp. But import an already made bsp. I suppose the tool was initially geared to use bsps traslated to engines like blitz3d, db pro.
But, I would not see th advantage of importing really a bsp... I mean, for irrlicht, ain't it better to import an standard mesh, that would have not the weird bsp imposed limits, lightmap it BSP Factory -for example- , and export then into x, or as he say, use the lmets format, as now it has scripting abilities for exports?
Looks like this tool could be used for comfortably placing objects, etc, generating the lightmap, and exporting.
even though, qeradiant is illegal for comercial use also.I'd use Quark instead, which is free.
bsp compiler, as you know, there's no one option free for comercial.Unless I have understood something badly, bsp factory does not compile to bsp. But import an already made bsp. I suppose the tool was initially geared to use bsps traslated to engines like blitz3d, db pro.
But, I would not see th advantage of importing really a bsp... I mean, for irrlicht, ain't it better to import an standard mesh, that would have not the weird bsp imposed limits, lightmap it BSP Factory -for example- , and export then into x, or as he say, use the lmets format, as now it has scripting abilities for exports?
Looks like this tool could be used for comfortably placing objects, etc, generating the lightmap, and exporting.
Finally making games again!
http://www.konekogames.com
http://www.konekogames.com
I know that there is a lot of people who use expensive tools like 3DS Max to model their level, or other people that use other similar cheap / free tools (wings3d, silo, anim8or, etc). But there are people like me who not capable of modelling a simgle room with these tools, and that find editors like Qoole, Hammer, Quark or Radiant very simple to use and intuitive. Most of the 3D engines out there already support Quake3 .BSP maps, soyou can already use Radiant, but commercial use of .bsp maps generated by id's BSP compiler (even if you use a free editor like Quark, you have to use id tools to compile the bsp) is not possible without paying hugue license fees.
Quake1 and Half-Life are a different case. For Quake1, there are toons of tools available on the net. For Half-Life, you have the GPL bsp compiler Zoner's Half-Life Tools. The problem is that there are not many 3D engines that support these .bsp formats, so you can use these tools (which are very great) to make your maps. That's where BSP Factory comes. Writing new exporters for BSPF is really easy, just take a look at the exporter sources I have posted here.
I personally use the Qoole editor. Extremely simple to use, and powerful (it were use as the base for WED, 3D GameStudio's map editor).
Quake1 and Half-Life are a different case. For Quake1, there are toons of tools available on the net. For Half-Life, you have the GPL bsp compiler Zoner's Half-Life Tools. The problem is that there are not many 3D engines that support these .bsp formats, so you can use these tools (which are very great) to make your maps. That's where BSP Factory comes. Writing new exporters for BSPF is really easy, just take a look at the exporter sources I have posted here.
I personally use the Qoole editor. Extremely simple to use, and powerful (it were use as the base for WED, 3D GameStudio's map editor).
Oh, i get your point! So we use a Q1 level editor, create the bsp with no problem (sice it's GPL) and then with your tools make it look fancy! right?
Qoole was also my favorite in the Q1-Q2 days! It would be great to have the chance to use it again for Irrlicht. I'd have to create my wad texture paks again. Can they support 512x512 textures? Is there documentation or tutorials with your tool on how to get a level up an running in an engine?
The best part is that Qoole's source is now free! Another nice editor from those days is Tread3d, it became free with no commercial limitations. Carsten (Ca3de) is modifying it to make it Ca3de's official level editor and stop using Hammer.
Final question: can bsp factory be used commercially?
q1: why did you remove the SS? they look kewl!
cheers!
Qoole was also my favorite in the Q1-Q2 days! It would be great to have the chance to use it again for Irrlicht. I'd have to create my wad texture paks again. Can they support 512x512 textures? Is there documentation or tutorials with your tool on how to get a level up an running in an engine?
The best part is that Qoole's source is now free! Another nice editor from those days is Tread3d, it became free with no commercial limitations. Carsten (Ca3de) is modifying it to make it Ca3de's official level editor and stop using Hammer.
Final question: can bsp factory be used commercially?
q1: why did you remove the SS? they look kewl!
cheers!
Of course BSP Factory can be used commercially.
You can find the last version of Qoole here: http://www.volved.com/qsr/
About how to load a map done in BSP Factory inside an engine, you load a .lmts file like you do with any other file format.
Soemthing that I am considering to do is writing a custom .irr format or something, to be able to export the material properties (type, flags, etc) to the file
You can find the last version of Qoole here: http://www.volved.com/qsr/
About how to load a map done in BSP Factory inside an engine, you load a .lmts file like you do with any other file format.
Soemthing that I am considering to do is writing a custom .irr format or something, to be able to export the material properties (type, flags, etc) to the file
You mean the screenshots? I have not removed them!q1: why did you remove the SS? they look kewl!
Hi, I just found this thread while looking for a decent bsp workflow.
You cannot use ZHLT, nor any other standing Half-Life bsp compilers. They may say they are GPL, but you're denied any rights in conflict with the restrictions of Valve's Half Life SDK EULA:
EDIT: And even worse, if anyone used your tool (as you intended) for their commercial work, they're also liable.
You cannot use ZHLT, nor any other standing Half-Life bsp compilers. They may say they are GPL, but you're denied any rights in conflict with the restrictions of Valve's Half Life SDK EULA:
Also, using Hammer in this workflow would be illegal. With that in mind, I don't see how you can support any half-life related content. I don't know about any other commercial restrictions you may have missed for the ID-related reverse engineering, but if Valve sees this, you're getting sued.Whereas, Licensee wishes to develop a modified game running only on the Half-Life engine (a "Mod") for free distribution in object code form only to licensed end users of Half-Life; and ...
EDIT: And even worse, if anyone used your tool (as you intended) for their commercial work, they're also liable.
I don't agree.
If you don't use the valve engine, neither any of their tools, you are good to go. BSP format is not protected, is its compilers, the engine, and their own tools, the ones valve made.
ZHLT is made by an independent person, not using valve stuff.
Is like md3, or md2, there are yet ppl out there thinking using th eformat is not legal, while it is even for comercial.
you could certainly use Quark instead of hammer, even for comercial. As Quark is neither an Id or valve tool. This way you have your workflow totally free. And is done in many cases, with zero probs.
There's also another option of a different implementation of BSP format, with a collection of home made tools, editor and compiler, getic3D, available at http://www.zalsoft.com/zalsoft/ .
but maybe that bsp is not as similar to the old bsps, and maybe not able to be loaded with irrlicht loaders, I dunno. i'd go the zhlt+quark route, that is, if I were interested in these old ways instead of plain b3d file with a lightmap.
http://quark.planetquake.gamespy.com/
http://zhlt.info/
http://www.unknownworlds.com/forums/ind ... opic=21248
http://collective.valve-erc.com/index.php?go=mhlt
If you don't use the valve engine, neither any of their tools, you are good to go. BSP format is not protected, is its compilers, the engine, and their own tools, the ones valve made.
ZHLT is made by an independent person, not using valve stuff.
Is like md3, or md2, there are yet ppl out there thinking using th eformat is not legal, while it is even for comercial.
you could certainly use Quark instead of hammer, even for comercial. As Quark is neither an Id or valve tool. This way you have your workflow totally free. And is done in many cases, with zero probs.
There's also another option of a different implementation of BSP format, with a collection of home made tools, editor and compiler, getic3D, available at http://www.zalsoft.com/zalsoft/ .
but maybe that bsp is not as similar to the old bsps, and maybe not able to be loaded with irrlicht loaders, I dunno. i'd go the zhlt+quark route, that is, if I were interested in these old ways instead of plain b3d file with a lightmap.
http://quark.planetquake.gamespy.com/
http://zhlt.info/
http://www.unknownworlds.com/forums/ind ... opic=21248
http://collective.valve-erc.com/index.php?go=mhlt
Finally making games again!
http://www.konekogames.com
http://www.konekogames.com
lol, ZHLT is a modified version of valve's qbsp2's source from the goldsrc sdk, which they distribute under the license i mentioned.ZHLT is made by an independent person, not using valve stuff.
Anyway:
(from zhlt's Terms of Use.txt)II. LICENCE
0) This code is protected by the GPL, a link to the GPL can be found at the end of this page.
1) In addition to the GPL, the Valve SDK 2.3 EULA overrides any rights you may have obtained in the GPL, when needed.
2) The iD Quake 2 Licence overrides portions of both the Valve EULA, and the GPL where needed, please contact iD for information on this subject.
Copy of the GPL
http://www.gnu.org/copyleft/gpl.html
Valve SDK EULA
http://valvesoftware.com/business.html
Quake II Source EULA
http://www.idsoftware.com/business/tech ... I%20Engine
So, you can't use ZHLT like that. On top of that, I've never found any Half-Life 1 map compilers or tools not covered by this license.
So unless you plan reverse engineering their bsp format without using their engine, any tools now available, any of their documentation (there are no format specs published), or any of their content, half-life 1 bsp is not an option whether or not you agree. You can't make assumptions like that and think you can get away with violating licenses because you "didn't know."