Added: #929 Added the objects build project and updated the max file batch convert script.

This commit is contained in:
kaetemi 2010-08-30 23:24:13 +02:00
parent ad51d50449
commit 42aa859245
16 changed files with 665 additions and 95 deletions

View file

@ -41,22 +41,32 @@ fn getAbsoluteDestination t =
fn getFixedTexturePath 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 absoluteDestination = testDestination
renameFile (getAbsoluteSource t) (getAbsoluteDestination t)
)
if (doesFileExist (getAbsoluteDestination t)) then
(
if (getAbsoluteDestination t) != (getAbsoluteSource t) then
(
deleteFile (getAbsoluteSource 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
) )
return (getAbsoluteDestination t) )
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 = fn renameTexture t =
@ -175,6 +185,8 @@ rollout assets_png_rollout "Properties"
actionMan.executeAction 0 "63508" -- Views: Standard Display with Maps actionMan.executeAction 0 "63508" -- Views: Standard Display with Maps
actionMan.executeAction 0 "40043" -- Selection: Select None actionMan.executeAction 0 "40043" -- Selection: Select None
max views redraw
return 1 return 1
) )

View file

@ -135,6 +135,10 @@ def copyFilesExtNoTreeIfNeeded(log, dir_source, dir_target, file_ext):
files = findFiles(log, dir_source, "", file_ext) files = findFiles(log, dir_source, "", file_ext)
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, files) 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): def copyFilesNoTreeIfNeeded(log, dir_source, dir_target):
copyFileListNoTreeIfNeeded(log, dir_source, dir_target, os.listdir(dir_source)) 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(): if fileName[-len_file_ext:].lower() == file_ext.lower():
result += [ fileName ] result += [ fileName ]
elif not os.path.isdir(fileFull): 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 return result
def findFile(log, dir_where, file_name): def findFile(log, dir_where, file_name):

View file

@ -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

View file

@ -63,13 +63,13 @@ else:
mkPath(log, sourcePath) mkPath(log, sourcePath)
destPath = ExportBuildDirectory + "/" + MapBuildDirectory destPath = ExportBuildDirectory + "/" + MapBuildDirectory
mkPath(log, destPath) mkPath(log, destPath)
files = findFiles(log, sourcePath, "", ".tga") files = findFilesNoSubdir(log, sourcePath, ".tga")
for file in files: for file in files:
sourceFile = sourcePath + "/" + file sourceFile = sourcePath + "/" + file
destFile = destPath + "/" + os.path.basename(file)[0:-len(".tga")] + ".dds" destFile = destPath + "/" + os.path.basename(file)[0:-len(".tga")] + ".dds"
if needUpdateLogRemoveDest(log, sourceFile, destFile): if needUpdateLogRemoveDest(log, sourceFile, destFile):
subprocess.call([ ExecTimeout, str(MapsBuildTimeout), TgaToDds, sourceFile, "-o", destFile, "-m", "-r" + str(ReduceBitmapFactor) ]) 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: for file in files:
sourceFile = sourcePath + "/" + file sourceFile = sourcePath + "/" + file
destFile = destPath + "/" + os.path.basename(file)[0:-len(".png")] + ".dds" destFile = destPath + "/" + os.path.basename(file)[0:-len(".png")] + ".dds"
@ -78,14 +78,14 @@ else:
printLog(log, "") printLog(log, "")
printLog(log, ">>> Build map uncompressed: copy tga, png, dds <<<") printLog(log, ">>> Build map uncompressed: copy tga, png, dds <<<")
for dir in MapSourceDirectories: for dir in MapUncompressedSourceDirectories:
sourcePath = DatabaseDirectory + "/" + dir sourcePath = DatabaseDirectory + "/" + dir
mkPath(log, sourcePath) mkPath(log, sourcePath)
destPath = ExportBuildDirectory + "/" + MapBuildDirectory destPath = ExportBuildDirectory + "/" + MapBuildDirectory
mkPath(log, destPath) mkPath(log, destPath)
copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".dds") copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".dds")
copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".png") copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".png")
copyFilesExtNoTreeIfNeeded(log, sourcePath, destPath, ".tga") copyFilesExtNoSubdirIfNeeded(log, sourcePath, destPath, ".tga")
printLog(log, ">>> Build panoply <<<") printLog(log, ">>> Build panoply <<<")
printLog(log, "********************************") printLog(log, "********************************")

