Added: #929 Process for anim, font, swt, clodbank, pacs_prim, ps, skel. Project for objects, sky, contruction, fauna, fonts, outgame, sfx.

This commit is contained in:
kaetemi 2010-09-01 15:24:43 +02:00
parent d71836f056
commit 8763a898cb
77 changed files with 3845 additions and 194 deletions

View file

@ -215,6 +215,49 @@ def findFile(log, dir_where, file_name):
printLog(log, "findFile: file not dir or file?! " + filePath)
return ""
def needUpdateDirNoSubdirLogExt(log, dir_source, ext_source, dir_dest, ext_dest):
latestSourceFile = 0
latestDestFile = 0
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
for file in sourceFiles:
fileTime = os.stat(dir_source + "/" + file).st_mtime
if (fileTime > latestSourceFile):
latestSourceFile = fileTime
for file in destFiles:
fileTime = os.stat(dir_dest + "/" + file).st_mtime
if (fileTime > latestDestFile):
latestDestFile = fileTime
if latestSourceFile > latestDestFile or len(sourceFiles) > len(destFiles):
printLog(log, "UPDATE; Source: " + str(latestSourceFile) + ", " + str(len(sourceFiles)) + " files; Dest: " + str(latestDestFile) + ", " + str(len(destFiles)) + " files")
return 1
else:
printLog(log, "SKIP *")
return 0
def needUpdateDirNoSubdirLogExtMultidir(log, all_dir_base, all_dir_source, dir_source, ext_source, dir_dest, ext_dest):
latestSourceFile = 0
latestDestFile = 0
sourceFilesAll = [ ]
for dir in all_dir_source:
sourceFilesAll += findFilesNoSubdir(log, all_dir_base + "/" + dir, ext_source)
sourceFiles = findFilesNoSubdir(log, dir_source, ext_source)
destFiles = findFilesNoSubdir(log, dir_dest, ext_dest)
for file in sourceFiles:
fileTime = os.stat(dir_source + "/" + file).st_mtime
if (fileTime > latestSourceFile):
latestSourceFile = fileTime
for file in destFiles:
fileTime = os.stat(dir_dest + "/" + file).st_mtime
if (fileTime > latestDestFile):
latestDestFile = fileTime
if latestSourceFile > latestDestFile or len(sourceFilesAll) > len(destFiles):
printLog(log, "UPDATE; Source: " + str(latestSourceFile) + ", " + str(len(sourceFilesAll)) + " files; Dest: " + str(latestDestFile) + ", " + str(len(destFiles)) + " files")
return 1
else:
printLog(log, "SKIP *")
return 0
def findTool(log, dirs_where, file_name, suffix):
try:
for dir in dirs_where:

View file

@ -84,3 +84,4 @@ LandExportTool = "land_export"
PrimExportTool = "prim_export"
IgElevationTool = "ig_elevation"
IgAddTool = "ig_add"
BuildClodBankTool = "build_clod_bank"

View file

@ -49,12 +49,39 @@ printLog(log, "")
# For each anim directory
printLog(log, ">>> Export anim 3dsmax <<<")
printLog(log, "********************************")
printLog(log, "******** TODO ********")
printLog(log, "********************************")
mkPath(log, ExportBuildDirectory + "/" + AnimExportDirectory)
for dir in AnimSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, AnimSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + AnimExportDirectory, ".anim")):
scriptSrc = "maxscript/anim_export.ms"
scriptDst = MaxUserDirectory + "/scripts/anim_export.ms"
logFile = ScriptDirectory + "/processes/anim/log.log"
outDirAnim = ExportBuildDirectory + "/" + AnimExportDirectory
animSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outDirAnim, "", ".anim")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("anim_source_directory", animSourceDir)
newline = newline.replace("output_directory", outDirAnim)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "anim_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirAnim, "", ".anim")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .anim files!")
os.remove(scriptDst)
printLog(log, "")
log.close()

View file

@ -56,7 +56,12 @@ else:
mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + AnimBuildDirectory
mkPath(log, destDir)
subprocess.call([ AnimBuilder, srcDir, destDir, ScriptDirectory + "/configuration/zone_lighter_properties.cfg" ])
if DoOptimizeAnimations:
printLog(log, ">>> Optimizing animations <<<")
subprocess.call([ AnimBuilder, srcDir, destDir, ActiveProjectDirectory + "/anim_builder.cfg" ])
else:
printLog(log, ">>> Not optimizing animations <<<")
copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "")
log.close()

View file

@ -0,0 +1,85 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief Setup clodbank
# \date 2009-03-10 14:56GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup clodbank
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup clodbank")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
for dir in ClodSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodBankBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + AnimBuildDirectory)
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
mkPath(log, ClientDataDirectory + "/" + ShapeClientDirectory)
# Setup configuration files
printLog(log, ">>> Setup configuration files <<<")
mkPath(log, ActiveProjectDirectory + "/generated")
cfgOut = open(ActiveProjectDirectory + "/generated/clod_paths.cfg", "w")
cfgOut.write("\n")
cfgOut.write("// The search pathes, look in the current process\n")
cfgOut.write("search_pathes = \n")
cfgOut.write("{\n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + ClodExportDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + SkelExportDirectory + "\", \n")
cfgOut.write("\t\"" + ExportBuildDirectory + "/" + AnimBuildDirectory + "\", \n")
cfgOut.write("};\n")
cfgOut.write("\n")
cfgOut.close()
log.close()
# end of file

View file

@ -0,0 +1,93 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export clodbank
# \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export clodbank
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Export clodbank")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Find tools
Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "")
# For each clodbank directory
printLog(log, ">>> Export clodbank 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ClodTagExportDirectory)
for dir in ClodSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, ClodSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + ClodTagExportDirectory, ".tag")):
scriptSrc = "maxscript/clod_export.ms"
scriptDst = MaxUserDirectory + "/scripts/clod_export.ms"
logFile = ScriptDirectory + "/processes/clodbank/log.log"
outDirClod = ExportBuildDirectory + "/" + ClodExportDirectory
outDirTag = ExportBuildDirectory + "/" + ClodTagExportDirectory
maxSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outDirTag, "", ".tag")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("shape_source_directory", maxSourceDir)
newline = newline.replace("output_directory_clod", outDirClod)
newline = newline.replace("output_directory_tag", outDirTag)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "clod_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirTag, "", ".tag")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .max files!")
os.remove(scriptDst)
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,68 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build clodbank
# \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build clodbank
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Build clodbank")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Find tools
BuildClodBank = findTool(log, ToolDirectories, BuildClodBankTool, ToolSuffix)
printLog(log, "")
# Build clodbank
printLog(log, ">>> Build clodbank <<<")
if BuildClodBank == "":
toolLogFail(log, BuildClodBankTool, ToolSuffix)
else:
srcDir = ExportBuildDirectory + "/" + ClodExportDirectory
mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory
mkPath(log, destDir)
mkPath(log, ActiveProjectDirectory + "/generated")
destFile = destDir + "/" + ClodBankFileName
configFile = DatabaseDirectory + "/" + ClodConfigFile
subprocess.call([ BuildClodBank, ActiveProjectDirectory + "/generated/clod_paths.cfg", configFile, destFile ])
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,57 @@
#!/usr/bin/python
#
# \file 3_install.py
# \brief Install clodbank
# \date 2009-03-10 13:13GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install clodbank
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install clodbank")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
printLog(log, ">>> Install clodbank <<<")
srcDir = ExportBuildDirectory + "/" + ClodBankBuildDirectory
mkPath(log, srcDir)
destDir = ClientDataDirectory + "/" + ShapeClientDirectory
mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "")
log.close()
# end of file

View file

@ -132,7 +132,7 @@ fn goClodExport =
(
-- Open the max project
nlerror ("Scanning file "+files[i]+" ...")
if loadMaxFile files[i] quiet:true == true then
if (loadMaxFile files[i] quiet:true) == true then
(
-- Unhide category
unhidecategory()

View file

@ -50,6 +50,7 @@ for dir in FontSourceDirectories:
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + FontExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")

View file

@ -43,6 +43,17 @@ printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
printLog(log, ">>> Export font <<<")
fontExportDir = ExportBuildDirectory + "/" + FontExportDirectory
mkPath(log, fontExportDir)
for dir in FontSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".ttf")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".afm")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".pfb")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, fontExportDir, ".pfm")
printLog(log, "")
log.close()

View file

@ -45,14 +45,14 @@ printLog(log, "")
clientPath = ClientDataDirectory + "/" + FontClientDirectory
mkPath(log, clientPath)
fontExportDir = ExportBuildDirectory + "/" + FontExportDirectory
mkPath(log, fontExportDir)
printLog(log, ">>> Install font <<<")
for dir in FontSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, clientPath, ".ttf")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, clientPath, ".afm")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, clientPath, ".pfb")
copyFilesExtNoTreeIfNeeded(log, DatabaseDirectory + "/" + dir, clientPath, ".pfm")
copyFilesExtNoTreeIfNeeded(log, fontExportDir, clientPath, ".ttf")
copyFilesExtNoTreeIfNeeded(log, fontExportDir, clientPath, ".afm")
copyFilesExtNoTreeIfNeeded(log, fontExportDir, clientPath, ".pfb")
copyFilesExtNoTreeIfNeeded(log, fontExportDir, clientPath, ".pfm")
printLog(log, "")
log.close()

View file

