Project1
标题:
关于生成游戏时的简便方法
[打印本页]
作者:
戴拿
时间:
2012-2-25 22:11
标题:
关于生成游戏时的简便方法
之前做游戏的时候为了简便,每次都为了方便而把原安装目录下的所有素材(20M)直接复制到工程所在的文件夹,这样每次的文件都很大(实际上一个2M的游戏被放大成了20M)。
请问一下高手们,有没有什么办法能够自动地把要的素材添加到工程的Audio、Graphics文件夹,而其他的都不添加?
是不是只能在边做游戏的时候边导入所需的材料或是全部做好后把所有素材复制粘贴再把不用的删除?
PS:搜索过了一些帖子,好像没找的关于简便方法的。。。(可能是搜索的方法不对。。。) dsu_plus_rewardpost_czw
作者:
Wind2010
时间:
2012-2-25 22:16
实在不行就按照LZ你说的这样吧
如果嫌麻烦可以试试用以下脚本,作用是把游戏中有用到的文件「的名字」提取出来,应该没什么用……
$animations = []
$autotiles = []
$battlebacks = []
$battlers = []
$characters = []
$fogs = []
$gameovers = []
$icons = []
$panoramas = []
$pictures = []
$tilesets = []
$titles = []
$transitions = []
$windowskins = []
$bgm = []
$bgs = []
$me = []
$se = []
$s_t = Time.new
$u_t = $s_t
$xs = Sprite.new
$xs.bitmap = Bitmap.new(640,480)
def p_bmp(kind,name)
if name.is_a?(RPG::AudioFile)
name = name.name
end
return if name == ""
kind.push(name) unless kind.include?(name)
if Time.new-$u_t>=1
Graphics.update
$u_t = Time.new
end
end
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取数据库",2)
if FileTest.exist?("Data/Actors.rxdata")
data = load_data("Data/Actors.rxdata")
for i in data
next if i.nil?
p_bmp($characters,i.character_name)
p_bmp($battlers,i.battler_name)
end
end
if FileTest.exist?("Data/Animations.rxdata")
data = load_data("Data/Animations.rxdata")
for i in data
next if i.nil?
p_bmp($animations,i.animation_name)
for j in i.timings
p_bmp($se,j.se)
end
end
end
for sz in ["Data/Armors.rxdata","Data/Armors.rxdata","Data/Items.rxdata","Data/Skills.rxdata"]
if FileTest.exist?(sz)
data = load_data(sz)
for i in data
next if i.nil?
p_bmp($icons,i.icon_name)
end
end
end
if FileTest.exist?("Data/Enemies.rxdata")
data = load_data("Data/Enemies.rxdata")
for i in data
next if i.nil?
p_bmp($battlers,i.battler_name)
end
end
if FileTest.exist?("Data/System.rxdata")
i = load_data("Data/System.rxdata")
p_bmp($windowskins,i.windowskin_name)
p_bmp($titles,i.title_name)
p_bmp($gameovers,i.gameover_name)
p_bmp($transitions,i.battle_transition)
p_bmp($bgm,i.title_bgm)
p_bmp($bgm,i.battle_bgm)
p_bmp($me,i.battle_end_me)
p_bmp($me,i.gameover_me)
p_bmp($se,i.cursor_se)
p_bmp($se,i.decision_se)
p_bmp($se,i.cancel_se)
p_bmp($se,i.buzzer_se)
p_bmp($se,i.equip_se)
p_bmp($se,i.shop_se)
p_bmp($se,i.save_se)
p_bmp($se,i.load_se)
p_bmp($se,i.battle_start_se)
p_bmp($se,i.escape_se)
p_bmp($se,i.actor_collapse_se)
p_bmp($se,i.enemy_collapse_se)
end
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取地图",1)
if FileTest.exist?("Data/Tilesets.rxdata")
@t = load_data("Data/Tilesets.rxdata")
end
for i in 1...999
name = sprintf("Data/Map%03d.rxdata",i)
if FileTest.exist?(name)
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取地图-"+i.to_s,1)
data = load_data(name)
p_bmp($bgm,data.bgm)
p_bmp($bgs,data.bgs)
t_id = data.tileset_id
t = @t[t_id]
p_bmp($tilesets,t.tileset_name)
p_bmp($panoramas,t.panorama_name)
p_bmp($fogs,t.fog_name)
p_bmp($battlebacks,t.battleback_name)
for j in t.autotile_names
p_bmp($autotiles,j)
end
for j in data.events.keys
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取地图-"+i.to_s+"-"+j.to_s,1)
event_id = j
event = data.events[j]
for page in event.pages
p_bmp($characters,page.graphic.character_name)
for com in page.list
case com.code
when 131 #更改窗口
p_bmp($windowskins,com.parameters[0])
when 132 #更改战斗BGM
p_bmp($bgm,com.parameters[0])
when 133 #更改战斗结束ME
p_bmp($me,com.parameters[0])
when 222 #渐变
p_bmp($transitions,com.parameters[0])
when 231 #显示图片
p_bmp($pictures,com.parameters[1])
when 241 #演奏BGM
p_bmp($bgm,com.parameters[0])
when 245 #演奏BGS
p_bmp($bgs,com.parameters[0])
when 249 #演奏ME
p_bmp($me,com.parameters[0])
when 250 #演奏SE
p_bmp($se,com.parameters[0])
when 322 #更改行走图
p_bmp($characters,com.parameters[1])
when 204 #更改地图设置
case com.parameters[0]
when 0
p_bmp($panoramas,com.parameters[1])
when 1
p_bmp($fogs,com.parameters[1])
when 2
p_bmp($battlebacks,com.parameters[1])
end
when 209 #设置移动路线
for xd in com.parameters[1].list
if xd.code == 41
p_bmp($characters,xd.parameters[0])
elsif xd.code == 44
p_bmp($se,xd.parameters[0])
end
end
end
end
end
end
end
end
if FileTest.exist?("Data/Troops.rxdata")
data = load_data("Data/Troops.rxdata")
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取队伍",1)
for i in data
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取队伍-"+i.to_s,1)
next if i.nil?
event = i.pages
for j in event
for com in j.list
case com.code
when 131 #更改窗口
p_bmp($windowskins,com.parameters[0])
when 132 #更改战斗BGM
p_bmp($bgm,com.parameters[0])
when 133 #更改战斗结束ME
p_bmp($me,com.parameters[0])
when 222 #渐变
p_bmp($transitions,com.parameters[0])
when 231 #显示图片
p_bmp($pictures,com.parameters[1])
when 241 #演奏BGM
p_bmp($bgm,com.parameters[0])
when 245 #演奏BGS
p_bmp($bgs,com.parameters[0])
when 249 #演奏ME
p_bmp($me,com.parameters[0])
when 250 #演奏SE
p_bmp($se,com.parameters[0])
when 322 #更改行走图
p_bmp($characters,com.parameters[1])
when 204 #更改地图设置
case com.parameters[0]
when 0
p_bmp($panoramas,com.parameters[1])
when 1
p_bmp($fogs,com.parameters[1])
when 2
p_bmp($battlebacks,com.parameters[1])
end
when 209 #设置移动路线
for xd in com.parameters[1].list
if xd.code == 41
p_bmp($characters,xd.parameters[0])
elsif xd.code == 44
p_bmp($se,xd.parameters[0])
end
end
end
end
end
end
end
if FileTest.exist?("Data/CommonEvents.rxdata")
data = load_data("Data/CommonEvents.rxdata")
$xs.bitmap.clear
$xs.bitmap.draw_text(0,0,640,480,"提取公共事件",1)
for c_event in data
next if c_event.nil?
for com in c_event.list
case com.code
when 131 #更改窗口
p_bmp($windowskins,com.parameters[0])
when 132 #更改战斗BGM
p_bmp($bgm,com.parameters[0])
when 133 #更改战斗结束ME
p_bmp($me,com.parameters[0])
when 222 #渐变
p_bmp($transitions,com.parameters[0])
when 231 #显示图片
p_bmp($pictures,com.parameters[1])
when 241 #演奏BGM
p_bmp($bgm,com.parameters[0])
when 245 #演奏BGS
p_bmp($bgs,com.parameters[0])
when 249 #演奏ME
p_bmp($me,com.parameters[0])
when 250 #演奏SE
p_bmp($se,com.parameters[0])
when 322 #更改行走图
p_bmp($characters,com.parameters[1])
when 204 #更改地图设置
case com.parameters[0]
when 0
p_bmp($panoramas,com.parameters[1])
when 1
p_bmp($fogs,com.parameters[1])
when 2
p_bmp($battlebacks,com.parameters[1])
end
when 209 #设置移动路线
for xd in com.parameters[1].list
if xd.code == 41
p_bmp($characters,xd.parameters[0])
elsif xd.code == 44
p_bmp($se,xd.parameters[0])
end
end
end
end
end
end
#p $characters,$se
#p Time.new - $s_t;exit
text = "动画素材:\n"
for i in $animations
text += i
text += "\n"
end
text += "\n自动元件:\n"
for i in $autotiles
text += i
text += "\n"
end
text += "\n战斗背景:\n"
for i in $battlebacks
text += i
text += "\n"
end
text += "\n战斗图:\n"
for i in $battlers
text += i
text += "\n"
end
text += "\n行走图:\n"
for i in $characters
text += i
text += "\n"
end
text += "\n雾图形:\n"
for i in $fogs
text += i
text += "\n"
end
text += "\n游戏结束:\n"
for i in $gameovers
text += i
text += "\n"
end
text += "\n图标:\n"
for i in $icons
text += i
text += "\n"
end
text += "\n地图背景:\n"
for i in $panoramas
text += i
text += "\n"
end
text += "\n图片:\n"
for i in $pictures
text += i
text += "\n"
end
text += "\n地图图块:\n"
for i in $tilesets
text += i
text += "\n"
end
text += "\n标题:\n"
for i in $titles
text += i
text += "\n"
end
text += "\n渐变图形:\n"
for i in $transitions
text += i
text += "\n"
end
text += "\n窗口图形:\n"
for i in $windowskins
text += i
text += "\n"
end
text += "\nBGM:\n"
for i in $bgm
text += i
text += "\n"
end
text += "\nBGS:\n"
for i in $bgs
text += i
text += "\n"
end
text += "\nME:\n"
for i in $me
text += i
text += "\n"
end
text += "\nSE:\n"
for i in $se
text += i
text += "\n"
end
t = Time.new - $s_t
l_text = "本次输出用时" + t.to_s + "秒,欢迎使用。"
text += l_text
f = open("text.txt","w")
f.write(text)
f.close
print "本次输出用时"+t.to_s+"秒,欢迎使用。";exit
复制代码
作者:
戴拿
时间:
2012-2-25 22:30
好长(不过好像不算太长。。。)
我还是新手中的新手。。。
脚本什么的还不懂哇。。。(我等会儿去试试。。。)
一般做的时候是不是还是要按部就班的做一点导入一点?
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1