View file

@ -61,10 +61,13 @@ mkPath(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory)
# Setup build directories # Setup build directories
printLog(log, ">>> Setup build directories <<<") printLog(log, ">>> Setup build directories <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory)
# Setup client directories # Setup client directories
printLog(log, ">>> Setup client directories <<<") printLog(log, ">>> Setup client directories <<<")
mkPath(log, ClientDataDirectory + "/" + ShapeClientDirectory) mkPath(log, ClientDataDirectory + "/" + ShapeClientDirectory)
mkPath(log, ClientDataDirectory + "/" + LightmapClientDirectory)
log.close() log.close()

View file

@ -36,38 +36,9 @@ from process import *
from tools import * from tools import *
from directories import * from directories import *
# Todo: make a tool to verify the files :)
def getTagFileName(filePath): def getTagFileName(filePath):
return os.path.split(filePath)[1] + ".tag" 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, "-------") printLog(log, "-------")
printLog(log, "--- Export shape") printLog(log, "--- Export shape")
@ -150,8 +121,9 @@ if MaxAvailable:
subprocess.call([ ExecTimeout, str(MaxShapeExportTimeout), Max, "-U", "MAXScript", "shape_export.ms", "-q", "-mi", "-vn" ]) subprocess.call([ ExecTimeout, str(MaxShapeExportTimeout), Max, "-U", "MAXScript", "shape_export.ms", "-q", "-mi", "-vn" ])
lSrc = open(logFile, "r") lSrc = open(logFile, "r")
for line in lSrc: for line in lSrc:
if (len(line) > 0): lineStrip = line.strip()
printLog(log, line.strip()) if (len(lineStrip) > 0):
printLog(log, lineStrip)
lSrc.close() lSrc.close()
os.remove(logFile) os.remove(logFile)
if (os.path.exists(tagFilePath)): if (os.path.exists(tagFilePath)):
@ -163,19 +135,6 @@ if MaxAvailable:
os.remove(scriptDst) os.remove(scriptDst)
else: else:
printLog(log, "SKIP " + maxFilePath) 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 # Export clod 3dsmax
printLog(log, ">>> Export character lod shape files (.clod) from Max <<<") printLog(log, ">>> Export character lod shape files (.clod) from Max <<<")
@ -193,6 +152,8 @@ if MaxAvailable:
printLog(log, "") printLog(log, "")
log.close() log.close()
if os.path.isfile("log.log"):
os.remove("log.log")
shutil.move("temp_log.log", "log.log") shutil.move("temp_log.log", "log.log")
# end of file # end of file

View file

@ -63,17 +63,35 @@ if ClodConfigFile != "":
printLog(log, "******** TODO ********") printLog(log, "******** TODO ********")
printLog(log, "********************************") printLog(log, "********************************")
printLog(log, ">>> LightmapOptimizer <<<") printLog(log, ">>> Optimize lightmaps <<<")
printLog(log, "********************************") mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapNotOptimizedExportDirectory)
printLog(log, "******** TODO ********") mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
printLog(log, "********************************") 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, ">>> Convert lightmaps in 16 or 8 bits <<<")
printLog(log, "********************************") mkPath(log, ExportBuildDirectory + "/" + ShapeLightmapBuildDirectory)
printLog(log, "******** TODO ********") mkPath(log, ExportBuildDirectory + "/" + ShapeLightmap16BitsBuildDirectory)
printLog(log, "********************************") 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 <<<") printLog(log, ">>> Build coarse meshes <<<")
shapeWithCoarseMesh = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory shapeWithCoarseMesh = ExportBuildDirectory + "/" + ShapeWithCoarseMeshExportDirectory
mkPath(log, shapeWithCoarseMesh) mkPath(log, shapeWithCoarseMesh)
@ -111,6 +129,8 @@ if 1: # todo: CoarseMeshTextureNames length > 0 ...
os.remove("config_generated.cfg") os.remove("config_generated.cfg")
for tn in CoarseMeshTextureNames: for tn in CoarseMeshTextureNames:
subprocess.call([ TgaToDds, shapeWithCoarseMesh + "/" + tn + ".tga", "-o", shapeWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ]) subprocess.call([ TgaToDds, shapeWithCoarseMesh + "/" + tn + ".tga", "-o", shapeWithCoarseMeshBuilded + "/" + tn + ".dds", "-a", "5" ])
else:
printLog(log, ">>> No coarse meshes <<<")
log.close() log.close()