@ -46,38 +46,39 @@ printLog(log, "")
Max = "" #find later
def igExport(sourceDir, targetDir):
def igExport(all_source_base, all_source_dir, sourceDir, targetDir):
scriptSrc = "maxscript/ig_export.ms"
scriptDst = MaxUserDirectory + "/scripts/ig_export.ms"
logFile = ScriptDirectory + "/processes/ig/log.log"
outDirTag = ExportBuildDirectory + "/" + IgStaticTagExportDirectory
outDirIg = ExportBuildDirectory + "/" + targetDir
igSourceDir = DatabaseDirectory + "/" + sourceDir
tagList = findFiles(log, outDirTag, "", ".tag")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("ig_source_directory", igSourceDir)
newline = newline.replace("output_directory_tag", outDirTag)
newline = newline.replace("output_directory_ig", outDirIg)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "ig_export.ms", "-q", "-mi", "-vn" ])
if (needUpdateDirNoSubdirLogExtMultidir(log, all_source_base, all_source_dir, igSourceDir, ".max", outDirTag, ".max.tag")):
tagList = findFiles(log, outDirTag, "", ".tag")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .max files!")
os.remove(scriptDst)
return
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("ig_source_directory", igSourceDir)
newline = newline.replace("output_directory_tag", outDirTag)
newline = newline.replace("output_directory_ig", outDirIg)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "ig_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirTag, "", ".tag")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .max files!")
os.remove(scriptDst)
return
if MaxAvailable:
@ -93,14 +94,14 @@ if MaxAvailable:
mkPath(log, ExportBuildDirectory + "/" + IgStaticLandExportDirectory)
for dir in IgLandSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
igExport(dir, IgStaticLandExportDirectory)
igExport(DatabaseDirectory, IgLandSourceDirectories, dir, IgStaticLandExportDirectory)
# Export ig other 3dsmax
printLog(log, ">>> Export ig other 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + IgStaticOtherExportDirectory)
for dir in IgOtherSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
igExport(dir, IgStaticOtherExportDirectory)
igExport(DatabaseDirectory, IgOtherSourceDirectories, dir, IgStaticOtherExportDirectory)
printLog(log, "")

View file

@ -56,7 +56,7 @@ else:
mkPath(log, srcDir)
destDir = ExportBuildDirectory + "/" + IgOtherLightedBuildDirectory
mkPath(log, destDir)
subprocess.call([ IgLighter, srcDir, destDir, ActiveProjectDirectory + "/generated/zone_lighter.cfg" ])
subprocess.call([ IgLighter, srcDir, destDir, ActiveProjectDirectory + "/generated/properties.cfg" ])
printLog(log, "")
log.close()

View file

@ -62,40 +62,40 @@ if LigoExportLand == "" or LigoExportOnePass == 1:
mkPath(log, DatabaseDirectory + "/" + LigoDatabaseCmbExportDirectory)
mkPath(log, DatabaseDirectory + "/" + ZoneSourceDirectory)
mkPath(log, ExportBuildDirectory + "/" + LigoTagExportDirectory)
printLog(log, "WRITE " + ligoIniPath)
ligoIni = open(ligoIniPath, "w")
ligoIni.write("[LigoConfig]\n")
ligoIni.write("LigoPath=" + DatabaseDirectory + "/" + LigoMaxSourceDirectory + "/\n")
ligoIni.write("LigoExportPath=" + DatabaseDirectory + "/" + LigoDatabaseExportDirectory + "/\n")
ligoIni.write("LigoOldZonePath=" + DatabaseDirectory + "/" + ZoneSourceDirectory + "/\n")
ligoIni.close()
if (needUpdateDirNoSubdirLogExt(log, DatabaseDirectory + "/" + LigoMaxSourceDirectory, ".max", ExportBuildDirectory + "/" + LigoTagExportDirectory, ".max.tag")):
printLog(log, "WRITE " + ligoIniPath)
ligoIni = open(ligoIniPath, "w")
ligoIni.write("[LigoConfig]\n")
ligoIni.write("LigoPath=" + DatabaseDirectory + "/" + LigoMaxSourceDirectory + "/\n")
ligoIni.write("LigoExportPath=" + DatabaseDirectory + "/" + LigoDatabaseExportDirectory + "/\n")
ligoIni.write("LigoOldZonePath=" + DatabaseDirectory + "/" + ZoneSourceDirectory + "/\n")
ligoIni.close()
outDirTag = ExportBuildDirectory + "/" + LigoTagExportDirectory
logFile = ScriptDirectory + "/processes/ligo/log.log"
smallBank = ExportBuildDirectory + "/" + SmallbankExportDirectory + "/" + BankTileBankName + ".smallbank"
outDirTag = ExportBuildDirectory + "/" + LigoTagExportDirectory
logFile = ScriptDirectory + "/processes/ligo/log.log"
smallBank = ExportBuildDirectory + "/" + SmallbankExportDirectory + "/" + BankTileBankName + ".smallbank"
scriptSrc = "maxscript/nel_ligo_export.ms"
scriptDst = MaxUserDirectory + "/scripts/nel_ligo_export.ms"
scriptSrc = "maxscript/nel_ligo_export.ms"
scriptDst = MaxUserDirectory + "/scripts/nel_ligo_export.ms"
if os.path.isfile(scriptDst):
os.remove(scriptDst)
printLog(log, "WRITE " + scriptDst)
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("output_directory_tag", outDirTag)
newline = newline.replace("bankFilename", smallBank)
sDst.write(newline)
sSrc.close()
sDst.close()
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "nel_ligo_export.ms", "-q", "-mi", "-vn" ])
if os.path.isfile(scriptDst):
os.remove(scriptDst)
printLog(log, "WRITE " + scriptDst)
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("output_directory_tag", outDirTag)
newline = newline.replace("bankFilename", smallBank)
sDst.write(newline)
sSrc.close()
sDst.close()
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "nel_ligo_export.ms", "-q", "-mi", "-vn" ])
os.remove(scriptDst)
printLog(log, "")
log.close()

View file

@ -0,0 +1,65 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief setup pacs_prim
# \date 2010-08-31 16:50GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup pacs_prim
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup pacs_prim")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
for dir in PacsPrimSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
mkPath(log, ClientDataDirectory + "/" + PacsPrimClientDirectory)
log.close()
# end of file

View file

@ -0,0 +1,104 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export pacs_prim
# \date 2010-08-31 16:50GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export pacs_prim
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Export pacs_prim")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Find tools
Max = findMax(log, MaxDirectory, MaxExecutable)
printLog(log, "")
# For each pacs_prim directory
printLog(log, ">>> Export pacs_prim 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory)
for dir in PacsPrimSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, PacsPrimSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + PacsPrimExportDirectory, ".pacs_prim")):
scriptSrc = "maxscript/pacs_prim_export.ms"
scriptDst = MaxUserDirectory + "/scripts/pacs_prim_export.ms"
logFile = ScriptDirectory + "/processes/pacs_prim/log.log"
outDirPacsPrim = ExportBuildDirectory + "/" + PacsPrimExportDirectory
pacs_primSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outDirPacsPrim, "", ".pacs_prim")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("pacs_prim_source_directory", pacs_primSourceDir)
newline = newline.replace("output_directory", outDirPacsPrim)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "pacs_prim_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirPacsPrim, "", ".pacs_prim")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .pacs_prim files!")
os.remove(scriptDst)
printLog(log, ">>> List pacs_prim <<<")
outDirPacsPrim = ExportBuildDirectory + "/" + PacsPrimExportDirectory
mkPath(log, outDirPacsPrim)
listPath = ExportBuildDirectory + "/" + PacsPrimExportDirectory + "/landscape_col_prim_pacs_list.txt"
if os.path.isfile(listPath):
os.remove(listPath)
if WantLandscapeColPrimPacsList:
exportedPacsPrims = findFiles(log, outDirPacsPrim, "", ".pacs_prim")
printLog(log, "WRITE " + listPath)
listFile = open(listPath, "w")
for exported in exportedPacsPrims:
listFile.write(exported + "\n")
listFile.close()
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,49 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build pacs_prim
# \date 2010-08-31 16:50GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build pacs_prim
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Build pacs_prim")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,57 @@
#!/usr/bin/python
#
# \file 3_install.py
# \brief Install pacs_prim
# \date 2010-08-31 16:50GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install pacs_prim
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install pacs_prim")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
clientPath = ClientDataDirectory + "/" + PacsPrimClientDirectory
mkPath(log, clientPath)
printLog(log, ">>> Install pacs_prim <<<")
mkPath(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory)
copyFilesExtNoSubdirIfNeeded(log, ExportBuildDirectory + "/" + PacsPrimExportDirectory, clientPath, ".pacs_prim")
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,161 @@
-- Allocate 20 Me for the script
heapSize += 15000000
nlErrorFilename = "output_logfile"
nlErrorStream = openFile nlErrorFilename mode:"a"
if nlErrorStream == undefined then
nlErrorStream = createFile nlErrorFilename
-- Unhide category
fn unhidecategory =
(
if (geometry.count > 0) then
(
unhide geometry[1]
if (geometry[1].ishidden == true) then
max hide object toggle
)
if (shapes.count > 0) then
(
unhide shapes[1]
if (shapes[1].ishidden == true) then
max hide shape toggle
)
if (lights.count > 0) then
(
unhide lights[1]
if (lights[1].ishidden == true) then
max hide light toggle
)
if (cameras.count > 0) then
(
unhide cameras[1]
if (cameras[1].ishidden == true) then
max hide camera toggle
)
if (helpers.count > 0) then
(
unhide helpers[1]
if (helpers[1].ishidden == true) then
max hide helper toggle
)
)
-- Log a message
fn nlerror message =
(
if nlErrorStream != undefined then
(
format "%\n" message to:nlErrorStream
flush nlErrorStream
)
-- To the console
print message
)
try
(
-- Get files in the "pacs_prim_source_directory" directory
files = getFiles "pacs_prim_source_directory/*.max"
gc ()
-- Sort files
sort files
gc ()
-- No file ?
if files.count != 0 then
(
-- For each files
for i = 1 to files.count do
(
try
(
-- Output file
output = "output_directory/" + (getFilenameFile files[i]) + ".pacs_prim"
-- Compare file date
if (NeLTestFileDate output files[i]) == true then
(
-- Free memory and file handles
gc ()
heapfree
-- Reset 3dsmax
resetMAXFile #noprompt
-- Open the max project
nlerror ("Scanning file "+files[i]+" ...")
if (loadMaxFile files[i] quiet:true) == true then
(
-- Unhide category
unhidecategory()
-- Select none
max select none
-- Select all PACS primitives
for i in geometry do
(
if ((classof i) == nel_pacs_cylinder) or ((classof i) == nel_pacs_box) then
selectmore i
)
-- Array of node
arrayNode = selection as array
-- Something to export ?
if (arrayNode.count != 0) then
(
-- Export the collision
if (NelExportPACSPrimitives arrayNode output) == false then
(
nlerror ("ERROR exporting PACS primitives in file "+files[i])
)
else
(
nlerror ("OK PACS primitives in file "+files[i])
)
)
else
(
nlerror ("WARNING no PACS primitives in file "+files[i])
)
)
else
(
-- Error
nlerror ("ERROR exporting collision: can't open the file "+files[i])
)
)
else
(
nlerror ("SKIPPED "+files[i])
)
)
catch
(
-- Error
nlerror ("ERROR error exporting collision in files " + files[i])
)
)
)
else
(
nlerror ("WARNING no collision file in folder pacs_prim_source_directory")
)
)
catch
(
-- Error
nlerror ("ERROR fatal error exporting collision in folder pacs_prim_source_directory")
)
-- Bye
resetMAXFile #noprompt
quitMAX #noPrompt
quitMAX () #noPrompt

View file

@ -0,0 +1,125 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief setup properties
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup properties
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup properties")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
mkPath(log, ActiveProjectDirectory + "/generated")
zlp = open(ActiveProjectDirectory + "/generated/properties.cfg", "w")
ps = open(ActiveProjectDirectory + "/properties_base.cfg", "r")
for line in ps:
try:
SmallbankExportDirectory
except NameError:
SmallbankExportDirectory = "_invalid"
try:
FarbankBuildDirectory
except NameError:
FarbankBuildDirectory = "_invalid"
try:
EcosystemName
except NameError:
EcosystemName = "_invalid"
try:
EcosystemPath
except NameError:
EcosystemPath = "_invalid"
try:
ContinentName
except NameError:
ContinentName = "_invalid"
try:
ContinentPath
except NameError:
ContinentPath = "_invalid"
try:
BankTileBankName
except NameError:
BankTileBankName = "_invalid"
try:
IgLandBuildDirectory
except NameError:
IgLandBuildDirectory = "_invalid"
try:
IgOtherBuildDirectory
except NameError:
IgOtherBuildDirectory = "_invalid"
try:
RbankOutputBuildDirectory
except NameError:
RbankOutputBuildDirectory = "_invalid"
try:
RbankRbankName
except NameError:
RbankRbankName = "_invalid"
newline = line.replace("%ExportBuildDirectory%", ExportBuildDirectory)
newline = newline.replace("%SmallbankExportDirectory%", SmallbankExportDirectory)
newline = newline.replace("%FarbankBuildDirectory%", FarbankBuildDirectory)
newline = newline.replace("%EcosystemName%", EcosystemName)
newline = newline.replace("%EcosystemPath%", EcosystemPath)
newline = newline.replace("%ContinentName%", ContinentName)
newline = newline.replace("%ContinentPath%", ContinentPath)
newline = newline.replace("%CommonName%", CommonName)
newline = newline.replace("%CommonPath%", CommonPath)
newline = newline.replace("%BankTileBankName%", BankTileBankName)
newline = newline.replace("%IgLandBuildDirectory%", IgLandBuildDirectory)
newline = newline.replace("%IgOtherBuildDirectory%", IgOtherBuildDirectory)
newline = newline.replace("%RbankOutputBuildDirectory%", RbankOutputBuildDirectory)
newline = newline.replace("%RbankRbankName%", RbankRbankName)
newline = newline.replace("%BuildQuality%", str(BuildQuality))
zlp.write(newline)
ps.close()
if (BuildQuality == 1):
ps = open(ActiveProjectDirectory + "/properties_final.cfg", "r")
else:
ps = open(ActiveProjectDirectory + "/properties_draft.cfg", "r")
for line in ps:
zlp.write(line)
zlp.close()
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,44 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export properties
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export properties
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,42 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build properties
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build properties
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
log.close()
# end of file

