设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: ⑨姐姐
打印 上一主题 下一主题

[原创发布] 【RGD】使用 DirectX 驱动的 RMVA Game.exe(v1.6)

  [复制链接]

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

21
发表于 2018-5-5 21:49:30 | 只看该作者
系统是win10x64

同17楼,工程是空的工程然后加上了几个小事件,已经替换调了301,修改了Game.ini,然后放着不动大概10s左右就卡住了,然后程序崩溃。

我又把 Game.exe 换成默认的。更换之后,现在无论是双击exe,或者工程打开后F12运行,都会提示没有安装VL Gothic 字体

点评

VL Gothic字体可能是英文版RM那个Game的默认字体吧,可以设置Font.default_name应该就解决了。  发表于 2018-5-7 08:24
可以试试多次播放动画,我猜测是载入文件拖慢了速度……  发表于 2018-5-7 08:23
目测应该甩锅给这GT520M的显卡  发表于 2018-5-7 00:38
天气渐变闪烁都OK,但放动画的时候,帧率会下降到45然后很快恢复,用的是默认的放射线动画  发表于 2018-5-7 00:35
辛苦了姐姐⑨~之前的崩溃已经OK了,测试了一下分辨率扩张,效果令人窒息!  发表于 2018-5-7 00:28
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

梦石
0
星屑
2300
在线时间
5538 小时
注册时间
2011-1-10
帖子
6619

青铜编剧史诗剧作家剧作品鉴家

22
发表于 2018-5-5 22:16:22 | 只看该作者
感觉拿来做黄油会有非同寻常的效果
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

梦石
1
星屑
20306
在线时间
4876 小时
注册时间
2014-12-22
帖子
1525

开拓者