View file

@ -43,26 +43,26 @@ printLog(log, "-------")
printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time()))) printLog(log, time.strftime("%Y-%m-%d %H:%MGMT", time.gmtime(time.time())))
printLog(log, "") printLog(log, "")
printLog(log, ">>> Install shape <<<")
clientPath = ClientDataDirectory + "/" + ShapeClientDirectory clientPath = ClientDataDirectory + "/" + ShapeClientDirectory
mkPath(log, clientPath) mkPath(log, clientPath)
printLog(log, ">>> Install shape <<<")
mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory) mkPath(log, ExportBuildDirectory + "/" + ShapeExportDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeExportDirectory, clientPath, ".shape") copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeExportDirectory, clientPath, ".shape")
mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory) mkPath(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".shape") copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".shape")
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeWithCoarseMeshBuildDirectory, clientPath, ".dds") 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) mkPath(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory)
copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory, clientPath, ".anim") copyFilesExtNoTreeIfNeeded(log, ExportBuildDirectory + "/" + ShapeAnimExportDirectory, clientPath, ".anim")
# ls anim | grep ".anim" >> $client_directory/auto_animations_list.txt # 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, "") printLog(log, "")
log.close() log.close()

View file

@ -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 <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON 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"

View file

@ -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 <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "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

View file

@ -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 <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** COMMON 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

View file