View file

@ -0,0 +1,43 @@
#!/usr/bin/python
#
# \file 3_install.py
# \brief Install properties
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install properties
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,65 @@
#!/usr/bin/python
#
# \file 0_setup.py
# \brief setup ps
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Setup ps
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Setup ps")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
for dir in PsSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + PsExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
# Setup client directories
printLog(log, ">>> Setup client directories <<<")
mkPath(log, ClientDataDirectory + "/" + PsClientDirectory)
log.close()
# end of file

View file

@ -0,0 +1,60 @@
#!/usr/bin/python
#
# \file 1_export.py
# \brief Export ps
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Export ps
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Export ps")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
# For each ps directory
printLog(log, ">>> Export ps 3dsmax <<<")
mkPath(log, ExportBuildDirectory + "/" + PsExportDirectory)
for dir in PsSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + PsExportDirectory, ".ps")
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + PsExportDirectory, ".shape")
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + PsExportDirectory, ".primitive")
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,49 @@
#!/usr/bin/python
#
# \file 2_build.py
# \brief Build ps
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Build ps
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Build ps")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
log.close()
# end of file

View file

@ -0,0 +1,57 @@
#!/usr/bin/python
#
# \file 3_install.py
# \brief Install ps
# \date 2010-05-24 13:42GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Install ps
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
log = open("log.log", "w")
from scripts import *
from buildsite import *
from process import *
from tools import *
from directories import *
printLog(log, "")
printLog(log, "-------")
printLog(log, "--- Install ps")
printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
printLog(log, ">>> Install ps <<<")
srcDir = ExportBuildDirectory + "/" + PsExportDirectory
mkPath(log, srcDir)
destDir = ClientDataDirectory + "/" + PsClientDirectory
mkPath(log, destDir)
copyFilesNoTreeIfNeeded(log, srcDir, destDir)
printLog(log, "")
log.close()
# end of file

View file

@ -53,13 +53,16 @@ for dir in MapSourceDirectories:
# Setup export directories
printLog(log, ">>> Setup export directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeTagExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory)
if ClodConfigFile != "":
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
# Setup build directories
printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory)

View file

@ -27,6 +27,8 @@
import time, sys, os, shutil, subprocess, distutils.dir_util
sys.path.append("../../configuration")
if os.path.isfile("log.log"):
os.remove("log.log")
if os.path.isfile("temp_log.log"):
os.remove("temp_log.log")
log = open("temp_log.log", "w")
@ -70,7 +72,7 @@ if MaxAvailable:
logFile = ScriptDirectory + "/processes/shape/log.log"
outDirTag = ExportBuildDirectory + "/" + ShapeTagExportDirectory
mkPath(log, outDirTag)
outDirWithoutCoarse = ExportBuildDirectory + "/" + ShapeExportDirectory
outDirWithoutCoarse = ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory
mkPath(log, outDirWithoutCoarse)
outDirWithCoarse = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory
mkPath(log, outDirWithCoarse)
@ -137,10 +139,11 @@ if MaxAvailable:
printLog(log, "SKIP " + maxFilePath)
# Export clod 3dsmax
printLog(log, ">>> Export character lod shape files (.clod) from Max <<<")
printLog(log, "********************************")
printLog(log, "******** TODO ********")
printLog(log, "********************************")
# this is historical garbage, just use the clodbank process.. :-)
#printLog(log, ">>> Export character lod shape files (.clod) from Max <<<")
#printLog(log, "********************************")
#printLog(log, "******** TODO ********")
#printLog(log, "********************************")
# cat ../clodbank/maxscript/clod_export.ms
#| sed -e "s&shape_source_directory&$database_directory/$i&g"

View file

@ -57,21 +57,28 @@ if DoBuildShadowSkin:
printLog(log, "******** TODO ********")
printLog(log, "********************************")
mkPath(log, ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
if ClodConfigFile != "":
printLog(log, ">>> BuildClodtex <<<")
printLog(log, "********************************")
printLog(log, "******** TODO ********")
printLog(log, "********************************")
mkPath(log, ExportBuildDirectory + "/" + ClodExportDirectory)
printLog(log, ">>> Build CLodTex <<<")
subprocess.call([ BuildClodtex, "-d", DatabaseDirectory + "/" + ClodConfigFile, ExportBuildDirectory + "/" + ClodExportDirectory, ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory ])
else:
printLog(log, ">>> Copy Shape <<<")
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeNotOptimizedExportDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory, ".shape")
# copy lightmap_not_optimized to lightmap
printLog(log, ">>> Optimize lightmaps <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeTagExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
removeFilesRecursive(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
copyFiles(log, ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
subprocess.call([ LightmapOptimizer, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory, ExportBuildDirectory + "/" + ShapeExportDirectory, ExportBuildDirectory + "/" + ShapeTagExportDirectory, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/list_lm_8bit.txt" ])
# Optimize lightmaps if any. Additionnaly, output a file indicating which lightmaps are 8 bits
subprocess.call([ LightmapOptimizer, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory, ExportBuildDirectory + "/" + ShapeTagExportDirectory, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/list_lm_8bit.txt" ])
# Convert lightmap in 16 bits mode if they are not 8 bits lightmap
printLog(log, ">>> Convert lightmaps in 16 or 8 bits <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory)
@ -91,6 +98,7 @@ for lightMapTga in lightMapTgas:
else:
subprocess.call([ TgaToDds, srcTga, "-o", dstTga, "-a", "tga16" ])
# Corse meshes for this process ?
if len(CoarseMeshTextureNames) > 0:
printLog(log, ">>> Build coarse meshes <<<")
shapeWithCoarseMesh = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory
@ -127,6 +135,7 @@ if len(CoarseMeshTextureNames) > 0:
cf.close()
subprocess.call([ BuildCoarseMesh, "config_generated.cfg" ])
os.remove("config_generated.cfg")
# Convert the coarse texture to dds
for tn in CoarseMeshTextureNames:
subprocess.call([ TgaToDds, shapeWithCoarseMesh + "/" + tn + ".tga", "-o", shapeWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ])
else:

View file

@ -46,8 +46,8 @@ printLog(log, "")
printLog(log, ">>> Install shape <<<")
clientPath = ClientDataDirectory + "/" + ShapeClientDirectory
mkPath(log, clientPath)
mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeExportDirectory, clientPath, ".shape")
mkPath(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeClodtexBuildDirectory, clientPath, ".shape")
mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".shape")
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".dds")

View file

@ -49,14 +49,46 @@ printLog(log, "")
# For each skel directory
printLog(log, ">>> Export skel 3dsmax <<<")
printLog(log, "********************************")
printLog(log, "******** TODO ********")
printLog(log, "********************************")
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
for dir in SkelSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
printLog(log, "")
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, SkelSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")):
scriptSrc = "maxscript/skel_export.ms"
scriptDst = MaxUserDirectory + "/scripts/skel_export.ms"
logFile = ScriptDirectory + "/processes/skel/log.log"
outDirSkel = ExportBuildDirectory + "/" + SkelExportDirectory
skelSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outDirSkel, "", ".skel")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("skel_source_directory", skelSourceDir)
newline = newline.replace("output_directory", outDirSkel)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "skel_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirSkel, "", ".skel")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .skel files!")
os.remove(scriptDst)
printLog(log, ">>> Export skel directly <<<")
mkPath(log, ExportBuildDirectory + "/" + SkelExportDirectory)
for dir in SkelSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
copyFilesExtNoSubdirIfNeeded(log, DatabaseDirectory + "/" + dir, ExportBuildDirectory + "/" + SkelExportDirectory, ".skel")
printLog(log, "")
log.close()

View file

@ -0,0 +1,162 @@
-- Allocate 20 Me for the script
heapSize += 15000000
nlErrorFilename = "output_logfile"
nlErrorStream = openFile nlErrorFilename mode:"a"
if nlErrorStream == undefined then
nlErrorStream = createFile nlErrorFilename
-- Log a message
fn nlerror message =
(
if nlErrorStream != undefined then
(
format "%\n" message to:nlErrorStream
flush nlErrorStream
)
-- To the console
print message
)
-- Unhide category
fn unhidecategory =
(
if (geometry.count > 0) then
(
unhide geometry[1]
if (geometry[1].ishidden == true) then
max hide object toggle
)
if (shapes.count > 0) then
(
unhide shapes[1]
if (shapes[1].ishidden == true) then
max hide shape toggle
)
if (lights.count > 0) then
(
unhide lights[1]
if (lights[1].ishidden == true) then
max hide light toggle
)
if (cameras.count > 0) then
(
unhide cameras[1]
if (cameras[1].ishidden == true) then
max hide camera toggle
)
if (helpers.count > 0) then
(
unhide helpers[1]
if (helpers[1].ishidden == true) then
max hide helper toggle
)
)
try
(
-- Get files in the skel_source_directory
files = getFiles "skel_source_directory/*.max"
-- Sort files
sort files
-- No file ?
if files.count != 0 then
(
-- For each files
for i = 1 to files.count do
(
try
(
-- Output file
output = ("output_directory/"+(getFilenameFile files[i])+".skel")
-- Compare file date
if (NeLTestFileDate output files[i]) == true then
(
-- Free memory and file handles
gc ()
-- Reset 3dsmax
resetMAXFile #noprompt
-- Open the max project
nlerror ("Scanning file "+files[i]+" ...")
if (loadMaxFile files[i] quiet:true) == true then
(
-- Unhide category
unhidecategory()
-- Select Bip01, not very smart
if $Bip01 != undefined then
(
-- Select Bip01
select $Bip01
if ($ != undefined) then
(
-- Set figure mode on
if ((classof $) == Biped_Object) then
(
$.controller.figureMode = true
)
-- Export the skeleton template
if (NelExportSkeleton $ output) == false then
(
nlerror ("ERROR exporting skeleton "+files[i])
)
else
(
nlerror ("OK "+output)
)
)
else
(
-- Error
nlerror ("ERROR exporting skeleton: no Bip01 node in file "+files[i])
)
)
else
(
-- Error
nlerror ("ERROR exporting skeleton: no Bip01 node in file "+files[i])
)
)
else
(
-- Error
nlerror ("ERROR exporting skeleton: can't open the file "+files[i])
)
)
else
(
nlerror ("SKIPPED "+files[i])
)
)
catch
(
-- Error
nlerror ("ERROR error exporting skeleton in files " + files[i])
)
)
)
else
(
nlerror ("WARNING no skeleton file in folder skel_source_directory")
)
)
catch
(
-- Error
nlerror ("ERROR fatal error exporting skeleton in folder skel_source_directory")
)
-- Bye
resetMAXFile #noprompt
quitMAX #noPrompt
quitMAX () #noPrompt

View file

@ -49,14 +49,40 @@ printLog(log, "")
# For each swt directory
printLog(log, ">>> Export skeleton weigths 3dsmax <<<")
printLog(log, "********************************")
printLog(log, "******** TODO ********")
printLog(log, "********************************")
mkPath(log, ExportBuildDirectory + "/" + SwtExportDirectory)
for dir in SwtSourceDirectories:
mkPath(log, DatabaseDirectory + "/" + dir)
printLog(log, "")
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, SwtSourceDirectories, DatabaseDirectory + "/" + dir, ".max", ExportBuildDirectory + "/" + SwtExportDirectory, ".swt")):
scriptSrc = "maxscript/swt_export.ms"
scriptDst = MaxUserDirectory + "/scripts/swt_export.ms"
logFile = ScriptDirectory + "/processes/swt/log.log"
outDirSwt = ExportBuildDirectory + "/" + SwtExportDirectory
swtSourceDir = DatabaseDirectory + "/" + dir
tagList = findFiles(log, outDirSwt, "", ".swt")
tagLen = len(tagList)
if os.path.isfile(scriptDst):
os.remove(scriptDst)
tagDiff = 1
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("swt_source_directory", swtSourceDir)
newline = newline.replace("output_directory", outDirSwt)
sDst.write(newline)
sSrc.close()
sDst.close()
while tagDiff > 0:
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "swt_export.ms", "-q", "-mi", "-vn" ])
tagList = findFiles(log, outDirSwt, "", ".swt")
newTagLen = len(tagList)
tagDiff = newTagLen - tagLen
tagLen = newTagLen
printLog(log, "Exported " + str(tagDiff) + " .swt files!")
os.remove(scriptDst)
printLog(log, "")
log.close()

