diff --git a/code/nel/tools/build_gamedata/configuration/scripts.py b/code/nel/tools/build_gamedata/configuration/scripts.py index 774061e25..a919b89a6 100644 --- a/code/nel/tools/build_gamedata/configuration/scripts.py +++ b/code/nel/tools/build_gamedata/configuration/scripts.py @@ -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: diff --git a/code/nel/tools/build_gamedata/configuration/tools.py b/code/nel/tools/build_gamedata/configuration/tools.py index 8a1cd388f..ed3e2fbb8 100644 --- a/code/nel/tools/build_gamedata/configuration/tools.py +++ b/code/nel/tools/build_gamedata/configuration/tools.py @@ -84,3 +84,4 @@ LandExportTool = "land_export" PrimExportTool = "prim_export" IgElevationTool = "ig_elevation" IgAddTool = "ig_add" +BuildClodBankTool = "build_clod_bank" diff --git a/code/nel/tools/build_gamedata/processes/anim/1_export.py b/code/nel/tools/build_gamedata/processes/anim/1_export.py index fe6770ced..5ab68c730 100644 --- a/code/nel/tools/build_gamedata/processes/anim/1_export.py +++ b/code/nel/tools/build_gamedata/processes/anim/1_export.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/anim/2_build.py b/code/nel/tools/build_gamedata/processes/anim/2_build.py index 3cd6ead71..8b6a902bd 100644 --- a/code/nel/tools/build_gamedata/processes/anim/2_build.py +++ b/code/nel/tools/build_gamedata/processes/anim/2_build.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/anim/todo_export_maxscript b/code/nel/tools/build_gamedata/processes/anim/todo_export_maxscript deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/nel/tools/build_gamedata/processes/clodbank/0_setup.py b/code/nel/tools/build_gamedata/processes/clodbank/0_setup.py new file mode 100644 index 000000000..e28f629d9 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/clodbank/0_setup.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/clodbank/1_export.py b/code/nel/tools/build_gamedata/processes/clodbank/1_export.py new file mode 100644 index 000000000..d4da536fb --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/clodbank/1_export.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/clodbank/2_build.py b/code/nel/tools/build_gamedata/processes/clodbank/2_build.py new file mode 100644 index 000000000..8155c0e00 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/clodbank/2_build.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/clodbank/3_install.py b/code/nel/tools/build_gamedata/processes/clodbank/3_install.py new file mode 100644 index 000000000..6879f3da8 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/clodbank/3_install.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/clodbank/maxscript/clod_export.ms b/code/nel/tools/build_gamedata/processes/clodbank/maxscript/clod_export.ms index 49326a260..17c7aeb9c 100644 --- a/code/nel/tools/build_gamedata/processes/clodbank/maxscript/clod_export.ms +++ b/code/nel/tools/build_gamedata/processes/clodbank/maxscript/clod_export.ms @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/font/0_setup.py b/code/nel/tools/build_gamedata/processes/font/0_setup.py index bf61fce0e..3eb5a97fd 100644 --- a/code/nel/tools/build_gamedata/processes/font/0_setup.py +++ b/code/nel/tools/build_gamedata/processes/font/0_setup.py @@ -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 <<<") diff --git a/code/nel/tools/build_gamedata/processes/font/1_export.py b/code/nel/tools/build_gamedata/processes/font/1_export.py index 54292bec5..34089b83d 100644 --- a/code/nel/tools/build_gamedata/processes/font/1_export.py +++ b/code/nel/tools/build_gamedata/processes/font/1_export.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/font/3_install.py b/code/nel/tools/build_gamedata/processes/font/3_install.py index 55da60bed..4415c1195 100644 --- a/code/nel/tools/build_gamedata/processes/font/3_install.py +++ b/code/nel/tools/build_gamedata/processes/font/3_install.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/ig/1_export.py b/code/nel/tools/build_gamedata/processes/ig/1_export.py index 8921b2d1a..c8eb2d363 100644 --- a/code/nel/tools/build_gamedata/processes/ig/1_export.py +++ b/code/nel/tools/build_gamedata/processes/ig/1_export.py @@ -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, "") diff --git a/code/nel/tools/build_gamedata/processes/ig_light/2_build.py b/code/nel/tools/build_gamedata/processes/ig_light/2_build.py index 90b962012..c8f8a05d3 100644 --- a/code/nel/tools/build_gamedata/processes/ig_light/2_build.py +++ b/code/nel/tools/build_gamedata/processes/ig_light/2_build.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/ligo/1_export.py b/code/nel/tools/build_gamedata/processes/ligo/1_export.py index 4ae323c43..ea111fa2a 100644 --- a/code/nel/tools/build_gamedata/processes/ligo/1_export.py +++ b/code/nel/tools/build_gamedata/processes/ligo/1_export.py @@ -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() - - 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" - - if os.path.isfile(scriptDst): + 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" + + 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" ]) + 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() diff --git a/code/nel/tools/build_gamedata/processes/pacs_prim/0_setup.py b/code/nel/tools/build_gamedata/processes/pacs_prim/0_setup.py new file mode 100644 index 000000000..db68c6484 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/pacs_prim/0_setup.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/pacs_prim/1_export.py b/code/nel/tools/build_gamedata/processes/pacs_prim/1_export.py new file mode 100644 index 000000000..819f6700d --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/pacs_prim/1_export.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/pacs_prim/2_build.py b/code/nel/tools/build_gamedata/processes/pacs_prim/2_build.py new file mode 100644 index 000000000..84186d962 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/pacs_prim/2_build.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/pacs_prim/3_install.py b/code/nel/tools/build_gamedata/processes/pacs_prim/3_install.py new file mode 100644 index 000000000..abd174652 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/pacs_prim/3_install.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/pacs_prim/maxscript/pacs_prim_export.ms b/code/nel/tools/build_gamedata/processes/pacs_prim/maxscript/pacs_prim_export.ms new file mode 100644 index 000000000..0c8e5b8e0 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/pacs_prim/maxscript/pacs_prim_export.ms @@ -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 + diff --git a/code/nel/tools/build_gamedata/processes/properties/0_setup.py b/code/nel/tools/build_gamedata/processes/properties/0_setup.py new file mode 100644 index 000000000..64fb5b198 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/properties/0_setup.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/properties/1_export.py b/code/nel/tools/build_gamedata/processes/properties/1_export.py new file mode 100644 index 000000000..f494d646e --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/properties/1_export.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/properties/2_build.py b/code/nel/tools/build_gamedata/processes/properties/2_build.py new file mode 100644 index 000000000..d2d245947 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/properties/2_build.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/properties/3_install.py b/code/nel/tools/build_gamedata/processes/properties/3_install.py new file mode 100644 index 000000000..68daf1f4a --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/properties/3_install.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/ps/0_setup.py b/code/nel/tools/build_gamedata/processes/ps/0_setup.py new file mode 100644 index 000000000..54c1ee692 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/ps/0_setup.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/ps/1_export.py b/code/nel/tools/build_gamedata/processes/ps/1_export.py new file mode 100644 index 000000000..ea5ed019c --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/ps/1_export.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/ps/2_build.py b/code/nel/tools/build_gamedata/processes/ps/2_build.py new file mode 100644 index 000000000..b75c4e145 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/ps/2_build.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/ps/3_install.py b/code/nel/tools/build_gamedata/processes/ps/3_install.py new file mode 100644 index 000000000..67671d031 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/ps/3_install.py @@ -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 +# 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 . +# + +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 diff --git a/code/nel/tools/build_gamedata/processes/shape/0_setup.py b/code/nel/tools/build_gamedata/processes/shape/0_setup.py index 214067583..5183c38de 100644 --- a/code/nel/tools/build_gamedata/processes/shape/0_setup.py +++ b/code/nel/tools/build_gamedata/processes/shape/0_setup.py @@ -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) diff --git a/code/nel/tools/build_gamedata/processes/shape/1_export.py b/code/nel/tools/build_gamedata/processes/shape/1_export.py index 9ee7a3099..be3fb93e7 100644 --- a/code/nel/tools/build_gamedata/processes/shape/1_export.py +++ b/code/nel/tools/build_gamedata/processes/shape/1_export.py @@ -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" diff --git a/code/nel/tools/build_gamedata/processes/shape/2_build.py b/code/nel/tools/build_gamedata/processes/shape/2_build.py index ae2f026bb..60873e12a 100644 --- a/code/nel/tools/build_gamedata/processes/shape/2_build.py +++ b/code/nel/tools/build_gamedata/processes/shape/2_build.py @@ -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: diff --git a/code/nel/tools/build_gamedata/processes/shape/3_install.py b/code/nel/tools/build_gamedata/processes/shape/3_install.py index 6667acdac..393216e8f 100644 --- a/code/nel/tools/build_gamedata/processes/shape/3_install.py +++ b/code/nel/tools/build_gamedata/processes/shape/3_install.py @@ -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") diff --git a/code/nel/tools/build_gamedata/processes/skel/1_export.py b/code/nel/tools/build_gamedata/processes/skel/1_export.py index 32744a224..aad402658 100644 --- a/code/nel/tools/build_gamedata/processes/skel/1_export.py +++ b/code/nel/tools/build_gamedata/processes/skel/1_export.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/skel/maxscript/skel_export.ms b/code/nel/tools/build_gamedata/processes/skel/maxscript/skel_export.ms new file mode 100644 index 000000000..02cdcac38 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/skel/maxscript/skel_export.ms @@ -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 + diff --git a/code/nel/tools/build_gamedata/processes/skel/todo_export_maxscript b/code/nel/tools/build_gamedata/processes/skel/todo_export_maxscript deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/nel/tools/build_gamedata/processes/swt/1_export.py b/code/nel/tools/build_gamedata/processes/swt/1_export.py index 924ba2a6d..c65e6f793 100644 --- a/code/nel/tools/build_gamedata/processes/swt/1_export.py +++ b/code/nel/tools/build_gamedata/processes/swt/1_export.py @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/swt/maxscript/swt_export.ms b/code/nel/tools/build_gamedata/processes/swt/maxscript/swt_export.ms index 98cdb0c30..87517c831 100644 --- a/code/nel/tools/build_gamedata/processes/swt/maxscript/swt_export.ms +++ b/code/nel/tools/build_gamedata/processes/swt/maxscript/swt_export.ms @@ -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() diff --git a/code/nel/tools/build_gamedata/processes/swt/todo_export_maxscript b/code/nel/tools/build_gamedata/processes/swt/todo_export_maxscript deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/nel/tools/build_gamedata/processes/veget/1_export.py b/code/nel/tools/build_gamedata/processes/veget/1_export.py index 39e03c484..ce9179dd5 100644 --- a/code/nel/tools/build_gamedata/processes/veget/1_export.py +++ b/code/nel/tools/build_gamedata/processes/veget/1_export.py @@ -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, "") diff --git a/code/nel/tools/build_gamedata/processes/zone/2_build.py b/code/nel/tools/build_gamedata/processes/zone/2_build.py index cdbecfe12..42d033102 100644 --- a/code/nel/tools/build_gamedata/processes/zone/2_build.py +++ b/code/nel/tools/build_gamedata/processes/zone/2_build.py @@ -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) diff --git a/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py b/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py index e4792e9e6..112a3c9c7 100644 --- a/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py +++ b/code/nel/tools/build_gamedata/processes/zone_light/0_setup.py @@ -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: diff --git a/code/nel/tools/build_gamedata/processes/zone_light/2_build.py b/code/nel/tools/build_gamedata/processes/zone_light/2_build.py index dc6cccdfa..a96f4e94e 100644 --- a/code/nel/tools/build_gamedata/processes/zone_light/2_build.py +++ b/code/nel/tools/build_gamedata/processes/zone_light/2_build.py @@ -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() diff --git a/code/ryzom/tools/build_gamedata/workspace/common/construction/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/construction/directories.py new file mode 100644 index 000000000..a55f23182 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/construction/directories.py @@ -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 +# 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 . +# + + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/construction/process.py b/code/ryzom/tools/build_gamedata/workspace/common/construction/process.py new file mode 100644 index 000000000..6c4508985 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/construction/process.py @@ -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 +# 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 . +# + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_base.cfg b/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_base.cfg new file mode 100644 index 000000000..2fa378594 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_base.cfg @@ -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= ""; diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_draft.cfg b/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_draft.cfg similarity index 100% rename from code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_draft.cfg rename to code/ryzom/tools/build_gamedata/workspace/common/construction/properties_draft.cfg diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_final.cfg b/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_final.cfg similarity index 94% rename from code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_final.cfg rename to code/ryzom/tools/build_gamedata/workspace/common/construction/properties_final.cfg index ccb91159d..522c15d44 100644 --- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_final.cfg +++ b/code/ryzom/tools/build_gamedata/workspace/common/construction/properties_final.cfg @@ -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; diff --git a/code/ryzom/tools/build_gamedata/workspace/common/fauna/anim_builder.cfg b/code/ryzom/tools/build_gamedata/workspace/common/fauna/anim_builder.cfg new file mode 100644 index 000000000..08128b23e --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/fauna/anim_builder.cfg @@ -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; diff --git a/code/ryzom/tools/build_gamedata/workspace/common/fauna/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/fauna/directories.py new file mode 100644 index 000000000..ac8baa134 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/fauna/directories.py @@ -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 +# 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 . +# + + +# *** 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" diff --git a/code/ryzom/tools/build_gamedata/workspace/common/fauna/process.py b/code/ryzom/tools/build_gamedata/workspace/common/fauna/process.py new file mode 100644 index 000000000..76e2cfc32 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/fauna/process.py @@ -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 +# 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 . +# + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/fonts/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/fonts/directories.py new file mode 100644 index 000000000..7840625f8 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/fonts/directories.py @@ -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 +# 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 . +# + + +# *** 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 + diff --git a/code/ryzom/tools/build_gamedata/workspace/common/fonts/process.py b/code/ryzom/tools/build_gamedata/workspace/common/fonts/process.py new file mode 100644 index 000000000..e1e6d4824 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/fonts/process.py @@ -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 +# 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 . +# + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/interface/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/interface/directories.py index 2f92ebbc1..e733bea15 100644 --- a/code/ryzom/tools/build_gamedata/workspace/common/interface/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/common/interface/directories.py @@ -26,9 +26,15 @@ # along with this program. If not, see . # -# *** 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 *** diff --git a/code/ryzom/tools/build_gamedata/workspace/common/interface/process.py b/code/ryzom/tools/build_gamedata/workspace/common/interface/process.py index f2288f832..29585bdcd 100644 --- a/code/ryzom/tools/build_gamedata/workspace/common/interface/process.py +++ b/code/ryzom/tools/build_gamedata/workspace/common/interface/process.py @@ -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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py index 0a5d2c46a..fcd134e00 100644 --- a/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py @@ -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" diff --git a/code/ryzom/tools/build_gamedata/workspace/common/outgame/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/outgame/directories.py new file mode 100644 index 000000000..fe7618b72 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/outgame/directories.py @@ -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 +# 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 . +# + + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/outgame/process.py b/code/ryzom/tools/build_gamedata/workspace/common/outgame/process.py new file mode 100644 index 000000000..9097c3b3a --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/outgame/process.py @@ -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 +# 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 . +# + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_base.cfg b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_base.cfg new file mode 100644 index 000000000..a4ffbf3ca --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_base.cfg @@ -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= ""; diff --git a/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_draft.cfg b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_draft.cfg new file mode 100644 index 000000000..07fad2f60 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_draft.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_final.cfg b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_final.cfg new file mode 100644 index 000000000..522c15d44 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/outgame/properties_final.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sfx/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/sfx/directories.py new file mode 100644 index 000000000..5de327a3a --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sfx/directories.py @@ -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 +# 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 . +# + + +# *** 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" diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sfx/process.py b/code/ryzom/tools/build_gamedata/workspace/common/sfx/process.py new file mode 100644 index 000000000..a2f63c1ef --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sfx/process.py @@ -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 +# 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 . +# + +# *** 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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/anim_builder.cfg b/code/ryzom/tools/build_gamedata/workspace/common/sky/anim_builder.cfg new file mode 100644 index 000000000..08128b23e --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/anim_builder.cfg @@ -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; diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py index 453850db4..ba46541dd 100644 --- a/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py @@ -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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py b/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py index 84d2dac64..e68c6853e 100644 --- a/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py @@ -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 diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_base.cfg b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_base.cfg new file mode 100644 index 000000000..6b6cd9e75 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_base.cfg @@ -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= ""; diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_draft.cfg b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_draft.cfg new file mode 100644 index 000000000..07fad2f60 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_draft.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_final.cfg b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_final.cfg new file mode 100644 index 000000000..522c15d44 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/properties_final.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py index cec353865..381f6be4b 100644 --- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py @@ -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" diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py index b543cba32..b13dcfc78 100644 --- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/process.py @@ -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 + diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_base.cfg b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_base.cfg similarity index 52% rename from code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_base.cfg rename to code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_base.cfg index 4b886d584..27c73e966 100644 --- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/zone_lighter_base.cfg +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_base.cfg @@ -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 diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_draft.cfg b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_draft.cfg new file mode 100644 index 000000000..07fad2f60 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_draft.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_final.cfg b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_final.cfg new file mode 100644 index 000000000..522c15d44 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/properties_final.cfg @@ -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; + + diff --git a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py index e888b35b8..c6fbe35cf 100644 --- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py @@ -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" diff --git a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py index 18f80cfe0..babdec16f 100644 --- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py +++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py @@ -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 diff --git a/code/ryzom/tools/build_gamedata/workspace/projects.py b/code/ryzom/tools/build_gamedata/workspace/projects.py index ac4e3ab72..e04f683f6 100644 --- a/code/ryzom/tools/build_gamedata/workspace/projects.py +++ b/code/ryzom/tools/build_gamedata/workspace/projects.py @@ -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