23
发表于 2018-5-5 22:41:35 | 只看该作者
还有法线?这有点太强了吧
以后开新坑的时候会试试~(旧坑因为塞了很多脚本搞不动兼容问题还是不动了XD
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1774
在线时间
950 小时
注册时间
2012-7-5
帖子
245
24
发表于 2018-5-6 10:34:42 | 只看该作者
本帖最后由 浮云半仙 于 2018-5-6 10:49 编辑

(火钳后排刘明)
在vs里面改下设置,工具链用比如msvc14_xp编译出来的可以在winxp上跑
d3d⑨应该是是需要经常check capability看看显卡+运行时是否资瓷某个接口,否则大概就会炸?(d3d11大法好(逃

点评

感谢建议  发表于 2018-5-6 10:54
tan(pi/2)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6145
在线时间
791 小时
注册时间
2017-9-27
帖子
17
25
发表于 2018-5-6 11:00:49 | 只看该作者
碉堡了 划时代的产物
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
20915
在线时间
9331 小时
注册时间
2012-6-19
帖子
7105

开拓者短篇九导演组冠军

26
发表于 2018-5-6 13:33:06 | 只看该作者
期望有更新日志……
还是更新只是修bug?

点评

不是全算到左键吧……比如6就是中键或右键  发表于 2018-5-6 15:40
所以Mouse.up? 的参数传非1/2/4的值全算到鼠标左键是什么鬼。。。  发表于 2018-5-6 15:07
只是修bug……如果之后加了功能会写日志的  发表于 2018-5-6 14:47
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
5
星屑
3038
在线时间
612 小时
注册时间
2012-11-12
帖子
482

开拓者

27
发表于 2018-5-7 00:53:39 | 只看该作者
⑨姐姐是世界上最好的姐姐,黄鸡哥哥是最好的哥哥
向诸位造轮者表示感谢
回复 支持 反对

使用道具 举报

Lv2.观梦者

仙木精灵

梦石
0
星屑
651
在线时间
215 小时
注册时间
2012-4-16
帖子
502
28
发表于 2018-5-7 15:31:30 | 只看该作者
画面变得更精致了,棒棒哒
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7495
在线时间
1152 小时
注册时间
2016-9-10
帖子
165

开拓者

29
发表于 2018-5-7 19:58:58 | 只看该作者
这次好了,不会崩了
但有个新的问题
我用了一个视频格式扩展脚本,现在这个版本会跳过视频播放(不播放视频),以前的版本并没有这个问题

以下是我用的视频格式扩展脚本

另外想问题个问题:就是SV100多人战斗,并显示武器画面会卡顿很明显的问题,以后会优化吗?谢谢

RUBY 代码复制
  1. =begin
  2.  ■ RGDS_SP ver 0.0.1.2
  3.  動画再生スクリプト(表示系)for VX Ace
  4.  動画再生スクリプト(ベース)より下に配置してください。
  5.  
  6. =end
  7.  
  8.  
  9.  
  10.  
  11. module RGDS_SP
  12.   @@visible = false
  13.  
  14.   # ■ 動画設定クラス $game_system.movie_infoで使用
  15.   class MovieInfo
  16.     attr_reader :x
  17.     attr_reader :y
  18.     attr_reader :z
  19.     attr_reader :width_max
  20.     attr_reader :height_max
  21.     attr_reader :origin_center
  22.     attr_accessor :mode
  23.     attr_accessor :refresh_flag
  24.     def initialize
  25.       @x = Graphics.width / 2
  26.       @y = Graphics.height / 2
  27.       @z = 500
  28.       @width_max  = 0
  29.       @height_max = 0
  30.       @origin_center = true
  31.       @mode = 0
  32.       @refresh_flag = false
  33.     end
  34.  
  35.     # セッター
  36.     def x=(n)
  37.       @x = n
  38.       @refresh_flag = true
  39.     end
  40.     def y=(n)
  41.       @y = n
  42.       @refresh_flag = true
  43.     end
  44.     def z=(n)
  45.       @z = n
  46.       @refresh_flag = true
  47.     end
  48.     def width_max=(n)
  49.       @width_max = n
  50.       @refresh_flag = true
  51.     end
  52.     def width_max=(n)
  53.       @width_max = n
  54.       @refresh_flag = true
  55.     end
  56.     def origin_center=(flag)
  57.       @origin_center = flag
  58.       @refresh_flag = true
  59.     end
  60.  
  61.     # ■ 表示位置、サイズを指定します。
  62.     #- x, y: 表示座標
  63.     #- width_max, height_max: 表示枠。この内部に収まるように拡大縮小します。
  64.     #                       : どちらかが0以下の場合拡大縮小は行われません。
  65.     #- orogin: 表示位置基準点 false(デフォ): 動画の左上, true: 動画の中心を上記
  66.     #-         の[x,y]にあわせます
  67.     def set_position(x=0,y=0,width_max=0,height_max=0,origin=false)
  68.       @x = x
  69.       @y = y
  70.       @width_max  = width_max
  71.       @height_max = height_max
  72.       @origin_center = origin
  73.       @refresh_flag = true
  74.     end
  75.  
  76.     # ■ 以降の表示位置、サイズをデフォルトに戻します。
  77.     # 拡大縮小なし、左上にあわせて表示
  78.     def reset_position
  79.       @x = Graphics.width / 2
  80.       @y = Graphics.height / 2
  81.       @width_max  = 0
  82.       @height_max = 0
  83.       @origin_center = true
  84.       @refresh_flag = true
  85.     end
  86.  
  87.   end
  88.  
  89.  
  90.   class MovieSprite < ::Sprite
  91.     # 初期化
  92.     def initialize(viewport=nil)
  93.       super
  94.       self.visible = false
  95.       self.bitmap = RGDS.bitmap
  96.       fix_position()
  97.     end
  98.  
  99.     # 拡大縮小処理
  100.     def change_zoom
  101.       zoom = 1.0
  102.       bw = self.bitmap.width
  103.       bh = self.bitmap.height
  104.       return if bw <= 0 or bh <= 0
  105.       if $game_system.movie_info.width_max > 0 and $game_system.movie_info.height_max > 0
  106.         zoom_w = $game_system.movie_info.width_max.to_f / bw.to_f
  107.         zoom_h = $game_system.movie_info.height_max.to_f / bh.to_f
  108.         zoom = [zoom_w, zoom_h].min
  109.       end
  110.       self.zoom_x = zoom
  111.       self.zoom_y = zoom
  112.     end
  113.  
  114.     # 表示位置変更
  115.     def fix_position
  116.       self.x = $game_system.movie_info.x
  117.       self.y = $game_system.movie_info.y
  118.       self.z = $game_system.movie_info.z
  119.       if $game_system.movie_info.origin_center
  120.         self.ox = self.bitmap.width / 2
  121.         self.oy = self.bitmap.height / 2
  122.       end
  123.       change_zoom()
  124.     end
  125.  
  126.     def update
  127.       if (self.visible = RGDS.visible)
  128.         if RGDS.bitmap_changed? or self.bitmap.disposed?
  129.           self.bitmap = RGDS.bitmap
  130.           fix_position()
  131.           RGDS.bitmap_changed = false
  132.           $game_system.movie_info.refresh_flag = false
  133.         elsif $game_system.movie_info.refresh_flag
  134.           fix_position()
  135.           $game_system.movie_info.refresh_flag = false
  136.         end
  137.       end
  138.       super
  139.     end
  140.   end
  141.  
  142.   module_function
  143.  
  144.   # ■ 動画をオープンします。初回は1~2秒ほどかかる場合もあります。
  145.   def open(filename)
  146.     RGDS.open(filename)
  147.   end
  148.  
  149.   # ■ 動画を停止しクローズします。
  150.   def close
  151.     RGDS.close()
  152.   end
  153.  
  154.   # ■ openされた動画を再生します。一時停止中なら再開します。
  155.   # 再生が終わると自動的にクローズします。
  156.   def run
  157.     RGDS.run()
  158.   end
  159.  
  160.   # ■ 動画を一時停止します。再開はrunで行います。
  161.   def pause
  162.     RGDS.pause()
  163.   end
  164.  
  165.   # ■ 動画をオープンして自動再生します。
  166.   #- 決定キーでスキップします。
  167.   def start_movie(filename, option={})
  168.  
  169.     # スキップ検出オプション
  170.     if option.key?(:skip_sw)
  171.       skip_sw = option[:skip_sw].to_i
  172.     else
  173.       skip_sw = 0
  174.     end
  175.  
  176.     # スキップ禁止モードオプション
  177.     if option.key?(:nsm)
  178.       nsm_mode = option[:nsm]
  179.     else
  180.       nsm_mode = false
  181.     end
  182.  
  183.     if skip_sw > 0
  184.       $game_switches[skip_sw] = true
  185.     end
  186.     scene_temp = SceneManager.scene
  187.     if scene_temp.is_a?(Scene_Map) or scene_temp.is_a?(Scene_Battle)
  188.       msgv = SceneManager.scene.instance_variable_get(:@message_window)
  189.       msgv.update
  190.       tempv = msgv.visible
  191.       msgv.visible = false
  192.       # オープン
  193.       RGDS.open(filename)
  194.       RGDS.run()
  195.       # 終了またはボタンが押されるまでループ
  196.       loop do
  197.         break if scene_temp != SceneManager.scene
  198.  
  199.         # 画面の更新
  200.         if SceneManager.scene.is_a?(Scene_Map)
  201.           SceneManager.scene.update_for_fade
  202.         else
  203.           SceneManager.scene.update_basic
  204.         end
  205.  
  206.         if !RGDS.active? # 再生終了
  207.           if skip_sw > 0
  208.             $game_switches[skip_sw] = false
  209.           end
  210.           break
  211.         end
  212.         unless nsm_mode
  213.           if Input.trigger?(Input::A)# or Input.trigger?(Input::B)
  214.             break
  215.           end
  216.         end
  217.       end
  218.       RGDS.close()
  219.       msgv.visible = tempv
  220.     end
  221.   end
  222.  
  223.  
  224.   # ■ 以降の表示位置、サイズを指定します。
  225.   #- x, y: 表示座標
  226.   #- width_max, height_max: 表示枠。この内部に収まるように拡大縮小します。
  227.   #                       : どちらかが0以下の場合拡大縮小は行われません。
  228.   #- origin: 表示位置基準点 false: 動画の左上, true: 動画の中心を上記
  229.   #-         の[x,y]にあわせます
  230.   def set_position(x=0,y=0,width_max=0,height_max=0,origin=false)
  231.     $game_system.movie_info.set_position(x,y,width_max,height_max,origin)
  232.   end
  233.  
  234.   # ■ 以降の表示位置、サイズをデフォルトに戻します。
  235.   # 拡大縮小なし、中央にあわせて表示
  236.   def reset_position
  237.     $game_system.movie_info.reset_position()
  238.   end
  239.  
  240.   # 再生音量取得
  241.   def get_volume
  242.     return RGDS.get_volume()
  243.   end
  244.  
  245.   # 再生音量設定
  246.   def set_volume(volume)
  247.     return RGDS.set_volume(volume)
  248.   end
  249.  
  250. end
  251.  
  252. class Game_System
  253.   def init_movie_info
  254.     @movie_info = RGDS_SP::MovieInfo.new
  255.   end
  256.   def movie_info
  257.     init_movie_info() if @movie_info.nil?
  258.     return @movie_info
  259.   end
  260. end
  261.  
  262.  
  263. class Spriteset_Map
  264.   alias :_hn_movie__initialize :initialize unless private_method_defined?(:_hn_movie__initialize)
  265.   def initialize
  266.     # 元の処理
  267.     _hn_movie__initialize
  268.     # 追加処理
  269.     create_movie
  270.     update_movie
  271.   end
  272.  
  273.   alias :_hn_movie__dispose :dispose unless method_defined?(:_hn_movie__dispose)
  274.   def dispose
  275.     dispose_movie
  276.     _hn_movie__dispose
  277.   end
  278.  
  279.   alias :_hn_movie__update :update unless method_defined?(:_hn_movie__update)
  280.   def update
  281.     update_movie
  282.     _hn_movie__update
  283.   end
  284.  
  285.   # ■ シーン移行時に動画を待機モードにします。
  286.   def create_movie
  287.     @sp_movie = RGDS_SP::MovieSprite.new()
  288.     @sp_movie.viewport = @viewport1
  289.     RGDS.system_resume
  290.   end
  291.  
  292.   # ■ シーン移行時に動画を待機モードにします。
  293.   def dispose_movie
  294.     RGDS.system_pause
  295.     @sp_movie.viewport = nil
  296.     @sp_movie.dispose
  297.     @sp_movie = nil
  298.   end
  299.  
  300.   def update_movie
  301.     if RGDS.active?
  302.       RGDS.update
  303.     end
  304.     @sp_movie.update unless @sp_movie.nil?
  305.   end
  306. end
  307.  
  308. class Spriteset_Battle
  309.   alias :_hn_movie__initialize :initialize unless private_method_defined?(:_hn_movie__initialize)
  310.   def initialize
  311.     # 元の処理
  312.     _hn_movie__initialize
  313.     # 追加処理
  314.     create_movie
  315.     update_movie
  316.   end
  317.  
  318.   alias :_hn_movie__dispose :dispose unless method_defined?(:_hn_movie__dispose)
  319.   def dispose
  320.     dispose_movie
  321.     _hn_movie__dispose
  322.   end
  323.  
  324.   alias :_hn_movie__update :update unless method_defined?(:_hn_movie__update)
  325.   def update
  326.     update_movie
  327.     _hn_movie__update
  328.   end
  329.  
  330.   # ■ シーン移行時に動画を待機モードにします。
  331.   def create_movie
  332.     @sp_movie = RGDS_SP::MovieSprite.new()
  333.     @sp_movie.viewport = @viewport1
  334.     RGDS.system_resume
  335.   end
  336.  
  337.   # ■ シーン移行時に動画を待機モードにします。
  338.   def dispose_movie
  339.     RGDS.system_pause
  340.     @sp_movie.viewport = nil
  341.     @sp_movie.dispose
  342.     @sp_movie = nil
  343.   end
  344.  
  345.   def update_movie
  346.     if RGDS.active?
  347.       RGDS.update
  348.     end
  349.     @sp_movie.update unless @sp_movie.nil?
  350.   end
  351. end

点评

为什么用这个脚本,转码不好吗?  发表于 2018-5-8 23:16
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
28
星屑
10170
在线时间
4673 小时
注册时间
2011-8-22
帖子
1279

开拓者

30
 楼主| 发表于 2018-5-7 20:01:30 | 只看该作者
devil033 发表于 2018-5-7 19:58
这次好了,不会崩了
但有个新的问题
我用了一个视频格式扩展脚本,现在这个版本会跳过视频播放(不播放视频 ...

播放视频功能是仅有的一个原版RM有而这里没提供的功能……

另外sideview不一定会优化,也许可以等RGD稳定以后根据RGD的特性重新定制一个版本,减少位图操作,增加精灵操作,思路上大概是这样吧。

点评

好的,了解,谢谢  发表于 2018-5-7 20:05
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-20 19:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表