View file

@ -84,7 +84,7 @@ try
-- Open the max project
nlerror ("Scanning file "+files[i]+" ...")
if loadMaxFile files[i] == true then
if (loadMaxFile files[i] quiet:true) == true then
(
-- Unhide category
unhidecategory()

View file

@ -69,19 +69,20 @@ if MaxAvailable:
for dir in VegetSourceDirectories:
vegetSourceDir = DatabaseDirectory + "/" + dir
mkPath(log, vegetSourceDir)
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("veget_source_directory", vegetSourceDir)
newline = newline.replace("output_directory_veget", outputDirVeget)
newline = newline.replace("output_directory_tag", outputDirTag)
sDst.write(newline)
sSrc.close()
sDst.close()
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "veget_export.ms", "-q", "-mi", "-vn" ])
os.remove(scriptDst)
if (needUpdateDirNoSubdirLogExtMultidir(log, DatabaseDirectory, VegetSourceDirectories, vegetSourceDir, ".max", outputDirTag, ".max.tag")):
sSrc = open(scriptSrc, "r")
sDst = open(scriptDst, "w")
for line in sSrc:
newline = line.replace("output_logfile", logFile)
newline = newline.replace("veget_source_directory", vegetSourceDir)
newline = newline.replace("output_directory_veget", outputDirVeget)
newline = newline.replace("output_directory_tag", outputDirTag)
sDst.write(newline)
sSrc.close()
sDst.close()
printLog(log, "MAXSCRIPT " + scriptDst)
subprocess.call([ Max, "-U", "MAXScript", "veget_export.ms", "-q", "-mi", "-vn" ])
os.remove(scriptDst)
printLog(log, "")

View file

@ -61,7 +61,7 @@ if BuildQuality == 1:
mkPath(log, ExportBuildDirectory + "/" + ZoneDependBuildDirectory)
mkPath(log, ActiveProjectDirectory + "/generated")
configFile = ActiveProjectDirectory + "/generated/zone_dependencies.cfg"
templateCf = open(ActiveProjectDirectory + "/generated/zone_lighter.cfg", "r")
templateCf = open(ActiveProjectDirectory + "/generated/properties.cfg", "r")
cf = open(configFile, "w")
for line in templateCf:
cf.write(line)

View file

@ -43,32 +43,6 @@ printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "")
mkPath(log, ActiveProjectDirectory + "/generated")
zlp = open(ActiveProjectDirectory + "/generated/zone_lighter.cfg", "w")
ps = open(ActiveProjectDirectory + "/zone_lighter_base.cfg", "r")
for line in ps:
newline = line.replace("%ExportBuildDirectory%", ExportBuildDirectory)
newline = newline.replace("%SmallbankExportDirectory%", SmallbankExportDirectory)
newline = newline.replace("%FarbankBuildDirectory%", FarbankBuildDirectory)
newline = newline.replace("%EcosystemName%", EcosystemName)
newline = newline.replace("%EcosystemPath%", EcosystemPath)
newline = newline.replace("%BankTileBankName%", BankTileBankName)
newline = newline.replace("%IgLandBuildDirectory%", IgLandBuildDirectory)
newline = newline.replace("%IgOtherBuildDirectory%", IgOtherBuildDirectory)
newline = newline.replace("%RbankOutputBuildDirectory%", RbankOutputBuildDirectory)
newline = newline.replace("%RbankRbankName%", RbankRbankName)
newline = newline.replace("%BuildQuality%", str(BuildQuality))
zlp.write(newline)
ps.close()
if (BuildQuality == 1):
ps = open(ActiveProjectDirectory + "/zone_lighter_final.cfg", "r")
else:
ps = open(ActiveProjectDirectory + "/zone_lighter_draft.cfg", "r")
for line in ps:
zlp.write(line)
zlp.close()
printLog(log, "")
# Setup source directories
printLog(log, ">>> Setup source directories <<<")
for dir in WaterMapSourceDirectories:

View file

