From 0c6799898c38072ddbd8330d26663324fdf8ed80 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Mon, 30 Aug 2010 23:24:13 +0200 Subject: [PATCH] Added: #929 Added the objects build project and updated the max file batch convert script. --- .../scripts/nel_assets_png_batched.ms | 40 ++-- .../build_gamedata/configuration/scripts.py | 6 +- .../processes/anim/maxscript/anim_export.ms | 185 ++++++++++++++++++ .../build_gamedata/processes/map/2_build.py | 12 +- .../build_gamedata/processes/shape/0_setup.py | 3 + .../processes/shape/1_export.py | 49 +---- .../build_gamedata/processes/shape/2_build.py | 38 +++- .../processes/shape/3_install.py | 14 +- .../workspace/common/objects/directories.py | 93 +++++++++ .../workspace/common/objects/process.py | 77 ++++++++ .../workspace/common/sky/directories.py | 123 ++++++++++++ .../workspace/common/sky/process.py | 80 ++++++++ .../continents/newbieland/directories.py | 2 + .../ecosystems/jungle/directories.py | 32 +-- .../workspace/ecosystems/jungle/process.py | 4 + .../build_gamedata/workspace/projects.py | 2 + 16 files changed, 665 insertions(+), 95 deletions(-) create mode 100644 code/nel/tools/build_gamedata/processes/anim/maxscript/anim_export.ms create mode 100644 code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py create mode 100644 code/ryzom/tools/build_gamedata/workspace/common/objects/process.py create mode 100644 code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py create mode 100644 code/ryzom/tools/build_gamedata/workspace/common/sky/process.py diff --git a/code/nel/tools/3d/plugin_max/scripts/nel_assets_png_batched.ms b/code/nel/tools/3d/plugin_max/scripts/nel_assets_png_batched.ms index cdff0431c..76956165a 100644 --- a/code/nel/tools/3d/plugin_max/scripts/nel_assets_png_batched.ms +++ b/code/nel/tools/3d/plugin_max/scripts/nel_assets_png_batched.ms @@ -41,22 +41,32 @@ fn getAbsoluteDestination t = fn getFixedTexturePath t = ( - if (doesFileExist (getAbsoluteSource t)) then + absoluteDestination = (getAbsoluteDestination t) + if (not (doesFileExist absoluteDestination)) and (((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Batiments") != undefined) or ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories\\Vv2\\") != undefined)) then ( - if not (doesFileExist (getAbsoluteDestination t)) then + testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Accessories\\" + (getFilenameFile (filenameFromPath t)) + ".png") + if (doesFileExist testDestination) then ( - makeDir (getFilenamePath (getAbsoluteDestination t)) all:true - renameFile (getAbsoluteSource t) (getAbsoluteDestination t) - ) - if (doesFileExist (getAbsoluteDestination t)) then - ( - if (getAbsoluteDestination t) != (getAbsoluteSource t) then - ( - deleteFile (getAbsoluteSource t) - ) + absoluteDestination = testDestination ) ) - return (getAbsoluteDestination t) + if (not (doesFileExist absoluteDestination)) and (((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Batiments") != undefined) or ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories\\") != undefined)) then + ( + testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Accessories\\Vv2\\" + (getFilenameFile (filenameFromPath t)) + ".png") + if (doesFileExist testDestination) then + ( + absoluteDestination = testDestination + ) + ) + if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories\\") != undefined) then + ( + testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png") + if (doesFileExist testDestination) then + ( + absoluteDestination = testDestination + ) + ) + return absoluteDestination ) fn renameTexture t = @@ -169,12 +179,14 @@ rollout assets_png_rollout "Properties" m.delegate.ReflectionMap = undefined m.delegate.RefractionMap = undefined ) - + actionMan.executeAction 0 "40021" -- Selection: Select All actionMan.executeAction 0 "311" -- Tools: Zoom Extents All Selected actionMan.executeAction 0 "63508" -- Views: Standard Display with Maps actionMan.executeAction 0 "40043" -- Selection: Select None - + + max views redraw + return 1 ) diff --git a/code/nel/tools/build_gamedata/configuration/scripts.py b/code/nel/tools/build_gamedata/configuration/scripts.py index f85bd9117..774061e25 100644 --- a/code/nel/tools/build_gamedata/configuration/scripts.py +++ b/code/nel/tools/build_gamedata/configuration/scripts.py @@ -135,6 +135,10 @@ def copyFilesExtNoTreeIfNeeded(log, dir_source, dir_target, file_ext): files = findFiles(log, dir_source, "", file_ext) copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files) +def copyFilesExtNoSubdirIfNeeded(log, dir_source, dir_target, file_ext): + files = findFilesNoSubdir(log, dir_source, file_ext) + copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files) + def copyFilesNoTreeIfNeeded(log, dir_source, dir_target): copyFileListNoTreeIfNeeded(log, dir_source, dir_target, os.listdir(dir_source)) @@ -192,7 +196,7 @@ def findFilesNoSubdir(log, dir_where, file_ext): if fileName[-len_file_ext:].lower() == file_ext.lower(): result += [ fileName ] elif not os.path.isdir(fileFull): - printLog(log, "findFilesNoSubdir: file not dir or file?!" + filePath) + printLog(log, "findFilesNoSubdir: file not dir or file?!" + fileFull) return result def findFile(log, dir_where, file_name): diff --git a/code/nel/tools/build_gamedata/processes/anim/maxscript/anim_export.ms b/code/nel/tools/build_gamedata/processes/anim/maxscript/anim_export.ms new file mode 100644 index 000000000..ce7c83405 --- /dev/null +++ b/code/nel/tools/build_gamedata/processes/anim/maxscript/anim_export.ms @@ -0,0 +1,185 @@ +NEL3D_APPDATA_EXPORT_NODE_ANIMATION = 1423062800 + + +-- 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 anim_source_directory + files = getFiles "anim_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 + ( + nlerror ("Scanning file "+files[i]+" ...") + + try + ( + -- Output file + output = ("output_directory/"+(getFilenameFile files[i])+".anim") + + -- 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 + if (loadMaxFile files[i] quiet:true) == true then + ( + -- Unhide category + unhidecategory() + + -- Select Bip01, not very smart + if $Bip01 != undefined then + ( + select $Bip01 + + -- Always uncheck triangle pelvis + if (classof $Bip01) == Biped_Object then + ( + $Bip01.controller.figureMode = true + $Bip01.controller.trianglepelvis = false + $Bip01.controller.figureMode = false + ) + ) + + -- For each node + for node in objects do + ( + exportNodeAnmation = getappdata node NEL3D_APPDATA_EXPORT_NODE_ANIMATION + if (exportNodeAnmation != undefined) then + ( + if (exportNodeAnmation == "1") then + ( + selectmore node + + -- Is it a biped ? + if (classof node.controller) == Vertical_Horizontal_Turn then + ( + -- Always uncheck triangle pelvis + node.controller.trianglepelvis = false + ) + ) + ) + ) + + if ((selection as array).count != 0) then + ( + -- Export the animation + if (NelExportAnimation (selection as array) output false) == false then + ( + nlerror ("ERROR exporting animation "+files[i]) + ) + else + ( + nlerror ("OK "+output) + ) + ) + else + ( + -- Error + nlerror ("ERROR exporting animation: no node animated to export in file "+files[i]) + ) + ) + else + ( + -- Error + nlerror ("ERROR exporting animation: can't open the file "+files[i]) + ) + ) + else + ( + nlerror ("SKIPPED "+files[i]) + ) + ) + catch + ( + -- Error + nlerror ("ERROR error exporting animation in files " + files[i]) + ) + ) + ) + else + ( + nlerror ("WARNING no animation file in folder anim_source_directory") + ) +) +catch +( + -- Error + nlerror ("ERROR fatal error exporting animation in folder anim_source_directory") +) + +-- Bye + +resetMAXFile #noprompt +quitMAX #noPrompt +quitMAX () #noPrompt + diff --git a/code/nel/tools/build_gamedata/processes/map/2_build.py b/code/nel/tools/build_gamedata/processes/map/2_build.py index abff9ec7a..44d28979f 100644 --- a/code/nel/tools/build_gamedata/processes/map/2_build.py +++ b/code/nel/tools/build_gamedata/processes/map/2_build.py @@ -63,13 +63,13 @@ else: mkPath(log, sourcePath) destPath = ExportBuildDirectory + "/" + MapBuildDirectory mkPath(log, destPath) - files = findFiles(log, sourcePath, "", ".tga") + files = findFilesNoSubdir(log, sourcePath, ".tga") for file in files: sourceFile = sourcePath + "/" + file destFile = destPath + "/" + os.path.basename(file)[0:-len(".tga")] + ".dds" if needUpdateLogRemoveDest(log, sourceFile, destFile): subprocess.call([ ExecTimeout, str(MapsBuildTimeout), TgaToDds, sourceFile, "-o", destFile, "-m", "-r" + str(ReduceBitmapFactor) ]) - files = findFiles(log, sourcePath, "", ".png") + files = findFilesNoSubdir(log, sourcePath, ".png") for file in files: sourceFile = sourcePath + "/" + file destFile = destPath + "/" + os.path.basename(file)[0:-len(".png")] + ".dds" @@ -78,14 +78,14 @@ else: printLog(log, "") printLog(log, ">>> Build map uncompressed: copy tga, png, dds <<<") -for dir in MapSourceDirectories: +for dir in MapUncompressedSourceDirectories: sourcePath = DatabaseDirectory + "/" + dir mkPath(log, sourcePath) destPath = ExportBuildDirectory + "/" + MapBuildDirectory mkPath(log, destPath) - copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".dds") - copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".png") - copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".tga") + copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".dds") + copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".png") + copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".tga") printLog(log, ">>> Build panoply <<<") printLog(log, "********************************") 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 54c53826c..214067583 100644 --- a/code/nel/tools/build_gamedata/processes/shape/0_setup.py +++ b/code/nel/tools/build_gamedata/processes/shape/0_setup.py @@ -61,10 +61,13 @@ mkPath(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory) # Setup build directories printLog(log, ">>> Setup build directories <<<") mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory) # Setup client directories printLog(log, ">>> Setup client directories <<<") mkPath(log, ClientDataDirectory + "/" + ShapeClientDirectory) +mkPath(log, ClientDataDirectory + "/" + LightmapClientDirectory) log.close() 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 79f82c191..9ee7a3099 100644 --- a/code/nel/tools/build_gamedata/processes/shape/1_export.py +++ b/code/nel/tools/build_gamedata/processes/shape/1_export.py @@ -36,38 +36,9 @@ from process import * from tools import * from directories import * -# Todo: make a tool to verify the files :) - def getTagFileName(filePath): return os.path.split(filePath)[1] + ".tag" -def hackBigTree(): - return 0 - if EcosystemName == "jungle": - # FO_S2_big_tree is corrupt on first export... - outDirTag = ExportBuildDirectory + "/" + ShapeTagExportDirectory - outDirWithCoarse = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory - shapeName = "FO_S2_big_tree.shape" - tagName = "FO_S2_big_tree.max.tag" - hackName = "FO_S2_big_tree_hack.tag" - if os.path.exists(outDirWithCoarse + "/" + shapeName) and os.path.exists(outDirTag + "/" + tagName) and not os.path.exists(outDirTag + "/" + hackName): - printLog(log, "Removing bad export of FO_S2_big_tree") - printLog(log, "RM " + outDirWithCoarse + "/" + shapeName) - os.remove(outDirWithCoarse + "/" + shapeName) - printLog(log, "RM " + outDirTag + "/" + tagName) - os.remove(outDirTag + "/" + tagName) - printLog(log, "TAG " + outDirTag + "/" + hackName) - hackTagFile = open(outDirTag + "/" + hackName, "w") - hackTagFile.write("FO_S2_big_tree") - hackTagFile.close() - return 1 - elif os.path.exists(outDirTag + "/" + hackName) and not os.path.exists(outDirWithCoarse + "/" + shapeName) and not os.path.exists(outDirTag + "/" + tagName): - printLog(log, "Missing export of FO_S2_big_tree") - return 0 - else: - return 0 - - printLog(log, "") printLog(log, "-------") printLog(log, "--- Export shape") @@ -150,8 +121,9 @@ if MaxAvailable: subprocess.call([ ExecTimeout, str(MaxShapeExportTimeout), Max, "-U", "MAXScript", "shape_export.ms", "-q", "-mi", "-vn" ]) lSrc = open(logFile, "r") for line in lSrc: - if (len(line) > 0): - printLog(log, line.strip()) + lineStrip = line.strip() + if (len(lineStrip) > 0): + printLog(log, lineStrip) lSrc.close() os.remove(logFile) if (os.path.exists(tagFilePath)): @@ -163,19 +135,6 @@ if MaxAvailable: os.remove(scriptDst) else: printLog(log, "SKIP " + maxFilePath) -#while tagDiff > 0: -# printLog(log, "MAXSCRIPT " + scriptDst) -# subprocess.call([ Max, "-U", "MAXScript", "shape_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!") -# if not tagDiff > 0: -# tagDiff += hackBigTree() # force rerun also when big tree deleted -# if not tagDiff > 0: -# tagDiff += secondTry -# secondTry = 0 # Export clod 3dsmax printLog(log, ">>> Export character lod shape files (.clod) from Max <<<") @@ -193,6 +152,8 @@ if MaxAvailable: printLog(log, "") log.close() +if os.path.isfile("log.log"): + os.remove("log.log") shutil.move("temp_log.log", "log.log") # end of file 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 c0e158918..ae2f026bb 100644 --- a/code/nel/tools/build_gamedata/processes/shape/2_build.py +++ b/code/nel/tools/build_gamedata/processes/shape/2_build.py @@ -63,17 +63,35 @@ if ClodConfigFile != "": printLog(log, "******** TODO ********") printLog(log, "********************************") -printLog(log, ">>> LightmapOptimizer <<<") -printLog(log, "********************************") -printLog(log, "******** TODO ********") -printLog(log, "********************************") +printLog(log, ">>> Optimize lightmaps <<<") +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeTagExportDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory) +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" ]) -printLog(log, ">>> TgaToDds <<<") -printLog(log, "********************************") -printLog(log, "******** TODO ********") -printLog(log, "********************************") +printLog(log, ">>> Convert lightmaps in 16 or 8 bits <<<") +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory) +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory) +lightMapTgas = findFilesNoSubdir(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory, ".tga") +listLm8Bit = [ ] +listLm8BitFile = open(ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/list_lm_8bit.txt", "r") +for line in listLm8BitFile: + lineStrip = line.strip() + if (len(lineStrip) > 0): + listLm8Bit += [ lineStrip ] +for lightMapTga in lightMapTgas: + srcTga = ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory + "/" + lightMapTga + dstTga = ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory + "/" + lightMapTga + if needUpdateLogRemoveDest(log, srcTga, dstTga): + if lightMapTga in listLm8Bit: # THIS MAY NOT WORK, PLEASE VERIFY CONTENTS OF list_lm_8bit.txt!!! + subprocess.call([ TgaToDds, srcTga, "-o", dstTga, "-a", "tga8" ]) + else: + subprocess.call([ TgaToDds, srcTga, "-o", dstTga, "-a", "tga16" ]) -if 1: # todo: CoarseMeshTextureNames length > 0 ... +if len(CoarseMeshTextureNames) > 0: printLog(log, ">>> Build coarse meshes <<<") shapeWithCoarseMesh = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory mkPath(log, shapeWithCoarseMesh) @@ -111,6 +129,8 @@ if 1: # todo: CoarseMeshTextureNames length > 0 ... os.remove("config_generated.cfg") for tn in CoarseMeshTextureNames: subprocess.call([ TgaToDds, shapeWithCoarseMesh + "/" + tn + ".tga", "-o", shapeWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ]) +else: + printLog(log, ">>> No coarse meshes <<<") log.close() 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 3253a46fc..6667acdac 100644 --- a/code/nel/tools/build_gamedata/processes/shape/3_install.py +++ b/code/nel/tools/build_gamedata/processes/shape/3_install.py @@ -43,26 +43,26 @@ printLog(log, "-------") printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, "") +printLog(log, ">>> Install shape <<<") clientPath = ClientDataDirectory + "/" + ShapeClientDirectory mkPath(log, clientPath) - -printLog(log, ">>> Install shape <<<") mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory) copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeExportDirectory, clientPath, ".shape") mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory) copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".shape") copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".dds") -#if test "$lightmap_install_directory"; then -# mkdir $client_directory/$lightmap_install_directory 2>> log.log 2> /dev/null -# cp -u -p -R lightmap_16_bits/. $client_directory/$lightmap_install_directory 2>> log.log -#fi - mkPath(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory) copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory, clientPath, ".anim") # ls anim | grep ".anim" >> $client_directory/auto_animations_list.txt +printLog(log, ">>> Install shape lightmaps <<<") +clientPath = ClientDataDirectory + "/" + LightmapClientDirectory +mkPath(log, clientPath) +mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory) +copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory, clientPath, ".tga") + printLog(log, "") log.close() diff --git a/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py new file mode 100644 index 000000000..0a5d2c46a --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/objects/directories.py @@ -0,0 +1,93 @@ +#!/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 PATH *** + +CommonPath = "common/objects" + + +# *** SOURCE DIRECTORIES IN THE DATABASE *** + +# Shape directories +ShapeSourceDirectories = [ ] +ShapeSourceDirectories += [ "stuff/fyros/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/tryker/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/matis/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/zorai/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/generique/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/caravan/agents/accessories" ] +ShapeSourceDirectories += [ "stuff/animated_light" ] + +# Maps directories +MapSourceDirectories = [ ] +MapSourceDirectories += [ "stuff/fyros/agents/_textures/accessories" ] +MapSourceDirectories += [ "stuff/tryker/agents/_textures/accessories" ] +MapSourceDirectories += [ "stuff/matis/agents/_textures/accessories" ] +MapSourceDirectories += [ "stuff/zorai/agents/_textures/accessories" ] +MapSourceDirectories += [ "stuff/generique/agents/_textures/accessories" ] +MapSourceDirectories += [ "stuff/caravan/agents/_textures/accessories" ] + +MapUncompressedSourceDirectories = [ ] + + +# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE *** + +# Shape directories +ShapeTagExportDirectory = CommonPath + "/shape_tag" +ShapeExportDirectory = CommonPath + "/shape" +ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh" +ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized" +ShapeAnimExportDirectory = CommonPath + "/shape_anim" + + +# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE *** + +# Map directories +MapBuildDirectory = CommonPath + "/map" +MapPanoplyBuildDirectory = CommonPath + "/map_panoply" + +# Shape directories +ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded" +ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap" +ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits" + + +# *** INSTALL DIRECTORIES IN THE CLIENT DATA *** + +# Map directory +MapClientDirectory = "objects" + +# Map directory +BitmapClientDirectory = MapClientDirectory + +# Shape directory +ShapeClientDirectory = "objects" + +# Lightmap directory +LightmapClientDirectory = "objects" diff --git a/code/ryzom/tools/build_gamedata/workspace/common/objects/process.py b/code/ryzom/tools/build_gamedata/workspace/common/objects/process.py new file mode 100644 index 000000000..cdd53ce02 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/objects/process.py @@ -0,0 +1,77 @@ +#!/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 += [ "shape" ] # not fully implemented, but works for this process +ProcessToComplete += [ "map" ] # not fully implemented, but works for this process + + +# *** 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/directories.py b/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py new file mode 100644 index 000000000..453850db4 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/directories.py @@ -0,0 +1,123 @@ +#!/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 PATH *** + +CommonName = "sky" +CommonPath = "common/" + CommonName + + +# *** SOURCE DIRECTORIES IN THE DATABASE *** + +# Shape directories +ShapeSourceDirectories = [ ] +ShapeSourceDirectories += [ "sky_v2/max" ] + +# Maps directories +MapSourceDirectories = [ ] +MapSourceDirectories += [ "sky_v2/textures/textures" ] + +MapUncompressedSourceDirectories = [ ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/desert" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/forest" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/jungle" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/lacustre" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/desert" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/forest" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/jungle" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/setup/lacustre" ] +MapUncompressedSourceDirectories += [ "sky_v2/textures/textures/nodds" ] + +# Ig directories +IgLandSourceDirectories = [ ] +IgOtherSourceDirectories = [ ] +IgOtherSourceDirectories += [ "sky_v2/max" ] +IgPrimitiveSourceDirectories = [ ] + +# Animation directories +AnimSourceDirectories = [ ] +AnimSourceDirectories += [ "sky_v2/max" ] + + +# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE *** + +# Shape directories +ShapeTagExportDirectory = CommonPath + "/shape_tag" +ShapeExportDirectory = CommonPath + "/shape" +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 + + +# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE *** + +# Map directories +MapBuildDirectory = CommonPath + "/map" +MapPanoplyBuildDirectory = CommonPath + "/map_panoply" + +# Shape directories +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" + + +# *** INSTALL DIRECTORIES IN THE CLIENT DATA *** + +# Map directory +MapClientDirectory = CommonName + +# Map directory +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/sky/process.py b/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py new file mode 100644 index 000000000..84d2dac64 --- /dev/null +++ b/code/ryzom/tools/build_gamedata/workspace/common/sky/process.py @@ -0,0 +1,80 @@ +#!/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 += [ "shape" ] +ProcessToComplete += [ "map" ] +#ProcessToComplete += [ "anim" ] +#ProcessToComplete += [ "ig" ] +#ProcessToComplete += [ "ig_light" ] + + +# *** 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/continents/newbieland/directories.py b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py index 11633a34a..cec353865 100644 --- a/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/continents/newbieland/directories.py @@ -33,6 +33,8 @@ EcosystemName = "jungle" EcosystemPath = "ecosystems/" + EcosystemName ContinentName = "newbieland" ContinentPath = "continents/" + ContinentName +CommonName = ContinentName +CommonPath = ContinentPath # *** SOURCE DIRECTORIES LEVELDESIGN/WORLD *** ContinentLeveldesignWorldDirectory = ContinentName 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 f18db50b5..e888b35b8 100644 --- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py +++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/directories.py @@ -26,12 +26,14 @@ # along with this program. If not, see . # -# *** SOURCE DIRECTORIES IN THE DATABASE *** - # *** ECOSYSTEM NAME *** EcosystemName = "jungle" EcosystemPath = "ecosystems/" + EcosystemName +CommonPath = EcosystemPath + + +# *** SOURCE DIRECTORIES IN THE DATABASE *** # Shape directories ShapeSourceDirectories = [ ] @@ -147,11 +149,11 @@ PacsPrimSourceDirectories += [ "stuff/" + EcosystemName + "/decors/vegetations" # *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE *** # Shape directories -ShapeTagExportDirectory = "ecosystems/" + EcosystemName + "/shape_tag" -ShapeExportDirectory = "ecosystems/" + EcosystemName + "/shape" -ShapeWithCoarseMeshExportDirectory = "ecosystems/" + EcosystemName + "/shape_with_coarse_mesh" -ShapeLightmapNotOptimizedExportDirectory = "ecosystems/" + EcosystemName + "/shape_lightmap_not_optimized" -ShapeAnimExportDirectory = "ecosystems/" + EcosystemName + "/shape_anim" +ShapeTagExportDirectory = CommonPath + "/shape_tag" +ShapeExportDirectory = CommonPath + "/shape" +ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh" +ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized" +ShapeAnimExportDirectory = CommonPath + "/shape_anim" # Smallbank directories SmallbankExportDirectory = "ecosystems/" + EcosystemName + "/smallbank" @@ -184,11 +186,13 @@ ZoneExportDirectory = "ecosystems/" + EcosystemName + "/zone" # *** BUILD DIRECTORIES FOR THE BUILD PIPELINE *** # Map directories -MapBuildDirectory = "ecosystems/" + EcosystemName + "/map" -MapPanoplyBuildDirectory = "ecosystems/" + EcosystemName + "/map_panoply" +MapBuildDirectory = CommonPath + "/map" +MapPanoplyBuildDirectory = CommonPath + "/map_panoply" # Shape directories -ShapeWithCoarseMeshBuildDirectory = "ecosystems/" + EcosystemName + "/shape_with_coarse_mesh_builded" +ShapeWithCoarseMeshBuildDirectory = CommonPath + "/shape_with_coarse_mesh_builded" +ShapeLightmapBuildDirectory = CommonPath + "/shape_lightmap" +ShapeLightmap16BitsBuildDirectory = CommonPath + "/shape_lightmap_16_bits" # Farbank directories FarbankBuildDirectory = "ecosystems/" + EcosystemName + "/farbank" @@ -218,15 +222,15 @@ ClientSetupDirectories += [ "jungle_vegetable_sets" ] ClientSetupDirectories += [ "jungle_pacs_prim" ] ClientSetupDirectories += [ "jungle_lightmaps" ] -# Shape directory +# Map directory MapClientDirectory = "jungle_maps" +# Map directory +BitmapClientDirectory = MapClientDirectory + # Shape directory ShapeClientDirectory = "jungle_shapes" -# Map directory -BitmapClientDirectory = "jungle_maps" - # Lightmap directory LightmapClientDirectory = "jungle_lightmaps" 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 ddd54fadf..18f80cfe0 100644 --- a/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py +++ b/code/ryzom/tools/build_gamedata/workspace/ecosystems/jungle/process.py @@ -69,6 +69,10 @@ ShapeExportOptLightmapLog = "false" # Coarse mesh texture mul size TextureMulSizeValue = "1.5" +DoBuildShadowSkin = 0 + +ClodConfigFile = "" + # *** COARSE MESH TEXTURE NAME *** CoarseMeshTextureNames = [ ] CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_sp" ] diff --git a/code/ryzom/tools/build_gamedata/workspace/projects.py b/code/ryzom/tools/build_gamedata/workspace/projects.py index 82b2f286d..ac4e3ab72 100644 --- a/code/ryzom/tools/build_gamedata/workspace/projects.py +++ b/code/ryzom/tools/build_gamedata/workspace/projects.py @@ -27,6 +27,8 @@ ProjectsToProcess = [ ] ProjectsToProcess += [ "common/interface" ] +ProjectsToProcess += [ "common/objects" ] +ProjectsToProcess += [ "common/sky" ] ProjectsToProcess += [ "ecosystems/jungle" ] ProjectsToProcess += [ "continents/newbieland" ]