@ -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 <http://dev.ryzom.com/projects/nel/>
# Copyright (C) 2010 Winch Gate Property Limited
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# *** PROCESS CONFIGURATION ***
# *** PROCESS CONFIG ***
ProcessToComplete = [ ]
ProcessToComplete += [ "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

View file

@ -33,6 +33,8 @@ EcosystemName = "jungle"
EcosystemPath = "ecosystems/" + EcosystemName EcosystemPath = "ecosystems/" + EcosystemName
ContinentName = "newbieland" ContinentName = "newbieland"
ContinentPath = "continents/" + ContinentName ContinentPath = "continents/" + ContinentName
CommonName = ContinentName
CommonPath = ContinentPath
# *** SOURCE DIRECTORIES LEVELDESIGN/WORLD *** # *** SOURCE DIRECTORIES LEVELDESIGN/WORLD ***
ContinentLeveldesignWorldDirectory = ContinentName ContinentLeveldesignWorldDirectory = ContinentName

View file

@ -26,12 +26,14 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# *** ECOSYSTEM NAME *** # *** ECOSYSTEM NAME ***
EcosystemName = "jungle" EcosystemName = "jungle"
EcosystemPath = "ecosystems/" + EcosystemName EcosystemPath = "ecosystems/" + EcosystemName
CommonPath = EcosystemPath
# *** SOURCE DIRECTORIES IN THE DATABASE ***
# Shape directories # Shape directories
ShapeSourceDirectories = [ ] ShapeSourceDirectories = [ ]
@ -147,11 +149,11 @@ PacsPrimSourceDirectories += [ "stuff/" + EcosystemName + "/decors/vegetations"
# *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE *** # *** EXPORT DIRECTORIES FOR THE BUILD PIPELINE ***
# Shape directories # Shape directories
ShapeTagExportDirectory = "ecosystems/" + EcosystemName + "/shape_tag" ShapeTagExportDirectory = CommonPath + "/shape_tag"
ShapeExportDirectory = "ecosystems/" + EcosystemName + "/shape" ShapeExportDirectory = CommonPath + "/shape"
ShapeWithCoarseMeshExportDirectory = "ecosystems/" + EcosystemName + "/shape_with_coarse_mesh" ShapeWithCoarseMeshExportDirectory = CommonPath + "/shape_with_coarse_mesh"
ShapeLightmapNotOptimizedExportDirectory = "ecosystems/" + EcosystemName + "/shape_lightmap_not_optimized" ShapeLightmapNotOptimizedExportDirectory = CommonPath + "/shape_lightmap_not_optimized"
ShapeAnimExportDirectory = "ecosystems/" + EcosystemName + "/shape_anim" ShapeAnimExportDirectory = CommonPath + "/shape_anim"
# Smallbank directories # Smallbank directories
SmallbankExportDirectory = "ecosystems/" + EcosystemName + "/smallbank" SmallbankExportDirectory = "ecosystems/" + EcosystemName + "/smallbank"
@ -184,11 +186,13 @@ ZoneExportDirectory = "ecosystems/" + EcosystemName + "/zone"
# *** BUILD DIRECTORIES FOR THE BUILD PIPELINE *** # *** BUILD DIRECTORIES FOR THE BUILD PIPELINE ***
# Map directories # Map directories
MapBuildDirectory = "ecosystems/" + EcosystemName + "/map" MapBuildDirectory = CommonPath + "/map"
MapPanoplyBuildDirectory = "ecosystems/" + EcosystemName + "/map_panoply" MapPanoplyBuildDirectory = CommonPath + "/map_panoply"
# Shape directories # 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 # Farbank directories
FarbankBuildDirectory = "ecosystems/" + EcosystemName + "/farbank" FarbankBuildDirectory = "ecosystems/" + EcosystemName + "/farbank"
@ -218,15 +222,15 @@ ClientSetupDirectories += [ "jungle_vegetable_sets" ]
ClientSetupDirectories += [ "jungle_pacs_prim" ] ClientSetupDirectories += [ "jungle_pacs_prim" ]
ClientSetupDirectories += [ "jungle_lightmaps" ] ClientSetupDirectories += [ "jungle_lightmaps" ]
# Shape directory # Map directory
MapClientDirectory = "jungle_maps" MapClientDirectory = "jungle_maps"
# Map directory
BitmapClientDirectory = MapClientDirectory
# Shape directory # Shape directory
ShapeClientDirectory = "jungle_shapes" ShapeClientDirectory = "jungle_shapes"
# Map directory
BitmapClientDirectory = "jungle_maps"
# Lightmap directory # Lightmap directory
LightmapClientDirectory = "jungle_lightmaps" LightmapClientDirectory = "jungle_lightmaps"

View file

@ -69,6 +69,10 @@ ShapeExportOptLightmapLog = "false"
# Coarse mesh texture mul size # Coarse mesh texture mul size
TextureMulSizeValue = "1.5" TextureMulSizeValue = "1.5"
DoBuildShadowSkin = 0
ClodConfigFile = ""
# *** COARSE MESH TEXTURE NAME *** # *** COARSE MESH TEXTURE NAME ***
CoarseMeshTextureNames = [ ] CoarseMeshTextureNames = [ ]
CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_sp" ] CoarseMeshTextureNames += [ "nel_coarse_mesh_jungle_sp" ]

View file

@ -27,6 +27,8 @@
ProjectsToProcess = [ ] ProjectsToProcess = [ ]
ProjectsToProcess += [ "common/interface" ] ProjectsToProcess += [ "common/interface" ]
ProjectsToProcess += [ "common/objects" ]
ProjectsToProcess += [ "common/sky" ]
ProjectsToProcess += [ "ecosystems/jungle" ] ProjectsToProcess += [ "ecosystems/jungle" ]
ProjectsToProcess += [ "continents/newbieland" ] ProjectsToProcess += [ "continents/newbieland" ]