@ -68,7 +68,7 @@ else:
destFile = destDir + "/" + file[0:-len(".zonew")] + ".zonel"
if (needUpdateLogRemoveDest(log, srcFile, destFile)):
dependFile = destDir + "/" + file[0:-len(".zonew")] + ".depend"
subprocess.call([ ExecTimeout, str(ZoneLightBuildTimeout), ZoneLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/zone_lighter.cfg", dependFile ])
subprocess.call([ ExecTimeout, str(ZoneLightBuildTimeout), ZoneLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
printLog(log, "")
# For each zone_light ig
@ -94,7 +94,7 @@ else:
if (needUpdateLogRemoveDest(log, igsrcFile, destFile)):
srcFile = srcDir + "/" + file
dependFile = destDir + "/" + file[0:-len(".zonel")] + ".depend"
subprocess.call([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/zone_lighter.cfg", dependFile ])
subprocess.call([ ExecTimeout, str(ZoneIgLightBuildTimeout), ZoneIgLighter, srcFile, destFile, ActiveProjectDirectory + "/generated/properties.cfg", dependFile ])
printLog(log, "")
log.close()

View file

@ -0,0 +1,141 @@
#!/usr/bin/python
#
# \file directories.py
# \brief Directories configuration
# \date 2010-08-27 17:13GMT
# \author Jan Boon (Kaetemi)
# \date 2001-2005
# \author Nevrax
# Python port of game data build pipeline.
# Directories configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON NAMES AND PATHS ***
EcosystemName = "construction"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
ContinentLeveldesignWorldDirectory = "" # DISABLED
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Shape directories
ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ "stuff/Generique/Decors/Constructions" ]
# Maps directories
MapSourceDirectories = [ ]
MapSourceDirectories += [ "stuff/Generique/Decors/_Textures/Batiments" ]
MapUncompressedSourceDirectories = [ ]
# Ligo directories
LigoBaseSourceDirectory = "landscape/ligo"
# Ig directories
IgLandSourceDirectories = [ ]
IgOtherSourceDirectories = [ ]
IgOtherSourceDirectories += [ "stuff/Generique/Decors/Constructions" ]
IgPrimitiveSourceDirectories = [ ]
# Tiles root directory
TileRootSourceDirectory = "landscape/_texture_tiles"
# Displace directory
DisplaceSourceDirectory = "landscape/_texture_tiles/displace"
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Ig directories
IgStaticLandExportDirectory = CommonPath + "/ig_static_land" # Landscape IG eported from 3dsmax not elevated by the heightmap
IgStaticOtherExportDirectory = CommonPath + "/ig_static_other" # Village or construction IGs exported from 3dsmax
IgStaticTagExportDirectory = CommonPath + "/ig_static_tag" # Tag for exported 3dsmax files
# Zone directories
ZoneWeldBuildDirectory = CommonPath + "/zone_weld"
ZoneDependBuildDirectory = CommonPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = CommonPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = CommonPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = CommonPath + "/zone_lighted_depend" #fixme
ZoneLightIgLandBuildDirectory = CommonPath + "/zone_lighted_ig_land" #fixme
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories
MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# Ig directories
IgElevLandPrimBuildDirectory = CommonPath + "/ig_elev_land_prim" # landscape IG generated by the prim exporter (already elevated by the land exporter)
IgElevLandLigoBuildDirectory = CommonPath + "/ig_elev_land_ligo" # Landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
IgElevLandStaticBuildDirectory = CommonPath + "/ig_elev_land_static" # Landscape IG eported from 3dsmax elevated by the heightmap
IgTempLandMergeBuildDirectory = CommonPath + "/ig_temp_land_merge"
IgTempLandCompareBuildDirectory = CommonPath + "/ig_temp_land_compare" # Tmp final IG directory for landscape IGs before comparison
IgLandBuildDirectory = CommonPath + "/ig_land" # Final IG directory for landscape IGs
IgOtherBuildDirectory = CommonPath + "/ig_other" # Final IG directory for village or construction IGs
IgOtherLightedBuildDirectory = CommonPath + "/ig_other_lighted"
# Farbank directories
FarbankBuildDirectory = CommonPath + "/farbank"
# Ligo directories
LigoZoneBuildDirectory = CommonPath + "/ligo_zones"
LigoIgLandBuildDirectory = CommonPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
LigoIgOtherBuildDirectory = CommonPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory
MapClientDirectory = CommonName
BitmapClientDirectory = MapClientDirectory
# Shape directory
ShapeClientDirectory = CommonName
# Lightmap directory
LightmapClientDirectory = CommonName
# Animation directory
AnimClientDirectory = CommonName
# Ig directory
IgClientDirectory = CommonName

View file

@ -0,0 +1,110 @@
#!/usr/bin/python
#
# \file config.py
# \brief Process configuration
# \date 2010-08-27 17:02GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Process configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "properties" ]
ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "map" ]
ProcessToComplete += [ "ig" ]
ProcessToComplete += [ "ig_light" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "construction"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ?
ShapeExportOptExportLighting = "true"
# Cast shadow in lightmap ?
ShapeExportOptShadow = "true"
# Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = 0
# Lightmap lumel size
ShapeExportOptLumelSize = "0.25"
# Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = 1
# Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "false"
# Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "true"
# Coarse mesh texture mul size
TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ]
MultipleTilesPostfix += [ "_sp" ]
MultipleTilesPostfix += [ "_su" ]
MultipleTilesPostfix += [ "_au" ]
MultipleTilesPostfix += [ "_wi" ]
# Name of the tilebank to use
BankTileBankName = ""
# *** LANDSCAPE NAME ***
LandscapeName = ContinentName
# *** LIGO OPTIONS ***
LigoExportLand = ""
LigoExportOnePass = 0
LigoExportColormap = "colormap_invalid.png"
LigoExportHeightmap1 = "big_invalid.png"
LigoExportZFactor1 = "1.0"
LigoExportHeightmap2 = "noise_invalid.png"
LigoExportZFactor2 = "0.5"
LigoTileBankFile = "landscape/_texture_tiles/jungle/jungle.bank"
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0
# *** ANIMATIONS OPTIONS ***
DoOptimizeAnimations = 0

View file

@ -0,0 +1,51 @@
// Bank file name
bank_name = "%ExportBuildDirectory%/ecosystems/jungle/smallbank/jungle.smallbank";
bankfar_name = "%ExportBuildDirectory%/ecosystems/jungle/farbank/jungle.farbank";
// Search pathes
search_pathes =
{
"%ExportBuildDirectory%/common/sfx/ps", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape_with_coarse_mesh", // Sfx directory
"%ExportBuildDirectory%/common/sfx/map", // Sfx directory
"%ExportBuildDirectory%/common/construction/shape", // Construction directory
"%ExportBuildDirectory%/common/construction/shape_with_coarse_mesh", // Construction directory
"%ExportBuildDirectory%/common/construction/map", // Construction directory
};
// Additional ig file name
additionnal_ig =
{
};
// Sun direction.
//sun_direction = { -0.095, +1.0, -0.50 };
sun_direction = { -0.776685, +0.216619, -0.59147 };
// Center of the landscape pointed by the sun
sun_center = {9954, -11017, 0};
// Distance of the sun
sun_distance = 50000;
// FOV of the sun in radian
sun_fov = 0.52359877; // Pi / 6
// Sun radius, (for softshadow sampling)
sun_radius = 5000;
// GlobalRetriever bank file.gr. Empty string to disable SurfaceLighting
grbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.gr";
// LocalRetriever bank file .rbank. Empty string to disable SurfaceLighting
rbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.rbank";
// The lighter search in rbank any retriever with identifier ---igname*** as substring
// where --- is col_identifier_prefix and *** is col_identifier_suffix
// eg: if igname= "street", col_identifier_prefix= "col_", col_identifier_suffix= "_",
// then "col_street_1" and "col_street_2" are valid and are used to build LightSurface infos in the Ig.
col_identifier_prefix= "";
col_identifier_suffix= "";

View file

@ -6,7 +6,7 @@ load_ig = 1;
compute_dependencies_with_igs = 1;
// Enable shadows. 0 disable, 1 enable
shadow = 0; // FIXME: should be 1, but missing .depend files
shadow = 1;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;

View file

@ -0,0 +1,15 @@
// ***************************
// Animation Optimizer
// ***************************
// Tracks which contain one of those name (eg "Bip01 Finger11.rotquat") will be mark as "Low Precision".
// Usefull for memory optimisation. Avoid setting legs or root bones. Warning: case sensitive.
anim_low_precision_tracks=
{
"Finger",
"Ponytail",
};
// The Sample Rate.
anim_sample_rate= 30;

View file

@ -0,0 +1,277 @@
#!/usr/bin/python
#
# \file directories.py
# \brief Directories configuration
# \date 2010-08-27 17:13GMT
# \author Jan Boon (Kaetemi)
# \date 2001-2005
# \author Nevrax
# Python port of game data build pipeline.
# Directories configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON NAMES AND PATHS ***
EcosystemName = "fauna"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Skeleton directories
SkelSourceDirectories = [ ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique_monture/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/chien/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/familier/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiforet/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiguard/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kitin_volant/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/carnitree/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/electroalg/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/endrobouchea/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/phytopsy/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/sapenslaver/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/swarmplant/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_2/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_3/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_4/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_2/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_3/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_4/animations/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/cute/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/frahar/animation/skeletons" ]
SkelSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/gibbai/animation/skeletons" ]
# Skeleton template weight directories
SwtSourceDirectories = [ ]
# Shape directories
ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique/clapclap" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique/ryzetacee" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique_monture/sagass_selle" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/mektoub" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/mektoubselle" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/mektoubpack" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/chorani" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/jungler" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/regus" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/varinx" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/capryni" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/filin" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/cococlaw" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/estrasson" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/hachtaha" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/diranak" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/familier/dag" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/ryzerb" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/ryzoholok" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiforet" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiguard" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_2" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_3" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_4" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_2" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_3" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_4" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitihank" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitinagan" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitinarak" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitinega" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitinokto" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitimandib" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/pucetron" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin_volant/kitifly" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin_volant/kitikil" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/kazoar" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/lightbird" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/yber" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/arma" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/bul" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/vampignon" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/kakty" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/ryzoholo" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/zerx" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/carnitree" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/electroalg" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/endrobouchea" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/phytopsy" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/sapenslaver" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/swarmplant" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/cute" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/frahar" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/gibbai" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/aquatique" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/chiens" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/coureur" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/crustaces" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/grand_ryzomien" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/kitin" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/kitin_volant" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/oiseau" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/pachyderme/vampignon" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/ryzomien/kakty" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/ryzomien/ryzoholo" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/c03" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/h05" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/h12" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/c02" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/chien/c07" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/h01" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/h04" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/c05" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/c06" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/h07" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/h11" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/c01" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/h08" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/h10" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/c04" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/h02" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/h06" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/h09" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/familier/h03" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/ryzomien/c04" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/familier/h03" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/homins_degeneres/cute" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/homins_degeneres/frahar" ]
ShapeSourceDirectories += [ "stuff/goo/agents/monsters/homins_degeneres/gibbai" ]
ShapeSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/kitin_queen" ]
# Maps directories
MapSourceDirectories = [ ]
MapSourceDirectories += [ "stuff/fyros/agents/_textures/monster" ]
MapSourceDirectories += [ "stuff/tryker/agents/_textures/monster" ]
MapSourceDirectories += [ "stuff/jungle/agents/_textures/monster" ]
MapSourceDirectories += [ "stuff/primes_racines/agents/_textures/monster" ]
MapSourceDirectories += [ "stuff/goo/agents/_textures/monster" ]
MapUncompressedSourceDirectories = [ ]
# Animation directories
AnimSourceDirectories = [ ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/aquatique_monture/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/cheval/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/chien/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/coureur/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/crustace/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/familier/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/grand_ryzomien/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiforet/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kamiguard/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kitin/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kitin_volant/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/oiseau/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/pachyderme/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/ryzomien/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/carnitree/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/electroalg/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/endrobouchea/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/phytopsy/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/sapenslaver/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/plante_carnivore/swarmplant/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_2/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_3/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_guide_4/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_2/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_3/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/kami/kami_preacher_4/animations/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/cute/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/frahar/animation/anims" ]
AnimSourceDirectories += [ "stuff/tryker/agents/monsters/homins_degeneres/gibbai/animation/anims" ]
# cLoD shape directories
ClodSourceDirectories = [ ]
ClodSourceDirectories += [ "stuff/lod_actors/lod_fauna" ]
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Skeleton directories
SkelExportDirectory = CommonPath + "/skel"
# Skeleton template weight directories
SwtExportDirectory = CommonPath + "/swt"
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Animation directories
AnimExportDirectory = CommonPath + "/anim_export"
# cLoD directories
ClodExportDirectory = CommonPath + "/clod_export"
ClodTagExportDirectory = CommonPath + "/clod_tag_export"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories
MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# Animation directories
AnimBuildDirectory = CommonPath + "/anim"
# cLoD directories
ClodBankBuildDirectory = CommonPath + "/clod_bank"
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory
MapClientDirectory = CommonName + "_maps"
BitmapClientDirectory = MapClientDirectory
# Shape directory
ShapeClientDirectory = CommonName + "_shapes"
LightmapClientDirectory = ShapeClientDirectory
# Animation directory
AnimClientDirectory = CommonName + "_animations"
# Skeleton directory
SkelClientDirectory = CommonName + "_skeletons"
# Skeleton directory
SwtClientDirectory = CommonName + "_swt"

View file

@ -0,0 +1,109 @@
#!/usr/bin/python
#
# \file config.py
# \brief Process configuration
# \date 2010-08-27 17:02GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Process configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "skel" ]
ProcessToComplete += [ "swt" ]
ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "map" ]
ProcessToComplete += [ "anim" ]
ProcessToComplete += [ "clodbank" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "fauna"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ?
ShapeExportOptExportLighting = "true"
# Cast shadow in lightmap ?
ShapeExportOptShadow = "true"
# Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = 0
# Lightmap lumel size
ShapeExportOptLumelSize = "0.25"
# Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = 1
# Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "false"
# Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "true"
# Coarse mesh texture mul size
TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
# *** CLODBANK OPTIONS ***
ClodConfigFile = "stuff/lod_actors/lod_" + CommonName + "/clod_" + CommonName + "_script.cfg"
ClodBankFileName = CommonName + ".clodbank"
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ]
MultipleTilesPostfix += [ "_sp" ]
MultipleTilesPostfix += [ "_su" ]
MultipleTilesPostfix += [ "_au" ]
MultipleTilesPostfix += [ "_wi" ]
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0
# *** SHADOW SKIN OPTIONS ***
# Fauna are made of a single skin. Allow only 1000 faces for each monster (whatever the original nb faces)
BuildShadowSkin = 1
BuildShadowSkinRatio = 100
BuildShadowSkinMaxface = 1000
# *** ANIMATIONS OPTIONS ***
DoOptimizeAnimations = 1

View file

@ -0,0 +1,59 @@
#!/usr/bin/python
#
# \file directories.py
# \brief Directories configuration
# \date 2010-08-27 17:13GMT
# \author Jan Boon (Kaetemi)
# \date 2001-2005
# \author Nevrax
# Python port of game data build pipeline.
# Directories configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON NAMES AND PATHS ***
EcosystemName = "fonts"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Font directories
FontSourceDirectories = [ ]
FontSourceDirectories += [ "fonts" ]
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Font directories
FontExportDirectory = CommonPath + "/font"
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Font directory
FontClientDirectory = CommonName
# end of file

View file

@ -0,0 +1,43 @@
#!/usr/bin/python
#
# \file config.py
# \brief Process configuration
# \date 2010-08-27 17:02GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Process configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "font" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "fonts"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# end of file

View file

@ -26,9 +26,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON PATH ***
CommonPath = "common/interface"
# *** COMMON NAMES AND PATHS ***
EcosystemName = "interface"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES IN THE DATABASE ***

View file

@ -30,6 +30,16 @@
ProcessToComplete = [ ]
ProcessToComplete += [ "interface" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "interface"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0

View file

@ -60,7 +60,7 @@ MapUncompressedSourceDirectories = [ ]
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeExportDirectory = CommonPath + "/shape"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
@ -73,6 +73,7 @@ MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"

View file

@ -0,0 +1,141 @@
#!/usr/bin/python
#
# \file directories.py
# \brief Directories configuration
# \date 2010-08-27 17:13GMT
# \author Jan Boon (Kaetemi)
# \date 2001-2005
# \author Nevrax
# Python port of game data build pipeline.
# Directories configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON NAMES AND PATHS ***
EcosystemName = "outgame"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
ContinentLeveldesignWorldDirectory = "" # DISABLED
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Shape directories
ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ "stuff/outgame/appart_crea" ]
# Maps directories
MapSourceDirectories = [ ]
MapSourceDirectories += [ "stuff/outgame/_textures" ]
MapUncompressedSourceDirectories = [ ]
# Ligo directories
LigoBaseSourceDirectory = "landscape/ligo"
# Ig directories
IgLandSourceDirectories = [ ]
IgOtherSourceDirectories = [ ]
IgOtherSourceDirectories += [ "stuff/outgame/appart_crea" ]
IgPrimitiveSourceDirectories = [ ]
# Tiles root directory
TileRootSourceDirectory = "landscape/_texture_tiles"
# Displace directory
DisplaceSourceDirectory = "landscape/_texture_tiles/displace"
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Ig directories
IgStaticLandExportDirectory = CommonPath + "/ig_static_land" # Landscape IG eported from 3dsmax not elevated by the heightmap
IgStaticOtherExportDirectory = CommonPath + "/ig_static_other" # Village or construction IGs exported from 3dsmax
IgStaticTagExportDirectory = CommonPath + "/ig_static_tag" # Tag for exported 3dsmax files
# Zone directories
ZoneWeldBuildDirectory = CommonPath + "/zone_weld"
ZoneDependBuildDirectory = CommonPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = CommonPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = CommonPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = CommonPath + "/zone_lighted_depend" #fixme
ZoneLightIgLandBuildDirectory = CommonPath + "/zone_lighted_ig_land" #fixme
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories
MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# Ig directories
IgElevLandPrimBuildDirectory = CommonPath + "/ig_elev_land_prim" # landscape IG generated by the prim exporter (already elevated by the land exporter)
IgElevLandLigoBuildDirectory = CommonPath + "/ig_elev_land_ligo" # Landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
IgElevLandStaticBuildDirectory = CommonPath + "/ig_elev_land_static" # Landscape IG eported from 3dsmax elevated by the heightmap
IgTempLandMergeBuildDirectory = CommonPath + "/ig_temp_land_merge"
IgTempLandCompareBuildDirectory = CommonPath + "/ig_temp_land_compare" # Tmp final IG directory for landscape IGs before comparison
IgLandBuildDirectory = CommonPath + "/ig_land" # Final IG directory for landscape IGs
IgOtherBuildDirectory = CommonPath + "/ig_other" # Final IG directory for village or construction IGs
IgOtherLightedBuildDirectory = CommonPath + "/ig_other_lighted"
# Farbank directories
FarbankBuildDirectory = CommonPath + "/farbank"
# Ligo directories
LigoZoneBuildDirectory = CommonPath + "/ligo_zones"
LigoIgLandBuildDirectory = CommonPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
LigoIgOtherBuildDirectory = CommonPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory
MapClientDirectory = CommonName
BitmapClientDirectory = MapClientDirectory
# Shape directory
ShapeClientDirectory = CommonName
# Lightmap directory
LightmapClientDirectory = CommonName
# Animation directory
AnimClientDirectory = CommonName
# Ig directory
IgClientDirectory = CommonName

View file

@ -0,0 +1,110 @@
#!/usr/bin/python
#
# \file config.py
# \brief Process configuration
# \date 2010-08-27 17:02GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Process configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "properties" ]
ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "map" ]
ProcessToComplete += [ "ig" ]
ProcessToComplete += [ "ig_light" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "outgame"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ?
ShapeExportOptExportLighting = "true"
# Cast shadow in lightmap ?
ShapeExportOptShadow = "true"
# Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = 0
# Lightmap lumel size
ShapeExportOptLumelSize = "0.25"
# Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = 1
# Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "false"
# Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "true"
# Coarse mesh texture mul size
TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ]
MultipleTilesPostfix += [ "_sp" ]
MultipleTilesPostfix += [ "_su" ]
MultipleTilesPostfix += [ "_au" ]
MultipleTilesPostfix += [ "_wi" ]
# Name of the tilebank to use
BankTileBankName = ""
# *** LANDSCAPE NAME ***
LandscapeName = ContinentName
# *** LIGO OPTIONS ***
LigoExportLand = ""
LigoExportOnePass = 0
LigoExportColormap = "colormap_invalid.png"
LigoExportHeightmap1 = "big_invalid.png"
LigoExportZFactor1 = "1.0"
LigoExportHeightmap2 = "noise_invalid.png"
LigoExportZFactor2 = "0.5"
LigoTileBankFile = "landscape/_texture_tiles/jungle/jungle.bank"
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0
# *** ANIMATIONS OPTIONS ***
DoOptimizeAnimations = 0

View file

@ -0,0 +1,51 @@
// Bank file name
bank_name = "%ExportBuildDirectory%/ecosystems/jungle/smallbank/jungle.smallbank";
bankfar_name = "%ExportBuildDirectory%/ecosystems/jungle/farbank/jungle.farbank";
// Search pathes
search_pathes =
{
"%ExportBuildDirectory%/common/sfx/ps", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape_with_coarse_mesh", // Sfx directory
"%ExportBuildDirectory%/common/sfx/map", // Sfx directory
"%ExportBuildDirectory%/common/outgame/shape", // Outgame directory
"%ExportBuildDirectory%/common/outgame/shape_with_coarse_mesh", // Outgame directory
"%ExportBuildDirectory%/common/outgame/map", // Outgame directory
};
// Additional ig file name
additionnal_ig =
{
};
// Sun direction.
//sun_direction = { -0.095, +1.0, -0.50 };
sun_direction = { -0.776685, +0.216619, -0.59147 };
// Center of the landscape pointed by the sun
sun_center = {9954, -11017, 0};
// Distance of the sun
sun_distance = 50000;
// FOV of the sun in radian
sun_fov = 0.52359877; // Pi / 6
// Sun radius, (for softshadow sampling)
sun_radius = 5000;
// GlobalRetriever bank file.gr. Empty string to disable SurfaceLighting
grbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.gr";
// LocalRetriever bank file .rbank. Empty string to disable SurfaceLighting
rbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.rbank";
// The lighter search in rbank any retriever with identifier ---igname*** as substring
// where --- is col_identifier_prefix and *** is col_identifier_suffix
// eg: if igname= "street", col_identifier_prefix= "col_", col_identifier_suffix= "_",
// then "col_street_1" and "col_street_2" are valid and are used to build LightSurface infos in the Ig.
col_identifier_prefix= "";
col_identifier_suffix= "";

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 0;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 0;
// Enable shadows. 0 disable, 1 enable
shadow = 0;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 0;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 512;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 1;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 1;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 1;
// Enable shadows. 0 disable, 1 enable
shadow = 1;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 1;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 64;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 2;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -0,0 +1,102 @@
#!/usr/bin/python
#
# \file directories.py
# \brief Directories configuration
# \date 2010-08-27 17:13GMT
# \author Jan Boon (Kaetemi)
# \date 2001-2005
# \author Nevrax
# Python port of game data build pipeline.
# Directories configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON NAMES AND PATHS ***
EcosystemName = "sfx"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# PS directories
PsSourceDirectories = [ ]
PsSourceDirectories += [ "sfx/buildings" ]
PsSourceDirectories += [ "sfx/environment" ]
PsSourceDirectories += [ "sfx/fighting" ]
PsSourceDirectories += [ "sfx/magic" ]
PsSourceDirectories += [ "sfx/moving" ]
PsSourceDirectories += [ "sfx/teaser" ]
PsSourceDirectories += [ "sfx/forage" ]
PsSourceDirectories += [ "sfx/monsters" ]
# Maps directories
MapSourceDirectories = [ ]
MapSourceDirectories += [ "sfx/maps" ]
# Shape directories
ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ "sfx/meshtoparticle" ]
MapUncompressedSourceDirectories = [ ]
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# PS directories
PsExportDirectory = CommonPath + "/ps"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories
MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Particule system directory
PsClientDirectory = "sfx"
# Map directory
MapClientDirectory = "sfx"
BitmapClientDirectory = MapClientDirectory
# Shape directory
ShapeClientDirectory = "sfx"
# Lightmap directory
LightmapClientDirectory = "sfx"

View file

@ -0,0 +1,87 @@
#!/usr/bin/python
#
# \file config.py
# \brief Process configuration
# \date 2010-08-27 17:02GMT
# \author Jan Boon (Kaetemi)
# Python port of game data build pipeline.
# Process configuration.
#
# NeL - MMORPG Framework <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "ps" ]
ProcessToComplete += [ "map" ]
ProcessToComplete += [ "shape" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "sfx"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ?
ShapeExportOptExportLighting = "true"
# Cast shadow in lightmap ?
ShapeExportOptShadow = "true"
# Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = 0
# Lightmap lumel size
ShapeExportOptLumelSize = "0.25"
# Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = 1
# Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "false"
# Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "true"
# Coarse mesh texture mul size
TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ]
MultipleTilesPostfix += [ "_sp" ]
MultipleTilesPostfix += [ "_su" ]
MultipleTilesPostfix += [ "_au" ]
MultipleTilesPostfix += [ "_wi" ]
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0

View file

@ -0,0 +1,15 @@
// ***************************
// Animation Optimizer
// ***************************
// Tracks which contain one of those name (eg "Bip01 Finger11.rotquat") will be mark as "Low Precision".
// Usefull for memory optimisation. Avoid setting legs or root bones. Warning: case sensitive.
anim_low_precision_tracks=
{
"Finger",
"Ponytail",
};
// The Sample Rate.
anim_sample_rate= 30;

View file

@ -27,10 +27,17 @@
#
# *** COMMON PATH ***
# *** COMMON NAMES AND PATHS ***
EcosystemName = "sky"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
CommonName = "sky"
CommonPath = "common/" + CommonName
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
ContinentLeveldesignWorldDirectory = "" # DISABLED
# *** SOURCE DIRECTORIES IN THE DATABASE ***
@ -54,12 +61,21 @@ MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/jungle" ]
MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/lacustre" ]
MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/nodds" ]
# Ligo directories
LigoBaseSourceDirectory = "landscape/ligo"
# Ig directories
IgLandSourceDirectories = [ ]
IgOtherSourceDirectories = [ ]
IgOtherSourceDirectories += [ "sky_v2/max" ]
IgPrimitiveSourceDirectories = [ ]
# Tiles root directory
TileRootSourceDirectory = "landscape/_texture_tiles"
# Displace directory
DisplaceSourceDirectory = "landscape/_texture_tiles/displace"
# Animation directories
AnimSourceDirectories = [ ]
AnimSourceDirectories += [ "sky_v2/max" ]
@ -69,7 +85,7 @@ AnimSourceDirectories += [ "sky_v2/max" ]
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeExportDirectory = CommonPath + "/shape"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
@ -79,6 +95,17 @@ IgStaticLandExportDirectory = CommonPath + "/ig_static_land" # Landscape IG epor
IgStaticOtherExportDirectory = CommonPath + "/ig_static_other" # Village or construction IGs exported from 3dsmax
IgStaticTagExportDirectory = CommonPath + "/ig_static_tag" # Tag for exported 3dsmax files
# Zone directories
ZoneWeldBuildDirectory = CommonPath + "/zone_weld"
ZoneDependBuildDirectory = CommonPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = CommonPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = CommonPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = CommonPath + "/zone_lighted_depend" #fixme
ZoneLightIgLandBuildDirectory = CommonPath + "/zone_lighted_ig_land" #fixme
# Animation directories
AnimExportDirectory = CommonPath + "/anim_export"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
@ -87,6 +114,7 @@ MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
@ -101,13 +129,22 @@ IgLandBuildDirectory = CommonPath + "/ig_land" # Final IG directory for landscap
IgOtherBuildDirectory = CommonPath + "/ig_other" # Final IG directory for village or construction IGs
IgOtherLightedBuildDirectory = CommonPath + "/ig_other_lighted"
# Farbank directories
FarbankBuildDirectory = CommonPath + "/farbank"
# Ligo directories
LigoZoneBuildDirectory = CommonPath + "/ligo_zones"
LigoIgLandBuildDirectory = CommonPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
LigoIgOtherBuildDirectory = CommonPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
# Animation directories
AnimBuildDirectory = CommonPath + "/anim"
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory
MapClientDirectory = CommonName
# Map directory
BitmapClientDirectory = MapClientDirectory
# Shape directory

View file

@ -26,13 +26,24 @@
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "properties" ]
ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "map" ]
#ProcessToComplete += [ "anim" ]
#ProcessToComplete += [ "ig" ]
#ProcessToComplete += [ "ig_light" ]
ProcessToComplete += [ "anim" ]
ProcessToComplete += [ "ig" ]
ProcessToComplete += [ "ig_light" ]
# *** COMMON NAMES AND PATHS ***
EcosystemName = "sky"
EcosystemPath = "common/" + EcosystemName
ContinentName = EcosystemName
ContinentPath = EcosystemPath
CommonName = ContinentName
CommonPath = ContinentPath
# *** SHAPE EXPORT OPTIONS ***
@ -65,9 +76,11 @@ DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
MultipleTilesPostfix = [ ]
MultipleTilesPostfix += [ "_sp" ]
@ -75,6 +88,30 @@ MultipleTilesPostfix += [ "_su" ]
MultipleTilesPostfix += [ "_au" ]
MultipleTilesPostfix += [ "_wi" ]
# Name of the tilebank to use
BankTileBankName = ""
# *** LANDSCAPE NAME ***
LandscapeName = ContinentName
# *** LIGO OPTIONS ***
LigoExportLand = ""
LigoExportOnePass = 0
LigoExportColormap = "colormap_invalid.png"
LigoExportHeightmap1 = "big_invalid.png"
LigoExportZFactor1 = "1.0"
LigoExportHeightmap2 = "noise_invalid.png"
LigoExportZFactor2 = "0.5"
LigoTileBankFile = "landscape/_texture_tiles/jungle/jungle.bank"
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0
# *** ANIMATIONS OPTIONS ***
DoOptimizeAnimations = 0

View file

@ -0,0 +1,51 @@
// Bank file name
bank_name = "%ExportBuildDirectory%/ecosystems/jungle/smallbank/jungle.smallbank";
bankfar_name = "%ExportBuildDirectory%/ecosystems/jungle/farbank/jungle.farbank";
// Search pathes
search_pathes =
{
"%ExportBuildDirectory%/common/sfx/ps", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape_with_coarse_mesh", // Sfx directory
"%ExportBuildDirectory%/common/sfx/map", // Sfx directory
"%ExportBuildDirectory%/common/sky/shape", // Sky directory
"%ExportBuildDirectory%/common/sky/shape_with_coarse_mesh", // Sky directory
"%ExportBuildDirectory%/common/sky/map", // Sky directory
};
// Additional ig file name
additionnal_ig =
{
};
// Sun direction.
//sun_direction = { -0.095, +1.0, -0.50 };
sun_direction = { -0.776685, +0.216619, -0.59147 };
// Center of the landscape pointed by the sun
sun_center = {9954, -11017, 0};
// Distance of the sun
sun_distance = 50000;
// FOV of the sun in radian
sun_fov = 0.52359877; // Pi / 6
// Sun radius, (for softshadow sampling)
sun_radius = 5000;
// GlobalRetriever bank file.gr. Empty string to disable SurfaceLighting
grbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.gr";
// LocalRetriever bank file .rbank. Empty string to disable SurfaceLighting
rbank= "%ExportBuildDirectory%/continents/newbieland/rbank_output/newbieland.rbank";
// The lighter search in rbank any retriever with identifier ---igname*** as substring
// where --- is col_identifier_prefix and *** is col_identifier_suffix
// eg: if igname= "street", col_identifier_prefix= "col_", col_identifier_suffix= "_",
// then "col_street_1" and "col_street_2" are valid and are used to build LightSurface infos in the Ig.
col_identifier_prefix= "";
col_identifier_suffix= "";

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 0;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 0;
// Enable shadows. 0 disable, 1 enable
shadow = 0;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 0;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 512;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 1;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 1;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 1;
// Enable shadows. 0 disable, 1 enable
shadow = 1;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 1;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 64;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 2;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -42,6 +42,16 @@ ContinentLeveldesignWorldDirectory = ContinentName
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Shape directories
ShapeSourceDirectories = [ ]
ShapeSourceDirectories += [ "stuff/" + ContinentName + "/sky" ]
# Maps directories
MapSourceDirectories = [ ]
MapSourceDirectories += [ "stuff/" + ContinentName + "/sky" ]
MapUncompressedSourceDirectories = [ ]
# Ligo directories
LigoBaseSourceDirectory = "landscape/ligo/" + EcosystemName
LigoMaxSourceDirectory = LigoBaseSourceDirectory + "/max"
@ -63,9 +73,20 @@ TileRootSourceDirectory = "landscape/_texture_tiles/" + EcosystemName
# Displace directory
DisplaceSourceDirectory = "landscape/_texture_tiles/" + EcosystemName + "/displace"
# Ligo primitive directory used in the client
PsSourceDirectories = [ ]
PsSourceDirectories += [ "primitive_microlife/" + ContinentName ]
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Ligo directories
LigoDatabaseExportDirectory = "landscape/ligo/" + EcosystemName
LigoDatabaseIgExportDirectory = LigoDatabaseExportDirectory + "/igs"
@ -89,57 +110,80 @@ IgStaticLandExportDirectory = ContinentPath + "/ig_static_land" # Landscape IG e
IgStaticOtherExportDirectory = ContinentPath + "/ig_static_other" # Village or construction IGs exported from 3dsmax
IgStaticTagExportDirectory = ContinentPath + "/ig_static_tag" # Tag for exported 3dsmax files
# PS directories
PsExportDirectory = CommonPath + "/ps"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories
MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
# Ligo directories
LigoZoneBuildDirectory = ContinentPath + "/ligo_zones"
LigoIgLandBuildDirectory = ContinentPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
LigoIgOtherBuildDirectory = ContinentPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
LigoZoneBuildDirectory = CommonPath + "/ligo_zones"
LigoIgLandBuildDirectory = CommonPath + "/ligo_ig_land" # Landscape IG found in ligo bricks not elevated by the heightmap
LigoIgOtherBuildDirectory = CommonPath + "/ligo_ig_other" # Village or construction IGs exported from ligo landscape
# Zone directories
ZoneWeldBuildDirectory = ContinentPath + "/zone_weld"
ZoneDependBuildDirectory = ContinentPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = ContinentPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = ContinentPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = ContinentPath + "/zone_lighted_depend" #fixme
ZoneLightIgLandBuildDirectory = ContinentPath + "/zone_lighted_ig_land" #fixme
ZoneWeldBuildDirectory = CommonPath + "/zone_weld"
ZoneDependBuildDirectory = CommonPath + "/zone_depend"
ZoneLightWaterShapesLightedExportDirectory = CommonPath + "/zone_lwsl_temp" #fixme
ZoneLightBuildDirectory = CommonPath + "/zone_lighted" #fixme
ZoneLightDependBuildDirectory = CommonPath + "/zone_lighted_depend" #fixme
ZoneLightIgLandBuildDirectory = CommonPath + "/zone_lighted_ig_land" #fixme
# Farbank directories
FarbankBuildDirectory = EcosystemPath + "/farbank"
# Ig directories
IgElevLandPrimBuildDirectory = ContinentPath + "/ig_elev_land_prim" # landscape IG generated by the prim exporter (already elevated by the land exporter)
IgElevLandLigoBuildDirectory = ContinentPath + "/ig_elev_land_ligo" # Landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
IgElevLandStaticBuildDirectory = ContinentPath + "/ig_elev_land_static" # Landscape IG eported from 3dsmax elevated by the heightmap
IgTempLandMergeBuildDirectory = ContinentPath + "/ig_temp_land_merge"
IgTempLandCompareBuildDirectory = ContinentPath + "/ig_temp_land_compare" # Tmp final IG directory for landscape IGs before comparison
IgLandBuildDirectory = ContinentPath + "/ig_land" # Final IG directory for landscape IGs
IgOtherBuildDirectory = ContinentPath + "/ig_other" # Final IG directory for village or construction IGs
IgOtherLightedBuildDirectory = ContinentPath + "/ig_other_lighted"
IgElevLandPrimBuildDirectory = CommonPath + "/ig_elev_land_prim" # landscape IG generated by the prim exporter (already elevated by the land exporter)
IgElevLandLigoBuildDirectory = CommonPath + "/ig_elev_land_ligo" # Landscape IG found in ligo bricks from 3dsmax elevated by the heightmap
IgElevLandStaticBuildDirectory = CommonPath + "/ig_elev_land_static" # Landscape IG eported from 3dsmax elevated by the heightmap
IgTempLandMergeBuildDirectory = CommonPath + "/ig_temp_land_merge"
IgTempLandCompareBuildDirectory = CommonPath + "/ig_temp_land_compare" # Tmp final IG directory for landscape IGs before comparison
IgLandBuildDirectory = CommonPath + "/ig_land" # Final IG directory for landscape IGs
IgOtherBuildDirectory = CommonPath + "/ig_other" # Final IG directory for village or construction IGs
IgOtherLightedBuildDirectory = CommonPath + "/ig_other_lighted"
# Rbank directories
RbankBboxBuildDirectory = ContinentPath + "/rbank_bbox"
RbankTessellationBuildDirectory = ContinentPath + "/rbank_tessellation"
RbankSmoothBuildDirectory = ContinentPath + "/rbank_smooth"
RbankRawBuildDirectory = ContinentPath + "/rbank_raw"
RbankPreprocBuildDirectory = ContinentPath + "/rbank_preproc"
RbankMeshBuildDirectory = ContinentPath + "/rbank_cmb"
RbankRetrieversBuildDirectory = ContinentPath + "/rbank_retrievers"
RbankOutputBuildDirectory = ContinentPath + "/rbank_output"
RbankBboxBuildDirectory = CommonPath + "/rbank_bbox"
RbankTessellationBuildDirectory = CommonPath + "/rbank_tessellation"
RbankSmoothBuildDirectory = CommonPath + "/rbank_smooth"
RbankRawBuildDirectory = CommonPath + "/rbank_raw"
RbankPreprocBuildDirectory = CommonPath + "/rbank_preproc"
RbankMeshBuildDirectory = CommonPath + "/rbank_cmb"
RbankRetrieversBuildDirectory = CommonPath + "/rbank_retrievers"
RbankOutputBuildDirectory = CommonPath + "/rbank_output"
# *** INSTALL DIRECTORIES IN THE CLIENT DATA ***
# Map directory
MapClientDirectory = CommonName + "_maps"
BitmapClientDirectory = MapClientDirectory
# Shape directory
ShapeClientDirectory = CommonName + "_shapes"
# Shape lightmaps directory
LightmapClientDirectory = ShapeClientDirectory
# Ig directory
IgClientDirectory = ContinentName + "_ig"
IgClientDirectory = CommonName + "_ig"
# Zone directory
ZoneClientDirectory = ContinentName + "_zones"
WaterMapsClientDirectory = ContinentName + "_zones"
ZoneClientDirectory = CommonName + "_zones"
WaterMapsClientDirectory = ZoneClientDirectory
# PACS directory
PacsClientDirectory = ContinentName + "_pacs"
PacsClientDirectory = CommonName + "_pacs"
# PS directory
IgClientDirectory = ContinentName + "_ig"
PsClientDirectory = CommonName + "_ig"

View file

@ -29,13 +29,16 @@
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "properties" ]
ProcessToComplete += [ "map" ]
ProcessToComplete += [ "shape" ]
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process (not yet), but does not export max files
ProcessToComplete += [ "zone" ] # works, need to check completeness
ProcessToComplete += [ "ig" ] # fully implemented
ProcessToComplete += [ "zone_light" ] # works, need to check completeness
ProcessToComplete += [ "rbank" ] # works, need to check completeness
ProcessToComplete += [ "ig_light" ] # fully implemented
#ProcessToComplete += [ "ps" ] # not implemented
ProcessToComplete += [ "ps" ]
# *** ECOSYSTEM AND CONTINENT NAMES ***
@ -50,6 +53,40 @@ LandscapeName = ContinentName
ContinentFile = ContinentName + "/" + ContinentName + ".continent"
# *** SHAPE EXPORT OPTIONS ***
# Compute lightmaps ?
ShapeExportOptExportLighting = "true"
# Cast shadow in lightmap ?
ShapeExportOptShadow = "true"
# Lighting limits. 0 : normal, 1 : soft shadows
ShapeExportOptLightingLimit = 0
# Lightmap lumel size
ShapeExportOptLumelSize = "0.25"
# Oversampling value. Can be 1, 2, 4 or 8
ShapeExportOptOversampling = 1
# Does the lightmap must be generated in 8 bits format ?
ShapeExportOpt8BitsLightmap = "false"
# Does the lightmaps export must generate logs ?
ShapeExportOptLightmapLog = "true"
# Coarse mesh texture mul size
TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ]
# *** BANK EXPORT OPTIONS ***
# *** POSTFIX USED BY THE MULTIPLE TILES SYSTEM ***
@ -111,3 +148,7 @@ RbankShapePaths += [ "ecosystems/" + EcosystemName + "/shape_with_coarse_mesh_bu
RbankShapePaths += [ "common/sfx/ps" ]
# RbankShapePaths += [ "l:/leveldesign/world_edit_files" ]
# *** MAPS OPTIONS ***
ReduceBitmapFactor = 0

View file

@ -6,15 +6,19 @@ bankfar_name = "%ExportBuildDirectory%/%FarbankBuildDirectory%/%EcosystemName%.f
// Search pathes
search_pathes =
{
"%ExportBuildDirectory%/continents/newbieland/ig_land", // Instance group directory
"%ExportBuildDirectory%/continents/newbieland/ig_other", // Instance group directory
"%ExportBuildDirectory%/continents/newbieland/shape", // Shape directory
"%ExportBuildDirectory%/continents/newbieland/shape_with_coarse_mesh", // Shape directory
"%ExportBuildDirectory%/common/sfx/processes/ps/ps", // Sfx directory
"%ExportBuildDirectory%/ecosystems/jungle/shape", // Shape directory
"%ExportBuildDirectory%/ecosystems/jungle/shape_with_coarse_mesh", // Shape directory
"%ExportBuildDirectory%/ecosystems/jungle/map/tga", // Map directory
"%ExportBuildDirectory%/continents/newbieland/zone_light/water_shapes_lighted", // Water shape lighted directory
"%ExportBuildDirectory%/common/sfx/ps", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape", // Sfx directory
"%ExportBuildDirectory%/common/sfx/shape_with_coarse_mesh", // Sfx directory
"%ExportBuildDirectory%/common/sfx/map", // Sfx directory
"%ExportBuildDirectory%/ecosystems/%EcosystemName%/shape", // Shape directory
"%ExportBuildDirectory%/ecosystems/%EcosystemName%/shape_with_coarse_mesh", // Shape directory
"%ExportBuildDirectory%/ecosystems/%EcosystemName%/map", // Map directory
"%ExportBuildDirectory%/continents/%ContinentName%/zone_light/water_shapes_lighted", // Water shape lighted directory
"%ExportBuildDirectory%/continents/%ContinentName%/ig_land", // Instance group directory
"%ExportBuildDirectory%/continents/%ContinentName%/ig_other", // Instance group directory
"%ExportBuildDirectory%/continents/%ContinentName%/shape", // Shape directory
"%ExportBuildDirectory%/continents/%ContinentName%/shape_with_coarse_mesh", // Shape directory
"%ExportBuildDirectory%/continents/%ContinentName%/map", // Map directory
};
// Additional ig file name

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 0;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 0;
// Enable shadows. 0 disable, 1 enable
shadow = 0;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 0;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 512;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 1;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -0,0 +1,93 @@
// Load instance group. 0 disable, 1 enable
load_ig = 1;
// Use ig to compute dependencies 0 disable, 1 enable
compute_dependencies_with_igs = 1;
// Enable shadows. 0 disable, 1 enable
shadow = 1;
// Landscape ZBuffers size for all the landscape. There is one zbuffer like this one per softshadow sample.
zbuffer_landscape_size = 32768;
// Object ZBuffers size for all the landscape. This zbuffer is typically finer. There is only one zbuffer like this.
zbuffer_object_size = 98304;
// Square root of the number of soft shadow samples
soft_shadow_samples_sqrt = 4;
// Soft shadow jitter (0 ~ 1) to smooth softshadow aliasing when sampling number is small
soft_shadow_jitter = 0.4;
// Enable the sun contribution. 0 disable, 1 enable
sun_contribution = 1;
// Enable the sky global illumaniation. 0 disable, 1 enable
sky_contribution = 1;
// The sky global illumaniation intensity . [0 ~ 1]
sky_intensity = 0.20;
// Accuracy of the sky global illumaniation algorithm in meter
global_illumination_cell_size = 5;
// shadow bias for water surfaces
water_shadow_bias = 0.8;
// ambient lighting for water. [0 ~ 1]
water_ambient = 0.3;
// diffuse lighting for water. [0 ~ 1]
water_diffuse = 1.0;
// true if the water color should be modulated with the source diffuse map
modulate_water_color = 0;
// 1 if the water should receive sky lighting contribution
sky_contribution_for_water = 0;
// Side length of landscape used to compute the sky global illumaniation in meter
global_illumination_length = 600;
// Size of the quad grid side in meter. Should be a power of 2. (optimisation)
quad_grid_size = 64;
// Size of a cell of the quad grid in meter. (optimisation)
quad_grid_cell_size = 2;
// Number of CPU used to calculate the lightmaps. 0 for automatic detection.
cpu_num = 0;
/// Evaluation the max vegetable height in meters. This is used to decide wether vegetable of a tile
/// are above, below, or intersect a water surface (rough approximation).
/// As a matter of fact, these flags are processed during hte lighting as well.
vegetable_height = 2;
// ***************************
// Ig Lighting.
// ***************************
// Ig lighting shares also above parameters: sun_direction, shadow, quad_grid_size, quad_grid_cell_size, shapes_path
// Oversampling value, must be 0 (disable), 2, 4, 8, 16
// This apply to surface cells and instances.
ig_oversampling = 16;
// IG Surface Lighting (for ig_light process only)
// If SurfaceLighting enabled, define size of a cell (in meters) in a surface.
cell_surface_light_size = 1.5;
// If SurfaceLighting enabled, define a deltaZ before raytracing cellPos against lights. Usefull to skip shadow errors like stairs
cell_raytrace_delta_z = 0.2;
// Build debug surface shapes (slows the process)
build_debug_surface_shape= 0;

View file

@ -150,7 +150,7 @@ PacsPrimSourceDirectories += [ "stuff/" + EcosystemName + "/decors/vegetations"
# Shape directories
ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeExportDirectory = CommonPath + "/shape"
ShapeNotOptimizedExportDirectory = CommonPath + "/shape_not_optimized"
ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = CommonPath + "/shape_anim"
@ -182,6 +182,9 @@ LigoTagExportDirectory = "ecosystems/" + EcosystemName + "/ligo_tag"
# Zone directories
ZoneExportDirectory = "ecosystems/" + EcosystemName + "/zone"
# PACS primitives directories
PacsPrimExportDirectory = "ecosystems/" + EcosystemName + "/pacs_prim"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
@ -190,6 +193,7 @@ MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories
ShapeClodtexBuildDirectory = CommonPath + "/shape_clodtex_build"
ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded"
ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap"
ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits"
@ -250,4 +254,4 @@ VegetSetClientDirectory = "jungle_vegetable_sets"
VegetClientDirectory = "jungle_vegetables"
# PACS primitives directories
PacsPrimitiveClientDirectory = "jungle_pacs_prim"
PacsPrimClientDirectory = "jungle_pacs_prim"

View file

@ -37,7 +37,7 @@ ProcessToComplete += [ "displace" ] # OK
ProcessToComplete += [ "veget" ] # OK
ProcessToComplete += [ "vegetset" ] # OK
ProcessToComplete += [ "ligo" ] # not fully implemented, works for this process, but does not export max files
##ProcessToComplete += [ "pacs_prim" ]
ProcessToComplete += [ "pacs_prim" ]
# *** MAP EXPORT OPTIONS ***
PanoplyFileList = [ ]
@ -110,3 +110,6 @@ ReduceBitmapFactor = 0
DoBuildShadowSkin = False
ClodConfigFile = ""
# *** PACS_PRIM OPTIONS ***
WantLandscapeColPrimPacsList = True

View file

@ -26,11 +26,32 @@
ProjectsToProcess = [ ]
# Common projects
ProjectsToProcess += [ "common/fonts" ]
ProjectsToProcess += [ "common/interface" ]
ProjectsToProcess += [ "common/objects" ]
ProjectsToProcess += [ "common/sky" ]
ProjectsToProcess += [ "common/sfx" ]
ProjectsToProcess += [ "common/fauna" ]
# Ecosystem projects
ProjectsToProcess += [ "ecosystems/jungle" ]
# Continent projects
ProjectsToProcess += [ "continents/newbieland" ]
# Common projects depending on continent projects
ProjectsToProcess += [ "common/construction" ] # Depends on jungle/newbieland due to ig_light tool usage of properties.cfg...
ProjectsToProcess += [ "common/outgame" ] # Depends on jungle/newbieland due to ig_light tool usage of properties.cfg...
ProjectsToProcess += [ "common/sky" ] # Depends on jungle/newbieland due to ig_light tool usage of properties.cfg...
# TODO
#ProjectsToProcess += [ "common/characters" ] # TODO
#ProjectsToProcess += [ "common/characters_maps_hr" ] # TODO
#ProjectsToProcess += [ "common/characters_maps_lr" ] # TODO
#ProjectsToProcess += [ "ecosystems/desert" ] # TODO
#ProjectsToProcess += [ "ecosystems/lacustre" ] # TODO
#ProjectsToProcess += [ "ecosystems/primes_racines" ] # TODO
# end of file